Audio/AudioController: Added AlsaPlayer and TimeMachine modules
[audiocontrol.git] / config.py
index 93d5654..98abe27 100644 (file)
--- a/config.py
+++ b/config.py
@@ -4,7 +4,7 @@ from Actions import Actions as Action, action
 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
@@ -190,8 +190,6 @@ looper.set('sync',1)
 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,
@@ -222,6 +220,20 @@ gain = Mixer.register(
     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 ) )
@@ -230,6 +242,8 @@ Action.register( Mixer.AssignController  ( 'mixer_master_level', mixer, ctl, 'Ma
 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'] ) )
@@ -245,12 +259,50 @@ mixer_map.add( Binding( Event('jb0',9), 'Mute',     Action['mixer_mute_all'] ) )
 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)