• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Suggestions for volume controls?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Suggestions for volume controls?


  • Subject: Re: Suggestions for volume controls?
  • From: William Stewart <email@hidden>
  • Date: Mon, 20 Feb 2006 12:02:52 -0800


On 19/02/2006, at 11:00 AM, Jeff DuMonthier wrote:

I've figured out how to set the parameter ranges, built in display curves, and define custom unit names. The problem is that there is no built in log-linear display curve. I have a number of gain parameters which I would like to be able to go from 0 (-INF dB) to say 10 (+20dB). I want them to display in dB and have a logarithmic curve at the high end but a linear curve at the low end so they can get to 0.

We provide simple mappings - there are six curves predefined: log/ exp, square/sqroot, cube/cuberoot.


If you want a more complex curve then you should not use these, but rather provide your own mappings:
- publish a parameter as a generic 0,1 range (or any other arbitrary value range - 0 to 10 is fine)
- publish that parameter has strings for values (and values for strings) - in other words, when displaying the parameter value, the host should ask the AU to transform the 0,1 value, to some display sting that the AU provides (and of course the complementary transformation of going from a display string to the 0,1 value.
- the generic view in the AULab application supports this (so this can be used as a test bed)



I have a custom class which does parameter normalization and one of the options is a log-linear curve specified by a min value (0 here), max value (10) and a value in between where it transitions from linear to log with a continuous first derivative. It was originally for numerical optimization code but worked great for this so I reused it. In VST, the parameters are all normalized from 0 to 1 and the plug-in is expected to do the translation so it was easy. In AU, the translation is built in. I could do a kAudioUnitParameterUnit_Generic type with a normalized range, but then what do I have to overload to display something more useful? Is that an easy thing to do?

As described above, its a similar technique as VST uses.

Bill

It looks like kAudioUnitParameterUnit_MixerFaderCurve1 is intended to do something like what I want, but it doesn't display in dB, and may not be exactly the curve I'm looking for. What are others doing for gain curves?

On Feb 13, 2006, at 2:17 PM, William Stewart wrote:

Have a look at the AudioUnitParameterInfo struct - and in the SDK, the sample effect unit, where a parameter is defined that will draw menus - we call this an indexed parameter, and you can give each value of the index a name.

You express the parameter's natural range and units - so say -120dB to 6 dB. You will then have parameter values set within this range. You can specify a display curve that can be used by a generic view for instance, when displaying your parameter. We provide linear transformations, so that a slider for instance, can translate to/from a parameter's value (using these optional display curves)....

All you have to do here is:
describe the parameter in its most natural form
deal with the incoming values

HTH

BIll

On 12/02/2006, at 8:03 AM, Jeff DuMonthier wrote:

I'm trying to convert a VST plugin to an audio unit and I'm wondering how to do a volume control, among others. Eventually I may use a Cocoa view, but it's just the default interface for now. In VST the control just returned a value from 0.0 to 1.0 and I have some custom code for linear, log or log-linear parameter normalization I reuse all the time that made it easy to do a log-linear control from -INF to +6dB. I haven't seen any documentation on how to do various types of controls, but it looks like you just define a linear range of values and select a unit. I'm assuming if I set the range from -100 to +6 and use kAudioUnitParameterUnit_Decibels, the value it will return will be between -100.0 and +6.0. It doesn't display in dB and convert to a gain does it? How would I do a volume control that went from -INF to +6dB without overloading all the built in code, or is that the only option? What have others done for this? I'd rather not have to overload code that handles parameter automation because I really don't want to have to reimplement that.

Is there some documentation or some good examples somewhere on how to do different controls like this? I may also have to do some which are ranges with only discrete values in the range allowed. I suppose I could just pretend it's linear even though it isn't.

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40apple.com


This email sent to email@hidden

-- mailto:email@hidden
tel: +1 408 974 4056
_____________________________________________________________________ _____
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
_____________________________________________________________________ _____





_______________________________________________ Do not post admin requests to the list. They will be ignored. Coreaudio-api mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden

--
mailto:email@hidden
tel: +1 408 974 4056
________________________________________________________________________ __
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
________________________________________________________________________ __


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Mixer Units Documentation (From: "Puhl, Scott" <email@hidden>)
 >Re: Mixer Units Documentation (From: Bob Lang <email@hidden>)
 >Re: Mixer Units Documentation (From: Kevin Avila <email@hidden>)
 >Suggestions for volume controls? (From: Jeff DuMonthier <email@hidden>)
 >Re: Suggestions for volume controls? (From: William Stewart <email@hidden>)
 >Re: Suggestions for volume controls? (From: Jeff DuMonthier <email@hidden>)

  • Prev by Date: Re: Suggestions for volume controls?
  • Next by Date: 3dmixer and openal
  • Previous by thread: Re: Suggestions for volume controls?
  • Next by thread: bluetooth headset and recording
  • Index(es):
    • Date
    • Thread