public void StartPlayback() { playing = true; EnqueueBuffers(); Console.WriteLine("Playback started " + WinMM.waveOutGetNumDevs()); //generatorThread = new Thread(signalGenerator.GenerateSignal); //generatorThread.IsBackground = true; //generatorThread.Start(); }
public void StartRecording() { WinMM.waveInOpen(out waveInHandle, DeviceNumber, WaveFormat, callback, IntPtr.Zero, WinMM.CallbackFunction); CreateBuffers(); EnqueueBuffers(); WinMM.waveInStart(waveInHandle); recording = true; //generatorThread = new Thread(signalGenerator.GenerateSignal); //generatorThread.IsBackground = true; //generatorThread.Start(); }
public WaveOut(WaveIn WaveIn) { waveIn = WaveIn; waveIn.DataAvailable += new EventHandler <WaveInEventArgs>(DataAvailable); DeviceNumber = 0; WaveFormat = waveIn.WaveFormat; NumberOfBuffers = waveIn.NumberOfBuffers; callback = new WinMM.WaveCallback(CallBack); WinMM.waveOutOpen(out waveOutHandle, DeviceNumber, WaveFormat, callback, IntPtr.Zero, WinMM.CallbackFunction); CreateBuffers(); }
public WaveOutBuffer(IntPtr WaveOutHandle, int BufferSize) { waveOutHandle = WaveOutHandle; bufferSize = BufferSize; buffer = new byte[bufferSize]; hBuffer = GCHandle.Alloc(buffer, GCHandleType.Pinned); header = new WaveHeader(); hHeader = GCHandle.Alloc(header, GCHandleType.Pinned); header.dataBuffer = hBuffer.AddrOfPinnedObject(); header.bufferLength = bufferSize; header.loops = 1; hThis = GCHandle.Alloc(this); header.userData = (IntPtr)hThis; WinMM.waveOutPrepareHeader(waveOutHandle, header, Marshal.SizeOf(header)); }
public void Use() { //WinMM.waveInUnprepareHeader(waveInHandle, header, Marshal.SizeOf(header)); WinMM.waveInAddBuffer(waveInHandle, header, Marshal.SizeOf(header)); }