Beaver Sweeper manual 1.0
-----------------------------------------------
Auth: gnilk
Date: 2002-09-18
Version: 1.0

Userinterface comments:		gnilk
Synth and sound generation:	steffo
Player and sound output:	zyrax

Contact us through appropriate channels...

Updates: 
--------
	   Date    | who      | desc
	-----------|----------|---------------------------------------------------
	2005-10-23 | gnilk    | Added some stuff
	2002-10-16 | gnilk    | negative transpose values now displayed correctly
	                        tiny information about sequencer/pattern columns



Bugs:
-----
- Does crash quite randomly, probably due to thread synchronization issues
  The source is there, change if you want, we dont anymore..

Keyboard shortcuts in trackerview
---------------------------------------------------------------------------

General:

CTRL-UP		switch between pattern/sequencer editor
CTRL-DOWN	switch between pattern/sequencer editor
RSHIFT-TAB	switch between pattern/sequencer editor

F7		start play
F8		stop play

In sequencer view:
--------------------

HOME		move to top position of sequencer
END			move to last position of sequencer

UP			move one position up

DOWN		move one position down

RIGHT		move one position right, within the column
CTRL-RIGHT	move one column right

LEFT		move one position left, within the column
CTRL-LEFT	move one column left

PAGE-UP		move 16 positions up
PAGE-DOWN 	move 16 positions down

TAB			forward one column
LSHIFT-TAB	back one column

DELETE		delete data in current column

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

In patternview:
-------------------------
F1		octave 0
F2		octave 1
F3		octave 2
F4		octave 3
F5		octave 4


HOME		move to top position of pattern
END			move to last position of pattern

UP			move add-num up, default this is one position up

DOWN		move add-num down, default this is one position down

RIGHT		move one position right, within the column
CTRL-RIGHT	move one column right

LEFT		move one position left, within the column
CTRL-LEFT	move one column left

PAGE-UP		move 16 positions up
PAGE-DOWN 	move 16 positions down

TAB			forward one column
LSHIFT-TAB	back one column

DELETE		delete note at position
CTRL-DELETE	delete note and effect at column

CTRL-B		begin marking of block, use cursor movments to control block marking
CTRL-C		copy block
CTRL-V		paste block
CTRL-K		truncate pattern
CTRL-I		interpolate effect column at cursor in block, between blockstart fx value and blockend value
CTRL-E		double length of pattern, use CTRL-K to fine tune pattern length
			wont look nice if you extend above 255 (0xff) positions, the limit is set to 65536

note editing is classic tracking editor keyboard setting

normal notes:
	ZSXDCVGBHNJM,L.Q2W3ER5T6Y7UI9O0P
raised notes:
	0123456789ABCDEF
special
\		note off
--------------------------------------------------------------------
Short notes for the sequencer
-----------------------------
There exists two types of speeds. The main speed is global for the sequencer
each sequencer channel has a pattern. The pattern speed is induvidual for
every sequencer channel.
This might be confusing at first, but thats how it works. You set the
speed for the sequencer then you set the speed in the patterns.

------------------------------------------------------------------------------
00 |  nn  xx yy p1 p2 p3 00 00 00 | nn  xx yy p1 p2 p3 00 00 00 | nn  xx yy...
01 |  nn  xx yy p1 p2 p3 00 00 00 | nn  xx yy p1 p2 p3 00 00 00 | nn  xx yy...


  nn - pattern number for to be player for this sequencer position
  xx - Tranpose (00-7f  positive transpose,  80-ff  negative transpose)
  yy - Effect
  p1 - Parameter 1 for effect
  p2 - Parameter 2 for effect
  p3 - Parameter 3 for effect

The zeros are for further use, and should not be used... 
The effects and their parameters are subject to documentation.

Short notes for the patterns
-----------------------------------------------------------------------------
00|--- vv fx p1|--- vv fx p1|--- vv fx p1|--- vv fx p1|--- vv fx p1|...
01|--- vv fx p1|--- vv fx p1|--- vv fx p1|--- vv fx p1|--- vv fx p1|...
02|....

   --- : Insert note the normal "tracker" way
   vv  : velocity
   fx  : effect
   p1  : parameter


Known effects:
--------------
	- ff	- Set pattern tick speed

===========================================================================
!!!!!!!The effects and their parameters are subject to documentation!!!!!!!
===========================================================================
-> This is only for the pattern information, the synth is serialized, more
   or less...
-------------------------------
File format, if you want it for some reason...

version
        0103    
                * pattern and sequencer length is 16 bit

file layout:

	0		GOAT
	4		version (0x0103)
	6		number of seq channels
	7		number of patterns
	8       	number of instruments
	9       	song BPM

	10   		sequence tick per row
	11   		default pattern tick per row
	12..		seq channel 0 of N in packed form
	X..		Pattern 0 of N in packed form...

seqchannel data is stored as:
	0		id of channel (which channel is this),
	1		channel length (number of positions in channel)
	3..	position data in packed form

	seq pos data is stored as:
		flag, indicating (bit flags)
		0		no data is stored for this position
		1		pattern number is stored
		2		transpose values is stored
		4		fx parameter is stored
		8		param1 of fx is stored
		0x10	param2 of fx is stored
		0x20	param3 of fx is stored
    		0x40	param1 of fx is stored
		0x80	param2 of fx is stored
	        0x100	param3 of fx is stored
    
    flag is stored as word..
	  number of bytes indicated by the flags (each type has one byte)
		max is: 9 bytes in the order: <pattern><trans><instr><param1><param2><param3><param1><param2><param3>


pattern data is stored as:

	0		id of pattern, important: the sequencer will point to this number
	1		length of pattern positions
	3		data in packed form...
	
	each row in a pattern is stored as:

	0		flag, indicating which of the 16 channels that are used...
						if bit=1 pos data is available, bit 0 = pos 0, bit 1 = pos 1, bit 2 = pos 2.. (bit 0 = 0x01)

	4		the position data itself is not packed...
			if position data is available it is stored as:
			<note><velocity><fx><param>
