public Mp3Reader(Mp3Provider provider, int index, int bufferLength) { _Provider = provider; _Index = index; _BufferLength = bufferLength; _FrameLength = _Provider._RawFormat.BitsPerSample / 8 * _Provider._RawFormat.Channels; _MaxOffset = _Provider._RawData.Length - _FrameLength * _BufferLength; }
private void FormFourier_Shown(object sender, EventArgs e) { _Provider = new Mp3Provider(OpenFile()); //_Provider = new LoopbackCaptureProvider(); //_Provider = new WaveInProvider(); _Reader = _Provider.GetReader(0, FFTLength(_Provider.Format.SampleRate)); _PlayControl = _Provider.GetPlayControl(); _Compressed = _PlayControl.GetSpectrum(); _FFTPlayer = new FFTPlayer(_Reader); _RendererSpectrum = new SpectrumRenderer { Source = () => _Compressed, ScaleY = CalcScaleYSpec, }; _ManagerSpectrum = new RenderingManager { Target = pictureBox1, MarginTop = 10, MarginBottom = 10, }; _ManagerSpectrum.Layers.Add(_RendererSpectrum); _ManagerSpectrum.Layers.Add(new PlayControlLabelXProvider(_PlayControl)); _ManagerSpectrum.Start(120); _ManagerSpectrum.DoubleClick += RendererSpectrum_DoubleClick; _Range = new NoteRange { Base = NoteConstants.C4Position(_Provider.Format.SampleRate), OffsetMin = -4, OffsetMax = 5, }; _NoteLabel = new NoteLabelGroup { Range = _Range }; _Recorder = new FFTImageRecorder(600, 800, 3, Color.White, Color.Red, Color.Yellow); _RendererFFT = new SpectrumRenderer { //Source = GetFFTData, Source2 = GetFFTData2, ScaleX = _Range.CalculateLogScale, ScaleY = CalcScaleYFFT, FixedRangeY = 10, }; _RendererFFT.DataReceivers.Add(_Recorder); _ManagerFFT = new RenderingManager { Target = pictureBox2, MarginLeft = 10, MarginRight = 10, MarginTop = 0, MarginBottom = 0, }; _ManagerFFT.Layers.Add(_Recorder); _ManagerFFT.Layers.Add(_RendererFFT); _ManagerFFT.Layers.Add(_NoteLabel); _Provider.StateChanged += () => { _Recorder.Enabled = _Provider.IsPlaying; }; _Recorder.Enabled = _Provider.IsPlaying; _ManagerFFT.Start(15); }