-
Notifications
You must be signed in to change notification settings - Fork 4
/
SEQ24
387 lines (272 loc) · 13.1 KB
/
SEQ24
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
SEQ24 - Midi Sequencer
======================
[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.