
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.  Note: any notes
	beyond 16 bars will be truncated.  If your going
	to export a song from another sequencer, its best
	to take the loops you want from your sequence, and
	place them at time 0 in the file.

	* Options

	Used to configure what bus midi clock gets dumped to.
	And select the midi control options

	* 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.

	'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    ][,    ]

	Holding down 'Left Ctrl' while selecting a sequence 
	will mute all other sequences and turn on the selected
	sequences.

	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'.

	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.

	For each sequence, we can set up midi events to turn a 
	sequence on, off, or toggle it.  We see the following
	on the initial window:

	[x][y][00][00][00]-[00].

	the [x] is the checkbox.  If this is checked, 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 entered into the boxes in HEX.  The following
	is which box means what:

	[on/off][inverse][midi status byte (channel ignored)][data1][data2 min]-[data2 max]

	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
        [ ][00][00][00]-[00]   [X][ ][90][00][00]-[7f]    [X][ ][90][00][00]-[7f]

	the [inverse] check 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
       [ ][00][00][00]-[00]   [X][X][B0][01][00]-[0f]   [ ][ ][00][00][00]-[00]
       [ ][00][00][00]-[00]   [X][X][B0][01][10]-[1f]   [ ][ ][00][00][00]-[00]
       [ ][00][00][00]-[00]   [X][X][B0][01][20]-[2f]   [ ][ ][00][00][00]-[00]	
       [ ][00][00][00]-[00]   [X][X][B0][01][30]-[3f]   [ ][ ][00][00][00]-[00]
       [ ][00][00][00]-[00]   [X][X][B0][01][40]-[4f]   [ ][ ][00][00][00]-[00]
       [ ][00][00][00]-[00]   [X][X][B0][01][50]-[5f]   [ ][ ][00][00][00]-[00]
       [ ][00][00][00]-[00]   [X][X][B0][01][60]-[6f]   [ ][ ][00][00][00]-[00]	
       [ ][00][00][00]-[00]   [X][X][B0][01][70]-[7f]   [ ][ ][00][00][00]-[00]


 [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, what ALSA
 	bus its dumping to, and its midi channel.

	Snap selects where the notes will be drawn and
	what size they will be.  Scale is the relation
	between midi ticks and pixels. 1:4 = 4 ticks 
	per pixel.  Length is how long the loop is in
	bars.

	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.  Pressing 
	the middle mouse button will let you change the
	length of the note. And 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).

	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.

	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.

-----------------------------------------------------------

[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.

