public override void ViewDidLoad() { base.ViewDidLoad (); var componentDescription = new AudioComponentDescription { ComponentType = AudioComponentType.Effect, ComponentSubType = 0x666c7472, ComponentManufacturer = (AudioComponentManufacturerType)0x44656d6f, ComponentFlags = 0, ComponentFlagsMask = 0 }; AUAudioUnit.RegisterSubclass ( new Class (typeof(AUv3FilterDemo)), componentDescription, "Local FilterDemo", int.MaxValue ); EmbedPlugInView (); playEngine = new SimplePlayEngine (); playEngine.SelectEffectWithComponentDescription (componentDescription, ConnectParametersToControls); playEngine.AudioUnit.TransportStateBlock = (ref AUHostTransportStateFlags transportStateFlags, ref double currentSamplePosition, ref double cycleStartBeatPosition, ref double cycleEndBeatPosition) => { transportStateFlags = AUHostTransportStateFlags.Recording; currentSamplePosition = 10.0; cycleStartBeatPosition = 0.0; cycleEndBeatPosition = 20.0; return true; }; }
bool createAUGraph () { AUGraphError result = 0; int samplerNode, ioNode; var cd = new AudioComponentDescription () { ComponentManufacturer = AudioComponentManufacturerType.Apple, ComponentFlags = 0, ComponentFlagsMask = 0 }; processingGraph = new AUGraph (); cd.ComponentType = AudioComponentType.MusicDevice; cd.ComponentSubType = (int)AudioTypeMusicDevice.Sampler; //0x73616d70; samplerNode = processingGraph.AddNode (cd); cd.ComponentType = AudioComponentType.Output; cd.ComponentSubType = (int)AudioTypeOutput.Remote; //0x72696f63; ioNode = processingGraph.AddNode (cd); processingGraph.Open (); result = processingGraph.ConnnectNodeInput (samplerNode, 0, ioNode, 0); if (result != AUGraphError.OK) throw new Exception ("Unable to open the audio processing graph. Error code: " + result); samplerUnit = processingGraph.GetNodeInfo (samplerNode); ioUnit = processingGraph.GetNodeInfo (ioNode); return true; }
bool CreateAUGraph () { processingGraph = new AUGraph (); int samplerNode, ioNode; var musicSampler = new AudioComponentDescription () { ComponentManufacturer = AudioComponentManufacturerType.Apple, ComponentType = AudioComponentType.MusicDevice, ComponentSubType = (int)AudioTypeMusicDevice.Sampler }; samplerNode = processingGraph.AddNode (musicSampler); var remoteOutput = new AudioComponentDescription () { ComponentManufacturer = AudioComponentManufacturerType.Apple, ComponentType = AudioComponentType.Output, ComponentSubType = (int)AudioTypeOutput.Remote }; ioNode = processingGraph.AddNode (remoteOutput); processingGraph.Open (); processingGraph.ConnnectNodeInput ( sourceNode: samplerNode, sourceOutputNumber: 0, destNode: ioNode, destInputNumber: 0); samplerUnit = processingGraph.GetNodeInfo (samplerNode); return true; }
void UpdateEffectsList () { DispatchQueue.DefaultGlobalQueue.DispatchAsync (() => { var anyEffectDescription = new AudioComponentDescription { ComponentType = AudioComponentType.Effect, ComponentSubType = 0, ComponentManufacturer = 0, ComponentFlags = 0, ComponentFlagsMask = 0 }; availableEffects = AVAudioUnitComponentManager.SharedInstance.GetComponents (anyEffectDescription); DispatchQueue.MainQueue.DispatchAsync (componentsFoundCallback); }); }
public static AudioComponent FindNextComponent (AudioComponent cmp, AudioComponentDescription cd) { // Getting component hanlder IntPtr handle; if (cmp == null) handle = AudioComponentFindNext(IntPtr.Zero, cd); else handle = AudioComponentFindNext(cmp.Handle, cd); // creating an instance if (handle != IntPtr.Zero) return new AudioComponent (handle); else return null; }
static int CountMatches(AudioComponentDescription desc) { if (desc == null) throw new ArgumentNullException ("desc"); return AudioComponentCount (desc); }
static extern IntPtr AudioComponentFindNext(IntPtr inComponent, AudioComponentDescription inDesc);
public static AudioComponent FindComponent(AudioComponentDescription cd) { return FindNextComponent(null, cd); }
static extern AUGraphError AUGraphAddNode(IntPtr inGraph, AudioComponentDescription inDescription, out int outNode);
public static AudioComponent FindNextComponent(AudioComponent cmp, AudioComponentDescription cd) { return FindNextComponent (cmp, ref cd); }
public void CopyTo (AudioComponentDescription cd) { cd.ComponentType = ComponentType; cd.ComponentSubType = ComponentSubType; cd.ComponentManufacturer = ComponentManufacturer; cd.ComponentFlags = ComponentFlags; cd.ComponentFlagsMask = ComponentFlagsMask; }
public AVAudioUnitEffect(AudioComponentDescription desc) : this(new AudioComponentDescriptionNative (desc)) { }
public void SelectEffectWithComponentDescription (AudioComponentDescription? componentDescription, Action completionHandler) { if (isPlaying) player.Pause (); if (effect != null) { engine.DisconnectNodeInput (effect); engine.DisconnectNodeInput (engine.MainMixerNode); engine.Connect (player, engine.MainMixerNode, file.ProcessingFormat); engine.DetachNode (effect); effect = null; AudioUnit = null; PresetList = new AUAudioUnitPreset[0]; } if (componentDescription.HasValue) { AVAudioUnit.FromComponentDescription (componentDescription.Value, AudioComponentInstantiationOptions.OutOfProcess, (avAudioUnitEffect, AVError) => { if (AVError != null || avAudioUnitEffect == null) { Console.WriteLine ("SelectEffectWithComponentDescription error!"); return; } effect = avAudioUnitEffect; engine.AttachNode (avAudioUnitEffect); engine.DisconnectNodeInput (engine.MainMixerNode); engine.Connect (player, avAudioUnitEffect, file.ProcessingFormat); engine.Connect (avAudioUnitEffect, engine.MainMixerNode, file.ProcessingFormat); AudioUnit = avAudioUnitEffect.AUAudioUnit; PresetList = avAudioUnitEffect.AUAudioUnit.FactoryPresets ?? new AUAudioUnitPreset[0]; Done (completionHandler); }); } else { Done (completionHandler); } }
static extern AUGraphError AUGraphAddNode(IntPtr inGraph, ref AudioComponentDescription inDescription, out int /* AUNode = SInt32* */ outNode);
// AudioComponentDescription struct in only correctly fixed for unified // Following current Api behaviour of returning an AudioUnit instead of an error public AudioUnit GetNodeInfo (int node, out AudioComponentDescription cd, out AUGraphError error) { if (Handle == IntPtr.Zero) throw new ObjectDisposedException ("AUGraph"); IntPtr ptr; error = AUGraphNodeInfo (Handle, node, out cd, out ptr); if (error != AUGraphError.OK || ptr == IntPtr.Zero) return null; return new AudioUnit (ptr); }
public int AddNode (AudioComponentDescription description) { int node; #if XAMCORE_2_0 var err = AUGraphAddNode (handle, ref description, out node); #else var err = AUGraphAddNode (handle, description, out node); #endif if (err != 0) throw new ArgumentException (String.Format ("Error code: {0}", err)); return node; }
public AudioComponentDescriptionNative (AudioComponentDescription other) { this.ComponentType = other.ComponentType; this.ComponentSubType = other.ComponentSubType; this.ComponentManufacturer = other.ComponentManufacturer; this.ComponentFlags = other.ComponentFlags; this.ComponentFlagsMask = other.ComponentFlagsMask; }
public AVAudioUnitGenerator(AudioComponentDescription desc) : this(new AudioComponentDescriptionNative (desc)) { }
public static AudioComponent FindNextComponent(AudioComponent cmp, ref AudioComponentDescription cd) { var handle = cmp == null ? IntPtr.Zero : cmp.Handle; handle = AudioComponentFindNext (handle, ref cd); return (handle != IntPtr.Zero) ? new AudioComponent (handle) : null; }
public AVAudioUnitMidiInstrument(AudioComponentDescription desc) : this(new AudioComponentDescriptionNative (desc)) { }
public int AddNode(AudioComponentDescription description) { int node; var err = AUGraphAddNode (handle, description, out node); if (err != 0) throw new ArgumentException(String.Format("Error code:", err)); return node; }
public AVAudioUnitTimePitch(AudioComponentDescription desc) : this(new AudioComponentDescriptionNative (desc)) { }
static extern AUGraphError AUGraphNodeInfo(IntPtr inGraph, int inNode, out AudioComponentDescription outDescription, out IntPtr outAudioUnit);
public AVAudioUnitVarispeed(AudioComponentDescription desc) : this(new AudioComponentDescriptionNative (desc)) { }
static extern int AudioComponentCount(AudioComponentDescription desc);
static extern int AUGraphAddNode(IntPtr inGraph, AudioComponentDescription inDescription, ref int outNode);
static extern int AudioComponentGetDescription(IntPtr component, out AudioComponentDescription desc);
static extern int AUGraphNodeInfo(IntPtr inGraph, int inNode, AudioComponentDescription outDescription, IntPtr outAudioUnit);
public int AddNode(AudioComponentDescription cd) { int node = 0; int err = AUGraphAddNode(handle, cd, ref node); if (err != 0) throw new ArgumentException(String.Format("Error code:", err)); return node; }
public AUAudioUnit CreateAudioUnit (AudioComponentDescription desc, out NSError error) { AudioUnit = new AUv3FilterDemo (desc, 0, out error); return AudioUnit; }