-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathSEQ42
579 lines (419 loc) · 26.4 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
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
SEQ42 - Midi Sequencer
======================
Import seq24/32/64 files, and any type 1 midi files. Maximum number of tracks is currently 64.
Import supports selection of seq24/32 by set number.
Export midi files - sequences in seq24/32/64 format - edit menu, export(seq24/32/64).
Export midi song render - combines all triggers on track together.
Can be used in conventional midi players. From edit menu, export song.
Muted tracks and tracks with NO triggers will NOT be exported.
This feature can also be used as a powerful editing feature as follows:
The user can split, slice and rearrange triggers to form a new sequence. Then mute all
other tracks and export to a temporary midi file. Now they can import the combined
triggers/sequence as a new item. This makes editing of long improvised sequences into
smaller or modified sequences as well as combining several sequence parts painless. Also,
if the user has a variety of common items such as drum beats, control codes, etc that
can be used in other projects, this method is very convenient. The common items can
be kept in one file and exported all, individually, or in part by creating triggers and muting.
NSM session support:
Supports file saving, dirty flag, and optional gui.
NAVIGATION FROM THE MAIN WINDOW:
Stop / Rewind / Play / Fast Forward buttons work with or without jack.
Pause/Stop button: Toggles the method used when stopping the transport (see tooltip).
BPM tap button - sequencer64 type, thanks to Chris Ahlstrom.
HMS:BBT display to main window (Thanks to Chris Ahlstrom - sequencer64).
Jack sync button: Temporarily disconnect from jack transport sync.
Sequence list button: Toggle show the sequence list, editor.
Auto scroll button: Toggle auto scroll. This applies to both the song editor and sequences.
Song-level transpose function: Each track has a transpose flag,
true by default when adding a new track. You will want to disable it on tracks
that trigger drums or sample hits. At any point (even while the sequencer is running)
you can change the song's transpose value (in the range of -12 to +12) and it will
affect the playback of all transposable tracks. You can make the transposition
permanent from the menu Edit/Apply song transpose.
Drum machine-like swing function: Each sequence has a swing setting (none, 1/8 or 1/16).
At the song level (along with BPM) there are two swing amount settings (one for 1/8 and one for 1/16).
These settings are evaluated while the sequencer is playing, the notes in each sequence remain
"straight" on the grid.
Main window has a button to toggle between song and live modes (in seq24/seq32, this is in a tab in the Options dialog).
All trigger, sequence, track actions can be undone/redone.
Redo is cleared upon any new edit of track items. This is done to eliminate the possibility
of undo pushing to redo items such as trigger edits, then deleting the track.
If redo were not cleared, then attempting to redo items on a track that no longer exists would not work.
Undo/redo does not change the track edit items (name,channel,bus,transpose,mute)... except when undo/redo
row insert/delete/pack or deleting midi import. Sequence copies will now copy the seq level undo/redo.
For track level undo/redo, (insert/delete/pack,copy,seq copy), the track editor and sequence editor windows must be closed.
--------------------
MAIN WINDOW EDITING GRID:
Right mouse and hold on empty area of active track >> shows pencil. Then simultaneously Left mouse and drag to paint a trigger.
Right mouse on trigger >> trigger menu.
Left mouse on trigger >> select trigger (trigger will highlight).
Mouse scroll >> scroll vertically.
Shift + mouse scroll >> scroll horizontally.
CTRL + mouse scroll >> zoom-in, zoom-out horizontally.
ALT + mouse scroll >> zoom-in, zoom-out vertically.
Key z >> horizontal zoom-out.
Shift z >> horizontal zoom-in.
Key 0 >> reset horizontal zoom to default.
Key v >> vertical zoom-out.
Shift v >> vertical zoom-in.
Key 9 >> reset vertical zoom to default.
CTRL + c >> copy selected trigger to clipboard.
CTRL + v >> paste clipboard trigger after selected trigger.
CTRL + x >> cut selected trigger and copy to clipboard.
Delete, backspace >> delete selected trigger.
Middle mouse button >> paste clipboard trigger to mouse location of open track (not on another trigger).
Middle mouse button >> on a trigger will split on mouse pointer location - grid-snapped.
CTRL + middle mouse >> on a trigger will paste clipboard trigger to mouse, overwriting existing trigger.
Home key >> reposition the progress line to the L marker.
End key >> reposition the progress line to the R marker.
's' key >> reposition the L marker to the progress line.
Shift + 's' key >> reposition the R marker to the progress line.
'p' key reposition song editor play location. With mouse focus on song editor(tracks),
press 'p' to move play position to mouse location.
'Fruity' input method for trigger pop-up menu (middle mouse button).
middle mouse button >> on existing trigger - pop-up menu.
CTRL + Left mouse >> on existing trigger - split trigger at mouse location.
CTRL + left mouse >> off trigger - pasted clipboard trigger to mouse location.
CTRL + middle mouse button >> paste clipboard trigger to mouse location.
Copy song triggers across different tracks:
This will also copy the sequence into the new track.
Select trigger with mouse, CTRL-C: middle mouse click on new track location.
After paste, the subsequent CTRL-V will revert to default behavior of pasting
the trigger only after previous paste.
The paste across track is only allowed once per CTRL-C action to prevent
accidental duplication of sequence copies.
In the trigger popup menu an option to set the pattern's play flag (if it's off) or unset it (if on).
The option only shows if in Live mode.
Export individual solo sequence from trigger menu pop-up.
Export will not include song triggers, or proprietary performance tags.
--------------------
TRACK NAME AREA:
Menu:
Track row insert/delete/pack. Right click the track name - popup menu.
All sequence editors and track edit must be closed.
Left mouse button >> mute track.
Middle mouse button >> solo track.
Right mouse button >> show menu.
Track mute status is saved, track solo status is not.
Left mouse button - hold and drag >> to inactive track, will move to the new location.
Left mouse button - hold and drag >> to active track, will swap locations.
ALT + Left mouse button - hold and drag >> to inactive track, copy track to landing location.
Merge tracks: From the menu, right click on existing track name - select Merge Sequence -
Select the sequence from the available list.
The Sequences AND song triggers will be added to the track. Now you can easily combine those seq24/32/64 tracks!!
Any overlapping trigger will be overwritten and/or split - just create a new sequence for them...
Merge tracks: From mouse drag:
Shift + Left mouse button - hold and drag >> to active track, merge(copy all triggers and sequences)
into the landing track. The dragged track will remain in place.
CTRL + Left mouse button - hold and drag >> to active track, merge and delete
(dragged track will be deleted after merge).
CTRL + Right mouse button >> insert track row before.
ALT + Right mouse button >> delete track row.
Mouse scroll >> scroll vertically.
ALT + mouse scroll >> zoom-in, zoom-out vertically.
---------------------
'L' and 'R' EDIT LOOP TRACK:
Left mouse button and drag >> move 'L' marker to pointer location.
Right mouse button and drag >> move 'R' marker to pointer location.
CTRL + left mouse button and drag >> A green vertical location line will appear.
Release the CTRL button to expand insert/paste all track triggers between the 'L' and 'R'
markers to the location line.
ALT + left mouse button and drag >> A green vertical location line will appear.
Release the ALT button to overwrite/paste all track triggers between the 'L' and 'R'
markers to the location line.
--------------------
SEQUENCE LIST:
Edit button: Create new triggers between L and R play markers for triggers with
their 'playing' box checked in the sequence list.
--------------------------------------------------------------
[1] What & Why
[2] Who
[3] Interface
[4] Contact / Bugs / Ideas
[5] License
-----------------------------------------------------------
[1] What & Why
It's a fork of [seq24](https://launchpad.net/seq24) (which is a fork of the [original seq24](http://filter24.org/seq24/)),
but with a greater emphasis on song editing (as opposed to live looping) and some enhancements.
In essence, seq42 is an advanced song editor for seq24/seq32, and the other variants.
seq42 adds a new concept of a "track". It breaks down like this:
A song in seq42 is a collection of tracks. Each track has a midi bus and a midi channel.
Each seq42 track has a collection of sequences (which send their events to their track's midi bus and channel) and a collection of triggers,
each of which triggers one of that track's sequences.
In seq42, the main window is the song editor, with one row per track. After adding a trigger to a track, you can right-click on the trigger
to show a context menu with options to set the trigger to an existing sequence or create a new sequence or copy an existing sequence
(possibly even from another track).
Other than these conceptual changes, a seq24 user should feel at home. The awesome sequence editor is pretty much the same.
The 8x4 sequence set window from seq24 is gone. Instead there's a sequence list window that you can open from the main song editing window.
The sequence list displays all the sequences in the song. You can sort the list in various ways (it initializes sorted by track)
and there's a check box for each sequence that you can use to toggle each sequence's play flag (when you're in live mode).
-----------------------------------------------------------
[2] Who
The original seq24 was written by Rob C. Buse.
The original seq42 was forked and started by Sam Brauer.
The current seq42 is maintained by Stazed.
-----------------------------------------------------------
[3] Interface
The program is basically a MIDI song editor.
[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
[3b] Options Window
This window allows us to select which sequence gets midi
clock, and which incoming midi events control the sequencer.
[3c] Sequence Edit Window
Right clicking on a track trigger will show a trigger
menu. Select New/Edit Sequence 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.
TOOLS MENU:
The editor has new menu items to randomize selected events
(adding or subtracting a random value in a range from +/-1 to +/-16).
This can be used on velocity or CC values.
Select notes that occur on specific beats (even 1/4, odd 1/4, even 1/8,
odd 1/8, even 1/16, odd 1/16).
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.
Midi record supports simultaneous multi-sequence record, channel specific, up to 16 channels at once.
Midi recording types. Recording button 'Merge' to select type:
Legacy merged looped (notes are added upon looping of sequence).
Overwrite looped record (notes will be cleared upon looping after
the first note played and overwrite previous pass).
Expand sequence length to fit recording (sequence does not loop and
will expand after reaching last 1/4 measure).
Expand and replace recording.
Midi step edit is added on record(seq42 not playing), starting at transport line.
Sequence editor Ctrl-right arrow and Ctrl-left arrow key moves transport line by snap.
Home key moves transport line to start.
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.
Chord note selection will draw notes based on the
chord selection (Thanks to LMMS for the lookup table).
Mute and solo individual notes on sequence editor.
Right mouse button click on piano roll will mute,
middle mouse button to solo. Muted keys will change color to red,
and solo to green. These settings will NOT be saved to file.
To display the MIDI number instead of the letter value of the note.
Right mouse button + CTRL to toggle between letter and MIDI number
when on the piano roll.
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.
You can use cursor keys to move selected notes up/down
in pitch or left/right in time.
Up and down move by one semitone.
Hold down Shift to move up or down by octave.
Right and left move the selected notes by the current snap amount.
(Note that it does not automatically snap the notes to the grid.
If you want that, use the quantize function first.)
Nudge the selected notes by individual ticks by holding down the
Shift key with left or right arrows.
Notes will send MIDI play when added to the sequence or moved.
Mouse scroll >> scroll vertically.
Shift + mouse scroll >> scroll horizontally.
CTRL + mouse scroll >> zoom-in, zoom-out horizontally.
ALT + mouse scroll >> zoom-in, zoom-out vertically.
Key z >> horizontal zoom-out.
Shift z >> horizontal zoom-in.
Key 0 >> reset horizontal zoom to default.
Key v >> vertical zoom-out.
Shift v >> vertical zoom-in.
Key 9 >> reset vertical zoom to default.
Right clicking on the event strip ( directly under
the piano 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 piano 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.
[3e] .seq42rc File
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]
*NOTES*:
To see the required key codes when pressed, run seq42 with --show_keys in a terminal.
Seq42 will overwrite the .seq42rc file on quit. You should therefore
quit seq42 before doing modifications to the .seq42rc file.
Some keys should not be assigned to control sequences in seq42 as they
are already assigned in the seq42 menu (with ctrl).
[3f] JACK Transport
--jack_transport : seq42 will sync to JACK transport
if the JACK server is available.
--jack_master : seq42 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.
You can not change the BPM of seq42 while rolling in JACK sync mode.
* [manual-alsa-ports]
Set this to 1 if you want to expose alsa ports to Jack.
Set to 0 if you want manual alsa connections from seq32.
* [vertical-zoom-sequence]
Sets the vertical zoom default for the sequence editor.
* [vertical-zoom-song]
Sets the vertical zoom default for the song editor tracks.
* [horizontal-zoom-song]
Sets the horizontal zoom default for the song editor tracks.
-----------------------------------------------------------
[4] 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).
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!
You will not be allowed to save when using playlist mode in an NSM session.
Special thanks for the playlist idea, and some code (modified) go to:
Simon Hickinbotham - seq24plus.
https://github.com/franticspider/seq24plus
-----------------------------------------------------------
[5] 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
-----------------------------------------------------------
[6] Contact
https://[email protected]/Stazed/seq42.git
-----------------------------------------------------------
[7] License
Released under the Terms of the GPL. See the COPYING file
for a full readout.