public RawSoundViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; SoundDataModel.OnSampleLoaded .ObserveOn(SynchronizationContext.Current) .Subscribe(OnSampleLoaded); OnSampleLoaded(SoundDataModel.IsAudioContainerCreated); }
public RecordingSoundViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; StartRecording = new DelegateCommand(() => { }); StopRecording = new DelegateCommand(() => { }); }
public SoundGenerationViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; GenerateSample = new DelegateCommand(() => { var settings = new SampleGeneratorSettings { SampleRate = SampleRate, Datas = _soundDatas.ToList() }; SoundDataModel.GenerateSample.OnNext(settings); }); LoadToAnalysis = new DelegateCommand(() => { }); SaveToFile = new DelegateCommand(() => { }); AddData = new DelegateCommand(() => { var data = new SignalGenerationData { Duration = Duration, Frequency = SignalFrequency, TimeStart = -1 }; _soundDatas.Add(data); }); ClearAll = new DelegateCommand(() => { _soundDatas.Clear(); }); SignalFrequency = 10; SampleRate = 1024; Duration = 128; }
public WaveletGenerationViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; GenerateWavelet = new DelegateCommand(() => { //todo: put to wavelet model; var complex = WaveletTransformCPU.GenerateMorletWavelet(WaveFrequency, SampleRate, CyclesCount, PointsCount, SigmaValue); var real = complex.Select(v => (float)v.Real).ToArray(); var duration = 1.0 / SampleRate * PointsCount; var container = new AudioContainer((float)duration, SampleRate, real); SoundDataModel.LoadContainer.OnNext(container); }); WaveFrequency = 1; CyclesCount = 5; PointsCount = 1024; SampleRate = 64; SigmaValue = 5; }
public DataSourceViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; OpenFileCommand = new DelegateCommand(() => { var openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { SoundDataModel.LoadFile.OnNext(openFileDialog.FileName); } }); SelectWorkFolder = new DelegateCommand(() => { using var dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() == DialogResult.OK) { SoundDataModel.SetCurrentWorkDirectory.OnNext(dialog.SelectedPath); } }); LoadSelectedFile = new DelegateCommand(() => { SoundDataModel.LoadFile.OnNext(SelectedFilePathItem); }); SoundDataModel.OnSampleLoaded .ObserveOn(SynchronizationContext.Current) .Subscribe(OnSoundTrackLoaded); SoundDataModel.OnSoundSourceChanged .ObserveOn(SynchronizationContext.Current) .Subscribe(OnSoundSourceChanged); SoundDataModel.OnCurrentWorkDirectoryChanged .ObserveOn(SynchronizationContext.Current) .Subscribe(OnCurrentWorkDirectoryChanged); OnSoundTrackLoaded(SoundDataModel.IsAudioContainerCreated); OnSoundSourceChanged(soundDataModel.SoundSource); }
public WaveletTransformNumericalViewModel(SoundDataModel soundDataModel, ScalogramModel scalogramModel) { SoundDataModel = soundDataModel; ScalogramModel = scalogramModel; GenerateAnalysis = new DelegateCommand(() => { var fft = new FastFourierTransformCPU(SoundDataModel.AudioContainer.Samples); var scalogramCreator = new ScalogramCreator(SoundDataModel.AudioContainer, fft); var frequencies = new List <float> { FrequencyToAnalyze }; var scalogramContainer = scalogramCreator.CreateScalogram(frequencies, CyclesCount); var list = new List <DataPoint>(); var n = 1; foreach (var v in scalogramContainer.ScalogramValues) { list.Add(new DataPoint(n++, v)); } Points = list; }); AnalyzeNextFrequency = new DelegateCommand(() => { FrequencyToAnalyze++; GenerateAnalysis.Execute(); }); AnalyzePreviousFrequency = new DelegateCommand(() => { FrequencyToAnalyze--; GenerateAnalysis.Execute(); }); FrequencyToAnalyze = 1; CyclesCount = 3; }
public NotesRecognizingViewModel(SoundDataModel soundDataModel) { SoundDataModel = soundDataModel; Recognize = new DelegateCommand(RecognizeImpl); }