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 ][, ] * 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. [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] After the list of sequences and their midi events, you can set seq24 to handle midi events and change the following: bpm up and down, screen set up and down. replace, snapshot, and queue ( see the end of 3a ) * [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. There are also the modifier keys: replace, snapshot, and queue ( see the end of 3a ). To get the correct keys, run seq24 with --show_keys. [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.