public WaveOutPlayer(int device, WaveFormat format, int bufferSize, int bufferCount, BufferFillEventHandler fillProc) { zero = format.wBitsPerSample == 8 ? (byte)128 : (byte)0; this.fillProc = fillProc; WaveOutHelper.Try(Winmm.waveOutOpen(out waveOut, device, format, bufferProc, 0, Winmm.CALLBACK_FUNCTION)); AllocateBuffers(bufferSize, bufferCount); playThread = new Thread(ThreadProc); playThread.Start(); }
public WaveInRecorder(int device, WaveFormat format, int bufferSize, int bufferCount, BufferDoneEventHandler doneProc) { this.doneProc = doneProc; WaveInHelper.Try(Winmm.waveInOpen(out waveIn, device, format, bufferProc, 0, Winmm.CALLBACK_FUNCTION)); AllocateBuffers(bufferSize, bufferCount); for (var i = 0; i < bufferCount; i++) { SelectNextBuffer(); currentBuffer.Record(); } WaveInHelper.Try(Winmm.waveInStart(waveIn)); recordingThread = new Thread(ThreadProc); recordingThread.Start(); }
public static extern int waveOutOpen(out IntPtr hWaveOut, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);