summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/mackie_jog_wheel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/mackie/mackie_jog_wheel.cc')
-rw-r--r--libs/surfaces/mackie/mackie_jog_wheel.cc35
1 files changed, 13 insertions, 22 deletions
diff --git a/libs/surfaces/mackie/mackie_jog_wheel.cc b/libs/surfaces/mackie/mackie_jog_wheel.cc
index 481c45bffc..9996a7bb29 100644
--- a/libs/surfaces/mackie/mackie_jog_wheel.cc
+++ b/libs/surfaces/mackie/mackie_jog_wheel.cc
@@ -67,15 +67,10 @@ void JogWheel::jog_event( SurfacePort & port, Control & control, const ControlSt
switch ( jog_wheel_state() )
{
case scroll:
- //ScrollTimeline causes crashes
- if ( _mcp.mcu_port().emulation() == MackiePort::bcf2000 )
- _mcp.ScrollTimeline( state.ticks * state.sign / 100.0 );
- else
- _mcp.ScrollTimeline( state.ticks * state.sign / 100.0 );
+ _mcp.ScrollTimeline( state.delta * state.sign );
break;
case zoom:
- // TODO do a for loop for each, to number of ticks
if ( state.sign > 0 )
for ( unsigned int i = 0; i < state.ticks; ++i ) _mcp.ZoomIn();
else
@@ -83,27 +78,23 @@ void JogWheel::jog_event( SurfacePort & port, Control & control, const ControlSt
break;
case speed:
- {
- // block because we initialize a variable
- // locally, _transport_speed is an absolute value...
- // fairly arbitrary scaling function
- _transport_speed += scaled_delta( state, _mcp.get_session().transport_speed() );
-
- // make sure not weirdness get so the session
- if ( _transport_speed < 0 || isnan( _transport_speed ) )
- {
- _transport_speed = 0.0;
- }
-
- // translated current speed to a signed transport velocity
- _mcp.get_session().request_transport_speed( transport_speed() * transport_direction() );
+ // locally, _transport_speed is an positive value
+ // fairly arbitrary scaling function
+ _transport_speed += scaled_delta( state, _mcp.get_session().transport_speed() );
+
+ // make sure not weirdness get so the session
+ if ( _transport_speed < 0 || isnan( _transport_speed ) )
+ {
+ _transport_speed = 0.0;
+ }
+
+ // translate _transport_speed speed to a signed transport velocity
+ _mcp.get_session().request_transport_speed( transport_speed() * transport_direction() );
break;
- }
case scrub:
{
add_scrub_interval( _scrub_timer.restart() );
- // copied from tranzport driver
float speed = 0.0;
// This should really be part of the surface object