forked from Stazed/seq42
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSEQ42
546 lines (391 loc) · 21 KB
/
SEQ42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
SEQ42 - Midi Sequencer
======================
release-1.1.2
Midi Control:
Midi control had been re-introduced to seq42 for transport control, recording, and
playlist adjustment. The implementation follows the original seq24 method with some
minor modification. For transport control, start, stop, fast forward, rewind
and beginning of song are supported. To implement the midi control for existing
users, start seq42 then quit to generate the midi control grid for existing .seq42rc
files. For new users, the file will be created after quitting the program for the
first time. All transport controls are channel specific.
For midi specifications, the channels are numbered from 0 to 15 and for seq42,
the channels are displayed from 1 to 16 (remember to offset by -1 when setting).
Note On = 144 + channel (0 to 15)
Note Off = 128 + channel (0 to 15)
Control Code (CC) = 178 + channel (0 to 15)
The following would set play to toggle start/stop with note press C8 (midi note 108)
on channel 1; to start only with A#7 (note 106); to stop only with A7 (note 105):
# start playing (toggle, start, stop)
0 [1 0 144 108 0 127] [1 0 144 106 0 127] [1 0 144 105 0 127]
The record group will toggle recording on/off for all sequences in which
the sequence editor is open. When recording, the only midi controls that
are available are start/stop and record. Also, the midi events used by these
controls will not be passed thru or used by recording.
Example to set record to toggle with A0 (note 21). The toggle group and off
group work for record and can also be used and will always toggle:
# record
2 [0 0 0 0 0 0] [1 0 144 21 0 127] [0 0 0 0 0 0]
Example to set Fast forward with note-on (144) B7 (note 107) when pressed, and to stop when
the key is released note-off (128):
# fast forward (forward, forward, stop)
3 [0 0 0 0 0 0] [1 0 144 107 0 127] [1 0 128 107 0 127]
Rewind works similar to fast forward.
Beginning of song will move the transport to the beginning of the song or the
left (L) grid marker. Each section can be used and will only set to the marker.
Following will use A#7 (note 106) to set:
# beginning of song
5 [0 0 0 0 0 0] [1 0 144 106 0 127] [0 0 0 0 0 0]
Midi control for playlist will only be active when seq42 transport is stopped. You
can set the playlist value while running but the selected file will not be loaded
until the sequencer stops. If the sequencer is stopped by a stop marker, then
the playlist will set the file at the next file past the selected value. The program
will range check for validity, and the file list starts at 1.
For playlist, the toggle group can be used to send by CC value, the on group for next,
and off group for previous.
Example to set playlist to adjust by value, CC (178), CC number 7. Playlist Next is set
to note A0 (21) and previous is set to A#0 (22):
6 [1 0 178 7 1 127] [1 0 144 21 0 127] [1 0 144 22 0 127]
Tempo Changes:
To add a tempo change marker, left click on the Tempo grid. A BPM pop up window will appear
in which you can type, use the spin button, use the bpm key-binding or use tap button
to set the BPM value. Press enter or return to accept the value. Press escape to abandon
the value. Upon acceptance, a blue tempo mark will be set at the location of the left click
location, grid snapped. Also, to the right of the marker, the tempo value will be indicated.
Tempo values range from 1 to 600. You can move a created marker by placing the mouse pointer
above an existing marker. The pointer will change to an up arrow, then left click and drag
the marker to the desired location. The markers will move based on the grid snapping that
is selected. You cannot move the first start marker and any attempt to move to the beginning
start location will be ignored. Use the BPM spinner to the left of the first marker to
adjust the starting BPM.
To delete a tempo marker, right click above the marker.
During play, when the progress line reaches the tempo mark, the BPM value will change
to the indicated amount. Also, the main bpm spin button will indicate the current
tempo being played. Upon stop, the main spin button will revert back to the original
starting value.
The first marker at the start of the song cannot be deleted. Use the main window BPM spin
buttons as used in previous releases to adjust the starting marker.
STOP Markers:
When setting the marker BPM, a value of 0 (zero) can be used to set a stop marker.
Stop markers are indicated by red color, and the bpm value will indicate "[stop]".
When playing, as the progress mark encounters a stop marker, the transport will stop.
Stop markers can be used for editing purposes, or at the end of a song to stop the transport.
When in Playlist mode, if stopped by a stop marker, the play list will automatically increment
to the next file on the play list after stopping.
Live mode:
In live mode, only the starting bpm will be used. No subsequent tempo marks or stop marks
will have any effect.
For the tempo map, special thanks to:
Jonathan Moore Liles (non-timeline)
http://non.tuxfamily.org
Playlist mode:
A playlist is a text file containing multiple seq42 files (.s42), that can be quickly loaded
for possible accompaniment with a live performance. The file should list on each line the
full path to the .s42 file and name, ex:
/home/username/seq42dir/file1.s42
/home/username/seq42dir/file2.s42
/home/username/seq42dir/file3.s42
There should be no blank lines before, after, or between the files listed. Do not use
place holders, full path only.
Playlist mode can be invoked from the command line with the -X <path to playlist file> option.
The playlist can also be selected from the main menu, File/Open playlist...
When the playlist mode is first invoked, you will be prompted with a dialog pop-up asking
if you wish to verify the playlist. For new playlists, or if a playlist is modified, selecting 'Yes'
would be beneficial to check for errors. The verification will attempt to load all the files
on the list, in order, and if errors are encountered, will stop and indicate the offending file.
Select 'No' or escape key if the playlist has previously been verified. If the verification is
successful, no pop-up errors will occur, and the first file on the list will be loaded.
When playlist mode is in effect, the main window SEQ42 logo will turn blue with a red "PLAYLIST" overlay.
In addition, the main window title and song editor title will indicate "Playlist" and
the current song and numeric value listed in the playlist file ex:
"seq42 - Playlist, Song 03 - [/home/username/seq42dir/file3.s42]"
To cycle through the playlist, use the right arrow key to go down the list, and the left
arrow key to go up the list, from the main window only. The key binding can be changed in
the File/Options/Keyboard tab.
The sequencer must be stopped in order to cycle up or down the playlist.
ALERT!! - the key binding may need to be reset if a previous .seq42rc file is present
in your home directory. Go to File/Options/Keyboard to set the 'Playlist next' and
'Playlist previous' keys. The default is the left(previous) and right(next) arrow keys.
During playlist play, when the transport is stopped by a Stop marker, the playlist song will
automatically be incremented down by one song. (See STOP markers above).
To shut off playlist mode, simply load a new file from the main menu, File/New or
File/Open. You could also quit and restart. The main window title will no longer
show the "Playlist, Song XX" listing.
If editing while in playlist mode, you will NOT be prompted to save changes when moving
to a new song on the list. If unsaved, all editing will be lost! So if editing in playlist
mode, be sure to save before right arrow, or left arrow!
Special thanks for the playlist idea, and some code (modified) go to:
Simon Hickinbotham - seq24plus.
https://github.com/franticspider/seq24plus
FIXME: update this document!!!!
--------------------------------------------------------------
[1] What & Why
[2] Who
[3] Interface
[4] Contact / Bugs / Ideas
[5] License
-----------------------------------------------------------
[1] What & Why
Seq24 is a real-time midi sequencer. It was created to
provide a very simple interface for editing and playing
midi 'loops'. After searching for a software based
sequencer that would provide the functionality needed for
a live performance, there was little found in the
software realm. I set out to create a very minimal sequencer
that excludes the bloated features of the large software
sequencers, and includes a small subset of features that
I have found usable in performing.
-----------------------------------------------------------
[2] Who
Written by Rob C. Buse. I wrote this program to fill a
hole. I figure it would be a waste if I was the only one
using it. So, I released it under the GPL.
-----------------------------------------------------------
[3] Interface
The program is basically a loop playing machine with a
simple interface.
[3a] Main Window
* File.
The File menu is used to save and load standard
MIDI files. It should be able to handle any
Format 1 standard files, Any other sequencer
should be capable of exporting.
* Options
Used to configure what bus midi clock gets dumped to.
* Help.
Shows the About box.
* Boxes
Each box represents a loop. By right clicking
on an empty box you bring up a menu to create
a new loop, or edit a existing one.
Left clicking on a box will change its state
from muted (white) to playing (black) when
the sequencer is running.
By clicking and holding the left button on a sequence,
you can drag it to a new location on the grid.
Right Clicking will bring up a menu of available options
for the sequence. Here you can select the midi bus/channel.
You can also clear all performance data (on/off) see section
[3d] for more info.
* 'Screen Sets'
You only see 32 loops in the main window. This
is a screen set. You can switch between sets
by using the '[' and ']' keys on your keyboard or
the spin widget labeled set.
There are a total of 32 sets, for a total of
1024 loops.
* BPM
The ; and ' keys will increase/decrease tempo as
will the bpm spinner.
* Muting and Unmuting Tracks.
Left clicking on a Tracks will toggle its playing
status. Hitting its assigned keyboard key will
also toggle its status. Below is the grid thats
mapped to the loops on the screen set.
[1 ][2 ][3 ][4 ][5 ][6 ][7 ][8 ]
[q ][w ][e ][r ][t ][y ][u ][i ]
[a ][s ][d ][f ][g ][h ][j ][k ]
[z ][x ][c ][v ][b ][n ][m ][, ]
* Mute/Unmute patterns (Groups)
You can toggle the playing status of up to 32 previously
defined mute/unmute patterns (groups) in the active screen
set, similar to hardware sequencers.
This is done either by one of the 'group toggle' keys
or by a MIDI controller, both assigned in the .seq24rc file.
A Mute/Unmute pattern (group) is stored by holding a
'group learn' key while pressing the corresponding
'group toggle' key.
There are also keys assigned to turn on/off the group
functionality.
* Replace
Holding down 'Left Ctrl' while selecting a sequence
will mute all other sequences and turn on the selected
sequences.
* Restore
Holding 'Alt' will save the state of playing sequences
and restore them when 'Alt' is lifted.
Holding 'Left Ctrl' and 'Alt' at the same time will enable
you to flip over to new sequences briefly and then
flip right back upon lifting 'Alt'.
* Queue
Holding 'Right Ctrl' will queue a on/off toggle for a
sequence when the loop ends. Queue also works for mute/unmute
patterns (groups), in this case every sequence will toggle
its status after its individual loop end.
* keep queue
Pressing the 'keep queue' key assigned in the .seq24rc file
activates permanent queue mode until you use the temporary
Queue function again pressing 'Right Ctrl'.
[3b] Options Window
This window allows us to select which sequence gets midi
clock, and which incoming midi events control the sequencer.
[3c] Edit Window
Right clicking on the main window then selecting
New/Edit will bring up the edit window.
The top bar of the sequence editor lets you
change the name of the sequence, the time
signature of the piece, and how long the loop
is.
Snap selects where the notes will be drawn. Note
Length determines what size they will be. Scale
is the relation between midi ticks and pixels.
1:4 = 4 ticks per pixel. The Bus button selects
which ALSA device to use, and which midi channel.
The 3rd line contains the Undo button, which will roll
back any changes to the sequence from this session.
You can select which Scale and Key the piece is in
and it will grey out those keys on the roll not in
the key. You can select a sequence to draw on the
background to help with writing corresponding parts.
Holding the mouse over any button for a short period
will let you view what it does.
While the sequencer is playing, you can mute/unmute
the sequence by toggling the [Play] button. The
[Thru] button will relay any ALSA midi input
to the sequences Bus and midi channel. [Record]
will capture and ALSA midi input and save it in the
sequence.
On both the grid window and the event window, HOLDING
down the right mouse button will change your cursor
to a pencil and put you in 'draw' mode. Then while
still HOLDING the right mouse button, click the left
mouse button to insert new notes. Many people find
this combination strange at first, but once you get
used to it, it becomes a very fast method of note
manipulation.
Pressing the middle mouse button will let you change
the length of the note.
The left mouse button lets you select multiple events
which can then be clicked and moved, cut (Ctrl-X),
copy (Ctrl-C), or pasted (Ctrl-V). When the notes are
selected, you can delete them with the Delete key.
Right clicking on the event strip ( directly under
the paino roll grid ) will allow you to add/select/move
midi events (not note on/off messages) somewhat like the
piano grid.
The data editor ( directly under the event strip ) is used
to change note velocities, channel pressure, control codes,
patch select, etc. Just click + drag the mouse across
the window to draw a line. The values will match that line.
Any events that are selected in the paino roll or event
strip can have their values modified with the mouse
wheel.
The [Event] button allows you to select which type of data
the event strip and data editor are currently displaying.
[3d] Performace Edit
Right Click on the Roll to enter draw mode, gray boxes
represent when the track is on. Right and left click to
drop the [R] and [L] anchors on the bar indicator. Use
the collapse and expand button to modify events. Middle
click on the bar indicator to drop a new start position.
You can only change the start position when the performace
is not playing.
[3e] .seq24rc File
After you run seq24 for the first time, it will generate
a .seq24rc file in your home directory.
It contains the the data for remote midi control, keyboard
control, and midi clock.
* [midi-control]
For each sequence, we can set up midi events to turn a
sequence on, off, or toggle it. We see the following
lines in the [midi-control] section:
0 [0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0]
1 [0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0]
2 [0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0]
...
The first number is the sequence in the main window. Each set
of brackets corresponds to a midi filter. If the incoming midi
event matches the filter, it will either [toggle],[on],or[off]
the sequence respectivaly.
The layout of each filter inside the bracket is as follows:
[(on/off) (inverse) (midi status byte (channel ignored))
(data1) (data2 min) (data2 max)]
If the on/off is set to 1, it will match the incoming midi
to the pattern and perfrom the action (on/off/toggle)
if the data falls in the range specified. All values
are in decimal.
The last three is the range of data that will match.
The following is an example of responding to note on events,
note 0, with any velocity to turn the sequence on, and note
off events, note 0, and any velocity to turn the sequence off.
Toggle On Off
1 [0 0 0 0 0 0] [1 0 144 0 0 127] [1 0 128 0 0 127]
the inverse field will make the sequence perform the opposite
action (off for on, on for off) if the data falls outside the
specified range. This is cool because you can map several
sequences to a knob or fader.
The following example would map a row of sequences to one knob
sending out changes for Control Code 1:
Toggle On Off
0 [0 0 0 0 0 0] [1 1 176 1 0 15] [0 0 0 0 0 0]
1 [0 0 0 0 0 0] [1 1 176 1 16 31] [0 0 0 0 0 0]
2 [0 0 0 0 0 0] [1 1 176 1 32 47] [0 0 0 0 0 0]
3 [0 0 0 0 0 0] [1 1 176 1 48 63] [0 0 0 0 0 0]
4 [0 0 0 0 0 0] [1 1 176 1 64 79] [0 0 0 0 0 0]
5 [0 0 0 0 0 0] [1 1 176 1 80 95] [0 0 0 0 0 0]
6 [0 0 0 0 0 0] [1 1 176 1 96 111] [0 0 0 0 0 0]
7 [0 0 0 0 0 0] [1 1 176 1 112 127] [0 0 0 0 0 0]
# mute in group
This section controls 32 groups of mutes in the same way as
defined for [midi-control]. A group is a set of sequences
that can toggle their playing state together.
Every group contains all 32 sequences in the active screen
set (see after).
[mute-group]
Here there are the definitions of the state of the 32 sequences
in the playing screen set when a group is selected.
group [state of the first 8 sequences] [second 8] [third 8] [fourth 8]
After the list of sequences and their midi events, you can
set seq24 to handle midi events and change the following:
* [midi-clock]
The midi clock fields will contain the clocking state from the last
time seq24 was run. Turn off clock with a 0, or on with a 1.
* [keyboard-control]
The keyboard control is a dump of the keys that seq24
recognises and its corresponding sequence number.
Note that the first number corresponds to the number of sequences in
the active screen set.
* [keyboard-group]
Same as keyboard-control, but to control groups.
#bpm up and down
-> keys to control bpm
#screen set up and down
-> keys for changing the active screenset
#group functionality on, group functionality off, group learn
-> note that the group learn key is a modifier key to be held while
pressing a group toggle key
#replace, queue, snapshot_1, snapshot_2, keep queue
-> These are the other modifier keys explained in section 3a.
*NOTES*:
To see the required key codes when pressed, run seq24 with --show_keys.
Seq24 will overwrite the .seq24rc file on quit. You should therefore
quit seq24 before doing modifications to the .seq24rc file.
Some keys should not be assigned to control sequences in seq24 as they
are already assigned in the seq24 menu (with ctrl).
[3f] JACK Transport
In order to run seq24 with JACK Tranport Sync, you need
to enable it at the command line with the following flags:
--jack_transport : seq24 will sync to JACK transport
if the JACK server is available.
--jack_master : seq24 will try to be JACK master
--jack_master_cond : The attempt to be JACK master will
fail if there is already a master,
otherwise it will just take over.
--jack_start_mode <x> : When seq24 is synced to JACK,
The playback command comes
from the JACK server. seq24 will
play in performance mode
by default (section [3d]).
If you want live mode, set
--jack_start_mode 0.
It is best to run seq24 with another master like ardour. You
can not change the BPM of seq24 while rolling in JACK sync mode.
-----------------------------------------------------------
[4] Contact
If you have Ideas about seq24 or a bug report,
please email seq24@filter24.org. If its a bug report,
please add [BUG] to the subject.
-----------------------------------------------------------
[5] License
Released under the Terms of the GPL. See the COPYING file
for a full readout.