Unfortunately the AU Examples do not contain all of Apple's AU utility
files.  They just provide enough of the utility classes to get the examples
going.  So, while the examples are definitely essential to learning the
different aspects of AU development, they do not cover the less-common
types, such as MusicDevice.  Here is a link to the full set of utility
files:

https://developer.apple.com/library/ios/samplecode/CoreAudioUtilityClasses/Introduction/Intro.html

If you look in there you will find MusicDeviceBase.h.  These files are NOT
part of the AudioUnit related frameworks installed on both iOS and OS X.  I
think they used to be installed by installing the Apple developer tools but
were moved out of the installation years ago, being made available for
downloading separately.

Brian's comment about not inheriting from AUBase directly is 100% true.
That said it is worthwhile to look at what is happening under the hood,
especially with respect to the different AU types...

If you dig a little deeper you will see how the inheritance hierarchy of
MusicDevice determines what AU features it's children support.  It inherits
from AUBase, which gives all the essential implementations and then
inherits from AUMIDIBase, which adds some added MIDI handling
capabilities.  I would look at the template-based Factory method in
ComponentBase.h and AUMusicLookup::Lookup() in AUPluginDispatch.cpp to get
familiar with AU types and the Apple-provided inheritance hierarchy.

Finally, Apple have recently released a new v3.0 audio unit API.  Most
likely the above semantics have changed, but I haven't had time to
investigate the precise differences.  It is definitely worth a look and has
probably simplified some of the development aspects you are currently
encountering in this thread.

--Christian

On Sun, Sep 20, 2015 at 12:40 PM, Steven Brawer <
[email protected]> wrote:

> MusicDevice.h is not a class, nor are any classes named MusicDevice (or
> MusicDeviceBase) declared in this file, nor does it include or reference
> MusicDeviceBase. Rather, besides C-structs and some other definitions, this
> file contains only calls to C functions (externs). Also, this file (and
> others) has LOTS of documentation (uncharacteristic).
>
> So, perhaps Apple is providing in these frameworks a set of functions to
> use. I think I did read somewhere that Apple was overhauling Core Audio, so
> maybe this is it. Perhaps now one is expected to roll one’s own classes, or
> Apple will (has already???) come up with some classes.
>
> I will check out the downloads and compare the C functions to the .cpp
> files of the older frameworks.
>
> Thanks
>
> Steve
>
>
> On Sep 20, 2015, at 12:18 PM, Jim Credland <[email protected]>
> wrote:
>
> Download the samples here (see Download button at the top):
>
>
> https://developer.apple.com/library/mac/samplecode/sc2195/Introduction/Intro.html
>
> Should have everything you need unless anyone knows a newer version.
>
> On 20 Sep 2015, at 17:12, Steven Brawer <
> [email protected]> wrote:
>
> I have added the following frameworks to a project: CoreMIDI, CoreAudio,
> CoreAudioKit, AudioToolbox, AudioUnit (XCode 7, OSX10.10.5). These were
> downloaded when I upgraded the OS and XCode, and are in
> System/Library/Frameworks, all dated with the date of my upgrade of OSX.
>
> All I see in the project are headers.
>
> There is a MusicDevice.h, but no MusicDeviceBase.h. There are no
> AUEffect….. .h of any kind.  Am I missing a framework, have things changed
> considerably, or am I supposed to be using other frameworks that were not
> downloaded?
>
> Thanks
>
> Steve
>
>
> On Sep 19, 2015, at 6:15 PM, Brian Willoughby <[email protected]>
> wrote:
>
> Yes. AUEffectBase handles one input stream to one output stream. All the
> classes like AUInlineEffectBase and AUMIDIEffectBase that inherit from
> AUEffectBase have the same assumptions. At the moment, I can't remember
> whether additional streams require moving away from AUEffectBase or if
> there are easy ways to adapt it. I do recall that I never finished my
> side-chain effect that requires a second input stream.
>
> You're on the right track with MusicDeviceBase. If you search for that
> class, you'll probably find more help getting started in that area. Synths
> are a bit more rare than effects that have audio input, so you might have
> to search a little further.
>
> Of course, the rarest plug-in is a synth that also accepts input audio for
> any reason - whether side-chain, modulation, envelope tracking, etc.
>
> Brian Willoughby
>
>
> On Sep 19, 2015, at 2:50 PM, Steven Brawer <
> [email protected]> wrote:
>
> Thank you so much. This is really a big help.  I am planning a plug-in
> synth to generate audio, so I will start with MusicDeviceBase and plow on
> from there.
>
> If a class name includes the word “Effect”,  would it be for an effect
> plug-in and not a synth plug-in? (That is, such a class expects a stream
> input at the very least.)
>
> Steve
>
>
> On Sep 19, 2015, at 5:33 PM, Brian Willoughby <[email protected]>
> wrote:
>
> Ultimately, it's AUBase.
>
> However, you're most likely to use something like AUEffectBase,
> AUInlineEffectBase, MusicDeviceBase, or AUMIDIEffectBase (which
> incorporates AUMIDIBase).
>
> It's very difficult to work directly with AUBase unless you understand how
> to provide everything required. The subclasses are there to provide the
> general stuff for nearly all possibilities.
>
> If you have a synthesis plug-in, i.e. one that generates audio, then start
> with MusicDeviceBase. If you have a standard effect, AUEffectBase is the
> most common - one stream in, one stream out, any number of channels. There
> are a few effects where AUInlineEffectBase makes sense, but it may not
> always be easy to know when to choose it over AUEffectBase.
> AUMIDIEffectBase combines AUEffectBase and AUMIDIBase, but I don't believe
> that there are any base classes which combine MusicDeviceBase and
> AUEffectBase, but I can't recall if there are actually any valid scenarios
> where that would be needed.
>
> Brian Willoughby
> Sound Consulting
>
> On Sep 19, 2015, at 1:29 PM, Steven Brawer <
> [email protected]> wrote:
>
> What is the Core-Audio base class for creating a logic pro plug-in?
>
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Coreaudio-api mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> https://lists.apple.com/mailman/options/coreaudio-api/jim%40cernproductions.com
>
> This email sent to [email protected]
>
>
>
>
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Coreaudio-api mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/coreaudio-api/recapitch%40gmail.com
>
> This email sent to [email protected]
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to