public MainWindowViewModel(bool loadDefaultPlaylist = true) { AppState = Locator.Current.GetService <AppState>(); PlaylistViewModel = new PlaylistViewModel().DisposeWith(Disposables); if (loadDefaultPlaylist) { Observable.StartAsync(() => PlaylistViewModel.LoadDefaultAsync()) .Subscribe() .DisposeWith(Disposables); } PlotSampleViewModel = new PlotSampleViewModel(new PlotSampleProvider(PlaylistViewModel.FinalSample)) .DisposeWith(Disposables); AudioPlayerViewModel = new AudioPlayerViewModel(PlotSampleViewModel.SampleSignal) .DisposeWith(Disposables); }
private static PlotSampleViewModel CreatePlotSampleViewModel(GeneratorModeType generatorModeType) { PrepareAppState(); ISampleProvider signal = new BasicSignal(); if (generatorModeType == GeneratorModeType.Stereo) { signal = signal.ToStereo(1, 0.5f); } var plotSignal = new PlotSampleProvider(signal); var plotVM = new PlotSampleViewModel(plotSignal); plotVM.IsPlotEnable = true; var count = Constants.Wave.DefaultSampleRate / 8 * signal.WaveFormat.Channels; float[] buffer = Array.Empty <float>(); buffer = BufferHelpers.Ensure(buffer, count); plotVM.SampleSignal.Read(buffer, 0, count); return(plotVM); }