Skip to content

Commit 00b2ff8

Browse files
committed
Add documenation for audio_unit::Type
1 parent fe496fa commit 00b2ff8

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

src/audio_unit/mod.rs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,94 @@ pub enum Element {
3333
}
3434

3535
/// Represents the different kinds of Audio Units that are available.
36+
///
37+
/// Original documentation [here](https://developer.apple.com/library/prerelease/mac/documentation/AudioUnit/Reference/AUComponentServicesReference/index.html#//apple_ref/doc/constant_group/Audio_Unit_Types).
3638
#[derive(Copy, Clone, Debug)]
3739
pub enum Type {
40+
/// Provides input, output, or both input and output simultaneously.
41+
///
42+
/// It can be used as the head of an audio unit processing graph.
43+
///
44+
/// **Available** in OS X v10.2 and later.
3845
Output = 1635086197,
46+
/// An instrument unit can be used as a software musical instrument, such as a sampler or
47+
/// synthesizer.
48+
///
49+
/// It responds to MIDI (Musical Instrument Digital Interface) control signals and can create
50+
/// notes.
51+
///
52+
/// **Available** in OS X v10.2 and later.
3953
MusicDevice = 1635085685,
54+
/// An effect unit that can respond to MIDI control messages, typically through a mapping of
55+
/// MIDI messages to parameters of the audio unit's DSP algorithm.
56+
///
57+
/// **Available** in OS X v10.2 and later.
4058
MusicEffect = 1635085670,
59+
/// A format converter unit can transform audio formats, such as performing sample rate
60+
/// conversion.
61+
///
62+
/// A format converter is also appropriate for dferred rendering and for effects such as
63+
/// varispeed.
64+
///
65+
/// A format converter unit can ask for as much or as little audio input as it needs to produce
66+
/// a given output, while still completing its rendering within the time represented by the
67+
/// output buffer.
68+
///
69+
/// For effect-like format converters, such as pitch shifters, it is common to provide both a
70+
/// real-time and an offline version. OS X, for example, includes Time-Pitch and Varispeed
71+
/// audio units in both real-time and offline versions.
72+
///
73+
/// **Available** in OS X v10.2 and later.
4174
FormatConverter = 1635083875,
75+
/// An effect unit repeatedly processes a number of audio input samples to produce the same
76+
/// number of audio output samples.
77+
///
78+
/// Most commonly, an effect unit has a single input and a single output.
79+
///
80+
/// Some effects take side-chain inputs as well.
81+
///
82+
/// Effect units can be run offline, such as to process a file without playing it, but are
83+
/// expected to run in real-time.
84+
///
85+
/// **Available** in OS X v10.2 and later.
4286
Effect = 1635083896,
87+
/// A mixer unit takes a number of input channels and mixes them to provide one or more output
88+
/// channels.
89+
///
90+
/// For example, the **StereoMixer** **SubType** in OS X takes multiple mono or stereo inputs
91+
/// and produces a single stereo output.
92+
///
93+
/// **Available** in OS X v10.2 and later.
4394
Mixer = 1635085688,
95+
/// A panner unit is a specialised effect unit that distributes one or more channels in a
96+
/// single input to one or more channels in a single output.
97+
///
98+
/// Panner units must support a set of standard audio unit parameters that specify panning
99+
/// coordinates.
100+
///
101+
/// **Available** in OS X v10.3 and later.
44102
Panner = 1635086446,
103+
/// A generator unit provides audio output that has no audio input.
104+
///
105+
/// This audio unit type is appropriate for a tone generator.
106+
///
107+
/// Unlike an instrument unit, a generator unit does not have a control input.
108+
///
109+
/// **Available** in OS X v10.3 and later.
45110
Generator = 1635084142,
111+
/// An offline effect unit provides digital signal processing of a sort that cannot proceed in
112+
/// real-time.
113+
///
114+
/// For example, level normalisation requires examination of an entire sound, beginning to end,
115+
/// before the normalisation factor can be calculated.
116+
///
117+
/// As such, offline effect units also have a notion of a priming stage that can be performed
118+
/// before the actual rendering/processing phase is executed.
119+
///
120+
/// **Available** in OS X v10.3 and later.
46121
OfflineEffect = 1635086188,
122+
/// FIXME: Could not find documenation for this type - it seems it was added very recently
123+
/// (around 2013) and Apple's documentation doesn't seem to have updated to include it.
47124
MidiProcessor = 1635085673,
48125
}
49126

0 commit comments

Comments
 (0)