1 #ifndef SYNTH_H_INCLUDED
2 #define SYNTH_H_INCLUDED 1
24 #define SAMPLING_RATE 40000
25 #define DT (1.0 / SAMPLING_RATE)
27 #define ASSERT(cond) assertion(cond, #cond, __FILE__, __LINE__)
28 extern void assertion(
int cond,
const char *strcond,
29 const char *file,
const int line);
38 #define MIN(x, y) (((x) < (y)) ? (x) : (y))
39 #define MAX(x, y) (((x) > (y)) ? (x) : (y))
41 inline int32_t
clip(int32_t x) {
42 return MAX(-0x800,
MIN(0x7ff, x));
48 virtual void quiet(
void) = 0;
49 virtual void step(
void) = 0;
52 virtual void keyup(
void) = 0;
53 virtual int32_t
output(
void) = 0;
54 virtual bool idle(
void) = 0;
55 virtual void ioctl(uint32_t, uint32_t) = 0;
61 virtual void quiet(
void) = 0;
63 virtual void keydown(int8_t pitch) = 0;
64 virtual void keyup(int8_t pitch) = 0;
68 virtual void ioctl(uint32_t, uint32_t) = 0;
117 uint8_t
read(uint32_t *x);
123 uint8_t
write(uint32_t x);
141 for (i = 0; i < 100; i++) {
154 void keyup(int8_t pitch);
168 void ioctl(uint32_t param, uint32_t value) {
222 void setF(uint32_t
f);
224 void step(int32_t x);
322 #endif // SYNTH_H_INCLUDED
IVoice * get_next_available_voice(int8_t pitch)
virtual void add(IVoice *voice)=0
void compute_sample(void)
uint8_t read(uint32_t *x)
virtual bool idle(void)=0
virtual void keyup(int8_t pitch)=0
virtual void keydown(int8_t pitch)=0
uint32_t next_voice_to_assign
virtual void write_sample(void)=0
virtual void keydown(void)=0
uint8_t play_tune(uint32_t *tune, uint32_t msecs)
void use_synth(uint8_t i)
uint32_t get_12_bit_value(void)
virtual void quiet(void)=0
virtual void quiet(void)=0
IVoice * assignments[100]
void use_read_key(uint8_t(*rk)(uint32_t))
virtual void step(void)=0
virtual void setfreq(float f)=0
virtual int32_t output(void)=0
uint8_t write(uint32_t x)
void use_synth_array(ISynth **s, uint8_t _num_synths)
virtual uint8_t get_sample(uint32_t *x)=0
virtual void ioctl(uint32_t, uint32_t)=0
virtual void compute_sample(void)=0
void setwaveform(int32_t x)
void keydown(int8_t pitch)
void assertion(int cond, const char *strcond, const char *file, const int line)
uint8_t get_sample(uint32_t *x)
virtual void keyup(void)=0
virtual void ioctl(uint32_t, uint32_t)=0
void ioctl(uint32_t param, uint32_t value)