;
; constants.h: application constants
;
; author: Marko Kanala, raato ]a t[ mulletronic.com
;
; LICENSE
; Creative Commons Attribution-NonCommercial-ShareALike 2.5
;
; You are free:
;
; * to copy, distribute, display, and perform the work
; * to make derivative works
;
; Under the following conditions:
;
; 1. Attribution. You must attribute the work in the manner specified by the
; author or licensor.
; 2. Noncommercial. You may not use this work for commercial purposes.
; 3. Share Alike. If you alter, transform, or build upon this work, you may
; distribute the resulting work only under a license identical to this one.
;
; * For any reuse or distribution, you must make clear to others the license
; terms of this work.
; * Any of these conditions can be waived if you get permission from the
; copyright holder.
;
; Your fair use and other rights are in no way affected by the above.
;
; This is a human-readable summary of the Legal Code.
; See full license at http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode
;
; Copyright: Marko Kanala (raato@mulletronic.com).
;
; pattern data offsets, pattern data is
; considered to start after the pattern name
; scale = msb nybble, pat length = lsb nybble
PAT_SCALELENGTH equ 0 ; 0c
; shuffle amount = msg nybble, flam amount = lsb nybble
PAT_SHUFFLEFLAM equ 1 ; 0d
; pattern steps
PAT_TRIGS equ 2 ; 0e
; PAT_BDRUM equ 2 ; 0e
; PAT_SDRUM equ 4 ; 10
; PAT_LTOM equ 6 ; 12
; PAT_MTOM equ 8 ; 14
; PAT_HTOM equ 10 ; 16
; PAT_RSHOT equ 12 ; 18
; PAT_HCLAP equ 14 ; 1a
; PAT_CHIHAT equ 16 ; 1c
; PAT_OHIHAT equ 18 ; 1e
; PAT_CRASH equ 20 ; 20
; PAT_RIDE equ 22 ; 22
PAT_ACCENT equ 24 ; 24
; pattern accents
PAT_ACCENTS equ 26 ; 26
; ACC_BDRUM equ 26 ; 26
; ACC_SDRUM equ 28
; ACC_LTOM equ 30
; ACC_MTOM equ 32
; ACC_HTOM equ 34
; ACC_RSHOT equ 36
; ACC_HCLAP equ 38
; ACC_CHIHAT equ 40
; ACC_OHIHAT equ 42
; ACC_CRASH equ 44
; ACC_RIDE equ 46 ; 3a
; pattern flams
PAT_FLAMS equ 48 ; 3c
; FLAM_BDRUM equ 48 ; 3c
; FLAM_SDRUM equ 50
; FLAM_LTOM equ 52
; FLAM_MTOM equ 54
; FLAM_HTOM equ 56
; FLAM_RSHOT equ 58
; FLAM_HCLAP equ 60
; FLAM_CHIHAT equ 62
; FLAM_OHIHAT equ 64
; FLAM_CRASH equ 66
; FLAM_RIDE equ 68
; invidual instrument track lenghts
; packed in msb and lsb nybbles
PAT_LENGTHS equ 70
; LEN_BDRUMSDRUM equ 70
; LEN_LTOMMTOM equ 71
; LEN_HTOMRSHOT equ 72
; LEN_HCLAPCHIHAT equ 73
; LEN_OHIHATCRASH equ 74
; LEN_RIDEACCENT equ 75
PATTERN_HALF_SIZE equ 76
PATTERN_SIZE_FLASH equ 164 ; 12 + 76 + 76
; pattern scales
SCALE_16 equ 0 ; 1/16th notes
SCALE_32 equ 1 ; 1/32th notes
SCALE_8TR equ 2 ; 1/8th triplets
SCALE_16TR equ 3 ; 1/16th triplets
SCALE_16_TICKS equ 12
SCALE_32_TICKS equ 6
SCALE_8TR_TICKS equ 16
SCALE_16TR_TICKS equ 8
; instruments
INSTR_BASSDRUM equ 0
INSTR_ACCENT equ 11
; app event bits
EVENT_KEY equ 0 ; normal keypress
EVENT_TEMPOCHANGE equ 1 ; tempo changed
EVENT_DIRTY equ 2 ; pattern has changed and
; should be flashed
EVENT_LASTSTEP equ 3 ; last step of the pattern
; has been reached
EVENT_FLASHREADOK equ 4 ; indicates a flash read has
; succeeded
EVENT_DINRUN equ 5 ; din run detected, syncing
; to din sync
EVENT_MIDIRUN equ 6 ; midi run detected, syncing
; to midi sync
EVENT_SYSEX equ 7 ; sysex procedure
; app mode bits
;
; note: SETTINGS mode equals no bits set!
MODE_PPLAY equ 0 ; pattern play mode
MODE_PWRITE equ 1 ; pattern write mode
MODE_TPLAY equ 2 ; track play mode
MODE_TWRITE equ 3 ; track write mode
MODE_RUN equ 4 ; sequencer running
MODE_FILL equ 5 ; fill pattern active
MODE_CHAIN equ 6 ; chain play active
MODE_FLAMWRITE equ 7 ; flam write mode
;MODE_SETTINGS equ ... ; settings mode
; sysex mode bits
SYSEX_ERROR equ 0 ; sysex error detected
SYSEX_MEMDUMP equ 1 ; sysex memory dump in progress
; pattern banks
BANK_A equ 0
BANK_B equ 1
BANK_C equ 2
BANK_D equ 3
; led to reg mappings
; note: utility.inc/get_ledreg hardcoded, do not change.
LEDREG_S1 equ leds_busa_1
LEDREG_S2 equ leds_busa_1
LEDREG_S3 equ leds_busa_1
LEDREG_S4 equ leds_busa_1
LEDREG_S5 equ leds_busa_1
LEDREG_S6 equ leds_busa_1
LEDREG_S7 equ leds_busa_1
LEDREG_S8 equ leds_busa_1
LEDREG_S9 equ leds_busa_2
LEDREG_S10 equ leds_busa_2
LEDREG_S11 equ leds_busa_2
LEDREG_S12 equ leds_busa_2
LEDREG_S13 equ leds_busa_2
LEDREG_S14 equ leds_busa_2
LEDREG_S15 equ leds_busa_2
LEDREG_S16 equ leds_busa_2
LEDREG_BANKA equ leds_busb_1
LEDREG_BANKB equ leds_busb_1
LEDREG_BANKC equ leds_busb_1
LEDREG_BANKD equ leds_busb_1
LEDREG_START equ leds_busb_1
; led to reg bit mappings
LED_S1 equ 7
LED_S2 equ 6
LED_S3 equ 5
LED_S4 equ 4
LED_S5 equ 3
LED_S6 equ 2
LED_S7 equ 1
LED_S8 equ 0
LED_S9 equ 7
LED_S10 equ 6
LED_S11 equ 5
LED_S12 equ 4
LED_S13 equ 3
LED_S14 equ 2
LED_S15 equ 1
LED_S16 equ 0
LED_BANKA equ 7
LED_BANKB equ 6
LED_BANKC equ 5
LED_BANKD equ 4
LED_START equ 3
; key codes
KEY_NONE equ 0
KEY_S1 equ 1
KEY_S2 equ 2
KEY_S3 equ 3
KEY_S4 equ 4
KEY_S5 equ 5
KEY_S6 equ 6
KEY_S7 equ 7
KEY_S8 equ 8
KEY_S9 equ 9
KEY_S10 equ 10
KEY_S11 equ 11
KEY_S12 equ 12
KEY_S13 equ 13
KEY_S14 equ 14
KEY_S15 equ 15
KEY_S16 equ 16
KEY_BANKA equ 17
KEY_BANKB equ 18
KEY_BANKC equ 19
KEY_BANKD equ 20
KEY_START equ 21
KEY_STOPCONT equ 22
KEY_CLEAR equ 23 ; downkey
KEY_SCALE equ 24
KEY_LASTSTEP equ 25 ; downkey
KEY_INSTRSEL equ 26 ; downkey
KEY_SHUFFLEFLAM equ 27 ; downkey
KEY_PATTPLAYWRITE equ 28
KEY_TRACKPLAYWRITE equ 29
KEY_SHIFTFUNC equ 30 ; downkey
KEY_ENTER equ 31
; "downkeys", keys that can be held down
;
; Note: LASTSTEP + INSTRSEL are allowed
; to be held down simultaneously.
; 22k limiting resistors are
; therefore needed on both
; key lines.
DOWNKEY_SHIFTFUNC equ 0 ; bits in variable
DOWNKEY_INSTRSEL equ 1 ; "downkeys"
DOWNKEY_LASTSTEP equ 2
DOWNKEY_CLEAR equ 3
DOWNKEY_SHUFFLEFLAM equ 4
; trigger mappings
; triggers are stored in vars triggers_a and triggers_b
;
; REG BIT 7 6 5 4 3 2 1 0
; reg a 0 0 cr hc ht r/s hhs rd
; reg b 0 0 rs lt sd bd mt hh
;
TRIGREG_BASSDRUM equ triggers_b ; trigger reg
TRIG_BASSDRUM equ 2 ; trigger bit
FLAMREG_BASSDRUM equ flam_b
TRIGREG_SNAREDRUM equ triggers_b
TRIG_SNAREDRUM equ 3
FLAMREG_SNAREDRUM equ flam_b
TRIGREG_LOWTOM equ triggers_b
TRIG_LOWTOM equ 4
FLAMREG_LOWTOM equ flam_b
TRIGREG_MIDTOM equ triggers_b
TRIG_MIDTOM equ 1
FLAMREG_MIDTOM equ flam_b
TRIGREG_HITOM equ triggers_a
TRIG_HITOM equ 3
FLAMREG_HITOM equ flam_a
TRIGREG_RIMSHOT equ triggers_b
TRIG_RIMSHOT equ 5
FLAMREG_RIMSHOT equ flam_b
TRIGREG_HANDCLAP equ triggers_a
TRIG_HANDCLAP equ 4
FLAMREG_HANDCLAP equ flam_a
TRIGREG_HIHATSEL equ triggers_a
TRIG_HIHATSEL equ 1
TRIGREG_HIHAT equ triggers_b
TRIG_HIHAT equ 0
FLAMREG_HIHATSEL equ flam_a
FLAMREG_HIHAT equ flam_b
TRIGREG_CRASH equ triggers_a
TRIG_CRASH equ 5
FLAMREG_CRASH equ flam_a
TRIGREG_RIDE equ triggers_a
TRIG_RIDE equ 0
FLAMREG_RIDE equ flam_a
TRIGREG_STARTSTOP equ triggers_a
TRIG_STARTSTOP equ 2
;;; port / pin vars
; led bus port
PORT_LEDBUS equ PORTE
LEDBUS_A_PIN equ 0 ; re0
LEDBUS_B_PIN equ 1 ; re1
PAT_DISP_LIT_PIN equ 2 ; re2
; key bus port
PORT_KEYBUS equ PORTA
KEYBUS_A_PIN equ 5 ; ra5
KEYBUS_B_PIN equ 1 ; ra1
; pattern display / led mux port
PORT_LEDMUX equ PORTD
LAT_LEDMUX equ LATD
; lcd display port(s)
PORT_LCD equ PORTB
LCD_D4_PIN equ 0 ; rb0
LCD_D5_PIN equ 1 ; rb1
LCD_D6_PIN equ 2 ; rb2
LCD_D7_PIN equ 3 ; rb3
LCD_RS_PIN equ 4 ; rb4
PORT_LCD_EN equ PORTA
LCD_EN_PIN equ 4 ; ra4,
; 10k pull-up on open drain
; din out (clock pin)
; run/stop pin is tied to the 9090 muxes
DIN_SYNC_PORT equ PORTC
DIN_SYNC_PIN equ 5 ; RC5
; din in run/stop pin
; clock is tied to RC2 and triggers CCP1IF
DIN_IN_PORT equ PORTC
DIN_IN_STARTSTOP_PIN equ 1
; 9090 specific:
PORT_TRIG equ PORTB ; rb0 to rb5
TRIGDAC_CLK_PORT equ PORTB
TRIGDAC_CLK_PIN equ 6 ; rb6
TRIGLATCHA_PORT equ PORTB
TRIGLATCHA_PIN equ 7 ; rb7
TRIGLATCHB_PORT equ PORTA
TRIGLATCHB_PIN equ 2 ; ra2
TRIGMUXINH_PORT equ PORTA
TRIGMUXINH_PIN equ 5 ; ra3
SYSEX_TYPE_MEM equ 0x00
SYSEX_TYPE_PAT equ 0x01
; (boolean) sequencer setting bits stored
; in settings variable
SETTING_DIN_IN equ 7
SETTING_DIN_OUT equ 6
SETTING_MIDIS_IN equ 5
SETTING_MIDIS_OUT equ 4
SETTING_MIDIN_OUT equ 3
;SETTING_MIDIN_IN equ 2
MIDI_NOTE_BDRUM equ 36
MIDI_NOTE_SDRUM equ 40
MIDI_NOTE_LTOM equ 43
MIDI_NOTE_MTOM equ 47
MIDI_NOTE_HTOM equ 50
MIDI_NOTE_RSHOT equ 37
MIDI_NOTE_HCLAP equ 39
MIDI_NOTE_CHIHAT equ 42
MIDI_NOTE_OHIHAT equ 46
MIDI_NOTE_CRASH equ 49
MIDI_NOTE_RIDE equ 51
External Labels :
None.