enum { WAVE_OFF, WAVE_PULSE, WAVE_SAW, WAVE_NOISE }; typedef struct { uint8_t note; uint8_t inst_nr; uint8_t pos; uint16_t phase; uint16_t pulse_width; uint8_t level; // envelop level } synth_channel_t; typedef struct { uint16_t pulse_width; uint8_t pulse_sweep; uint8_t decay; uint8_t wave_table_pos; } synth_instrument_t; uint16_t synth_mix(void); enum { channel_count = 3, tick_length = 400, row_length = 8, pattern_length = 16 }; extern synth_instrument_t instruments[256]; extern uint8_t wave_table[256][2]; extern uint8_t patterns[256][pattern_length][2]; extern uint8_t pattern_table[256][channel_count]; extern uint8_t tune_length; extern int16_t sample; extern int8_t tick; extern int8_t row; extern int8_t seq;