static int renderCallback(IntPtr inRefCon, ref AudioUnit.AudioUnitRenderActionFlags _ioActionFlags, ref AudioTimeStamp _inTimeStamp, uint _inBusNumber, uint _inNumberFrames, AudioBufferList _ioData) { // getting audiounit instance var handler = GCHandle.FromIntPtr(inRefCon); var inst = (AUGraph)handler.Target; // evoke event handler with an argument if (inst.RenderCallback != null) { var args = new AudioGraphEventArgs( _ioActionFlags, _inTimeStamp, _inBusNumber, _inNumberFrames, _ioData); inst.RenderCallback(inst, args); } return(0); // noerror }
public AudioGraphEventArgs(AudioUnit.AudioUnitRenderActionFlags _ioActionFlags, MonoTouch.AudioToolbox.AudioTimeStamp _inTimeStamp, uint _inBusNumber, uint _inNumberFrames, AudioBufferList _ioData) : base(_ioActionFlags, _inTimeStamp, _inBusNumber, _inNumberFrames, _ioData) { }
public AudioUnitEventArgs(AudioUnit.AudioUnitRenderActionFlags _ioActionFlags, MonoTouch.AudioToolbox.AudioTimeStamp _inTimeStamp, uint _inBusNumber, uint _inNumberFrames, AudioBufferList _ioData) { ActionFlags = _ioActionFlags; this.TimeStamp = _inTimeStamp; BusNumber = _inBusNumber; NumberFrames = _inNumberFrames; Data = _ioData; }
public AudioUnitEventArgs(AudioUnit.AudioUnitRenderActionFlags _ioActionFlags, MonoTouch.AudioToolbox.AudioTimeStamp _inTimeStamp, uint _inBusNumber, uint _inNumberFrames, AudioBufferList _ioData) { ActionFlags = _ioActionFlags; this.TimeStamp = _inTimeStamp; BusNumber = _inBusNumber; NumberFrames = _inNumberFrames; Data = _ioData; }
static int device_renderCallback(IntPtr inRefCon, ref AudioUnit.AudioUnitRenderActionFlags _ioActionFlags, ref AudioTimeStamp _inTimeStamp, uint _inBusNumber, uint _inNumberFrames, AudioBufferList _ioData) { System.Diagnostics.Debug.WriteLine("o"); var handler = GCHandle.FromIntPtr(inRefCon); var inst = (RemoteOutput)handler.Target; var waveDef = inst._waveDef[_inBusNumber]; double dphai = 2 * Math.PI * waveDef.frequency / waveDef.sampleRate; double phase = waveDef.phase; // Getting a pointer to a buffer to be filled IntPtr outL = _ioData.mBuffers[0].mData; IntPtr outR = _ioData.mBuffers[1].mData; // filling sin waveform. // AudioUnitSampleType is different between a simulator (float32) and a real device (int32). unsafe { var outLPtr = (int *)outL.ToPointer(); var outRPtr = (int *)outR.ToPointer(); for (int i = 0; i < _inNumberFrames; i++) { int sample = (int)(Math.Sin(phase) * int.MaxValue / 128); // signal waveform format is fixed-point (8.24) * outLPtr++ = sample; * outRPtr++ = sample; phase += dphai; } } waveDef.phase = phase % (2 * Math.PI); return(0); }