mb808
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
mb808 [2006/08/30 01:50] – moogah | mb808 [2006/09/05 19:38] – moogah | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Summary ====== | ||
- | This page is to describe the operation of the MB808 Sequencer application. | ||
- | |||
- | Forum Thread: http:// | ||
- | |||
- | This document is split into 3 sections: | ||
- | * Application Summary | ||
- | * Operation Manual | ||
- | * Technical details | ||
- | |||
- | ====== Application Summary ====== | ||
- | |||
- | |||
- | |||
- | This application is not meant to be part of a modular system or even a standalone box, it's origins are a simple adaptation of the MBSEQ v2.4 application to mimic to functionality of the original 808's digital section. | ||
- | |||
- | ==== Features ==== | ||
- | This is a list of planned features. | ||
- | * Standard 16 step editing format. | ||
- | * Variable pattern length from 1-32 steps | ||
- | * Pattern chains can be created in song mode | ||
- | * All track parameters available to the SEQ V2.4 application in drum mode will be available. | ||
- | * Edit mode can be toggled on and off in realtime | ||
- | * Song mode will be as robust as the interface allows | ||
- | * Support for LCD's will be kept in software | ||
- | * 8 banks with 8 patterns each | ||
- | * Each pattern will have A and B variations that can be switched between or morphed between with dedicated controlls | ||
- | * Save, Copy, Paste and Clear operations. | ||
- | |||
- | ==== Theory of operation ==== | ||
- | |||
- | The MB808 application will essentially be unchanged from the SEQ v2.4 application. | ||
- | |||
- | ==== Description of the interface ==== | ||
- | |||
- | There are 36 elements to the MB808 interface. | ||
- | * 16 GP buttons | ||
- | * 4 Menu buttons (m1 - m4) | ||
- | * 4 Mode buttons (Song, Pattern, Mute, Edit) | ||
- | * 2 Variation buttons (A, B) | ||
- | * 5 Transport controls (Play, Stop, Fwd, Rwd, Loop) | ||
- | * 2 Control buttons (Select, Exit) | ||
- | * Instrument Encoder | ||
- | * Tempo encoder | ||
- | * Swing/Morph pot | ||
- | |||
- | |||
- | ====== Operation Manual ====== | ||
- | |||
- | NOTE: this is still a hypothetical interface. | ||
- | |||
- | ==== Modes of operation ==== | ||
- | The MB808 application has 5 different modes that it can operate in, they are: | ||
- | * Song Play | ||
- | * Song Edit | ||
- | * Pattern Play | ||
- | * Pattern Edit | ||
- | * Mute | ||
- | |||
- | In each mode the 16 GP buttons have a different function and each mode has it's own set of menus accessed with the menu buttons. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |Pattern Play| | ||
- | |GP# | ||
- | |Default|Bank 1|Bank 2|Bank 3|Bank 4|Bank 5|Bank 6|Bank 7|Bank 8|Pattern 1|Pattern 2|Pattern 3|Pattern 4|Pattern 5|Pattern 6|Pattern 7|Pattern 8| | ||
- | |F2|Forward|Backward|Ping Pong|Random|BPM / 1|BPM / 2|BPM / 4|BPM / 8|BPM / 16|BPM / 32|BPM / 64||| | ||
- | |||
- | |Pattern Edit| | ||
- | |GP# | ||
- | |Default|Step 1|Step 2|Step 3|Step 4|Step 5|Step 6|Step 7|Step 8|Step 9|Step 10|Step 11|Step 12|Step 13|Step 14|Step 15|Step 16| | ||
- | |F1|BD|SD|LT/ | ||
- | |F2|Forward|Backward|Ping Pong|Random|BPM / 1|BPM / 2|BPM / 4|BPM / 8|BPM / 16|BPM / 32|BPM / 64| | ||
- | |||
- | |Song Play| | ||
- | |GP# | ||
- | |Default|Song 1|Song 2|Song 3|Song 4|Song 5|Song 6|Song 7|Song 8|Song 9|Song 10|Song 11|Song 12|Song 13|Song 14|Song 15|Song 16| | ||
- | |F1|Position 1|Position 2|Position 3|Position 4|Position 5|Position 6|Position 7|Position 8|Position 9|Position 10|Position 11|Position 12|Position 13|Position 14|Position 15|Position 16| | ||
- | |||
- | |Song Edit| | ||
- | |GP# | ||
- | |Default|Bank 1|Bank 2|Bank 3|Bank 4|Bank 5|Bank 6|Bank 7|Bank 8|Pattern 1|Pattern 2|Pattern 3|Pattern 4|Pattern 5|Pattern 6|Pattern 7|Pattern 8| | ||
- | |F1|Position 1|Position 2|Position 3|Position 4|Position 5|Position 6|Position 7|Position 8|Position 9|Position 10|Position 11|Position 12|Position 13|Position 14|Position 15|Position 16| | ||
- | |F2|Part 1|Part 2|Part 3|Part 4|Part 5|Part 6|Part 7|Part 8| | ||
- | |||
- | |Mute Play| | ||
- | |GP# | ||
- | |Default|BD|SD|LT/ | ||
- | |F1|Group 1|Group 2|Group 3|Group 4|Group 5|Group 6|Group 7|Group 8|Group 9|Group 10|Group 11|Group 12|Group 13|Group 14|Group 15|Group 16| | ||
- | |||
- | |||
- | |Global Functions| | ||
- | |GP# | ||
- | |F3|Bank 1|Bank 2|Bank 3|Bank 4|Bank 5|Bank 6|Bank 7|Bank 8|Pattern 1|Pattern 2|Pattern 3|Pattern 4|Pattern 5|Pattern 6|Pattern 7|Pattern 8| | ||
- | |F4|Next bar|Next quart.|Next 8th|Next 16th||Clear Patt|Clear Track|Copy Track|Copy Patt |Paste|Save|MIDI |SysEx| | ||
- | |||
- | |Button|Loop|Fwd|Rwd|Stop |Play|Tap|Ins. Select|Datawheel| | ||
- | |Pattern Play|Set loop points|Next MetaBank|Prev MetaBank|Stop |Play|Tap|Ins. Select| | ||
- | |Pattern Edit|Set loop points|Next Bar|Prev Bar|Stop |Play|Audition|Ins Select|Meter| | ||
- | |Song Play|latch loop|Next Pos.|Prev Pos|Stop |Play|Tap|Ins. Select| | ||
- | |Song Edit|Jump point|Next MetaBank|Prev MetaBank|Stop |Play|Tap|Ins. Select| | ||
- | |||
- | |||
- | ====== Technical Details ====== | ||
- | |||
- | There are 3 main components to this modification: | ||
- | * The sequencer needs to output 1ms active high pulses to the gate inputs of the 12 instruments and a 1ms active low pulse to the common trig circuitry which creates the accent signal. | ||
- | * The interface needs to be modified so that the LCD and datawheel are not neccessary | ||
- | * Special functions need to be added to the application to steamline operation | ||
- | |||
- | ==== Connecting with the analog circuits ==== | ||
- | The 808's instruments are all comprised of a combination of twin-t oscillators, | ||
- | |||
- | Now, in the original, the common trig pulsed on every clock tick. This isn't neccessary, instead the common trig line will only be pulsed when a note on occurs. | ||
- | |||
- | ==== Modifying the interface ==== | ||
- | In order to get the most out of the SEQ application without using a datawheel or an LCD and without risking becoming totally incompatible with future versions I decided it was best to use the 4 function buttons as menu buttons to modify the action of the GP' | ||
- | * Once a DIN event has been determined to have come from one of the two SR's assigned to be the GP buttons SEQ_GP_Button [21] is called. | ||
- | * In SEQ_GP_Button [21] the application can branch to 3 different places. | ||
- | * If Menu mode is active (the menu button is pressed) than the app branches to SEQ_GP_Mode4_Button [240] | ||
- | This is done using one of TK's macros: " | ||
- | '' | ||
- | * SEQ_GP_Button then checks to see if a " | ||
- | * If the hook has been installed than the application branches to CS_MENU_ExecMenuGPCallbackHook [502] | ||
- | * Once the application has branched to this point the program flow becomes harder to read, so we are going to start with a higher level analysis of how the menus are mapped and how parameters are accessed, edited and stored. | ||
- | * Those who have worked with modern GUI programming are probably familiar with the event driven model for creating an interface. | ||
- | * The menus are implemented through a table of function pointers that are retrived through an index which is determined by the context of the mode and GP button number. | ||
- | Spend some time reading that file until you get a grasp of it's premise. | ||
- | * CS_MENU_CURSOR_POS | ||
- | Let's allow that to sink in for awhile. | ||
- | * Next we want to know how parameters are modified. | ||
- | * CS_MENU_Left [313] | ||
- | * CS_MENU_Right [320] | ||
- | * CS_MENU_Enc [328] | ||
- | * Each one of these functions places a value in WREG (CS_MENU_Enc already has the encoder direction in WREG) and then calls CS_MENU_AddMenuParameter [573]. | ||
- | |||
- | '' | ||
- | ;; This function adds WREG to CS_MENU_PARAMETER_[LH] and saturates | ||
- | ;; if the max value has been reached | ||
- | ;; IN: add value in WREG | ||
- | ;; OUT: result in CS_MENU_PARAMETER_L | ||
- | ;; | ||
- | ;; --------------------------------------------------------------------------'' |
mb808.txt · Last modified: 2011/09/13 12:34 by gslug