The source code documented here is a graphics framework / SDK intended to assist building AudioUnit view components. They are based on Carbon APIs and make it quite easy to create fancy user interfaces for audio effects and MusicDevices.
To make use of them, it's recommended to know what an AudioUnit is (see Audio on MacOS X), what C/C++ is and how creating audio plugins in general works.
If you find mistakes in the documentation or bugs in the code, please let me know.
To obtain the latest version, go to u-he CAUGui page
First of all, it extends the Apple provided example code, namely the AudioUnit View base classes, without need to modify them. CAUGui just adds on a way of handling customizable CarbonControls. You can decide how much of it you'd like to add, like occasionaly using just one control or two, or if you want to build your whole user interface upon CAUGui. To some extend, CAUGui Controls can be mixed with Aqua CarbonControls.
Secondly, CAUGui is designed to keep away stress from the developer. It offers functionality to take care for its objects by itself so the developer can add more and more controls to the GUI without having to change the code in many places. There is no need to track controls over their lifetime, like maintaining pointers, observing control value changes and the like. CAUGui manager objects (CAUGuiMan) and Carbon notification schemes built in CoreAudio do this for you.
Third, to a very convenient extend, visual value representation and user interaction are independent beings. CAUGuiGraphic objects encapsulate functionality of how to paint and what to draw from a given parameter value while CAUGuiControl objects (CAUGuiCtrl) manage the translation from user input (mousing) to value changes. A set of different Graphics types and Controls can be freely combined to avoid redundancy and enforce reusability.
Last but not least, everything profits from the convenient AudioUnit parameter scheme: Values are visualized in their correct ranges, indexed parameters with strings attached automatically end up in PopUpMenues etc.
Another goodie of all this is, since you can forget about every object as an individual, you can build little factory classes that create groups of controls.
1.) make sure an object of type CAUGuiMan is member of your view class
2.) edit CAUGuiConfig.h to make tell it about some things like your Component's Bundle Identifier
3.) During instantiation of the view, inside CreateUI():
4.) On view destruction, destroy the CAUGuiMan
For an example, look at the CAUGuiDemo project inside the SDK
If you insist on giving back more, send me an email (urs@u-he.com).
Now to the worse part of the license: If you find bugs, you have to report them or you shall not use this software.
The worst part: If you modify this software to work with compositing windows, you have to publish or send in the changes that exactly had been necessary to do this.
You may under no circumstances ever pretend that any code from within CAUGui as published by me has been done by you, unless it really is contributed by you. You may furtherly not sell this SDK or parts of it (which doesn't mean your products inherit from this, this is not intended to be a profit killer license). In other words, the copyright remains mine while you are allowed to use the stuff in your own software (which however may be a commercial product) under the terms of this license.
Marc Poirier, Airy Andre, Chris Reed, Art Gillespie, Robert Grant, Franck Stauffer, Bill Stewart, Michael Hopkins, Eric Schlegel, Niko Gerteis, Sascha Kujawa and probably a dozen more to whom I apologize for having neglected here.
Thanks, boys!
;) Urs
| (c) 2002 - 2003 by Urs Heckmann www.u-he.com |
1.3.6