+ let (tx_c12, rx_c12) = mpsc::channel();
+ let (tx_c34, rx_c34) = mpsc::channel();
+ let (tx_c56, rx_c56) = mpsc::channel();
+ let (tx_c78, rx_c78) = mpsc::channel();
+
+ let sample_buffer_c1 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c2 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c3 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c4 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c5 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c6 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c7 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+ let sample_buffer_c8 = Arc::new(Mutex::new([0i16; 2*SPECTOGRAM_AREA]));
+
+ let mut samples_c12 = SampleBuffer::new(sample_buffer_c1.clone(), sample_buffer_c2.clone(), tx_c12);
+ let mut samples_c34 = SampleBuffer::new(sample_buffer_c3.clone(), sample_buffer_c4.clone(), tx_c34);
+ let mut samples_c56 = SampleBuffer::new(sample_buffer_c5.clone(), sample_buffer_c6.clone(), tx_c56);
+ let mut samples_c78 = SampleBuffer::new(sample_buffer_c7.clone(), sample_buffer_c8.clone(), tx_c78);
+
+ // resampler
+ let mut resampler = ResamplerFir::new(
+ 1,
+ ResamplerSampleRate::Hz22050,
+ ResamplerSampleRate::Hz48000,
+ Latency::Sample64, // could change to Sample8
+ Attenuation::Db90,
+ );
+
+ // get the map to share it between the image arrays
+ let mapx_path = RelativePath::new(MAPX_PATH).as_str();
+ let mapx_file = BufReader::new(File::open(mapx_path).unwrap());
+ let mapx_npy = NpyFile::new(mapx_file).unwrap();
+ let mapx: Vec<i16> = mapx_npy.into_vec().unwrap();
+
+ let mapy_path = RelativePath::new(MAPY_PATH).as_str();
+ let mapy_file = BufReader::new(File::open(mapy_path).unwrap());
+ let mapy_npy = NpyFile::new(mapy_file).unwrap();
+ let mapy: Vec<u16> = mapy_npy.into_vec().unwrap();