add a preference for MMC FastWind which allows skipping to markers
This commit is contained in:
parent
59e50c0e16
commit
ff9a55df97
@ -3829,6 +3829,17 @@ These settings will only take effect after %1 is restarted.\n\
|
||||
0, 127, 1, 10
|
||||
));
|
||||
|
||||
ComboOption<FastWindOp> *mtc_op = new ComboOption<FastWindOp> (
|
||||
"mmc-fast-wind-op",
|
||||
_("MMC Fast-wind behavior"),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::get_mmc_fast_wind_op),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_mmc_fast_wind_op)
|
||||
);
|
||||
mtc_op->add (FastWindOff, _("Off (MMC fast-forward+rewind are ignored)"));
|
||||
mtc_op->add (FastWindVarispeed, _("Varispeed"));
|
||||
mtc_op->add (FastWindLocate, _("Marker Locate (MMC ffwd/rewd jumps to next/prior marker)"));
|
||||
add_option (_("Transport/Chase"), mtc_op);
|
||||
|
||||
add_option (_("Transport/Chase"), new OptionEditorHeading (_("Transport Masters")));
|
||||
|
||||
add_option (_("Transport/Chase"),
|
||||
|
@ -177,6 +177,7 @@ CONFIG_VARIABLE (float, shuttle_speed_factor, "shuttle-speed-factor", 1.0f) // u
|
||||
CONFIG_VARIABLE (float, shuttle_speed_threshold, "shuttle-speed-threshold", 5.0f) // used for MMC shuttle
|
||||
CONFIG_VARIABLE (ShuttleUnits, shuttle_units, "shuttle-units", Percentage)
|
||||
CONFIG_VARIABLE (float, shuttle_max_speed, "shuttle-max-speed", 8.0f)
|
||||
CONFIG_VARIABLE (FastWindOp, mmc_fast_wind_op, "mmc-fast-wind-op", FastWindVarispeed)
|
||||
CONFIG_VARIABLE (bool, locate_while_waiting_for_sync, "locate-while-waiting-for-sync", false)
|
||||
CONFIG_VARIABLE (bool, disable_disarm_during_roll, "disable-disarm-during-roll", false)
|
||||
CONFIG_VARIABLE (AutoReturnTarget, auto_return_target_list, "auto-return-target-list", AutoReturnTarget(LastLocate|RangeSelectionStart|Loop|RegionSelectionStart))
|
||||
|
@ -505,6 +505,12 @@ enum MonitorChoice {
|
||||
MonitorCue = 0x3,
|
||||
};
|
||||
|
||||
enum FastWindOp {
|
||||
FastWindOff = 0,
|
||||
FastWindVarispeed = 0x1, //rewind/ffwd commands will varispeed the transport (incl reverse playback)
|
||||
FastWindLocate = 0x2, //rewind/ffwd commands will jump to next/prior marker
|
||||
};
|
||||
|
||||
enum MonitorState {
|
||||
MonitoringSilence = 0x0,
|
||||
MonitoringInput = 0x2,
|
||||
|
@ -74,6 +74,7 @@ DEFINE_ENUM_CONVERT(ARDOUR::DiskIOPoint)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::NoteMode)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::ChannelMode)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::MonitorChoice)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::FastWindOp)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::PluginType)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::AlignStyle)
|
||||
DEFINE_ENUM_CONVERT(ARDOUR::AlignChoice)
|
||||
|
@ -86,6 +86,7 @@ setup_enum_writer ()
|
||||
Placement _Placement;
|
||||
MonitorModel _MonitorModel;
|
||||
MonitorChoice _MonitorChoice;
|
||||
FastWindOp _FastWindOp;
|
||||
MonitorState _MonitorState;
|
||||
PFLPosition _PFLPosition;
|
||||
AFLPosition _AFLPosition;
|
||||
@ -380,6 +381,11 @@ setup_enum_writer ()
|
||||
REGISTER_ENUM (DeltaOriginMarker);
|
||||
REGISTER (_ClockDeltaMode);
|
||||
|
||||
REGISTER_ENUM (FastWindOff);
|
||||
REGISTER_ENUM (FastWindVarispeed);
|
||||
REGISTER_ENUM (FastWindLocate);
|
||||
REGISTER (_FastWindOp);
|
||||
|
||||
REGISTER_ENUM (DenormalNone);
|
||||
REGISTER_ENUM (DenormalFTZ);
|
||||
REGISTER_ENUM (DenormalDAZ);
|
||||
|
@ -259,7 +259,20 @@ void
|
||||
Session::mmc_rewind (MIDI::MachineControl &/*mmc*/)
|
||||
{
|
||||
if (Config->get_mmc_control ()) {
|
||||
request_transport_speed(-Config->get_max_transport_speed());
|
||||
switch (Config->get_mmc_fast_wind_op ()) {
|
||||
case (FastWindOff):
|
||||
//nothing
|
||||
break;
|
||||
case (FastWindVarispeed):
|
||||
request_transport_speed (-Config->get_max_transport_speed());
|
||||
break;
|
||||
case (FastWindLocate):
|
||||
timepos_t pos = locations()->first_mark_before (timepos_t (transport_sample()-1), false);
|
||||
if (pos != timepos_t::max (Temporal::AudioTime)) {
|
||||
request_locate (pos.samples());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -267,7 +280,21 @@ void
|
||||
Session::mmc_fast_forward (MIDI::MachineControl &/*mmc*/)
|
||||
{
|
||||
if (Config->get_mmc_control ()) {
|
||||
request_transport_speed (Config->get_max_transport_speed());
|
||||
switch (Config->get_mmc_fast_wind_op ()) {
|
||||
case (FastWindOff):
|
||||
//nothing
|
||||
break;
|
||||
case (FastWindVarispeed):
|
||||
request_transport_speed (Config->get_max_transport_speed());
|
||||
break;
|
||||
case (FastWindLocate):
|
||||
timepos_t pos = locations()->first_mark_after (timepos_t (transport_sample()+1), false);
|
||||
if (pos != timepos_t::max (Temporal::AudioTime)) {
|
||||
request_locate (pos.samples());
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user