pentabug/synth/synth.h

44 lines
753 B
C
Raw Normal View History

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,
2012-08-08 20:37:49 +02:00
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;