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);
        }
示例#2
0
        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);
        }