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
|
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"), new OptionEditorHeading (_("Transport Masters")));
|
||||||
|
|
||||||
add_option (_("Transport/Chase"),
|
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 (float, shuttle_speed_threshold, "shuttle-speed-threshold", 5.0f) // used for MMC shuttle
|
||||||
CONFIG_VARIABLE (ShuttleUnits, shuttle_units, "shuttle-units", Percentage)
|
CONFIG_VARIABLE (ShuttleUnits, shuttle_units, "shuttle-units", Percentage)
|
||||||
CONFIG_VARIABLE (float, shuttle_max_speed, "shuttle-max-speed", 8.0f)
|
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, 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 (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))
|
CONFIG_VARIABLE (AutoReturnTarget, auto_return_target_list, "auto-return-target-list", AutoReturnTarget(LastLocate|RangeSelectionStart|Loop|RegionSelectionStart))
|
||||||
|
@ -505,6 +505,12 @@ enum MonitorChoice {
|
|||||||
MonitorCue = 0x3,
|
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 {
|
enum MonitorState {
|
||||||
MonitoringSilence = 0x0,
|
MonitoringSilence = 0x0,
|
||||||
MonitoringInput = 0x2,
|
MonitoringInput = 0x2,
|
||||||
|
@ -74,6 +74,7 @@ DEFINE_ENUM_CONVERT(ARDOUR::DiskIOPoint)
|
|||||||
DEFINE_ENUM_CONVERT(ARDOUR::NoteMode)
|
DEFINE_ENUM_CONVERT(ARDOUR::NoteMode)
|
||||||
DEFINE_ENUM_CONVERT(ARDOUR::ChannelMode)
|
DEFINE_ENUM_CONVERT(ARDOUR::ChannelMode)
|
||||||
DEFINE_ENUM_CONVERT(ARDOUR::MonitorChoice)
|
DEFINE_ENUM_CONVERT(ARDOUR::MonitorChoice)
|
||||||
|
DEFINE_ENUM_CONVERT(ARDOUR::FastWindOp)
|
||||||
DEFINE_ENUM_CONVERT(ARDOUR::PluginType)
|
DEFINE_ENUM_CONVERT(ARDOUR::PluginType)
|
||||||
DEFINE_ENUM_CONVERT(ARDOUR::AlignStyle)
|
DEFINE_ENUM_CONVERT(ARDOUR::AlignStyle)
|
||||||
DEFINE_ENUM_CONVERT(ARDOUR::AlignChoice)
|
DEFINE_ENUM_CONVERT(ARDOUR::AlignChoice)
|
||||||
|
@ -86,6 +86,7 @@ setup_enum_writer ()
|
|||||||
Placement _Placement;
|
Placement _Placement;
|
||||||
MonitorModel _MonitorModel;
|
MonitorModel _MonitorModel;
|
||||||
MonitorChoice _MonitorChoice;
|
MonitorChoice _MonitorChoice;
|
||||||
|
FastWindOp _FastWindOp;
|
||||||
MonitorState _MonitorState;
|
MonitorState _MonitorState;
|
||||||
PFLPosition _PFLPosition;
|
PFLPosition _PFLPosition;
|
||||||
AFLPosition _AFLPosition;
|
AFLPosition _AFLPosition;
|
||||||
@ -380,6 +381,11 @@ setup_enum_writer ()
|
|||||||
REGISTER_ENUM (DeltaOriginMarker);
|
REGISTER_ENUM (DeltaOriginMarker);
|
||||||
REGISTER (_ClockDeltaMode);
|
REGISTER (_ClockDeltaMode);
|
||||||
|
|
||||||
|
REGISTER_ENUM (FastWindOff);
|
||||||
|
REGISTER_ENUM (FastWindVarispeed);
|
||||||
|
REGISTER_ENUM (FastWindLocate);
|
||||||
|
REGISTER (_FastWindOp);
|
||||||
|
|
||||||
REGISTER_ENUM (DenormalNone);
|
REGISTER_ENUM (DenormalNone);
|
||||||
REGISTER_ENUM (DenormalFTZ);
|
REGISTER_ENUM (DenormalFTZ);
|
||||||
REGISTER_ENUM (DenormalDAZ);
|
REGISTER_ENUM (DenormalDAZ);
|
||||||
|
@ -259,7 +259,20 @@ void
|
|||||||
Session::mmc_rewind (MIDI::MachineControl &/*mmc*/)
|
Session::mmc_rewind (MIDI::MachineControl &/*mmc*/)
|
||||||
{
|
{
|
||||||
if (Config->get_mmc_control ()) {
|
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*/)
|
Session::mmc_fast_forward (MIDI::MachineControl &/*mmc*/)
|
||||||
{
|
{
|
||||||
if (Config->get_mmc_control ()) {
|
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