On the other hand, there's a MIDI Arpeggiator MIDI FX Audio Unit, whose
Generic View has buttons on it (http://rghost.net/60473354/image.png). So
it is possible to add a button, just not documented?...

2015-01-19 20:13 GMT+02:00 Nick <[email protected]>:

> Hi Christian,
> Thank you for the response.
> Yes i tried setting Mix and Max to the same value, which always resulted
> in the control not displaying at all on the generic view.
> I also tried using |=, and i have just tried setting
> kAudioUnitParameterFlag_HasCFNameString and
> kAudioUnitParameterFlag_ValuesHaveStrings.
> Still nothing.
>
> Apparently Apple just "broke" this option for us in the latest MainStage
> and Logic.
> I also checked various audio units, that come with Logic Pro, and none of
> them had a button on their generic view.
>
>
> 2015-01-19 18:50 GMT+02:00 Christian Rober <[email protected]>:
>
>> These are just a few shots in the dark:
>>
>> 1.  Have you tried setting the max value to the same thing as the min
>> and the default?  I only suggest this because of Mr. Stewart's
>> comment, in the linked post, about state-less parameters (i.e.
>> booleans with write-only flag) being perceived by the generic view as
>> a button.  Maybe the host checks the min vs. the max and when it sees
>> a difference between the two it decides the user needs a state-ful
>> control.
>>
>> 2.  Have you tried different combinations of
>> kAudioUnitParameterFlag_HasCFNameString and
>> kAudioUnitParameterFlag_ValuesHaveStrings?  Maybe the view is trying
>> to create a button, but is expecting one or both of those flags to be
>> set.  Since it doesn't see them, it might just create an empty button,
>> or skip creating a button altogether.  You may be clobbering those
>> string flags when you set it to writable.  You may just need to set
>> the writable flag using " |= " instead of " = ".
>>
>> --Christian
>>
>> On Mon, Jan 19, 2015 at 2:05 AM, Nick <[email protected]> wrote:
>> > Hello
>> > I had asked this already, but apparently the message got lost.
>> > Anyways, sorry if you're reading this a second time.
>> >
>> > I have created an Audio unit with an accompanying Cocoa view.
>> >
>> > An ordinary audio unit, that we can add to a Logic or MainStage project,
>> > mainly consists of two parts - an Audio Unit Kernel and an Audio Unit
>> View,
>> > and they are designed to be separate things and "communicate" by
>> changing
>> > parameters.
>> >
>> > The Audio Unit view can be presented by the host (by Logic Pro X, for
>> > example) either as a nicely drawn cocoa view
>> > (http://rghost.net/60432973/image.png), which is an NSView from a xib,
>> > loaded from the AudioUnit's bundle, or you can select in a drop-down
>> menu
>> > the "Controls" option (http://rghost.net/60432978/image.png) and get an
>> > ascetic dynamically generated view (
>> http://rghost.net/60432987/image.png).
>> > This dynamically generated view (or "Generic" view) is generated by the
>> host
>> > application, based on what your audio unit's function returns in its
>> > AudioUnitParameterInfo parameter:
>> >
>> > OSStatus GetParameterInfo(AudioUnitScope inScope, AudioUnitParameterID
>> > inParameterID, AudioUnitParameterInfo &outParameterInfo)
>> >
>> > So if you return the following, you'll get a checkbox with the title
>> "Hey
>> > there":
>> >
>> >                     AUBase::FillInParameterName (outParameterInfo,
>> > CFSTR("Hey there"), false);
>> >
>> >                     outParameterInfo.unit =
>> kAudioUnitParameterUnit_Boolean;
>> >
>> >                     outParameterInfo.minValue = 0;
>> >
>> >                     outParameterInfo.maxValue = 1;
>> >
>> >                     outParameterInfo.defaultValue = 0;
>> >
>> >                     outParameterInfo.flags =
>> > kAudioUnitParameterFlag_IsWritable | kAudioUnitParameterFlag_IsReadable;
>> >
>> >
>> > This was the introduction.
>> > Now back to the question.
>> >
>> > I would like to have a Push Button on my autogenerated by the host
>> "Generic
>> > View".
>> > And I can't figure out how to do this.
>> >
>> > My research showed that this used to be possible by declaring a write
>> only
>> > boolean parameter in GetParameterInfo. Here's some links that prove
>> this:
>> >
>> > http://lists.apple.com/archives/coreaudio-api/2005/Jun/msg00023.html
>> > http://lists.apple.com/archives/coreaudio-api/2005/May/msg00280.html
>> > http://lists.apple.com/archives/coreaudio-api/2005/Jul/msg00032.html
>> >
>> > The problem is that when I declare a write only boolean param, no
>> control
>> > appears in the Generic view of Logic Pro X or Mainstage 3.
>> > If I declare a read only boolean param, all I see is a disabled control
>> with
>> > "< off >"  text on it.
>> > If i declare a read-write boolean param, I am getting a check box (the
>> last
>> > is the correct behavior)
>> >
>> > Apart from the kAudioUnitParameterUnit_Boolean, I have tried other types
>> > (kAudioUnitParameterUnit_Indexed, kAudioUnitParameterUnit_Generic),
>> tried
>> > setting the "kAudioUnitParameterFlag_IsWritable" and
>> > "kAudioUnitParameterFlag_IsReadable" together and separately. To no
>> avail -
>> > I can't manage to get a button on the generic view.
>> >
>> > So how to get a regular push button on generic view?
>> >
>> >
>> >
>> >  _______________________________________________
>> > 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