"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
This commit is contained in:
parent
b248526fe3
commit
35b9bf0567
|
@ -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>
|
|
@ -162,10 +162,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
|
||||||
_auto_display_errors = false;
|
_auto_display_errors = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (getenv ("ARDOUR_DEBUG_UPDATES")) {
|
|
||||||
gdk_window_set_debug_updates (true);
|
|
||||||
}
|
|
||||||
|
|
||||||
about = 0;
|
about = 0;
|
||||||
splash = 0;
|
splash = 0;
|
||||||
|
|
||||||
|
|
|
@ -4371,39 +4371,40 @@ Editor::get_regions_for_action (RegionSelection& rs, bool allow_entered)
|
||||||
rs.add (entered_regionview);
|
rs.add (entered_regionview);
|
||||||
return;
|
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)
|
|
||||||
|
|
||||||
this avoids duplicate regions ending up in "rs"
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!selection->selected (entered_regionview) &&
|
|
||||||
(!use_regions_at || !selection->selected (&entered_regionview->get_time_axis_view()))) {
|
|
||||||
rs.add (entered_regionview);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (use_regions_at) {
|
|
||||||
|
|
||||||
/* nothing selected, so get all regions at the edit point across
|
|
||||||
all selected tracks
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!selection->tracks.empty()) {
|
|
||||||
nframes64_t where = get_preferred_edit_position();
|
nframes64_t where = get_preferred_edit_position();
|
||||||
get_regions_at (rs, where, selection->tracks);
|
get_regions_at (rs, where, selection->tracks);
|
||||||
|
|
||||||
|
/* if the entered regionview wasn't selected and neither was its track
|
||||||
|
then add it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!selection->selected (entered_regionview) &&
|
||||||
|
!selection->selected (&entered_regionview->get_time_axis_view())) {
|
||||||
|
rs.add (entered_regionview);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/* just use the selected regions */
|
||||||
|
|
||||||
|
rs = selection->regions;
|
||||||
|
|
||||||
|
/* if the entered regionview wasn't selected and we allow this sort of thing,
|
||||||
|
then add it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (allow_entered && entered_regionview && !selection->selected (entered_regionview)) {
|
||||||
|
rs.add (entered_regionview);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2062,7 +2062,7 @@ public:
|
||||||
void get_regions_at (RegionSelection&, nframes64_t where, const TrackSelection& ts) const;
|
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_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;
|
sigc::connection fast_screen_update_connection;
|
||||||
gint start_updating ();
|
gint start_updating ();
|
||||||
|
|
|
@ -402,6 +402,7 @@ RedirectBox::insert_plugin_chosen (boost::shared_ptr<Plugin> plugin)
|
||||||
if (_route->add_redirect (redirect, this, &err_streams)) {
|
if (_route->add_redirect (redirect, this, &err_streams)) {
|
||||||
weird_plugin_dialog (*plugin, err_streams, _route);
|
weird_plugin_dialog (*plugin, err_streams, _route);
|
||||||
} else {
|
} else {
|
||||||
|
redirect->set_active (true, 0);
|
||||||
redirect->active_changed.connect (bind (mem_fun (*this, &RedirectBox::show_redirect_active_r), boost::weak_ptr<Redirect>(redirect)));
|
redirect->active_changed.connect (bind (mem_fun (*this, &RedirectBox::show_redirect_active_r), boost::weak_ptr<Redirect>(redirect)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <pbd/failed_constructor.h>
|
#include <pbd/failed_constructor.h>
|
||||||
#include <ardour/ardour.h>
|
#include <ardour/ardour.h>
|
||||||
|
|
||||||
|
#include "gui_thread.h"
|
||||||
#include "splash.h"
|
#include "splash.h"
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
@ -50,6 +51,8 @@ Splash::Splash ()
|
||||||
|
|
||||||
set_default_size (pixbuf->get_width(), pixbuf->get_height());
|
set_default_size (pixbuf->get_width(), pixbuf->get_height());
|
||||||
the_splash = this;
|
the_splash = this;
|
||||||
|
|
||||||
|
ARDOUR::BootMessage.connect (mem_fun (*this, &Splash::boot_message));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -93,11 +96,18 @@ Splash::expose (GdkEventExpose* ev)
|
||||||
Glib::RefPtr<Gtk::Style> style = darea.get_style();
|
Glib::RefPtr<Gtk::Style> style = darea.get_style();
|
||||||
Glib::RefPtr<Gdk::GC> white = style->get_white_gc();
|
Glib::RefPtr<Gdk::GC> white = style->get_white_gc();
|
||||||
|
|
||||||
|
cerr << "redraw in expose\n";
|
||||||
window->draw_layout (white, 10, pixbuf->get_height() - 30, layout);
|
window->draw_layout (white, 10, pixbuf->get_height() - 30, layout);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Splash::boot_message (std::string msg)
|
||||||
|
{
|
||||||
|
message (msg);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Splash::message (const string& msg)
|
Splash::message (const string& msg)
|
||||||
{
|
{
|
||||||
|
@ -107,5 +117,9 @@ Splash::message (const string& msg)
|
||||||
|
|
||||||
layout->set_markup (str);
|
layout->set_markup (str);
|
||||||
darea.queue_draw ();
|
darea.queue_draw ();
|
||||||
get_window()->process_updates (true);
|
|
||||||
|
Glib::RefPtr<Gdk::Window> win = get_window();
|
||||||
|
if (win) {
|
||||||
|
win->process_updates (true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,8 @@ class Splash : public Gtk::Window
|
||||||
Glib::RefPtr<Gdk::Pixbuf> pixbuf;
|
Glib::RefPtr<Gdk::Pixbuf> pixbuf;
|
||||||
Gtk::DrawingArea darea;
|
Gtk::DrawingArea darea;
|
||||||
Glib::RefPtr<Pango::Layout> layout;
|
Glib::RefPtr<Pango::Layout> layout;
|
||||||
|
|
||||||
|
void boot_message (std::string);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ardour_gtk_splash_h__ */
|
#endif /* __ardour_gtk_splash_h__ */
|
||||||
|
|
|
@ -57,10 +57,19 @@ int
|
||||||
UIConfiguration::load_defaults ()
|
UIConfiguration::load_defaults ()
|
||||||
{
|
{
|
||||||
int found = 0;
|
int found = 0;
|
||||||
std::string rcfile = find_config_file ("ardour2_ui_default.conf");
|
std::string rcfile;
|
||||||
|
const char* ui_conf;
|
||||||
if (rcfile.length())
|
|
||||||
{
|
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;
|
XMLTree tree;
|
||||||
found = 1;
|
found = 1;
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ namespace ARDOUR {
|
||||||
extern OSC* osc;
|
extern OSC* osc;
|
||||||
|
|
||||||
static const nframes_t max_frames = JACK_MAX_FRAMES;
|
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 init (bool with_vst, bool try_optimization);
|
||||||
int cleanup ();
|
int cleanup ();
|
||||||
|
|
|
@ -52,6 +52,7 @@ struct AUParameterDescriptor : public Plugin::ParameterDescriptor {
|
||||||
AudioUnitScope scope;
|
AudioUnitScope scope;
|
||||||
AudioUnitElement element;
|
AudioUnitElement element;
|
||||||
float default_value;
|
float default_value;
|
||||||
|
bool automatable;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AUPlugin : public ARDOUR::Plugin
|
class AUPlugin : public ARDOUR::Plugin
|
||||||
|
@ -113,7 +114,6 @@ class AUPlugin : public ARDOUR::Plugin
|
||||||
private:
|
private:
|
||||||
boost::shared_ptr<CAComponent> comp;
|
boost::shared_ptr<CAComponent> comp;
|
||||||
boost::shared_ptr<CAAudioUnit> unit;
|
boost::shared_ptr<CAAudioUnit> unit;
|
||||||
AUParamInfo* param_info;
|
|
||||||
|
|
||||||
AudioStreamBasicDescription streamFormat;
|
AudioStreamBasicDescription streamFormat;
|
||||||
bool initialized;
|
bool initialized;
|
||||||
|
@ -128,6 +128,7 @@ class AUPlugin : public ARDOUR::Plugin
|
||||||
int set_input_format ();
|
int set_input_format ();
|
||||||
int set_stream_format (int scope, uint32_t cnt);
|
int set_stream_format (int scope, uint32_t cnt);
|
||||||
int _set_block_size (nframes_t nframes);
|
int _set_block_size (nframes_t nframes);
|
||||||
|
void discover_parameters ();
|
||||||
|
|
||||||
std::vector<std::pair<uint32_t, uint32_t> > parameter_map;
|
std::vector<std::pair<uint32_t, uint32_t> > parameter_map;
|
||||||
uint32_t current_maxbuf;
|
uint32_t current_maxbuf;
|
||||||
|
@ -135,7 +136,7 @@ class AUPlugin : public ARDOUR::Plugin
|
||||||
nframes_t cb_offset;
|
nframes_t cb_offset;
|
||||||
vector<Sample*>* current_buffers;
|
vector<Sample*>* current_buffers;
|
||||||
nframes_t frames_processed;
|
nframes_t frames_processed;
|
||||||
|
|
||||||
std::vector<AUParameterDescriptor> descriptors;
|
std::vector<AUParameterDescriptor> descriptors;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,6 @@ AUPlugin::AUPlugin (AudioEngine& engine, Session& session, boost::shared_ptr<CAC
|
||||||
Plugin (engine, session),
|
Plugin (engine, session),
|
||||||
comp (_comp),
|
comp (_comp),
|
||||||
unit (new CAAudioUnit),
|
unit (new CAAudioUnit),
|
||||||
param_info (0),
|
|
||||||
initialized (false),
|
initialized (false),
|
||||||
buffers (0),
|
buffers (0),
|
||||||
current_maxbuf (0),
|
current_maxbuf (0),
|
||||||
|
@ -110,99 +109,9 @@ AUPlugin::AUPlugin (AudioEngine& engine, Session& session, boost::shared_ptr<CAC
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* discover writable parameters */
|
discover_parameters ();
|
||||||
|
|
||||||
cerr << "get param info, there are " << global_elements << " global elements\n";
|
|
||||||
|
|
||||||
param_info = new AUParamInfo (unit->AU(), false, false, kAudioUnitScope_Global);
|
Plugin::setup_controls ();
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AUPlugin::~AUPlugin ()
|
AUPlugin::~AUPlugin ()
|
||||||
|
@ -211,15 +120,124 @@ AUPlugin::~AUPlugin ()
|
||||||
unit->Uninitialize ();
|
unit->Uninitialize ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param_info) {
|
|
||||||
delete param_info;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buffers) {
|
if (buffers) {
|
||||||
free (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
|
string
|
||||||
AUPlugin::unique_id () const
|
AUPlugin::unique_id () const
|
||||||
{
|
{
|
||||||
|
@ -235,7 +253,7 @@ AUPlugin::label () const
|
||||||
uint32_t
|
uint32_t
|
||||||
AUPlugin::parameter_count () const
|
AUPlugin::parameter_count () const
|
||||||
{
|
{
|
||||||
return param_info->NumParams ();
|
return descriptors.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
|
@ -508,7 +526,9 @@ AUPlugin::automatable() const
|
||||||
set<uint32_t> automates;
|
set<uint32_t> automates;
|
||||||
|
|
||||||
for (uint32_t i = 0; i < descriptors.size(); ++i) {
|
for (uint32_t i = 0; i < descriptors.size(); ++i) {
|
||||||
automates.insert (i);
|
if (descriptors[i].automatable) {
|
||||||
|
automates.insert (i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return automates;
|
return automates;
|
||||||
|
|
|
@ -94,6 +94,8 @@ Change ARDOUR::PositionChanged = ARDOUR::new_change ();
|
||||||
Change ARDOUR::NameChanged = ARDOUR::new_change ();
|
Change ARDOUR::NameChanged = ARDOUR::new_change ();
|
||||||
Change ARDOUR::BoundsChanged = Change (0); // see init(), below
|
Change ARDOUR::BoundsChanged = Change (0); // see init(), below
|
||||||
|
|
||||||
|
sigc::signal<void,std::string> ARDOUR::BootMessage;
|
||||||
|
|
||||||
#ifdef HAVE_LIBLO
|
#ifdef HAVE_LIBLO
|
||||||
static int
|
static int
|
||||||
setup_osc ()
|
setup_osc ()
|
||||||
|
@ -105,6 +107,7 @@ setup_osc ()
|
||||||
osc = new OSC (Config->get_osc_port());
|
osc = new OSC (Config->get_osc_port());
|
||||||
|
|
||||||
if (Config->get_use_osc ()) {
|
if (Config->get_use_osc ()) {
|
||||||
|
BootMessage (_("Starting OSC"));
|
||||||
return osc->start ();
|
return osc->start ();
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -120,6 +123,8 @@ setup_midi ()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BootMessage (_("Configuring MIDI ports"));
|
||||||
|
|
||||||
for (std::map<string,XMLNode>::iterator i = Config->midi_ports.begin(); i != Config->midi_ports.end(); ++i) {
|
for (std::map<string,XMLNode>::iterator i = Config->midi_ports.begin(); i != Config->midi_ports.end(); ++i) {
|
||||||
MIDI::Manager::instance()->add_port (i->second);
|
MIDI::Manager::instance()->add_port (i->second);
|
||||||
}
|
}
|
||||||
|
@ -294,6 +299,8 @@ ARDOUR::init (bool use_vst, bool try_optimization)
|
||||||
lrdf_init();
|
lrdf_init();
|
||||||
Library = new AudioLibrary;
|
Library = new AudioLibrary;
|
||||||
|
|
||||||
|
BootMessage (_("Loading configuration"));
|
||||||
|
|
||||||
Config = new Configuration;
|
Config = new Configuration;
|
||||||
|
|
||||||
if (Config->load_state ()) {
|
if (Config->load_state ()) {
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include <ardour/panner.h>
|
#include <ardour/panner.h>
|
||||||
#include <ardour/dB.h>
|
#include <ardour/dB.h>
|
||||||
#include <ardour/mix.h>
|
#include <ardour/mix.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
|
@ -916,8 +917,8 @@ Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t*
|
||||||
reset_panner ();
|
reset_panner ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
redirects_changed (src); /* EMIT SIGNAL */
|
redirects_changed (src); /* EMIT SIGNAL */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1380,6 +1380,8 @@ Session::load_routes (const XMLNode& node)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BootMessage (string_compose (_("Loaded track/bus %1"), route->name()));
|
||||||
|
|
||||||
new_routes.push_back (route);
|
new_routes.push_back (route);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ void
|
||||||
disable_screen_updates ()
|
disable_screen_updates ()
|
||||||
{
|
{
|
||||||
#ifdef GTKOSX
|
#ifdef GTKOSX
|
||||||
NSDisableScreenUpdates ();
|
// NSDisableScreenUpdates ();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,6 @@ void
|
||||||
enable_screen_updates ()
|
enable_screen_updates ()
|
||||||
{
|
{
|
||||||
#ifdef GTKOSX
|
#ifdef GTKOSX
|
||||||
NSEnableScreenUpdates();
|
// NSEnableScreenUpdates();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __ardour_svn_revision_h__
|
#ifndef __ardour_svn_revision_h__
|
||||||
#define __ardour_svn_revision_h__
|
#define __ardour_svn_revision_h__
|
||||||
static const char* ardour_svn_revision = "3045";
|
static const char* ardour_svn_revision = "3046";
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -86,6 +86,7 @@ if test x$SAE != x ; then
|
||||||
# current default for SAE version is German keyboard layout
|
# current default for SAE version is German keyboard layout
|
||||||
#
|
#
|
||||||
env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de</string>"
|
env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de</string>"
|
||||||
|
env="$env<key>ARDOUR_UI_CONF</key><string>ardour2_ui_sae.conf</string>"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -201,6 +202,7 @@ cp ../../gtk2_ardour/ardour-sae-de.bindings $Resources
|
||||||
cp ../../gtk2_ardour/ardour.menus $Resources
|
cp ../../gtk2_ardour/ardour.menus $Resources
|
||||||
cp ../../gtk2_ardour/ardour-sae.menus $Resources
|
cp ../../gtk2_ardour/ardour-sae.menus $Resources
|
||||||
cp ../../ardour_system.rc $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_default.conf $Resources
|
||||||
cp ../../gtk2_ardour/ardour2_ui_light.rc $Resources
|
cp ../../gtk2_ardour/ardour2_ui_light.rc $Resources
|
||||||
cp ../../gtk2_ardour/ardour2_ui_dark.rc $Resources
|
cp ../../gtk2_ardour/ardour2_ui_dark.rc $Resources
|
||||||
|
|
Loading…
Reference in New Issue