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();
        }