diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-13 16:38:14 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-13 16:38:14 +0000 |
commit | 35b9bf0567beb7c795f395bd0ca528812d5aa9ac (patch) | |
tree | 02f7b977803c6ee1e321726c7b9fccc31356fade /libs/ardour | |
parent | b248526fe35a846af0f62985c18e62e3e8817f9c (diff) |
"boot" messages; more AU fixes; new SAE ui.conf file
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3049 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/ardour.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 5 | ||||
-rw-r--r-- | libs/ardour/audio_unit.cc | 218 | ||||
-rw-r--r-- | libs/ardour/globals.cc | 7 | ||||
-rw-r--r-- | libs/ardour/route.cc | 3 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 2 |
6 files changed, 134 insertions, 102 deletions
diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h index dbc08fff7c..9da1e924e3 100644 --- a/libs/ardour/ardour/ardour.h +++ b/libs/ardour/ardour/ardour.h @@ -43,6 +43,7 @@ namespace ARDOUR { extern OSC* osc; static const nframes_t max_frames = JACK_MAX_FRAMES; + extern sigc::signal<void,std::string> BootMessage; int init (bool with_vst, bool try_optimization); int cleanup (); diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index 0ddd4c1a50..b63aa5ce85 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -52,6 +52,7 @@ struct AUParameterDescriptor : public Plugin::ParameterDescriptor { AudioUnitScope scope; AudioUnitElement element; float default_value; + bool automatable; }; class AUPlugin : public ARDOUR::Plugin @@ -113,7 +114,6 @@ class AUPlugin : public ARDOUR::Plugin private: boost::shared_ptr<CAComponent> comp; boost::shared_ptr<CAAudioUnit> unit; - AUParamInfo* param_info; AudioStreamBasicDescription streamFormat; bool initialized; @@ -128,6 +128,7 @@ class AUPlugin : public ARDOUR::Plugin int set_input_format (); int set_stream_format (int scope, uint32_t cnt); int _set_block_size (nframes_t nframes); + void discover_parameters (); std::vector<std::pair<uint32_t, uint32_t> > parameter_map; uint32_t current_maxbuf; @@ -135,7 +136,7 @@ class AUPlugin : public ARDOUR::Plugin nframes_t cb_offset; vector<Sample*>* current_buffers; nframes_t frames_processed; - + std::vector<AUParameterDescriptor> descriptors; }; diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 30f97dea96..6640740ad6 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -59,7 +59,6 @@ AUPlugin::AUPlugin (AudioEngine& engine, Session& session, boost::shared_ptr<CAC Plugin (engine, session), comp (_comp), unit (new CAAudioUnit), - param_info (0), initialized (false), buffers (0), current_maxbuf (0), @@ -110,99 +109,9 @@ AUPlugin::AUPlugin (AudioEngine& engine, Session& session, boost::shared_ptr<CAC throw failed_constructor(); } - /* discover writable parameters */ - - cerr << "get param info, there are " << global_elements << " global elements\n"; + discover_parameters (); - param_info = new AUParamInfo (unit->AU(), false, false, kAudioUnitScope_Global); - - cerr << "discovered " << param_info->NumParams() << " parameters\n"; - - for (uint32_t i = 0; i < param_info->NumParams(); ++i) { - - AUParameterDescriptor d; - - d.id = param_info->ParamID (i); - - const CAAUParameter* param = param_info->GetParamInfo (d.id); - const AudioUnitParameterInfo& info (param->ParamInfo()); - - d.scope = param_info->GetScope (); - d.element = param_info->GetElement (); - - /* info.units to consider */ - /* - kAudioUnitParameterUnit_Generic = 0 - kAudioUnitParameterUnit_Indexed = 1 - kAudioUnitParameterUnit_Boolean = 2 - kAudioUnitParameterUnit_Percent = 3 - kAudioUnitParameterUnit_Seconds = 4 - kAudioUnitParameterUnit_SampleFrames = 5 - kAudioUnitParameterUnit_Phase = 6 - kAudioUnitParameterUnit_Rate = 7 - kAudioUnitParameterUnit_Hertz = 8 - kAudioUnitParameterUnit_Cents = 9 - kAudioUnitParameterUnit_RelativeSemiTones = 10 - kAudioUnitParameterUnit_MIDINoteNumber = 11 - kAudioUnitParameterUnit_MIDIController = 12 - kAudioUnitParameterUnit_Decibels = 13 - kAudioUnitParameterUnit_LinearGain = 14 - kAudioUnitParameterUnit_Degrees = 15 - kAudioUnitParameterUnit_EqualPowerCrossfade = 16 - kAudioUnitParameterUnit_MixerFaderCurve1 = 17 - kAudioUnitParameterUnit_Pan = 18 - kAudioUnitParameterUnit_Meters = 19 - kAudioUnitParameterUnit_AbsoluteCents = 20 - kAudioUnitParameterUnit_Octaves = 21 - kAudioUnitParameterUnit_BPM = 22 - kAudioUnitParameterUnit_Beats = 23 - kAudioUnitParameterUnit_Milliseconds = 24 - kAudioUnitParameterUnit_Ratio = 25 - */ - - /* info.flags to consider */ - - /* - - kAudioUnitParameterFlag_CFNameRelease = (1L << 4) - kAudioUnitParameterFlag_HasClump = (1L << 20) - kAudioUnitParameterFlag_HasName = (1L << 21) - kAudioUnitParameterFlag_DisplayLogarithmic = (1L << 22) - kAudioUnitParameterFlag_IsHighResolution = (1L << 23) - kAudioUnitParameterFlag_NonRealTime = (1L << 24) - kAudioUnitParameterFlag_CanRamp = (1L << 25) - kAudioUnitParameterFlag_ExpertMode = (1L << 26) - kAudioUnitParameterFlag_HasCFNameString = (1L << 27) - kAudioUnitParameterFlag_IsGlobalMeta = (1L << 28) - kAudioUnitParameterFlag_IsElementMeta = (1L << 29) - kAudioUnitParameterFlag_IsReadable = (1L << 30) - kAudioUnitParameterFlag_IsWritable = (1L << 31) - */ - - d.integer_step = false; - d.toggled = false; - d.logarithmic = false; - d.sr_dependent = false; - - const int len = CFStringGetLength (param->GetName());; - char local_buffer[len*2]; - Boolean good = CFStringGetCString(param->GetName(),local_buffer,len*2,kCFStringEncodingMacRoman); - if (!good) { - d.label = "???"; - } else { - d.label = local_buffer; - } - d.lower = info.minValue; - d.upper = info.maxValue; - d.default_value = info.defaultValue; - d.step = 1.0; - d.smallstep = 0.1; - d.largestep = 10.0; - d.min_unbound = d.lower; - d.max_unbound = d.upper; - - descriptors.push_back (d); - } + Plugin::setup_controls (); } AUPlugin::~AUPlugin () @@ -211,15 +120,124 @@ AUPlugin::~AUPlugin () unit->Uninitialize (); } - if (param_info) { - delete param_info; - } - if (buffers) { free (buffers); } } +void +AUPlugin::discover_parameters () +{ + /* discover writable parameters */ + + cerr << "get param info, there are " << global_elements << " global elements\n"; + + AudioUnitScope scopes[] = { + kAudioUnitScope_Global, + kAudioUnitScope_Output, + kAudioUnitScope_Input + }; + + descriptors.clear (); + + for (uint32_t i = 0; i < sizeof (scopes) / sizeof (scopes[0]); ++i) { + + AUParamInfo param_info (unit->AU(), false, false, scopes[i]); + + cerr << "discovered " << param_info.NumParams() << " parameters in scope " << i << endl; + + for (uint32_t i = 0; i < param_info.NumParams(); ++i) { + + AUParameterDescriptor d; + + d.id = param_info.ParamID (i); + + const CAAUParameter* param = param_info.GetParamInfo (d.id); + const AudioUnitParameterInfo& info (param->ParamInfo()); + + d.scope = param_info.GetScope (); + d.element = param_info.GetElement (); + + /* info.units to consider */ + /* + kAudioUnitParameterUnit_Generic = 0 + kAudioUnitParameterUnit_Indexed = 1 + kAudioUnitParameterUnit_Boolean = 2 + kAudioUnitParameterUnit_Percent = 3 + kAudioUnitParameterUnit_Seconds = 4 + kAudioUnitParameterUnit_SampleFrames = 5 + kAudioUnitParameterUnit_Phase = 6 + kAudioUnitParameterUnit_Rate = 7 + kAudioUnitParameterUnit_Hertz = 8 + kAudioUnitParameterUnit_Cents = 9 + kAudioUnitParameterUnit_RelativeSemiTones = 10 + kAudioUnitParameterUnit_MIDINoteNumber = 11 + kAudioUnitParameterUnit_MIDIController = 12 + kAudioUnitParameterUnit_Decibels = 13 + kAudioUnitParameterUnit_LinearGain = 14 + kAudioUnitParameterUnit_Degrees = 15 + kAudioUnitParameterUnit_EqualPowerCrossfade = 16 + kAudioUnitParameterUnit_MixerFaderCurve1 = 17 + kAudioUnitParameterUnit_Pan = 18 + kAudioUnitParameterUnit_Meters = 19 + kAudioUnitParameterUnit_AbsoluteCents = 20 + kAudioUnitParameterUnit_Octaves = 21 + kAudioUnitParameterUnit_BPM = 22 + kAudioUnitParameterUnit_Beats = 23 + kAudioUnitParameterUnit_Milliseconds = 24 + kAudioUnitParameterUnit_Ratio = 25 + */ + + /* info.flags to consider */ + + /* + + kAudioUnitParameterFlag_CFNameRelease = (1L << 4) + kAudioUnitParameterFlag_HasClump = (1L << 20) + kAudioUnitParameterFlag_HasName = (1L << 21) + kAudioUnitParameterFlag_DisplayLogarithmic = (1L << 22) + kAudioUnitParameterFlag_IsHighResolution = (1L << 23) + kAudioUnitParameterFlag_NonRealTime = (1L << 24) + kAudioUnitParameterFlag_CanRamp = (1L << 25) + kAudioUnitParameterFlag_ExpertMode = (1L << 26) + kAudioUnitParameterFlag_HasCFNameString = (1L << 27) + kAudioUnitParameterFlag_IsGlobalMeta = (1L << 28) + kAudioUnitParameterFlag_IsElementMeta = (1L << 29) + kAudioUnitParameterFlag_IsReadable = (1L << 30) + kAudioUnitParameterFlag_IsWritable = (1L << 31) + */ + + d.integer_step = (info.unit & kAudioUnitParameterUnit_Indexed); + d.toggled = (info.unit & kAudioUnitParameterUnit_Boolean); + d.sr_dependent = (info.unit & kAudioUnitParameterUnit_SampleFrames); + + d.automatable = !(info.flags & kAudioUnitParameterFlag_NonRealTime); + d.logarithmic = (info.flags & kAudioUnitParameterFlag_DisplayLogarithmic); + + const int len = CFStringGetLength (param->GetName());; + char local_buffer[len*2]; + Boolean good = CFStringGetCString(param->GetName(),local_buffer,len*2,kCFStringEncodingMacRoman); + if (!good) { + d.label = "???"; + } else { + d.label = local_buffer; + } + + d.lower = info.minValue; + d.upper = info.maxValue; + d.default_value = info.defaultValue; + d.step = 1.0; + d.smallstep = 0.1; + d.largestep = 10.0; + d.min_unbound = 0; // lower is bound + d.max_unbound = 0; // upper is bound + + descriptors.push_back (d); + } + } +} + + string AUPlugin::unique_id () const { @@ -235,7 +253,7 @@ AUPlugin::label () const uint32_t AUPlugin::parameter_count () const { - return param_info->NumParams (); + return descriptors.size(); } float @@ -508,7 +526,9 @@ AUPlugin::automatable() const set<uint32_t> automates; for (uint32_t i = 0; i < descriptors.size(); ++i) { - automates.insert (i); + if (descriptors[i].automatable) { + automates.insert (i); + } } return automates; diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index fc0b074834..be9a194a62 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -94,6 +94,8 @@ Change ARDOUR::PositionChanged = ARDOUR::new_change (); Change ARDOUR::NameChanged = ARDOUR::new_change (); Change ARDOUR::BoundsChanged = Change (0); // see init(), below +sigc::signal<void,std::string> ARDOUR::BootMessage; + #ifdef HAVE_LIBLO static int setup_osc () @@ -105,6 +107,7 @@ setup_osc () osc = new OSC (Config->get_osc_port()); if (Config->get_use_osc ()) { + BootMessage (_("Starting OSC")); return osc->start (); } else { return 0; @@ -120,6 +123,8 @@ setup_midi () return 0; } + BootMessage (_("Configuring MIDI ports")); + for (std::map<string,XMLNode>::iterator i = Config->midi_ports.begin(); i != Config->midi_ports.end(); ++i) { MIDI::Manager::instance()->add_port (i->second); } @@ -294,6 +299,8 @@ ARDOUR::init (bool use_vst, bool try_optimization) lrdf_init(); Library = new AudioLibrary; + BootMessage (_("Loading configuration")); + Config = new Configuration; if (Config->load_state ()) { diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 0ff6a02799..1b26dd8c7f 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -41,6 +41,7 @@ #include <ardour/panner.h> #include <ardour/dB.h> #include <ardour/mix.h> +#include <ardour/profile.h> #include "i18n.h" @@ -916,8 +917,8 @@ Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t* reset_panner (); } - redirects_changed (src); /* EMIT SIGNAL */ + return 0; } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 168885ea8e..06291991d8 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1380,6 +1380,8 @@ Session::load_routes (const XMLNode& node) return -1; } + BootMessage (string_compose (_("Loaded track/bus %1"), route->name())); + new_routes.push_back (route); } |