merge -r 13398:13409 svn+ssh://ardoursvn@subversion.ardour.org/ardour2/branches/3.0

git-svn-id: svn://localhost/ardour2/branches/3.0-SG@13410 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-11-09 13:34:58 +00:00
parent 8bb2a5b241
commit 98a70a905b
11 changed files with 854 additions and 82 deletions

View file

@ -10,9 +10,9 @@
<Option name="mute-affects-main-outs" value="1"/>
<Option name="monitoring-model" value="ExternalMonitoring"/>
<Option name="solo-latch" value="1"/>
<Option name="mtc-port" value="@MIDITAG@"/>
<Option name="mmc-port" value="@MIDITAG@"/>
<Option name="midi-port" value="@MIDITAG@"/>
<Option name="mtc-port" value="mtc"/>
<Option name="mmc-port" value="mmc"/>
<Option name="midi-port" value="control"/>
<Option name="jack-time-master" value="1"/>
<Option name="trace-midi-input" value="0"/>
<Option name="trace-midi-output" value="0"/>
@ -27,8 +27,8 @@
<Option name="xfade-model" value="FullCrossfade"/>
<Option name="no-new-session-dialog" value="1"/>
<Option name="timecode-source-is-synced" value="1"/>
<Option name="auditioner-left-out" value="@JACK_INPUT@1"/>
<Option name="auditioner-right-out" value="@JACK_INPUT@2"/>
<Option name="auditioner-left-out" value="default"/>
<Option name="auditioner-right-out" value="default"/>
<Option name="quieten-at-speed" value="1.000000"/>
<Option name="use-vst" value="1"/>
<Option name="use-tranzport" value="1"/>

View file

@ -1070,7 +1070,7 @@ RCOptionEditor::RCOptionEditor ()
"<b>When enabled</b> the session video frame rate will be changed to match that of the selected external timecode source.\n\n"
"<b>When disabled</b> the session video frame rate will not be changed to match that of the selected external timecode source."
"Instead the frame rate indication in the main clock will flash red and Ardour will convert between the external "
"timecode standard and the session standard"));
"timecode standard and the session standard."));
add_option (_("Transport"), _sync_framerate);
@ -1082,7 +1082,7 @@ RCOptionEditor::RCOptionEditor ()
);
Gtkmm2ext::UI::instance()->set_tip
(_sync_genlock->tip_widget(),
_("<b>When enabled</b> indicates that the selected external timecode source shares sync (Black &amp; Burst, Wordclock, etc) with the audio interface"));
_("<b>When enabled</b> indicates that the selected external timecode source shares sync (Black &amp; Burst, Wordclock, etc) with the audio interface."));
add_option (_("Transport"), _sync_genlock);
@ -1094,8 +1094,14 @@ RCOptionEditor::RCOptionEditor ()
sigc::mem_fun (*_rc_config, &RCConfiguration::set_timecode_source_2997)
);
Gtkmm2ext::UI::instance()->set_tip
(_sync_genlock->tip_widget(),
_("<b>When enabled</b> the external timecode source is assumed to use 29.97 fps instead of 30000/1001"));
(_sync_source_2997->tip_widget(),
_("<b>When enabled</b> the external timecode source is assumed to use 29.97 fps instead of 30000/1001.\n"
"SMPTE 12M-1999 specifies 29.97df as 30000/1001. The spec further mentions that "
"drop-frame timecode has an accumulated error of -86ms over a 24-hour period.\n"
"Drop-frame timecode would compensate exactly for a NTSC color frame rate of 30 * 0.9990 (ie 29.970000). "
"That is not the actual rate, however some vendor use that rate - despite it being against the specs - "
"because the variant of using exactly 29.97 fps has zero timecode drift.\n"
));
add_option (_("Transport"), _sync_source_2997);

View file

@ -1201,6 +1201,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
framepos_t ltc_enc_pos;
double ltc_enc_cnt;
framepos_t ltc_enc_off;
bool restarting;
jack_latency_range_t ltc_out_latency;

View file

@ -53,8 +53,8 @@ LTC_Slave::LTC_Slave (Session& s)
monotonic_cnt = 0;
fps_detected=false;
ltc_timecode = timecode_60; // track changes of LTC fps
a3e_timecode = timecode_60; // track changes of Ardour's fps
ltc_timecode = session.config.get_timecode_format();
a3e_timecode = session.config.get_timecode_format();
printed_timecode_warning = false;
ltc_detect_fps_cnt = ltc_detect_fps_max = 0;
memset(&prev_frame, 0, sizeof(LTCFrameExt));
@ -198,22 +198,23 @@ LTC_Slave::detect_ltc_fps(int frameno, bool df)
}
ltc_detect_fps_cnt++;
if (ltc_detect_fps_cnt > 40)
{
if (ltc_detect_fps_cnt > ltc_detect_fps_max
&& ( ceil(timecode.rate) != (ltc_detect_fps_max + 1)
|| timecode.drop != df
)
)
{
DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC detected FPS %1%2",
ltc_detect_fps_max + 1, timecode.drop ? "df" : ""));
if (ltc_detect_fps_cnt > 40) {
if (ltc_detect_fps_cnt > ltc_detect_fps_max) {
detected_fps = ltc_detect_fps_max + 1;
if (df) {
/* LTC df -> indicates fractional framerate */
if (Config->get_timecode_source_2997()) {
detected_fps = detected_fps * 999.0 / 1000.0;
} else {
detected_fps = detected_fps * 1000.0 / 1001.0;
}
}
if (timecode.rate != detected_fps || timecode.drop != df) {
DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC detected FPS: %1%2\n", detected_fps, df?"df":"ndf"));
} else {
detected_fps = 0; /* no cange */
}
}
ltc_detect_fps_cnt = ltc_detect_fps_max = 0;
}
@ -232,14 +233,6 @@ LTC_Slave::detect_ltc_fps(int frameno, bool df)
TimecodeFormat tc_format = apparent_timecode_format();
TimecodeFormat cur_timecode = session.config.get_timecode_format();
if (Config->get_timecode_source_2997() && tc_format == Timecode::timecode_2997drop) {
tc_format = Timecode::timecode_2997000drop;
}
else
if (Config->get_timecode_source_2997() && tc_format == Timecode::timecode_2997) {
tc_format = Timecode::timecode_2997000;
}
if (Config->get_timecode_sync_frame_rate()) {
/* enforce time-code */
if (!did_reset_tc_format) {
@ -519,9 +512,9 @@ LTC_Slave::apparent_timecode_format () const
else if (timecode.rate == 25 && !timecode.drop)
return timecode_25;
else if (rint(timecode.rate * 100) == 2997 && !timecode.drop)
return timecode_2997;
return (Config->get_timecode_source_2997() ? timecode_2997000 : timecode_2997);
else if (rint(timecode.rate * 100) == 2997 && timecode.drop)
return timecode_2997drop;
return (Config->get_timecode_source_2997() ? timecode_2997000drop : timecode_2997drop);
else if (timecode.rate == 30 && timecode.drop)
return timecode_2997drop; // timecode_30drop; // LTC counting to 30 frames w/DF *means* 29.97 df
else if (timecode.rate == 30 && !timecode.drop)

View file

@ -313,9 +313,14 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now)
can_notify_on_unknown_rate = true;
break;
case MTC_30_FPS_DROP:
timecode.rate = (30000.0/1001.0);
timecode.drop = true;
if (Config->get_timecode_source_2997()) {
tc_format = Timecode::timecode_2997000drop;
timecode.rate = (29970.0/1000.0);
} else {
tc_format = timecode_2997drop;
timecode.rate = (30000.0/1001.0);
}
timecode.drop = true;
can_notify_on_unknown_rate = true;
break;
case MTC_30_FPS:

View file

@ -66,7 +66,7 @@ Session::ltc_tx_initialize()
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX init sr: %1 fps: %2\n", nominal_frame_rate(), timecode_to_frames_per_second(ltc_enc_tcformat)));
ltc_encoder = ltc_encoder_create(nominal_frame_rate(),
timecode_to_frames_per_second(ltc_enc_tcformat),
0);
-2);
ltc_encoder_set_bufsize(ltc_encoder, nominal_frame_rate(), 23.0);
ltc_encoder_set_filter(ltc_encoder, LTC_RISE_TIME(1.0));
@ -81,6 +81,7 @@ Session::ltc_tx_initialize()
ltc_tx_resync_latency();
Xrun.connect_same_thread (*this, boost::bind (&Session::ltc_tx_reset, this));
engine().GraphReordered.connect_same_thread (*this, boost::bind (&Session::ltc_tx_resync_latency, this));
restarting = false;
}
void
@ -113,6 +114,8 @@ Session::ltc_tx_reset()
ltc_buf_off = 0;
ltc_enc_byte = 0;
ltc_enc_cnt = 0;
ltc_encoder_reset(ltc_encoder);
}
void
@ -134,6 +137,7 @@ Session::ltc_tx_recalculate_position()
config.get_subframes_per_frame(),
config.get_timecode_offset_negative(), config.get_timecode_offset()
);
restarting = false;
}
void
@ -193,7 +197,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
TimecodeFormat cur_timecode = config.get_timecode_format();
if (cur_timecode != ltc_enc_tcformat) {
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX1: TC format mismatch - reinit sr: %1 fps: %2\n", nominal_frame_rate(), timecode_to_frames_per_second(cur_timecode)));
if (ltc_encoder_reinit(ltc_encoder, nominal_frame_rate(), timecode_to_frames_per_second(cur_timecode), 0)) {
if (ltc_encoder_reinit(ltc_encoder, nominal_frame_rate(), timecode_to_frames_per_second(cur_timecode), -2)) {
PBD::error << _("LTC encoder: invalid framerate - LTC encoding is disabled for the remainder of this session.") << endmsg;
ltc_tx_cleanup();
return;
@ -396,6 +400,12 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
maxdiff = slave()->resolution();
} else {
maxdiff = ceil(fabs(ltc_speed))*2.0;
if (nominal_frame_rate() != frame_rate()) {
maxdiff *= 3.0;
}
if (ltc_enc_tcformat == Timecode::timecode_23976 || ltc_enc_tcformat == Timecode::timecode_24976) {
maxdiff *= 15.0;
}
}
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX4: enc: %1 + %2 - %3 || buf-bytes: %4 enc-byte: %5\n",
@ -464,6 +474,10 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX5 restart encoder: soff %1 byte %2 cycoff %3\n",
soff, ltc_enc_byte, cyc_off));
if ( (ltc_speed < 0 && ltc_enc_byte !=9 ) || (ltc_speed >= 0 && ltc_enc_byte !=0 ) ) {
restarting = true;
}
if (cyc_off > 0 && cyc_off <= nframes) {
/* offset in this cycle */
txf= rint(cyc_off / fabs(ltc_speed));
@ -483,11 +497,11 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
/* reduce (low freq) jitter.
* The granularity of the LTC encoder speed is 1 byte =
* (frames-per-timecode-frame / 10) audio-samples.
* Thus, tiny speed changes [as produced by the slave]
* Thus, tiny speed changes [as produced by some slaves]
* may not have any effect in the cycle when they occur,
* but they will add up over time.
*
* This is a linear approx to compensate for this drift
* This is a linear approx to compensate for this jitter
* and prempt re-sync when the drift builds up.
*
* However, for very fast speeds - when 1 LTC bit is
@ -536,13 +550,24 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
}
}
int enc_frames;
if (restarting) {
/* write zero bytes -- don't touch encoder until we're at a frame-boundary
* otherwise the biphase polarity may be inverted.
*/
enc_frames = fptcf / 10.0;
memset(&ltc_enc_buf[ltc_buf_len], 127, enc_frames * sizeof(ltcsnd_sample_t));
} else {
if (ltc_encoder_encode_byte(ltc_encoder, ltc_enc_byte, (ltc_speed==0)?1.0:(1.0/ltc_speed))) {
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX6.3 encoder error byte %1\n", ltc_enc_byte));
ltc_encoder_buffer_flush(ltc_encoder);
ltc_tx_reset();
return;
}
int enc_frames = ltc_encoder_get_buffer(ltc_encoder, &(ltc_enc_buf[ltc_buf_len]));
enc_frames = ltc_encoder_get_buffer(ltc_encoder, &(ltc_enc_buf[ltc_buf_len]));
}
#ifdef LTC_GEN_FRAMEDBUG
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX6.3 encoded %1 bytes for LTC-byte %2 at spd %3\n", enc_frames, ltc_enc_byte, ltc_speed));
#endif
@ -573,6 +598,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
ltc_enc_cnt = 0;
} else if (ltc_enc_byte == 0) {
ltc_enc_cnt = 0;
restarting=false;
}
}
#ifdef LTC_GEN_FRAMEDBUG

View file

@ -285,7 +285,7 @@ def configure(conf):
autowaf.check_pkg(conf, 'libcurl', uselib_store='CURL',
atleast_version='7.0.0')
autowaf.check_pkg(conf, 'ltc', uselib_store='LTC',
atleast_version='0.7.0', mandatory=False)
atleast_version='1.0.3', mandatory=False)
# we don't try to detect this, since its part of our source tree

View file

@ -26,7 +26,7 @@
namespace Timecode {
float Time::default_rate = 30.0;
double Time::default_rate = 30.0;
/** Increment @a timecode by exactly one frame (keep subframes value).
@ -424,7 +424,7 @@ hours_floor(Time& timecode)
}
}
float
double
timecode_to_frames_per_second(TimecodeFormat t)
{
switch (t) {

View file

@ -54,11 +54,11 @@ struct Time {
uint32_t seconds;
uint32_t frames; ///< Timecode frames (not audio samples)
uint32_t subframes; ///< Typically unused
float rate; ///< Frame rate of this Time
static float default_rate; ///< Rate to use for default constructor
double rate; ///< Frame rate of this Time
static double default_rate; ///< Rate to use for default constructor
bool drop; ///< Whether this Time uses dropframe Timecode
Time (float a_rate = default_rate) {
Time (double a_rate = default_rate) {
negative = false;
hours = 0;
minutes = 0;
@ -99,7 +99,7 @@ void seconds_floor (Time& timecode);
void minutes_floor (Time& timecode);
void hours_floor (Time& timecode);
float timecode_to_frames_per_second(TimecodeFormat const t);
double timecode_to_frames_per_second(TimecodeFormat const t);
bool timecode_has_drop_frames(TimecodeFormat const t);
std::string timecode_format_name (TimecodeFormat const t);

View file

@ -2952,6 +2952,768 @@
</Patch>
</PatchNameList>
</PatchBank>
<PatchBank Name="Sweet!">
<PatchNameList>
<Patch Number="1" Name="Violin (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="40"/>
</PatchMIDICommands>
</Patch>
<Patch Number="2" Name="Mandolin (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="3" Name="JazzTenor (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="125"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="4" Name="BalladTenor (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="126"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="5" Name="PopTenor (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="127"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="6" Name="SopranoSax (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="7" Name="AltoSax (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="65"/>
</PatchMIDICommands>
</Patch>
<Patch Number="8" Name="TenorSax (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="9" Name="GrowlSax (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="111"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="10" Name="Flute (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="73"/>
</PatchMIDICommands>
</Patch>
<Patch Number="11" Name="Clarinet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="71"/>
</PatchMIDICommands>
</Patch>
<Patch Number="12" Name="Oboe (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="68"/>
</PatchMIDICommands>
</Patch>
<Patch Number="13" Name="PanFlute (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="75"/>
</PatchMIDICommands>
</Patch>
<Patch Number="14" Name="ClassicalFlute (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="115"/>
<ProgramChange Number="73"/>
</PatchMIDICommands>
</Patch>
<Patch Number="15" Name="FlugelHorn (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="56"/>
</PatchMIDICommands>
</Patch>
<Patch Number="16" Name="MutedTrumpet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="59"/>
</PatchMIDICommands>
</Patch>
<Patch Number="17" Name="Trumpet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="115"/>
<ProgramChange Number="56"/>
</PatchMIDICommands>
</Patch>
<Patch Number="18" Name="Trombone (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="57"/>
</PatchMIDICommands>
</Patch>
<Patch Number="19" Name="JazzTrumpet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="120"/>
<ProgramChange Number="56"/>
</PatchMIDICommands>
</Patch>
<Patch Number="20" Name="SilverTrumpet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="121"/>
<ProgramChange Number="56"/>
</PatchMIDICommands>
</Patch>
<Patch Number="21" Name="GoldenTrumpet (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="122"/>
<ProgramChange Number="56"/>
</PatchMIDICommands>
</Patch>
<Patch Number="22" Name="Harmonica (Sweet!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="112"/>
<ProgramChange Number="22"/>
</PatchMIDICommands>
</Patch>
</PatchNameList>
</PatchBank>
<PatchBank Name="Cool!">
<PatchNameList>
<Patch Number="1" Name="SparkleStack (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="121"/>
<ProgramChange Number="5"/>
</PatchMIDICommands>
</Patch>
<Patch Number="2" Name="GalaxyEP (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="4"/>
</PatchMIDICommands>
</Patch>
<Patch Number="3" Name="SuitcaseEP (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="4"/>
</PatchMIDICommands>
</Patch>
<Patch Number="4" Name="ElectricPiano (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="119"/>
<ProgramChange Number="4"/>
</PatchMIDICommands>
</Patch>
<Patch Number="5" Name="JazzGuitar (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="115"/>
<ProgramChange Number="26"/>
</PatchMIDICommands>
</Patch>
<Patch Number="6" Name="VintageLead (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="125"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="7" Name="BluesGuitar (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="29"/>
</PatchMIDICommands>
</Patch>
<Patch Number="8" Name="MutedGuitar (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="119"/>
<ProgramChange Number="28"/>
</PatchMIDICommands>
</Patch>
<Patch Number="9" Name="SlideSolid (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="110"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="10" Name="SlideClean (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="28"/>
</PatchMIDICommands>
</Patch>
<Patch Number="11" Name="DynamicMute (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="28"/>
</PatchMIDICommands>
</Patch>
<Patch Number="12" Name="ElectricGtr (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="28"/>
</PatchMIDICommands>
</Patch>
<Patch Number="13" Name="TremoloSolid (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="111"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="14" Name="ChorusSolid (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="107"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="15" Name="BalladSolid (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="109"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="16" Name="PowerLead (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="115"/>
<ProgramChange Number="30"/>
</PatchMIDICommands>
</Patch>
<Patch Number="17" Name="CleanGuitar (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="112"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="18" Name="SlapSolid (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="108"/>
<ProgramChange Number="27"/>
</PatchMIDICommands>
</Patch>
<Patch Number="19" Name="FunkGuitar (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="28"/>
</PatchMIDICommands>
</Patch>
<Patch Number="20" Name="ElectricBass (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="33"/>
</PatchMIDICommands>
</Patch>
<Patch Number="21" Name="DynoPickBass (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="34"/>
</PatchMIDICommands>
</Patch>
<Patch Number="22" Name="FretlessBass (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="112"/>
<ProgramChange Number="35"/>
</PatchMIDICommands>
</Patch>
<Patch Number="23" Name="Organ (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="18"/>
</PatchMIDICommands>
</Patch>
<Patch Number="24" Name="JazzOrgan (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="16"/>
</PatchMIDICommands>
</Patch>
<Patch Number="25" Name="RotorOrgan (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="18"/>
</PatchMIDICommands>
</Patch>
<Patch Number="26" Name="FullRocker (Cool!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="115"/>
<ProgramChange Number="18"/>
</PatchMIDICommands>
</Patch>
</PatchNameList>
</PatchBank>
<PatchBank Name="Live!">
<PatchNameList>
<Patch Number="1" Name="GrandPiano (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="2" Name="BrightPiano (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="112"/>
<ProgramChange Number="1"/>
</PatchMIDICommands>
</Patch>
<Patch Number="3" Name="WarmGrand (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="114"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="4" Name="Strings (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="49"/>
</PatchMIDICommands>
</Patch>
<Patch Number="5" Name="Allegro (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="122"/>
<ProgramChange Number="49"/>
</PatchMIDICommands>
</Patch>
<Patch Number="6" Name="Orchestra (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="49"/>
</PatchMIDICommands>
</Patch>
<Patch Number="7" Name="12StringGtr (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="113"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="8" Name="SlideSteel (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="9" Name="DynamicSteel (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="10" Name="SteelGuitar (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="11" Name="SteelMute (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="120"/>
<ProgramChange Number="25"/>
</PatchMIDICommands>
</Patch>
<Patch Number="12" Name="SaxSection (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="13" Name="SaxSectionSoft (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="121"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="14" Name="SaxSectionHard (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="122"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="15" Name="SaxAppeal (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="123"/>
<ProgramChange Number="66"/>
</PatchMIDICommands>
</Patch>
<Patch Number="16" Name="HyperBrass (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="118"/>
<ProgramChange Number="62"/>
</PatchMIDICommands>
</Patch>
<Patch Number="17" Name="PopBrass (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="117"/>
<ProgramChange Number="62"/>
</PatchMIDICommands>
</Patch>
<Patch Number="18" Name="OctaveBrass (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="62"/>
</PatchMIDICommands>
</Patch>
<Patch Number="19" Name="FrenchHorns (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="112"/>
<ProgramChange Number="60"/>
</PatchMIDICommands>
</Patch>
<Patch Number="20" Name="GospelVoices (Live!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="0"/>
<ControlChange Control="32" Value="116"/>
<ProgramChange Number="52"/>
</PatchMIDICommands>
</Patch>
</PatchNameList>
</PatchBank>
<PatchBank Name="S.Articulation!">
<PatchNameList>
<Patch Number="1" Name="ConcertGuitar (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="2" Name="SteelGuitar (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="1"/>
</PatchMIDICommands>
</Patch>
<Patch Number="3" Name="FlamencoGtr (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="4" Name="PedalSteel (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="36"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="5" Name="WarmSolid (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="6" Name="CleanSolid (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="34"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="7" Name="GuitarHero (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="5"/>
</PatchMIDICommands>
</Patch>
<Patch Number="8" Name="70sSolidGtr (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="38"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="9" Name="NylonGuitar (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="34"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="10" Name="FolkGuitar (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="1"/>
</PatchMIDICommands>
</Patch>
<Patch Number="11" Name="WarmElectric (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="12" Name="CleanElectric (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="35"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="13" Name="HalfDrive (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="37"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="14" Name="Feedbacker (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="4"/>
</PatchMIDICommands>
</Patch>
<Patch Number="15" Name="Saxophone (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="82"/>
</PatchMIDICommands>
</Patch>
<Patch Number="16" Name="BigBandSax (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="35"/>
<ProgramChange Number="82"/>
</PatchMIDICommands>
</Patch>
<Patch Number="17" Name="RockSax (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="82"/>
</PatchMIDICommands>
</Patch>
<Patch Number="18" Name="Trumpet (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="32"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="19" Name="SilverTrumpet (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="33"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="20" Name="GoldenTrumpet (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="34"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="21" Name="BigBandTrumpet (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="37"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="22" Name="TrumpetFall (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="38"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
<Patch Number="23" Name="TrumpetShake (S.Articulation!)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="35"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
</PatchNameList>
</PatchBank>
<PatchBank Name="MegaVoice">
<PatchNameList>
<Patch Number="1" Name="NylonGuitar (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="0"/>
</PatchMIDICommands>
</Patch>
<Patch Number="2" Name="SteelGuitar (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="1"/>
</PatchMIDICommands>
</Patch>
<Patch Number="3" Name="12StringGtr (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="1"/>
<ProgramChange Number="2"/>
</PatchMIDICommands>
</Patch>
<Patch Number="4" Name="HiStringGtr (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="2"/>
</PatchMIDICommands>
</Patch>
<Patch Number="5" Name="SolidGuitar1 (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="1"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="6" Name="SolidGuitar2 (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="2"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="7" Name="CleanGuitar (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="3"/>
</PatchMIDICommands>
</Patch>
<Patch Number="8" Name="OverdriveGtr (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="4"/>
</PatchMIDICommands>
</Patch>
<Patch Number="9" Name="DistortionGtr (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="5"/>
</PatchMIDICommands>
</Patch>
<Patch Number="10" Name="AcousticBass (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="16"/>
</PatchMIDICommands>
</Patch>
<Patch Number="11" Name="ElectricBass (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="17"/>
</PatchMIDICommands>
</Patch>
<Patch Number="12" Name="PickBass (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="18"/>
</PatchMIDICommands>
</Patch>
<Patch Number="13" Name="FretlessBass (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="19"/>
</PatchMIDICommands>
</Patch>
<Patch Number="14" Name="TenorSax (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="82"/>
</PatchMIDICommands>
</Patch>
<Patch Number="15" Name="Trumpet (MegaVoice)">
<PatchMIDICommands>
<ControlChange Control="0" Value="8"/>
<ControlChange Control="32" Value="0"/>
<ProgramChange Number="64"/>
</PatchMIDICommands>
</Patch>
</PatchNameList>
</PatchBank>
</ChannelNameSet>
<ChannelNameSet Name="GM+XG">
<AvailableForChannels>

23
wscript
View file

@ -759,28 +759,7 @@ def build(bld):
for i in children:
bld.recurse(i)
# ideally, we'd like to use the OS-provided MIDI API
# for default ports. that doesn't work on at least
# Fedora (Nov 9th, 2009) so use JACK MIDI on linux.
if sys.platform == 'darwin':
rc_subst_dict = {
'MIDITAG' : 'control',
'MIDITYPE' : 'coremidi',
'JACK_INPUT' : 'auditioner'
}
else:
rc_subst_dict = {
'MIDITAG' : 'control',
'MIDITYPE' : 'jack',
'JACK_INPUT' : 'auditioner'
}
obj = bld(features = 'subst')
obj.source = 'ardour.rc.in'
obj.target = 'ardour_system.rc'
obj.dict = rc_subst_dict
obj.install_path = '${SYSCONFDIR}/ardour3'
bld.install_files (os.path.join(bld.env['SYSCONFDIR'], 'ardour3', ), 'ardour_system.rc')
def i18n(bld):
bld.recurse (i18n_children)