public void updatePlaying(double freq, WaveGenerator.WaveType wavetype) { frequencies.Clear(); frequencies.Add(freq); mixer.RemoveAllSources(); VolumeSource vol; WaveGenerator generator = new WaveGenerator(wavetype, freq, 1.0, 0); mixer.AddSource( generator.ToWaveSource() .AppendSource(x => new DmoChannelResampler(x, monoToStereoChannelMatrix, sampleRate)) .AppendSource(x => new VolumeSource(x.ToSampleSource()), out vol) ); Debug.WriteLine(frequencies.Count().ToString() + " frequencies"); }
public void startPlayingMidi() { ChromaticScale.ChromaticScale scale = new ChromaticScale.ChromaticScale(); for (int i = 0; i <= 128; i++) { Console.WriteLine("Adding {0} - freq {1} name {2} to mixer", i, scale.getMidiFreqFromKeyNum(i), scale.getMidNoteNameFromKeyNum(i)); WaveGenerator generator = new WaveGenerator(WaveGenerator.WaveType.SquareWave, scale.getMidiFreqFromKeyNum(i), 1.0, 0.0); VolumeSource vol; ISampleSource source = generator.ToWaveSource() .AppendSource(x => new DmoChannelResampler(x, monoToStereoChannelMatrix, sampleRate)) .AppendSource(x => new VolumeSource(x.ToSampleSource()), out vol); //mixer.AddSource( // source // ); //mixer.setSourceVolume(i, 0.0f); midiKeys.Add(new MidiKeyPlaying { freq = scale.getMidiFreqFromKeyNum(i), name = scale.getMidNoteNameFromKeyNum(i), vol = 0.0f, vol_vel = 0.0f, source = source }); } soundOut.Initialize(mixer.ToWaveSource()); soundOut.Play(); }