from Views import EventWidget
from Events import Event
import main
-import Joyboard, Keyboard, Process
+import Joyboard, Keyboard, Process, TimeMachine, AlsaPlayer
import Looper, Mixer
import sys, curses, time, os
from curses.ascii import alt, ctrl
mixer_map = Bindings.KeyMap('Mixer & Effects')
Action.register( Actions.ChangeBindingsRelative( 'mode_mixer', 0, [ mixer_map ] ) )
-looper_main_map.add( Binding( Event('jb0',10), '[Mixer]', Action['mode_mixer'] ) )
-
mixer = Mixer.register(
viewmanager = main.viewmanager,
oscserver = main.oscserver,
remote = ('127.0.0.1', 9902),
)
+tm = TimeMachine.register(
+ viewmanager = main.viewmanager,
+
+ context = 'tm',
+ name = 'TimeMachine',
+ x = 52,
+ y = 4,
+ dx = 23,
+ dy = 3,
+
+ ports = ('minimixer:out_left', 'minimixer:out_right'),
+ dir = 'tm',
+ buffer = 10)
+
Action.register( Mixer.AssignController ( 'mixer_guitar_level', mixer, ctl, 'Guitar', 1 ) )
Action.register( Mixer.ToggleMuteChannel ( 'mixer_mute_guitar', mixer, 1 ) )
Action.register( Mixer.AssignController ( 'mixer_voice_level', mixer, ctl, 'Voice', 2 ) )
Action.register( Mixer.ToggleMuteAll ( 'mixer_mute_all', mixer ) )
Action.register( Mixer.CycleVolume ( 'mixer_cycle_gain', gain, 1, ( 0.0, 2.0, 4.0 ) ) )
+Action.register( TimeMachine.ToggleRecord( 'tm_rec_toggle', tm ) )
+
mixer_map.add( Binding( Event('jb0',0), 'Rec', Action['looper_record'] ) )
mixer_map.add( Binding( Event('jb0',1), 'Over', Action['looper_overdub'] ) )
mixer_map.add( Binding( Event('jb0',2), 'Mult', Action['looper_multiply'] ) )
mixer_map.add( Binding( Event('jb0',13), '(Vol G)', Action['mixer_guitar_level'] ) )
mixer_map.add( Binding( Event('jb0',14), '(Vol V)', Action['mixer_voice_level'] ) )
+mixer_map.add( Binding( Event('jb0',12), 'TM Rec', Action['tm_rec_toggle'] ) )
+
mixer.mute(2)
mixer.assignController( ctl, 'Guitar', 1 )
###########################################################################
+# Jukebox
+
+player_map = Bindings.KeyMap('JukeBox')
+Action.register( Actions.ChangeBindingsRelative( 'mode_player', 0, [ player_map ] ) )
+
+player = AlsaPlayer.Player()
+
+Action.register( AlsaPlayer.Play ( 'player_start', player ) )
+Action.register( AlsaPlayer.Pause ( 'player_pause', player ) )
+Action.register( AlsaPlayer.Stop ( 'player_stop', player ) )
+Action.register( AlsaPlayer.Prev ( 'player_prev', player ) )
+Action.register( AlsaPlayer.Next ( 'player_next', player ) )
+
+player_stop_map = Bindings.KeyMap()
+
+Action.register( Actions.ChangeBindingsRelative('player_set_stop_map', 1, [player_stop_map] ) )
+
+Action.register( Actions.Macro( 'player_set_playing', [ 'player_start', 'player_set_stop_map' ] ) )
+Action.register( Actions.Macro( 'player_set_stop', [ 'player_stop', 'unset_this_map' ] ) )
+
+for i in range(10):
+ Action.register( AlsaPlayer.Jump ( 'player_jump_%d' % i, player, i+1 ) )
+ Action.register( Actions.Macro( 'player_set_track_%d' % i,
+ [ 'player_jump_%d' % i, 'player_set_stop_map' ] ) )
+ player_map.add( Binding( Event('jb0',i), 'Tr %d' % (i+1), Action['player_set_track_%d' % i] ) )
+
+player_map.add( Binding( Event('jb0', 11), 'Prev', Action['player_prev'] ) )
+player_map.add( Binding( Event('jb0', 12), 'Next', Action['player_next'] ) )
+player_map.add( Binding( Event('jb0', 13), 'Play', Action['player_set_playing'] ) )
+player_map.add( Binding( Event('jb0', 14), 'Pause', Action['player_pause'] ) )
+
+player_stop_map.add( Binding( Event('jb0', 13), 'Stop', Action['player_set_stop'] ) )
+
+###########################################################################
-mixer_map.add( Binding( Event('jb0',10), '[Loop]', Action['mode_looper'] ) )
+mixer_map.add ( Binding( Event('jb0',10), '[Loop]', Action['mode_looper'] ) )
+looper_main_map.add ( Binding( Event('jb0',10), '[JBox]', Action['mode_player'] ) )
+player_map.add ( Binding( Event('jb0',10), '[Mixer]', Action['mode_mixer'] ) )
main.keylist.append(global_map)
main.keylist.append(mixer_map)