"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;
|
||||
#endif
|
||||
|
||||
if (getenv ("ARDOUR_DEBUG_UPDATES")) {
|
||||
gdk_window_set_debug_updates (true);
|
||||
}
|
||||
|
||||
about = 0;
|
||||
splash = 0;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
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();
|
||||
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_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 ();
|
||||
|
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,11 +96,18 @@ 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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ()) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue