PaStreamCallbackResult SineCallback( PaBuffer input, PaBuffer output, int frameCount, PaStreamCallbackTimeInfo timeInfo, PaStreamCallbackFlags statusFlags, object userData) { var outBuffer = (PaBuffer <float>)output; var outSpan = outBuffer.Span; if (note >= 0) { for (int n = 0; n < frameCount; n++) { outSpan[n] = (float)Sin(osc); osc += delta; } osc = osc % (2 * Math.PI); } else { for (int n = 0; n < frameCount; n++) { outSpan[n] = 0; // silence; } } return(PaStreamCallbackResult.paContinue); }
private static PaStreamCallbackResult SineCallback( PaBuffer input, PaBuffer output, int frameCount, PaStreamCallbackTimeInfo timeInfo, PaStreamCallbackFlags statusFlags, object userData) { var data = (SineCallbackData)userData; var outBuffer = (PaBuffer <float>)output; var outSpan = outBuffer.Span; for (int n = 0; n < frameCount; n++) { outSpan[n] = 0.1f * (float)data.osc.Real; data.osc *= data.delta;; } data.osc *= (3 - (data.osc.Real * data.osc.Real + data.osc.Imaginary * data.osc.Imaginary)) / 2; return(PaStreamCallbackResult.paContinue); }