summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-02-13 16:38:14 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-02-13 16:38:14 +0000
commit35b9bf0567beb7c795f395bd0ca528812d5aa9ac (patch)
tree02f7b977803c6ee1e321726c7b9fccc31356fade
parentb248526fe35a846af0f62985c18e62e3e8817f9c (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
-rw-r--r--gtk2_ardour/ardour2_ui_sae.conf95
-rw-r--r--gtk2_ardour/ardour_ui.cc4
-rw-r--r--gtk2_ardour/editor.cc47
-rw-r--r--gtk2_ardour/editor.h2
-rw-r--r--gtk2_ardour/redirect_box.cc1
-rw-r--r--gtk2_ardour/splash.cc16
-rw-r--r--gtk2_ardour/splash.h2
-rw-r--r--gtk2_ardour/ui_config.cc17
-rw-r--r--libs/ardour/ardour/ardour.h1
-rw-r--r--libs/ardour/ardour/audio_unit.h5
-rw-r--r--libs/ardour/audio_unit.cc218
-rw-r--r--libs/ardour/globals.cc7
-rw-r--r--libs/ardour/route.cc3
-rw-r--r--libs/ardour/session_state.cc2
-rw-r--r--libs/pbd/misc.c4
-rw-r--r--svn_revision.h2
-rwxr-xr-xtools/osx_packaging/osx_build2
17 files changed, 290 insertions, 138 deletions
diff --git a/gtk2_ardour/ardour2_ui_sae.conf b/gtk2_ardour/ardour2_ui_sae.conf
new file mode 100644
index 0000000000..b9fac38909
--- /dev/null
+++ b/gtk2_ardour/ardour2_ui_sae.conf
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ardour>
+ <Canvas>
+ <Option name="active crossfade" value="e8ed3d77"/>
+ <Option name="audio bus base" value="dbd1ea68"/>
+ <Option name="audio track base" value="c6d3d868"/>
+ <Option name="automation line" value="44bc59ff"/>
+ <Option name="automation track fill" value="a0a0ce68"/>
+ <Option name="automation track outline" value="282828ff"/>
+ <Option name="cdmarkerbar" value="9090a3ff"/>
+ <Option name="clipped waveform" value="ff0000e5"/>
+ <Option name="control point fill" value="000000ff"/>
+ <Option name="control point outline" value="000000ff"/>
+ <Option name="control point selected" value="00ff00ff"/>
+ <Option name="control point" value="ff0000ff"/>
+ <Option name="crossfade editor base" value="282d49ff"/>
+ <Option name="crossfade editor line shading" value="00a0d154"/>
+ <Option name="crossfade editor line" value="000000ff"/>
+ <Option name="crossfade editor point fill" value="00ff00ff"/>
+ <Option name="crossfade editor point outline" value="0000ffff"/>
+ <Option name="crossfade editor wave" value="ffffff28"/>
+ <Option name="crossfade line" value="000000ff"/>
+ <Option name="EditPoint" value="0000ffff"/>
+ <Option name="EnteredAutomationLine" value="dd6363ff"/>
+ <Option name="entered control point outline" value="ff0000ee"/>
+ <Option name="entered control point selected" value="ff3535ff"/>
+ <Option name="entered control point" value="000000cc"/>
+ <Option name="EnteredGainLine" value="dd6363ff"/>
+ <Option name="EnteredMarker" value="dd6363ff"/>
+ <Option name="FrameHandle" value="7c00ff96"/>
+ <Option name="GainLineInactive" value="9fbca4c5"/>
+ <Option name="GainLine" value="00bc20ff"/>
+ <Option name="GhostTrackBase" value="44007c7f"/>
+ <Option name="GhostTrackWaveClip" value="ff000000"/>
+ <Option name="GhostTrackWave" value="02fd004c"/>
+ <Option name="GhostTrackZeroLine" value="e500e566"/>
+ <Option name="ImageTrack" value="ddddd8ff"/>
+ <Option name="inactive crossfade" value="e8ed3d77"/>
+ <Option name="location cd marker" value="1ee8c4ff"/>
+ <Option name="location loop" value="35964fff"/>
+ <Option name="location marker" value="c4f411ff"/>
+ <Option name="location punch" value="7c3a3aff"/>
+ <Option name="location range" value="497a59ff"/>
+ <Option name="marker bar separator" value="30303088"/>
+ <Option name="markerbar" value="9898a3ff"/>
+ <Option name="MarkerDragLine" value="004f00f9"/>
+ <Option name="marker label" value="000000ff"/>
+ <Option name="MarkerTrack" value="ddddd8ff"/>
+ <Option name="MeasureLineBar" value="8c8c988c"/>
+ <Option name="MeasureLineBeat" value="72727266"/>
+ <Option name="meterbar" value="666672ff"/>
+ <Option name="MeterColorBase" value="0000ffff"/>
+ <Option name="MeterColorClip" value="ff0000ff"/>
+ <Option name="MeterColorMid" value="73f9baff"/>
+ <Option name="MeterColorTop" value="00fd5dff"/>
+ <Option name="MeterMarker" value="f2425bff"/>
+ <Option name="midi bus base" value="ff0000ee"/>
+ <Option name="midi track base" value="ff8f8f3d"/>
+ <Option name="NameHighlightFill" value="0000ffff"/>
+ <Option name="NameHighlightOutline" value="7c00ff96"/>
+ <Option name="PlayHead" value="ff0000ff"/>
+ <Option name="processor automation line" value="7aa3f9ff"/>
+ <Option name="PunchLine" value="a80000ff"/>
+ <Option name="RangeDragBarRect" value="969696c6"/>
+ <Option name="RangeDragRect" value="82c696c6"/>
+ <Option name="rangemarker bar" value="7f7f8cff"/>
+ <Option name="RecordingRect" value="e5c6c6ff"/>
+ <Option name="region base" value="99a7b584"/>
+ <Option name="RubberBandRect" value="c6c6c659"/>
+ <Option name="selected crossfade editor line" value="00dbdbff"/>
+ <Option name="selected crossfade editor wave" value="f9ea14a0"/>
+ <Option name="selected region base" value="130505ff"/>
+ <Option name="selected waveform fill" value="e6e6fac8"/>
+ <Option name="selected waveform outline" value="1a1a1acc"/>
+ <Option name="SelectionRect" value="e8f4d377"/>
+ <Option name="Selection" value="636363b2"/>
+ <Option name="tempo bar" value="72727fff"/>
+ <Option name="TempoMarker" value="f2425bff"/>
+ <Option name="TimeAxisFrame" value="000000cb"/>
+ <Option name="time-stretch-fill" value="e2b5b596"/>
+ <Option name="time-stretch-outline" value="63636396"/>
+ <Option name="TransportDragRect" value="969696c6"/>
+ <Option name="TransportLoopRect" value="1e7728f9"/>
+ <Option name="TransportMarkerBar" value="8c8c96ff"/>
+ <Option name="TransportPunchRect" value="6d2828e5"/>
+ <Option name="TrimHandleLocked" value="ea0f0f28"/>
+ <Option name="TrimHandle" value="1900ff44"/>
+ <Option name="verbose canvas cursor" value="f4f214bc"/>
+ <Option name="VestigialFrame" value="00000092"/>
+ <Option name="waveform fill" value="3d475378"/>
+ <Option name="waveform outline" value="0f0f0fcc"/>
+ <Option name="ZeroLine" value="bdbdbd8d"/>
+ <Option name="ZoomRect" value="c6d1b26d"/>
+ </Canvas>
+</Ardour>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index b9b38d650a..7a6a46595d 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -162,10 +162,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
_auto_display_errors = false;
#endif
- if (getenv ("ARDOUR_DEBUG_UPDATES")) {
- gdk_window_set_debug_updates (true);
- }
-
about = 0;
splash = 0;
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index b2a327c8c9..7c77a44194 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -4371,39 +4371,40 @@ Editor::get_regions_for_action (RegionSelection& rs, bool allow_entered)
rs.add (entered_regionview);
return;
}
- }
- } else {
- use_regions_at = false;
- }
- rs = selection->regions;
+ } else {
- /* consider adding the entered regionview */
+ /* no regions selected, so get all regions at the edit point across
+ all selected tracks.
+ */
- if (allow_entered && entered_regionview && (mouse_mode == Editing::MouseObject)) {
-
- /* only add the entered regionview if its not selected OR
- (we're not going to use regions at edit point OR its track is not selected)
+ nframes64_t where = get_preferred_edit_position();
+ get_regions_at (rs, where, selection->tracks);
- this avoids duplicate regions ending up in "rs"
- */
+ /* if the entered regionview wasn't selected and neither was its track
+ then add it.
+ */
- if (!selection->selected (entered_regionview) &&
- (!use_regions_at || !selection->selected (&entered_regionview->get_time_axis_view()))) {
- rs.add (entered_regionview);
+ if (!selection->selected (entered_regionview) &&
+ !selection->selected (&entered_regionview->get_time_axis_view())) {
+ rs.add (entered_regionview);
+ }
}
- }
- if (use_regions_at) {
+ } else {
+
+ /* just use the selected regions */
+
+ rs = selection->regions;
- /* nothing selected, so get all regions at the edit point across
- all selected tracks
+ /* if the entered regionview wasn't selected and we allow this sort of thing,
+ then add it.
*/
-
- if (!selection->tracks.empty()) {
- nframes64_t where = get_preferred_edit_position();
- get_regions_at (rs, where, selection->tracks);
+
+ if (allow_entered && entered_regionview && !selection->selected (entered_regionview)) {
+ rs.add (entered_regionview);
}
+
}
}
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 54e7ca6adf..f6f4188b58 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -2062,7 +2062,7 @@ public:
void get_regions_at (RegionSelection&, nframes64_t where, const TrackSelection& ts) const;
void get_regions_after (RegionSelection&, nframes64_t where, const TrackSelection& ts) const;
- void get_regions_for_action (RegionSelection&, bool allowed_entered_regionview = true);
+ void get_regions_for_action (RegionSelection&, bool allowed_entered_regionview = false);
sigc::connection fast_screen_update_connection;
gint start_updating ();
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc
index 0611c98e2a..fac1696dcb 100644
--- a/gtk2_ardour/redirect_box.cc
+++ b/gtk2_ardour/redirect_box.cc
@@ -402,6 +402,7 @@ RedirectBox::insert_plugin_chosen (boost::shared_ptr<Plugin> plugin)
if (_route->add_redirect (redirect, this, &err_streams)) {
weird_plugin_dialog (*plugin, err_streams, _route);
} else {
+ redirect->set_active (true, 0);
redirect->active_changed.connect (bind (mem_fun (*this, &RedirectBox::show_redirect_active_r), boost::weak_ptr<Redirect>(redirect)));
}
}
diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc
index 1b0bca2e03..3c5201d43b 100644
--- a/gtk2_ardour/splash.cc
+++ b/gtk2_ardour/splash.cc
@@ -3,6 +3,7 @@
#include <pbd/failed_constructor.h>
#include <ardour/ardour.h>
+#include "gui_thread.h"
#include "splash.h"
#include "i18n.h"
@@ -50,6 +51,8 @@ Splash::Splash ()
set_default_size (pixbuf->get_width(), pixbuf->get_height());
the_splash = this;
+
+ ARDOUR::BootMessage.connect (mem_fun (*this, &Splash::boot_message));
}
void
@@ -93,12 +96,19 @@ Splash::expose (GdkEventExpose* ev)
Glib::RefPtr<Gtk::Style> style = darea.get_style();
Glib::RefPtr<Gdk::GC> white = style->get_white_gc();
+ cerr << "redraw in expose\n";
window->draw_layout (white, 10, pixbuf->get_height() - 30, layout);
return true;
}
void
+Splash::boot_message (std::string msg)
+{
+ message (msg);
+}
+
+void
Splash::message (const string& msg)
{
string str ("<b>");
@@ -107,5 +117,9 @@ Splash::message (const string& msg)
layout->set_markup (str);
darea.queue_draw ();
- get_window()->process_updates (true);
+
+ Glib::RefPtr<Gdk::Window> win = get_window();
+ if (win) {
+ win->process_updates (true);
+ }
}
diff --git a/gtk2_ardour/splash.h b/gtk2_ardour/splash.h
index 07532d9344..a034ddad86 100644
--- a/gtk2_ardour/splash.h
+++ b/gtk2_ardour/splash.h
@@ -50,6 +50,8 @@ class Splash : public Gtk::Window
Glib::RefPtr<Gdk::Pixbuf> pixbuf;
Gtk::DrawingArea darea;
Glib::RefPtr<Pango::Layout> layout;
+
+ void boot_message (std::string);
};
#endif /* __ardour_gtk_splash_h__ */
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc
index 78574542d6..600a03df48 100644
--- a/gtk2_ardour/ui_config.cc
+++ b/gtk2_ardour/ui_config.cc
@@ -57,10 +57,19 @@ int
UIConfiguration::load_defaults ()
{
int found = 0;
- std::string rcfile = find_config_file ("ardour2_ui_default.conf");
-
- if (rcfile.length())
- {
+ std::string rcfile;
+ const char* ui_conf;
+
+ ui_conf = getenv ("ARDOUR_UI_CONF");
+
+ if (ui_conf && ui_conf[0] != '\0') {
+ rcfile = find_config_file (ui_conf);
+ } else {
+ rcfile = find_config_file ("ardour2_ui_default.conf");
+ }
+
+ if (rcfile.length()) {
+
XMLTree tree;
found = 1;
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);
}
diff --git a/libs/pbd/misc.c b/libs/pbd/misc.c
index 797be5de45..34e5888687 100644
--- a/libs/pbd/misc.c
+++ b/libs/pbd/misc.c
@@ -8,7 +8,7 @@ void
disable_screen_updates ()
{
#ifdef GTKOSX
- NSDisableScreenUpdates ();
+ // NSDisableScreenUpdates ();
#endif
}
@@ -16,6 +16,6 @@ void
enable_screen_updates ()
{
#ifdef GTKOSX
- NSEnableScreenUpdates();
+ // NSEnableScreenUpdates();
#endif
}
diff --git a/svn_revision.h b/svn_revision.h
index 7c3bd4879c..592c4ae9a8 100644
--- a/svn_revision.h
+++ b/svn_revision.h
@@ -1,4 +1,4 @@
#ifndef __ardour_svn_revision_h__
#define __ardour_svn_revision_h__
-static const char* ardour_svn_revision = "3045";
+static const char* ardour_svn_revision = "3046";
#endif
diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build
index d860e486ae..41d42166a0 100755
--- a/tools/osx_packaging/osx_build
+++ b/tools/osx_packaging/osx_build
@@ -86,6 +86,7 @@ if test x$SAE != x ; then
# current default for SAE version is German keyboard layout
#
env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de</string>"
+ env="$env<key>ARDOUR_UI_CONF</key><string>ardour2_ui_sae.conf</string>"
fi
#
@@ -201,6 +202,7 @@ cp ../../gtk2_ardour/ardour-sae-de.bindings $Resources
cp ../../gtk2_ardour/ardour.menus $Resources
cp ../../gtk2_ardour/ardour-sae.menus $Resources
cp ../../ardour_system.rc $Resources
+cp ../../gtk2_ardour/ardour2_ui_sae.conf $Resources
cp ../../gtk2_ardour/ardour2_ui_default.conf $Resources
cp ../../gtk2_ardour/ardour2_ui_light.rc $Resources
cp ../../gtk2_ardour/ardour2_ui_dark.rc $Resources