void prepareAudioUnit() { // AudioSession AudioSession.Initialize(); AudioSession.SetActive(true); AudioSession.Category = AudioSessionCategory.PlayAndRecord; AudioSession.PreferredHardwareIOBufferDuration = 0.01f; // Getting a RemoteUI AudioUni AudioComponent _component = AudioComponent.FindComponent(AudioTypeOutput.Remote); // Getting Audiounit _audioUnit = AudioUnit.CreateInstance(_component); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 // Remote Input ); // setting AudioStreamBasicDescription int AudioUnitSampleTypeSize = (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) ? sizeof(float) : sizeof(uint); AudioStreamBasicDescription audioFormat = new AudioStreamBasicDescription() { SampleRate = _sampleRate, Format = AudioFormatType.LinearPCM, //kAudioFormatFlagsAudioUnitCanonical = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved | (kAudioUnitSampleFractionBits << kLinearPCMFormatFlagsSampleFractionShift), FormatFlags = (AudioFormatFlags)((int)AudioFormatFlags.IsSignedInteger | (int)AudioFormatFlags.IsPacked | (int)AudioFormatFlags.IsNonInterleaved | (int)(kAudioUnitSampleFractionBits << (int)AudioFormatFlags.LinearPCMSampleFractionShift)), ChannelsPerFrame = 2, BytesPerPacket = AudioUnitSampleTypeSize, BytesPerFrame = AudioUnitSampleTypeSize, FramesPerPacket = 1, BitsPerChannel = 8 * AudioUnitSampleTypeSize, Reserved = 0 }; _audioUnit.SetAudioFormat(audioFormat, AudioUnitScopeType.Input, 0 // Remote output ); _audioUnit.SetAudioFormat(audioFormat, AudioUnitScopeType.Output, 1 // Remote input ); // setting callback if (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(simulator_callback); else _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(device_callback); // initialize _audioUnit.Initialize(); }
public static AudioComponent FindNextComponent(AudioComponent cmp, AudioComponentDescription cd) { // Getting component hanlder IntPtr handler; if (cmp == null) handler = AudioComponentFindNext(IntPtr.Zero, cd); else handler = AudioComponentFindNext(cmp.Handler, cd); // creating an instance if (handler != IntPtr.Zero) return new AudioComponent(handler); else return null; }
public static AudioUnit CreateInstance(AudioComponent cmp) { var ptr = new IntPtr(); int err = AudioComponentInstanceNew(cmp.Handler, ref ptr); if (err != 0) { throw new ArgumentException(String.Format("Error code:", err)); } if (ptr != IntPtr.Zero) { return(new AudioUnit(ptr)); } else { return(null); } }
void prepareAudioUnit() { // Getting the RemoteUI AudioComponent _component = AudioComponent.FindComponent(AudioTypeOutput.Remote); // Getting Audiounit _audioUnit = AudioUnit.CreateInstance(_component); // setting AudioStreamBasicDescription int AudioUnitSampleTypeSize; if (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) { AudioUnitSampleTypeSize = sizeof(float); } else { AudioUnitSampleTypeSize = sizeof(int); } AudioStreamBasicDescription audioFormat = new AudioStreamBasicDescription() { SampleRate = _sampleRate, Format = AudioFormatType.LinearPCM, //kAudioFormatFlagsAudioUnitCanonical = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved | (kAudioUnitSampleFractionBits << kLinearPCMFormatFlagsSampleFractionShift), FormatFlags = (AudioFormatFlags)((int)AudioFormatFlags.IsSignedInteger | (int)AudioFormatFlags.IsPacked | (int)AudioFormatFlags.IsNonInterleaved | (int)(kAudioUnitSampleFractionBits << (int)AudioFormatFlags.LinearPCMSampleFractionShift)), ChannelsPerFrame = 2, BytesPerPacket = AudioUnitSampleTypeSize, BytesPerFrame = AudioUnitSampleTypeSize, FramesPerPacket = 1, BitsPerChannel = 8 * AudioUnitSampleTypeSize, Reserved = 0 }; _audioUnit.SetAudioFormat(audioFormat, AudioUnitScopeType.Input, 0); // setting callback if (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(simulator_callback); else _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(device_callback); }
public static AudioComponent FindNextComponent(AudioComponent cmp, AudioComponentDescription cd) { // Getting component hanlder IntPtr handler; if (cmp == null) { handler = AudioComponentFindNext(IntPtr.Zero, cd); } else { handler = AudioComponentFindNext(cmp.Handler, cd); } // creating an instance if (handler != IntPtr.Zero) { return(new AudioComponent(handler)); } else { return(null); } }
public static AudioUnit CreateInstance(AudioComponent cmp) { var ptr = new IntPtr(); int err = AudioComponentInstanceNew(cmp.Handler, ref ptr); if (err != 0) throw new ArgumentException(String.Format("Error code:", err)); if (ptr != IntPtr.Zero) { return new AudioUnit(ptr); } else { return null; } }
void prepareAudioUnit() { // creating an AudioComponentDescription of the RemoteIO AudioUnit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent using the audio component description _audioComponent = AudioComponent.FindComponent(cd); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote Output ); // setting callback method _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); }
void prepareAudioUnit() { // Getting Remote AudioComponent output _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnitScopeType.Input, 0 // Remote Output ); // setting callback method _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); }
void prepareAudioUnit() { // Creating AudioComponentDescription instance of RemoteIO Audio Unit var cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent from the description _component = AudioComponent.FindComponent(cd); // Getting Audiounit _audioUnit = AudioUnit.CreateInstance(_component); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 1 // Remote Input ); // setting AudioStreamBasicDescription var audioFormat = AudioUnitUtils.AUCanonicalASBD(44100.0, 2); _audioUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote output ); _audioUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, 1 // Remote input ); // setting callback _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(_audioUnit_RenderCallback); // initialize _audioUnit.Initialize(); }
void prepareAudioUnit() { // AudioSession AudioSession.Initialize(); AudioSession.SetActive(true); AudioSession.Category = AudioSessionCategory.PlayAndRecord; AudioSession.PreferredHardwareIOBufferDuration = 0.005f; // Getting AudioComponent Remote output _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnitScopeType.Input, 0 // Remote Output ); _audioUnit.SetAudioFormat( AudioUnitUtils.AUCanonicalASBD(_sampleRate, 2), AudioUnitScopeType.Output, 1 // Remote input ); // setting callback method _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); _audioUnit.Start(); }
void prepareAudioUnit() { // AudioSession AudioSession.Initialize(); AudioSession.SetActive(true); AudioSession.Category = AudioSessionCategory.PlayAndRecord; AudioSession.PreferredHardwareIOBufferDuration = 0.005f; // creating an AudioComponentDescription of the RemoteIO AudioUnit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent using the audio component description _audioComponent = AudioComponent.FindComponent(cd); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote Output ); _audioUnit.SetAudioFormat( AudioUnitUtils.AUCanonicalASBD(_sampleRate, 2), AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, 1 // Remote input ); // setting callback method _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); _audioUnit.Start(); }
void prepareAudioUnit () { // AudioSession AudioSession.Initialize (); AudioSession.SetActive (true); AudioSession.Category = AudioSessionCategory.PlayAndRecord; AudioSession.PreferredHardwareIOBufferDuration = 0.005f; // Getting AudioComponent Remote output _audioComponent = AudioComponent.FindComponent (AudioTypeOutput.Remote); // creating an audio unit instance _audioUnit = new AudioUnit (_audioComponent); // turning on microphone _audioUnit.SetEnableIO (true, AudioUnitScopeType.Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat (_dstFormat, AudioUnitScopeType.Input, 0 // Remote Output ); var format = AudioStreamBasicDescription.CreateLinearPCM (_sampleRate, bitsPerChannel: 32); format.FormatFlags = AudioStreamBasicDescription.AudioFormatFlagsAudioUnitCanonical; _audioUnit.SetAudioFormat (format, AudioUnitScopeType.Output, 1); // setting callback method _audioUnit.SetRenderCallback (_audioUnit_RenderCallback, AudioUnitScopeType.Global); _audioUnit.Initialize (); _audioUnit.Start (); }
void prepareAudioUnit() { // Updated for deprecated AudioSession var session = AVAudioSession.SharedInstance(); NSError error; if (session == null) { var alert = new UIAlertView("Session error", "Unable to create audio session", null, "Cancel"); alert.Show(); alert.Clicked += delegate { alert.DismissWithClickedButtonIndex(0, true); return; }; } session.SetActive(true); session.SetCategory(AVAudioSessionCategory.PlayAndRecord); session.SetPreferredIOBufferDuration(0.005, out error); // Getting AudioComponent Remote output _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote); // creating an audio unit instance _audioUnit = new AudioUnit(_audioComponent); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnitScopeType.Input, 0 // Remote Output ); var format = AudioStreamBasicDescription.CreateLinearPCM(_sampleRate, bitsPerChannel: 32); format.FormatFlags = AudioStreamBasicDescription.AudioFormatFlagsNativeFloat; _audioUnit.SetAudioFormat(format, AudioUnitScopeType.Output, 1); // setting callback method _audioUnit.SetRenderCallback(_audioUnit_RenderCallback, AudioUnitScopeType.Global); _audioUnit.Initialize(); _audioUnit.Start(); }