From b0f1c16e207e0c0cd0d6dcc5b509ecb5c1844b5f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 23 Dec 2014 18:45:21 -0500 Subject: [PATCH] Support fancy controls for some AU units. --- libs/ardour/ardour/audio_unit.h | 3 +-- libs/ardour/audio_unit.cc | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index 48ea614f8e..13b16827cb 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -53,9 +53,8 @@ struct LIBARDOUR_API AUParameterDescriptor : public ParameterDescriptor { AudioUnitParameterID id; AudioUnitScope scope; AudioUnitElement element; - float default_value; bool automatable; - AudioUnitParameterUnit unit; + AudioUnitParameterUnit au_unit; }; class LIBARDOUR_API AUPlugin : public ARDOUR::Plugin diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 21f2a78be0..820f41061b 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -606,7 +606,7 @@ AUPlugin::discover_parameters () d.lower = info.minValue; d.upper = info.maxValue; - d.default_value = info.defaultValue; + d.normal = info.defaultValue; d.integer_step = (info.unit == kAudioUnitParameterUnit_Indexed); d.toggled = (info.unit == kAudioUnitParameterUnit_Boolean) || @@ -617,7 +617,18 @@ AUPlugin::discover_parameters () (info.flags & kAudioUnitParameterFlag_IsWritable); d.logarithmic = (info.flags & kAudioUnitParameterFlag_DisplayLogarithmic); - d.unit = info.unit; + d.au_unit = info.unit; + switch (info.unit) { + case kAudioUnitParameterUnit_Decibels: + d.unit = ParameterDescriptor::DB; + break; + case kAudioUnitParameterUnit_MIDINoteNumber: + d.unit = ParameterDescriptor::MIDI_NOTE; + break; + case kAudioUnitParameterUnit_Hertz: + d.unit = ParameterDescriptor::HZ; + break; + } d.min_unbound = 0; // lower is bound d.max_unbound = 0; // upper is bound @@ -759,7 +770,7 @@ float AUPlugin::default_value (uint32_t port) { if (port < descriptors.size()) { - return descriptors[port].default_value; + return descriptors[port].normal; } return 0;