public class AUAudioUnit extends NSObject
An audio unit instance.
AUAudioUnit is a host interface to an audio unit. Hosts can instantiate either version 2 or version 3 units with this class, and to some extent control whether an audio unit is instantiated in-process or in a separate extension process.
Implementors of version 3 audio units can and should subclass AUAudioUnit. To port an existing version 2 audio unit easily, AUAudioUnitV2Bridge can be subclassed.
These are the ways in which audio unit components can be registered:
- (v2) Packaged into a component bundle containing an `AudioComponents` Info.plist entry, referring to an `AudioComponentFactoryFunction`. See AudioComponent.h.
- (v2) AudioComponentRegister(). Associates a component description with an AudioComponentFactoryFunction. See AudioComponent.h.
- (v3) Packaged into an app extension containing an AudioComponents Info.plist entry. The principal class must conform to the AUAudioUnitFactory protocol, which will typically instantiate an AUAudioUnit subclass.
- (v3) `+[AUAudioUnit registerSubclass:asComponentDescription:name:version:]`. Associates a component description with an AUAudioUnit subclass.
A host need not be aware of the concrete subclass of AUAudioUnit that is being instantiated. `initWithComponentDescription:options:error:` ensures that the proper subclass is used.
When using AUAudioUnit with a v2 audio unit, or the C AudioComponent and AudioUnit API's with a v3 audio unit, all major pieces of functionality are bridged between the two API's. This header describes, for each v3 method or property, the v2 equivalent.
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
AUAudioUnit(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
accessInstanceVariablesDirectly() |
static AUAudioUnit |
alloc() |
boolean |
allocateRenderResourcesAndReturnError(org.moe.natj.general.ptr.Ptr<NSError> outError)
allocateRenderResourcesAndReturnError:
|
static AUAudioUnit |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
boolean |
allParameterValues() |
int |
AudioUnitMIDIProtocol()
[@property] AudioUnitMIDIProtocol
|
java.lang.String |
audioUnitName()
[@property] audioUnitName
|
java.lang.String |
audioUnitShortName()
[@property] audioUnitShortName
|
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument) |
boolean |
canPerformInput()
[@property] canPerformInput
|
boolean |
canPerformOutput()
[@property] canPerformOutput
|
boolean |
canProcessInPlace()
[@property] canProcessInPlace
|
NSArray<? extends NSNumber> |
channelCapabilities()
[@property] channelCapabilities
|
NSArray<? extends NSNumber> |
channelMap()
[@property] channelMap
|
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
AudioComponent |
component()
[@property] component
|
AudioComponentDescription |
componentDescription()
[@property] componentDescription
|
java.lang.String |
componentName()
[@property] componentName
|
int |
componentVersion()
[@property] componentVersion
|
java.lang.String |
contextName()
[@property] contextName
|
AUAudioUnitPreset |
currentPreset()
[@property] currentPreset
|
void |
deallocateRenderResources()
deallocateRenderResources
|
static java.lang.String |
debugDescription_static() |
boolean |
deleteUserPresetError(AUAudioUnitPreset userPreset,
org.moe.natj.general.ptr.Ptr<NSError> outError)
deleteUserPreset:error
|
static java.lang.String |
description_static() |
boolean |
disableProfileCableOnChannelError(MIDICIProfile profile,
byte cable,
byte channel,
org.moe.natj.general.ptr.Ptr<NSError> outError)
disableProfile:cable:onChannel:error:
|
boolean |
enableProfileCableOnChannelError(MIDICIProfile profile,
byte cable,
byte channel,
org.moe.natj.general.ptr.Ptr<NSError> outError)
enableProfile:cable:onChannel:error:
|
NSArray<? extends AUAudioUnitPreset> |
factoryPresets()
[@property] factoryPresets
|
NSDictionary<java.lang.String,?> |
fullState()
[@property] fullState
|
NSDictionary<java.lang.String,?> |
fullStateForDocument()
[@property] fullStateForDocument
|
static long |
hash_static() |
int |
hostMIDIProtocol()
[@property] hostMIDIProtocol
|
AUAudioUnit |
init() |
AUAudioUnit |
initWithComponentDescriptionError(AudioComponentDescription componentDescription,
org.moe.natj.general.ptr.Ptr<NSError> outError)
initWithComponentDescription:error:
|
AUAudioUnit |
initWithComponentDescriptionOptionsError(AudioComponentDescription componentDescription,
int options,
org.moe.natj.general.ptr.Ptr<NSError> outError)
initWithComponentDescription:options:error:
|
AUAudioUnitBusArray |
inputBusses()
[@property] inputBusses
|
AUAudioUnit.Block_inputHandler_ret |
inputHandler()
[@property] inputHandler
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static void |
instantiateWithComponentDescriptionOptionsCompletionHandler(AudioComponentDescription componentDescription,
int options,
AUAudioUnit.Block_instantiateWithComponentDescriptionOptionsCompletionHandler completionHandler)
instantiateWithComponentDescription:options:completionHandler:
|
AUAudioUnit.Block_internalRenderBlock_ret |
internalRenderBlock()
Block which subclassers must provide (via a getter) to implement rendering.
|
boolean |
isInputEnabled()
[@property] inputEnabled
|
boolean |
isMusicDeviceOrEffect()
[@property] musicDeviceOrEffect
|
boolean |
isOutputEnabled()
[@property] outputEnabled
|
boolean |
isRenderingOffline()
[@property] renderingOffline
|
boolean |
isRunning()
[@property] running
|
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
double |
latency()
[@property] latency
|
java.lang.String |
manufacturerName()
[@property] manufacturerName
|
int |
maximumFramesToRender()
[@property] maximumFramesToRender
|
long |
MIDIOutputBufferSizeHint()
[@property] MIDIOutputBufferSizeHint
|
AUAudioUnit.Block_MIDIOutputEventBlock_ret |
MIDIOutputEventBlock()
[@property] MIDIOutputEventBlock
|
AUAudioUnit.Block_MIDIOutputEventListBlock_ret |
MIDIOutputEventListBlock()
[@property] MIDIOutputEventListBlock
|
NSArray<java.lang.String> |
MIDIOutputNames()
[@property] MIDIOutputNames
|
AUAudioUnit.Block_musicalContextBlock_ret |
musicalContextBlock()
[@property] musicalContextBlock
|
static AUAudioUnit |
new_objc() |
OS_os_workgroup |
osWorkgroup()
[@property] osWorkgroup
|
AUAudioUnitBusArray |
outputBusses()
[@property] outputBusses
|
AUAudioUnit.Block_outputProvider_ret |
outputProvider()
[@property] outputProvider
|
NSArray<? extends NSNumber> |
parametersForOverviewWithCount(long count)
parametersForOverviewWithCount:
|
AUParameterTree |
parameterTree()
[@property] parameterTree
|
NSDictionary<java.lang.String,?> |
presetStateForError(AUAudioUnitPreset userPreset,
org.moe.natj.general.ptr.Ptr<NSError> outError)
presetStateFor:error
|
AUAudioUnit.Block_profileChangedBlock_ret |
profileChangedBlock()
[@property] profileChangedBlock
|
MIDICIProfileState |
profileStateForCableChannel(byte cable,
byte channel)
profileStateForCable:channel:
|
boolean |
providesUserInterface()
[@property] providesUserInterface
|
static void |
registerSubclassAsComponentDescriptionNameVersion(org.moe.natj.objc.Class cls,
AudioComponentDescription componentDescription,
java.lang.String name,
int version)
Register an audio unit component implemented as an AUAudioUnit subclass.
|
void |
removeRenderObserver(long token)
removeRenderObserver:
|
AUAudioUnit.Block_renderBlock_ret |
renderBlock()
[@property] renderBlock
|
AUAudioUnit.Block_renderContextObserver_ret |
renderContextObserver()
[@property] renderContextObserver
|
long |
renderQuality()
[@property] renderQuality
|
boolean |
renderResourcesAllocated()
[@property] renderResourcesAllocated
|
void |
reset()
reset
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
boolean |
saveUserPresetError(AUAudioUnitPreset userPreset,
org.moe.natj.general.ptr.Ptr<NSError> outError)
saveUserPreset:error
|
AUAudioUnit.Block_scheduleMIDIEventBlock_ret |
scheduleMIDIEventBlock()
[@property] scheduleMIDIEventBlock
|
AUAudioUnit.Block_scheduleMIDIEventListBlock_ret |
scheduleMIDIEventListBlock()
[@property] scheduleMIDIEventListBlock
|
AUAudioUnit.Block_scheduleParameterBlock_ret |
scheduleParameterBlock()
[@property] scheduleParameterBlock
|
void |
selectViewConfiguration(AUAudioUnitViewConfiguration viewConfiguration)
selectViewConfiguration
|
void |
setChannelMap(NSArray<? extends NSNumber> value)
[@property] channelMap
|
void |
setContextName(java.lang.String value)
[@property] contextName
|
void |
setCurrentPreset(AUAudioUnitPreset value)
[@property] currentPreset
|
void |
setFullState(NSDictionary<java.lang.String,?> value)
[@property] fullState
|
void |
setFullStateForDocument(NSDictionary<java.lang.String,?> value)
[@property] fullStateForDocument
|
void |
setHostMIDIProtocol(int value)
[@property] hostMIDIProtocol
|
void |
setInputEnabled(boolean value)
[@property] inputEnabled
|
void |
setInputHandler(AUAudioUnit.Block_setInputHandler value)
[@property] inputHandler
|
void |
setMaximumFramesToRender(int value)
[@property] maximumFramesToRender
|
void |
setMIDIOutputBufferSizeHint(long value)
[@property] MIDIOutputBufferSizeHint
|
void |
setMIDIOutputEventBlock(AUAudioUnit.Block_setMIDIOutputEventBlock value)
[@property] MIDIOutputEventBlock
|
void |
setMIDIOutputEventListBlock(AUAudioUnit.Block_setMIDIOutputEventListBlock value)
[@property] MIDIOutputEventListBlock
|
void |
setMusicalContextBlock(AUAudioUnit.Block_setMusicalContextBlock value)
[@property] musicalContextBlock
|
void |
setOutputEnabled(boolean value)
[@property] outputEnabled
|
void |
setOutputProvider(AUAudioUnit.Block_setOutputProvider value)
[@property] outputProvider
|
void |
setParameterTree(AUParameterTree value)
[@property] parameterTree
|
void |
setProfileChangedBlock(AUAudioUnit.Block_setProfileChangedBlock value)
[@property] profileChangedBlock
|
void |
setRenderingOffline(boolean value)
[@property] renderingOffline
|
void |
setRenderQuality(long value)
[@property] renderQuality
|
void |
setRenderResourcesAllocated(boolean flag)
setRenderResourcesAllocated:
|
void |
setShouldBypassEffect(boolean value)
[@property] shouldBypassEffect
|
void |
setTransportStateBlock(AUAudioUnit.Block_setTransportStateBlock value)
[@property] transportStateBlock
|
static void |
setVersion_static(long aVersion) |
boolean |
shouldBypassEffect()
[@property] shouldBypassEffect
|
boolean |
shouldChangeToFormatForBus(AVAudioFormat format,
AUAudioUnitBus bus)
shouldChangeToFormat:forBus:
|
boolean |
startHardwareAndReturnError(org.moe.natj.general.ptr.Ptr<NSError> outError)
startHardwareAndReturnError:
|
void |
stopHardware()
stopHardware
|
static org.moe.natj.objc.Class |
superclass_static() |
NSIndexSet |
supportedViewConfigurations(NSArray<? extends AUAudioUnitViewConfiguration> availableViewConfigurations)
supportedViewConfigurations
|
boolean |
supportsMPE()
[@property] supportsMPE
|
boolean |
supportsUserPresets()
[@property] supportsUserPresets
|
double |
tailTime()
[@property] tailTime
|
long |
tokenByAddingRenderObserver(AUAudioUnit.Block_tokenByAddingRenderObserver observer)
tokenByAddingRenderObserver:
|
AUAudioUnit.Block_transportStateBlock_ret |
transportStateBlock()
[@property] transportStateBlock
|
NSArray<? extends AUAudioUnitPreset> |
userPresets()
[@property] userPresets
|
static long |
version_static() |
long |
virtualMIDICableCount()
[@property] virtualMIDICableCount
|
accessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKeypublic static boolean accessInstanceVariablesDirectly()
public static AUAudioUnit alloc()
public static AUAudioUnit allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public static long hash_static()
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static void instantiateWithComponentDescriptionOptionsCompletionHandler(AudioComponentDescription componentDescription, int options, AUAudioUnit.Block_instantiateWithComponentDescriptionOptionsCompletionHandler completionHandler)
Asynchronously create an AUAudioUnit instance.
Certain types of AUAudioUnits must be instantiated asynchronously -- see the discussion of kAudioComponentFlag_RequiresAsyncInstantiation in AudioToolbox/AudioComponent.h.
Note: Do not block the main thread while waiting for the completion handler to be called; this can deadlock.
componentDescription - The AudioComponentDescription of the audio unit to instantiate.options - See the discussion of AudioComponentInstantiationOptions in AudioToolbox/AudioComponent.h.completionHandler - Called in a thread/dispatch queue context internal to the implementation. The client should
retain the supplied AUAudioUnit.public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static AUAudioUnit new_objc()
public static void registerSubclassAsComponentDescriptionNameVersion(org.moe.natj.objc.Class cls,
AudioComponentDescription componentDescription,
java.lang.String name,
int version)
This method dynamically registers the supplied AUAudioUnit subclass with the Audio Component
system, in the context of the current process (only). After registering the subclass, it can
be instantiated via AudioComponentInstanceNew,
-[AUAudioUnit initWithComponentDescription:options:error:], and via any other API's which
instantiate audio units via their component descriptions (e.g.
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static long version_static()
public boolean allParameterValues()
public boolean allocateRenderResourcesAndReturnError(org.moe.natj.general.ptr.Ptr<NSError> outError)
Allocate resources required to render.
Hosts must call this before beginning to render. Subclassers should call the superclass implementation.
Bridged to the v2 API AudioUnitInitialize().
public java.lang.String audioUnitName()
The audio unit's name.
public boolean canPerformInput()
Whether the I/O device can perform input.
public boolean canPerformOutput()
Whether the I/O device can perform output.
public boolean canProcessInPlace()
Expresses whether an audio unit can process in place.
In-place processing is the ability for an audio unit to transform an input signal to an output signal in-place in the input buffer, without requiring a separate output buffer.
A host can express its desire to process in place by using null mData pointers in the output buffer list. The audio unit may process in-place in the input buffers. See the discussion of renderBlock.
Partially bridged to the v2 property kAudioUnitProperty_InPlaceProcessing; in v3 it is not settable.
Defaults to NO. Subclassers can override to return YES.
public NSArray<? extends NSNumber> channelCapabilities()
Expresses valid combinations of input and output channel counts.
Elements are NSNumber containing integers; [0]=input count, [1]=output count, [2]=2nd input count, [3]=2nd output count, etc.
An input, output count of (2, 2) signifies that the audio unit can process 2 input channels to 2 output channels.
Negative numbers (-1, -2) indicate *any* number of channels. (-1, -1) means any number of channels on input and output as long as they are the same. (-1, -2) means any number of channels on input or output, without the requirement that the counts are the same.
A negative number less than -2 is used to indicate a total number of channels across every bus in that scope, regardless of how many channels are set on any particular bus. For example, (-16, 2) indicates that a unit can accept up to 16 channels of input across its input busses, but will only produce 2 channels of output.
Zero on either side (though typically input) means "not applicable", because there are no elements on that side.
Bridged to the v2 property kAudioUnitProperty_SupportedNumChannels.
public NSArray<? extends NSNumber> channelMap()
Specify a mapping of input channels to output channels.
Converter and input/output audio units may support re-ordering or splitting of input channels to output channels. The number of channels in the channel map is the number of channels of the destination (output format). The channel map entries contain a channel number of the source channel that should be mapped to that destination channel. If -1 is specified, then that destination channel will not contain any channel from the source (so it will be silent).
If the property value is nil, then the audio unit does not support this property.
Bridged to the v2 property kAudioOutputUnitProperty_ChannelMap.
public AudioComponent component()
The AudioComponent which was found based on componentDescription when the audio unit was created.
public AudioComponentDescription componentDescription()
The AudioComponentDescription with which the audio unit was created.
public java.lang.String componentName()
The unit's component's name.
By convention, an audio unit's component name is its manufacturer's name, plus ": ", plus the audio unit's name. The audioUnitName and manufacturerName properties are derived from the component name.
public int componentVersion()
The unit's component's version.
public java.lang.String contextName()
Information about the host context in which the audio unit is connected, for display in the audio unit's view.
For example, a host could set "track 3" as the context, so that the audio unit's view could then display to the user "My audio unit on track 3".
Bridged to the v2 property kAudioUnitProperty_ContextName.
public AUAudioUnitPreset currentPreset()
The audio unit's last-selected preset.
Hosts can let the user select a preset by setting this property. Note that when getting this property, it does not reflect whether parameters may have been modified since the preset was selected.
Bridged to the v2 property kAudioUnitProperty_PresentPreset.
public void deallocateRenderResources()
Deallocate resources allocated by allocateRenderResourcesAndReturnError:
Hosts should call this after finishing rendering. Subclassers should call the superclass implementation.
Bridged to the v2 API AudioUnitUninitialize().
public NSArray<? extends AUAudioUnitPreset> factoryPresets()
A collection of presets provided by the audio unit's developer.
A preset provides users of an audio unit with an easily-selectable, fine-tuned set of parameters provided by the developer. This property returns all of the available factory presets.
Bridged to the v2 property kAudioUnitProperty_FactoryPresets.
public NSDictionary<java.lang.String,?> fullState()
A persistable snapshot of the Audio Unit's properties and parameters, suitable for saving as a user preset.
Hosts may use this property to save and restore the state of an Audio Unit being used in a user preset or document. The Audio Unit should not persist transitory properties such as stream formats, but should save and restore all parameters and custom properties.
The base class implementation of this property saves the values of all parameters currently in the parameter tree. A subclass which dynamically produces multiple variants of the parameter tree needs to be aware that the serialization method does a depth-first preorder traversal of the tree.
Bridged to the v2 property kAudioUnitProperty_ClassInfo.
public NSDictionary<java.lang.String,?> fullStateForDocument()
A persistable snapshot of the audio unit's properties and parameters, suitable for saving in a user's document.
This property is distinct from fullState in that some state is suitable for saving in user presets, while other state is not. For example, a synthesizer's master tuning setting could be considered global state, inappropriate for storing in reusable presets, but desirable for storing in a document for a specific live performance.
Hosts saving documents should use this property. If the audio unit does not implement it, the base class simply sets/gets fullState.
Bridged to the v2 property kAudioUnitProperty_ClassInfoFromDocument.
public AUAudioUnit init()
public AUAudioUnit initWithComponentDescriptionError(AudioComponentDescription componentDescription, org.moe.natj.general.ptr.Ptr<NSError> outError)
Convenience initializer (omits options).
public AUAudioUnit initWithComponentDescriptionOptionsError(AudioComponentDescription componentDescription, int options, org.moe.natj.general.ptr.Ptr<NSError> outError)
Designated initializer.
componentDescription - A single AUAudioUnit subclass may implement multiple audio units, for example, an effect
that can also function as a generator, or a cluster of related effects. The component
description specifies the component which was instantiated.options - Options for loading the unit in-process or out-of-process.outError - Returned in the event of failure.public AUAudioUnitBusArray inputBusses()
An audio unit's audio input connection points.
Subclassers must override this property's getter. The implementation should return the same object every time it is asked for it, since clients can install KVO observers on it.
public AUAudioUnit.Block_inputHandler_ret inputHandler()
The block that the output unit will call to notify when input is available.
See discussion for AUInputHandler.
public boolean isInputEnabled()
Flag enabling audio input from the unit.
Input is disabled by default. This must be set to YES if input audio is desired. Setting to YES will have no effect if canPerformInput is false.
public void setInputEnabled(boolean value)
Flag enabling audio input from the unit.
Input is disabled by default. This must be set to YES if input audio is desired. Setting to YES will have no effect if canPerformInput is false.
public boolean isMusicDeviceOrEffect()
Specifies whether an audio unit responds to MIDI events.
This is implemented in the base class and returns YES if the component type is music device or music effect.
public boolean isOutputEnabled()
Flag enabling audio output from the unit.
Output is enabled by default. Setting to YES will have no effect if canPerformOutput is false.
public void setOutputEnabled(boolean value)
Flag enabling audio output from the unit.
Output is enabled by default. Setting to YES will have no effect if canPerformOutput is false.
public boolean isRenderingOffline()
Communicates to an audio unit that it is rendering offline.
A host should set this property when using an audio unit in a context where there are no realtime deadlines, before asking the unit to allocate render resources. An audio unit may respond by using a more expensive signal processing algorithm, or allowing itself to block at render time if data being generated on secondary work threads is not ready in time. (Normally, in a realtime thread, this data would have to be dropped).
Bridged to the v2 property kAudioUnitProperty_OfflineRender.
public void setRenderingOffline(boolean value)
Communicates to an audio unit that it is rendering offline.
A host should set this property when using an audio unit in a context where there are no realtime deadlines, before asking the unit to allocate render resources. An audio unit may respond by using a more expensive signal processing algorithm, or allowing itself to block at render time if data being generated on secondary work threads is not ready in time. (Normally, in a realtime thread, this data would have to be dropped).
Bridged to the v2 property kAudioUnitProperty_OfflineRender.
public double latency()
The audio unit's processing latency, in seconds.
This property reflects the delay between when an impulse in the unit's audio unit stream arrives in the input vs. output streams. This should reflect the delay due to signal processing (e.g. filters, FFT's, etc.), not delay or reverberation which is being applied as an effect.
Note that a latency that varies with parameter settings, including bypass, is generally not useful to hosts. A host is usually only prepared to add delays before starting to render and those delays need to be fixed. A variable delay would introduce artifacts even if the host could track it. If an algorithm has a variable latency it should be adjusted upwards to some fixed latency within the audio unit. If for some reason this is not possible, then latency could be regarded as an unavoidable consequence of the algorithm and left unreported (i.e. with a value of 0).
Bridged to the v2 property kAudioUnitProperty_Latency.
public java.lang.String manufacturerName()
The manufacturer's name.
public int maximumFramesToRender()
The maximum number of frames which the audio unit can render at once.
This must be set by the host before render resources are allocated. It cannot be changed while render resources are allocated.
Bridged to the v2 property kAudioUnitProperty_MaximumFramesPerSlice.
public AUAudioUnit.Block_musicalContextBlock_ret musicalContextBlock()
A callback for the AU to call the host for musical context information.
Note that an audio unit implementation accessing this property should cache it in realtime-safe storage before beginning to render.
Bridged to the HostCallback_GetBeatAndTempo and HostCallback_GetMusicalTimeLocation callback members in kAudioUnitProperty_HostCallbacks.
public AUAudioUnitBusArray outputBusses()
An audio unit's audio output connection points.
Subclassers must override this property's getter. The implementation should return the same object every time it is asked for it, since clients can install KVO observers on it.
public AUAudioUnit.Block_outputProvider_ret outputProvider()
The block that the output unit will call to get audio to send to the output.
This block must be set if output is enabled.
public AUParameterTree parameterTree()
An audio unit's parameters, organized in a hierarchy.
Audio unit hosts can fetch this property to discover a unit's parameters. KVO notifications are issued on this member to notify the host of changes to the set of available parameters.
AUAudioUnit has an additional pseudo-property, "allParameterValues", on which KVO notifications are issued in response to certain events where potentially all parameter values are invalidated. This includes changes to currentPreset, fullState, and fullStateForDocument.
Hosts should not attempt to set this property.
Subclassers should implement the parameterTree getter to expose parameters to hosts. They should cache as much as possible and send KVO notifications on "parameterTree" when altering the structure of the tree or the static information (ranges, etc) of parameters.
This is similar to the v2 properties kAudioUnitProperty_ParameterList and kAudioUnitProperty_ParameterInfo.
Note that it is not safe to modify this property in a real-time context.
public NSArray<? extends NSNumber> parametersForOverviewWithCount(long count)
Returns the audio unit's `count` most important parameters.
This property allows a host to query an audio unit for some small number of parameters which are its "most important", to be displayed in a compact generic view.
An audio unit subclass should return an array of NSNumbers representing the addresses of the `count` most important parameters.
The base class returns an empty array regardless of count.
Partially bridged to kAudioUnitProperty_ParametersForOverview (v2 hosts can use that property to access this v3 method of an audio unit).
public void removeRenderObserver(long token)
Remove an observer block added via tokenByAddingRenderObserver:
token - The token previously returned by tokenByAddingRenderObserver:
Bridged to the v2 API AudioUnitRemoveRenderNotify().
public long renderQuality()
Provides a trade-off between rendering quality and CPU load.
The range of valid values is 0-127.
Bridged to the v2 property kAudioUnitProperty_RenderQuality.
public boolean renderResourcesAllocated()
returns YES if the unit has render resources allocated.
public void reset()
Reset transitory rendering state to its initial state.
Hosts should call this at the point of a discontinuity in the input stream being provided to an audio unit, for example, when seeking forward or backward within a track. In response, implementations should clear delay lines, filters, etc. Subclassers should call the superclass implementation.
Bridged to the v2 API AudioUnitReset(), in the global scope.
public AUAudioUnit.Block_scheduleMIDIEventBlock_ret scheduleMIDIEventBlock()
Block used to schedule MIDI events.
As with renderBlock, a host should fetch and cache this block before calling allocateRenderResources if it intends to schedule MIDI events.
This is implemented in the base class. It is nil when musicDeviceOrEffect is NO.
Subclasses should not override. When hosts schedule events via this block, they are sent to the Audio Unit via the list of AURenderEvents delivered to internalRenderBlock.
All events sent via this block will be delivered to the internalRenderBlock in the MIDI protocol returned by the AudioUnitMIDIProtocol property. For example, if AudioUnitMIDIProtocol returns kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0 if necessary. If AudioUnitMIDIProtocol is not set, events will be delivered as legacy MIDI.
This bridged to the v2 API MusicDeviceMIDIEvent.
public AUAudioUnit.Block_scheduleParameterBlock_ret scheduleParameterBlock()
Block which hosts use to schedule parameters.
As with renderBlock, a host should fetch and cache this block before calling allocateRenderResources, if it intends to schedule parameters.
The block is safe to call from any thread context, including realtime audio render threads.
Subclassers should not override this; it is implemented in the base class and will schedule the events to be provided to the internalRenderBlock.
Bridged to the v2 API AudioUnitScheduleParameters().
public void setChannelMap(NSArray<? extends NSNumber> value)
Specify a mapping of input channels to output channels.
Converter and input/output audio units may support re-ordering or splitting of input channels to output channels. The number of channels in the channel map is the number of channels of the destination (output format). The channel map entries contain a channel number of the source channel that should be mapped to that destination channel. If -1 is specified, then that destination channel will not contain any channel from the source (so it will be silent).
If the property value is nil, then the audio unit does not support this property.
Bridged to the v2 property kAudioOutputUnitProperty_ChannelMap.
public void setContextName(java.lang.String value)
Information about the host context in which the audio unit is connected, for display in the audio unit's view.
For example, a host could set "track 3" as the context, so that the audio unit's view could then display to the user "My audio unit on track 3".
Bridged to the v2 property kAudioUnitProperty_ContextName.
public void setCurrentPreset(AUAudioUnitPreset value)
The audio unit's last-selected preset.
Hosts can let the user select a preset by setting this property. Note that when getting this property, it does not reflect whether parameters may have been modified since the preset was selected.
Bridged to the v2 property kAudioUnitProperty_PresentPreset.
public void setFullState(NSDictionary<java.lang.String,?> value)
A persistable snapshot of the Audio Unit's properties and parameters, suitable for saving as a user preset.
Hosts may use this property to save and restore the state of an Audio Unit being used in a user preset or document. The Audio Unit should not persist transitory properties such as stream formats, but should save and restore all parameters and custom properties.
The base class implementation of this property saves the values of all parameters currently in the parameter tree. A subclass which dynamically produces multiple variants of the parameter tree needs to be aware that the serialization method does a depth-first preorder traversal of the tree.
Bridged to the v2 property kAudioUnitProperty_ClassInfo.
public void setFullStateForDocument(NSDictionary<java.lang.String,?> value)
A persistable snapshot of the audio unit's properties and parameters, suitable for saving in a user's document.
This property is distinct from fullState in that some state is suitable for saving in user presets, while other state is not. For example, a synthesizer's master tuning setting could be considered global state, inappropriate for storing in reusable presets, but desirable for storing in a document for a specific live performance.
Hosts saving documents should use this property. If the audio unit does not implement it, the base class simply sets/gets fullState.
Bridged to the v2 property kAudioUnitProperty_ClassInfoFromDocument.
public void setInputHandler(AUAudioUnit.Block_setInputHandler value)
The block that the output unit will call to notify when input is available.
See discussion for AUInputHandler.
public void setMaximumFramesToRender(int value)
The maximum number of frames which the audio unit can render at once.
This must be set by the host before render resources are allocated. It cannot be changed while render resources are allocated.
Bridged to the v2 property kAudioUnitProperty_MaximumFramesPerSlice.
public void setMusicalContextBlock(AUAudioUnit.Block_setMusicalContextBlock value)
A callback for the AU to call the host for musical context information.
Note that an audio unit implementation accessing this property should cache it in realtime-safe storage before beginning to render.
Bridged to the HostCallback_GetBeatAndTempo and HostCallback_GetMusicalTimeLocation callback members in kAudioUnitProperty_HostCallbacks.
public void setOutputProvider(AUAudioUnit.Block_setOutputProvider value)
The block that the output unit will call to get audio to send to the output.
This block must be set if output is enabled.
public void setRenderQuality(long value)
Provides a trade-off between rendering quality and CPU load.
The range of valid values is 0-127.
Bridged to the v2 property kAudioUnitProperty_RenderQuality.
public void setRenderResourcesAllocated(boolean flag)
flag - In the base class implementation of allocateRenderResourcesAndReturnError:, the property renderResourcesAllocated is set to YES.
If allocateRenderResourcesAndReturnError: should fail in a subclass, subclassers must use this method to set renderResourcesAllocated to NO.public void setShouldBypassEffect(boolean value)
Directs an effect to route input directly to output, without any processing.
Bridged to the v2 property kAudioUnitProperty_BypassEffect.
public void setTransportStateBlock(AUAudioUnit.Block_setTransportStateBlock value)
A callback for the AU to call the host for transport state information.
Note that an audio unit implementation accessing this property should cache it in realtime-safe storage before beginning to render.
Bridged to the HostCallback_GetTransportState and HostCallback_GetTransportState2 callback members in kAudioUnitProperty_HostCallbacks.
public boolean shouldBypassEffect()
Directs an effect to route input directly to output, without any processing.
Bridged to the v2 property kAudioUnitProperty_BypassEffect.
public boolean shouldChangeToFormatForBus(AVAudioFormat format, AUAudioUnitBus bus)
This is called when setting the format on an AUAudioUnitBus. The bus has already checked that the format meets the channel constraints of the bus. The AU can override this method to check before allowing a new format to be set on the bus. If this method returns NO, then the new format will not be set on the bus. The default implementation returns NO if the unit has renderResourcesAllocated, otherwise it results YES.
format - An AVAudioFormat which is proposed as the new format.bus - The AUAudioUnitBus on which the format will be changed.public boolean startHardwareAndReturnError(org.moe.natj.general.ptr.Ptr<NSError> outError)
Starts the audio hardware.
outError - Returned in the event of failure.public void stopHardware()
Stops the audio hardware.
public boolean supportsMPE()
Specifies whether an audio unit supports Multi-dimensional Polyphonic Expression.
Bridged to the v2 property kAudioUnitProperty_SupportsMPE.
public double tailTime()
The audio unit's tail time, in seconds.
This property reflects the time interval between when the input stream ends or otherwise transitions to silence, and when the output stream becomes silent. Unlike latency, this should reflect the duration of a delay or reverb effect.
Bridged to the v2 property kAudioUnitProperty_TailTime.
public long tokenByAddingRenderObserver(AUAudioUnit.Block_tokenByAddingRenderObserver observer)
Add a block to be called on each render cycle.
The supplied block is called at the beginning and ending of each render cycle. It should not make any blocking calls.
This method is implemented in the base class AUAudioUnit, and should not be overridden.
Bridged to the v2 API AudioUnitAddRenderNotify().
observer - The block to call.public AUAudioUnit.Block_transportStateBlock_ret transportStateBlock()
A callback for the AU to call the host for transport state information.
Note that an audio unit implementation accessing this property should cache it in realtime-safe storage before beginning to render.
Bridged to the HostCallback_GetTransportState and HostCallback_GetTransportState2 callback members in kAudioUnitProperty_HostCallbacks.
public long virtualMIDICableCount()
The number of virtual MIDI cables implemented by a music device or effect.
A music device or MIDI effect can support up to 256 virtual MIDI cables of input; this property expresses the number of cables supported by the audio unit.
public long MIDIOutputBufferSizeHint()
Hint to control the size of the allocated buffer for outgoing MIDI events.
This property allows the plug-in to provide a hint to the framework regarding the size of its outgoing MIDI data buffer.
If the plug-in produces more MIDI output data than the default size of the allocated buffer, then the plug-in can provide this property to increase the size of this buffer.
The value represents the number of 3-byte Legacy MIDI messages that fit into the buffer or a single MIDIEventList containing 1 MIDIEventPacket of 2 words when using MIDI 2.0 (MIDIEventList based API's).
This property is set to the default value by the framework.
In case of kAudioUnitErr_MIDIOutputBufferFull errors caused by producing too much MIDI output in one render call, set this property to increase the buffer.
This only provides a recommendation to the framework.
public AUAudioUnit.Block_MIDIOutputEventBlock_ret MIDIOutputEventBlock()
Block used by the host to access the MIDI output generated by an Audio Unit.
The host can set this block and the plug-in can call it in its renderBlock to provide to the host the MIDI data associated with the current render cycle.
All events sent via this block will be delivered to the host in the MIDI protocol returned by the hostMIDIProtocol property. For example, if hostMIDIProtocol is set to kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If hostMIDIProtocol is not set, events will be delivered as legacy MIDI.
Note: AUMIDIEventListBlock should be preferred over this block going forward.
This is bridged to the v2 API property kAudioUnitProperty_MIDIOutputCallback.
public NSArray<java.lang.String> MIDIOutputNames()
Count, and names of, a plug-in's MIDI outputs.
A plug-in may override this method to inform hosts about its MIDI outputs. The size of the array is the number of outputs the Audio Unit supports. Each item in the array is the name of the MIDI output at that index.
This is bridged to the v2 API property kAudioUnitProperty_MIDIOutputCallbackInfo.
public java.lang.String audioUnitShortName()
A short name for the audio unit.
Audio unit host applications can display this name in situations where the audioUnitName might be too long. The recommended length is up to 16 characters. Host applications may truncate it.
public boolean isRunning()
The audio device's running state.
public boolean providesUserInterface()
Specifies whether an audio unit provides UI (normally in the form of a view controller).
Implemented in the framework and should not be overridden by implementators. The
framework detects whether any subclass has implemented
`requestViewControllerWithCompletionHandler:` or is implemented by an AU extension whose
extension point identifier is `com.apple.AudioUnit-UI`. See also
`requestViewControllerWithCompletionHandler:` in
public void selectViewConfiguration(AUAudioUnitViewConfiguration viewConfiguration)
Request a view configuration from the audio unit.
The host can use this method to switch the audio unit's view into a new configuration. Audio Units should override this method with the logic needed to adapt their view controller to the requested configuration.
viewConfiguration - The requested view configuration.
The view configuration passed to this method should be one which was indicated as supported via supportedViewConfigurations. If any other, unsupported, view configuration is passed or if supportedViewConfigurations returns an empty set, the audio unit implementation should fall back to its default (largest available) view configuration.
public void setMIDIOutputBufferSizeHint(long value)
Hint to control the size of the allocated buffer for outgoing MIDI events.
This property allows the plug-in to provide a hint to the framework regarding the size of its outgoing MIDI data buffer.
If the plug-in produces more MIDI output data than the default size of the allocated buffer, then the plug-in can provide this property to increase the size of this buffer.
The value represents the number of 3-byte Legacy MIDI messages that fit into the buffer or a single MIDIEventList containing 1 MIDIEventPacket of 2 words when using MIDI 2.0 (MIDIEventList based API's).
This property is set to the default value by the framework.
In case of kAudioUnitErr_MIDIOutputBufferFull errors caused by producing too much MIDI output in one render call, set this property to increase the buffer.
This only provides a recommendation to the framework.
public void setMIDIOutputEventBlock(AUAudioUnit.Block_setMIDIOutputEventBlock value)
Block used by the host to access the MIDI output generated by an Audio Unit.
The host can set this block and the plug-in can call it in its renderBlock to provide to the host the MIDI data associated with the current render cycle.
All events sent via this block will be delivered to the host in the MIDI protocol returned by the hostMIDIProtocol property. For example, if hostMIDIProtocol is set to kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If hostMIDIProtocol is not set, events will be delivered as legacy MIDI.
Note: AUMIDIEventListBlock should be preferred over this block going forward.
This is bridged to the v2 API property kAudioUnitProperty_MIDIOutputCallback.
public NSIndexSet supportedViewConfigurations(NSArray<? extends AUAudioUnitViewConfiguration> availableViewConfigurations)
Query the list of supported view configurations.
The host can query the audio unit for all the view configurations it supports. Hosts can support multiple configurations in which they can display the user interfaces of audio units (for example: full screen, normal, live mode, etc). These configurations can be of different sizes and the host might display its own control surfaces along with the view of the audio unit. The host will call this method and pass an array of supported configurations.
The audio unit should override this method and implement its own logic to report all the view configurations it supports. The size of the view in the selected configuration should be large enough to fit the view of the audio unit, otherwise it might be truncated and a scroll bar might be necessary to navigate it.
In case an empty set is returned from this method, it is considered that the plugin only supports the largest available view configuration.
availableViewConfigurations - The list of all available view configurations supported by the host.public boolean deleteUserPresetError(AUAudioUnitPreset userPreset, org.moe.natj.general.ptr.Ptr<NSError> outError)
Remove a user preset.
The user preset will be removed from userPresets and will be permanently deleted.
The default implementation of this method will delete the user preset from an internal location.
Audio Units are free to override this method to operate on a different location (e.g. their iCloud container).
userPreset - The preset to be deleted.outError - In the event of a failure, the method will return NO and outError will be set to an
NSError, describing the problem.
Some possible errors:
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_NoConnection
- domain: NSPOSIXErrorDomain code: ENOENT
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_InvalidFilePathpublic boolean disableProfileCableOnChannelError(MIDICIProfile profile, byte cable, byte channel, org.moe.natj.general.ptr.Ptr<NSError> outError)
Disable a MIDI-CI Profile on the specified cable/channel.
cable - The virtual MIDI cable.channel - The MIDI channel.outError - Returned in the event of failure.profile - The MIDI-CI profile to be disabled.public boolean enableProfileCableOnChannelError(MIDICIProfile profile, byte cable, byte channel, org.moe.natj.general.ptr.Ptr<NSError> outError)
Enable a MIDI-CI Profile on the specified cable/channel.
cable - The virtual MIDI cable.channel - The MIDI channel.outError - Returned in the event of failure.profile - The MIDI-CI profile to be enabled.public NSDictionary<java.lang.String,?> presetStateForError(AUAudioUnitPreset userPreset, org.moe.natj.general.ptr.Ptr<NSError> outError)
Retrieve the state stored in a user preset
This method allows access to the contents of a preset without having to set that preset as current. The returned dictionary is assignable to the audio unit's fullState and/or fullStateForDocument properties.
Audio units can override this method in order to vend user presets from a different location (e.g. their iCloud container).
In order to restore the state from a user preset, the audio unit should override the setter for the currentPreset property and check the preset number to determine the type of preset. If the preset number is >= 0 then the preset is a factory preset. If the preset number is < 0 then it is a user preset.
This method can then be called to retrieve the state stored in a user preset and the audio unit can assign this to fullState or fullStateForDocument.
[@kAUPresetSubtypeKey] : NSNumber, [@kAUPresetManufacturerKey] : NSNumber, [@kAUPresetVersionKey] : NSNumber, [@kAUPresetNameKey] : NSString, [@kAUPresetNumberKey] NSNumber, [@kAUPresetDataKey] : NSData
userPreset - The preset to be selected.outError - In the event of a failure, the method will return nil and outError will be set to an
NSError, describing the problem.
Some possible errors:
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_NoConnection
- domain: NSPOSIXErrorDomain code: ENOENT
- domain: NSCocoaErrorDomain code: NSCoderReadCorruptErrorpublic AUAudioUnit.Block_profileChangedBlock_ret profileChangedBlock()
A block called when a device notifies that a MIDI-CI profile has been enabled or disabled.
Since enabling / disabling MIDI-CI profiles is an asynchronous operation, the host can set this block and the audio unit is expected to call it every time the state of a MIDI-CI profile has changed.
public MIDICIProfileState profileStateForCableChannel(byte cable, byte channel)
Given a MIDI cable and channel number, return the supported MIDI-CI Profiles.
cable - The virtual MIDI cable for which the profiles are requested.channel - The MIDI channel for which the profiles are requested.public boolean saveUserPresetError(AUAudioUnitPreset userPreset, org.moe.natj.general.ptr.Ptr<NSError> outError)
Persistently save the current state of the audio unit into a userPreset
The new preset will be added to userPresets and will become selectable by assigning it to the currentPreset property. If a preset with the provided name already exists then it will be overwritten.
For user presets, the preset number is required to be negative. If a positive number is passed, the sign will be changed to negative. If zero is passed, the number will be set to -1. These changes will be reflected on the userPreset argument.
The default implementation of this method will save the user preset to an internal location.
Audio Units are free to override this method to operate on a different location (e.g. their iCloud container).
outError - In the event of a failure, the method will return NO and outError will be set to an
NSError, describing the problem.
Some possible errors:
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_NoConnection
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_InvalidFilePath
- domain: NSOSStatusErrorDomain code: kAudioUnitErr_MissingKeyuserPreset - The preset under which the current state will be saved.public void setParameterTree(AUParameterTree value)
An audio unit's parameters, organized in a hierarchy.
Audio unit hosts can fetch this property to discover a unit's parameters. KVO notifications are issued on this member to notify the host of changes to the set of available parameters.
AUAudioUnit has an additional pseudo-property, "allParameterValues", on which KVO notifications are issued in response to certain events where potentially all parameter values are invalidated. This includes changes to currentPreset, fullState, and fullStateForDocument.
Hosts should not attempt to set this property.
Subclassers should implement the parameterTree getter to expose parameters to hosts. They should cache as much as possible and send KVO notifications on "parameterTree" when altering the structure of the tree or the static information (ranges, etc) of parameters.
This is similar to the v2 properties kAudioUnitProperty_ParameterList and kAudioUnitProperty_ParameterInfo.
Note that it is not safe to modify this property in a real-time context.
public void setProfileChangedBlock(AUAudioUnit.Block_setProfileChangedBlock value)
A block called when a device notifies that a MIDI-CI profile has been enabled or disabled.
Since enabling / disabling MIDI-CI profiles is an asynchronous operation, the host can set this block and the audio unit is expected to call it every time the state of a MIDI-CI profile has changed.
public boolean supportsUserPresets()
Specifies whether an audio unit supports loading and saving user presets
The audio unit should set this property to YES if a user preset can be assigned to currentPreset.
Audio unit host applications should query this property to determine whether the audio unit supports user presets.
Assigning a user preset to the currentPreset property of an audio unit that does not support restoring state from user presets may result in incorrect behavior.
public NSArray<? extends AUAudioUnitPreset> userPresets()
A collection of presets saved by the user
In addition to factory presets, provided by the audio unit vendor, users have the ability to save the values of the parameters of an audio unit into a user preset. These users presets can be accessed using this property.
The default implementation of this method will load the user presets from an internal location that might not be directly accessible to the audio unit host application or to the audio unit. Instead of accessing this path directly, the audio unit should rely on the superclass implementation of this method to retrieve the presets.
Audio Units are free to override this method to load their user presets via different means (e.g. from their iCloud container).
public AUAudioUnit.Block_renderBlock_ret renderBlock()
Block which hosts use to ask the unit to render.
Before invoking an audio unit's rendering functionality, a host should fetch this block and cache the result. The block can then be called from a realtime context without the possibility of blocking and causing an overload at the Core Audio HAL level.
This block will call a subclass' internalRenderBlock, providing all realtime events scheduled for the current render time interval, bracketed by calls to any render observers.
Subclassers should override internalRenderBlock, not this property.
Bridged to the v2 API AudioUnitRender().
public OS_os_workgroup osWorkgroup()
The os_workgroup_t to which the input/output audio unit belongs.
For further background, see
Bridged to the v2 property kAudioOutputUnitProperty_OSWorkgroup.
public AUAudioUnit.Block_renderContextObserver_ret renderContextObserver()
Block called by the OS when the rendering context changes.
Audio Units which create auxiliary realtime rendering threads should implement this property to
return a block which will be called by the OS when the render context changes. Audio Unit hosts
must not attempt to interact with the AudioUnit through this block; it is for the exclusive use
of the OS. See
public int AudioUnitMIDIProtocol()
The MIDI protocol used by the Audio Unit for receiving MIDIEventList data.
All translatable messages will be converted (if necessary) to this protocol prior to delivery to the Audio Unit.
This is bridged to the v2 API property kAudioUnitProperty_AudioUnitMIDIProtocol.
public AUAudioUnit.Block_MIDIOutputEventListBlock_ret MIDIOutputEventListBlock()
Block used by the host to access the MIDIEventList output generated by an Audio Unit.
The host can set this block and the plug-in can call it in its renderBlock to provide to the host the MIDIEventList data associated with the current render cycle.
All events sent via this block will be delivered to the host in the MIDI protocol returned by the hostMIDIProtocol property. For example, if hostMIDIProtocol is set to kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If hostMIDIProtocol is not set, events will be delivered as legacy MIDI.
Note: This block should be preferred over MIDIOutputEventBlock going forward.
Host should setup in the following order: - Set hostMIDIProtocol - Set MIDIOutputEventBlock - Call allocateRenderResourcesAndReturnError
This is bridged to the v2 API property kAudioUnitProperty_MIDIOutputEventListCallback.
public int hostMIDIProtocol()
The MIDI protocol to be used by the host for receiving MIDIEventList data.
Hosts should set this property to the protocol they wish to receive MIDIEventList data from the Audio Unit. This should be set prior to initialization, all translatable messages will be converted (if necessary) to this property's protocol prior to delivery to the host.
This is bridged to the v2 API property kAudioUnitProperty_HostMIDIProtocol.
public AUAudioUnit.Block_scheduleMIDIEventListBlock_ret scheduleMIDIEventListBlock()
Block used to schedule MIDIEventLists.
As with renderBlock, a host should fetch and cache this block before calling allocateRenderResources, if it intends to schedule MIDI events.
When scheduling events during the render cycle (e.g. via a render observer) eventSampleTime can be AUEventSampleTimeImmediate plus an optional buffer offset, in which case the event is scheduled at the provided offset position within the current render cycle.
This is implemented in the base class. It is nil when musicDeviceOrEffect is NO.
Subclassers should not override. When hosts schedule events via this block, they are delivered to the Audio Unit via the list of AURenderEvents delivered to internalRenderBlock.
All events sent via this block will be delivered to the internalRenderBlock in the MIDI protocol returned by the AudioUnitMIDIProtocol property. For example, if this block is called with MIDI-1.0 events but AudioUnitMIDIProtocol returns kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If AudioUnitMIDIProtocol is not set, events will be delivered as legacy MIDI.
Note: This block should be preferred over scheduleMIDIEventBlock going forward.
This bridged to the v2 API MusicDeviceMIDIEventList.
public void setHostMIDIProtocol(int value)
The MIDI protocol to be used by the host for receiving MIDIEventList data.
Hosts should set this property to the protocol they wish to receive MIDIEventList data from the Audio Unit. This should be set prior to initialization, all translatable messages will be converted (if necessary) to this property's protocol prior to delivery to the host.
This is bridged to the v2 API property kAudioUnitProperty_HostMIDIProtocol.
public void setMIDIOutputEventListBlock(AUAudioUnit.Block_setMIDIOutputEventListBlock value)
Block used by the host to access the MIDIEventList output generated by an Audio Unit.
The host can set this block and the plug-in can call it in its renderBlock to provide to the host the MIDIEventList data associated with the current render cycle.
All events sent via this block will be delivered to the host in the MIDI protocol returned by the hostMIDIProtocol property. For example, if hostMIDIProtocol is set to kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If hostMIDIProtocol is not set, events will be delivered as legacy MIDI.
Note: This block should be preferred over MIDIOutputEventBlock going forward.
Host should setup in the following order: - Set hostMIDIProtocol - Set MIDIOutputEventBlock - Call allocateRenderResourcesAndReturnError
This is bridged to the v2 API property kAudioUnitProperty_MIDIOutputEventListCallback.
public AUAudioUnit.Block_internalRenderBlock_ret internalRenderBlock()