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(() =>
            {
            });
        }
Esempio n. 3
0
        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;
        }
Esempio n. 7
0
 public NotesRecognizingViewModel(SoundDataModel soundDataModel)
 {
     SoundDataModel = soundDataModel;
     Recognize      = new DelegateCommand(RecognizeImpl);
 }