############ TISM TUTORIAL 2 ########## ###### Simple MIDI Arpegiator ###### Input / Output ################# # Alsa MIDI Input (device 0) # On Tism port 0 (All messages received will begin by 0) addinprotocol 0 alsamidiraw hw:0,0 # Computer Keyboard Input on Port 1 (messages begin with 1) # Note : The Terminal window where Tism has been lauch # must be FOCUSED to capture keyboard event addinprotocol 1 key /dev/tty printtitle test # Alsa Midi Output (device 0) # On Tism Port 0 (All messages which begin by 0 will sent) addoutprotocol 0 alsamidiraw hw:0,0 ###### Sequences ############################ setbpm 160 # The arpegiator pattern set tmp [createseq "arpegiator1" ] #pattern parameters # output port 20 seqchanout $tmp 20 # not muted seqmute $tmp 1 # loop on seqloop $tmp 1 # quantization 1/16 quantize $tmp 1 16 # pattern length 1/1 (4 beats) seqrdef $tmp 1 1 # no default sync seqdefaultsync $tmp 0 0 # begin & end marks beginmarksec $tmp 0 0 endmarksec $tmp 16 0 #pattern messages addevtsec $tmp 0 0 0 144 0 0 0 addevtsec $tmp 2 0 0 144 0 4 0 addevtsec $tmp 4 0 0 144 0 7 0 addevtsec $tmp 6 0 0 144 0 12 0 addevtsec $tmp 8 0 0 144 0 16 0 addevtsec $tmp 10 0 0 144 0 19 0 addevtsec $tmp 12 0 0 144 0 24 0 #save seq id setv arpg $tmp ################# Control ###################### # What to do when receive Note On message on port 0 # mask : 0 144 # We save the note number and velocity to transpose the pattern # and we start the sequence set a [createctrl 0 0 144] setscript1 0 $a {setv basenote [getm 3]; setv velo [getm 4]; startsync [getv arpg];} #define controller to transpose pattern (on port 20) # redirect to port 0 (midi output), change pitch and velocity set a [createctrl 0 20] setscript1 0 $a { setm 0 0; setm 3 [expr [getm 3] + [getv basenote]]; setm 4 [getv velo]} ################ Default value ###### # first active group setcgroup 0 # second active group setcgroup2 1