2021-04-08 16:14:40 -04:00
|
|
|
/*
|
|
|
|
Copyright (c) 2021 Devine Lu Linvega
|
|
|
|
Copyright (c) 2021 Andrew Alderwick
|
|
|
|
|
|
|
|
Permission to use, copy, modify, and distribute this software for any
|
|
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
WITH REGARD TO THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef signed int Sint32;
|
|
|
|
|
2021-04-13 16:50:49 -04:00
|
|
|
#define SAMPLE_FREQUENCY 44100
|
2021-12-28 16:47:35 -05:00
|
|
|
#define POLYPHONY 4
|
2021-04-08 16:14:40 -04:00
|
|
|
|
2023-01-01 19:13:34 -05:00
|
|
|
#define DEVPEEK16(o, x) \
|
|
|
|
{ \
|
|
|
|
(o) = (d->dat[(x)] << 8) + d->dat[(x) + 1]; \
|
|
|
|
}
|
|
|
|
#define DEVPOKE16(x, y) \
|
|
|
|
{ \
|
|
|
|
d->dat[(x)] = (y) >> 8; \
|
|
|
|
d->dat[(x) + 1] = (y); \
|
|
|
|
}
|
|
|
|
|
|
|
|
typedef struct Device {
|
|
|
|
struct Uxn *u;
|
|
|
|
Uint8 dat[16];
|
|
|
|
Uint8 (*dei)(struct Device *d, Uint8);
|
|
|
|
void (*deo)(struct Device *d, Uint8);
|
|
|
|
} Device;
|
|
|
|
|
2022-03-17 12:59:36 -04:00
|
|
|
Uint8 audio_get_vu(int instance);
|
|
|
|
Uint16 audio_get_position(int instance);
|
|
|
|
int audio_render(int instance, Sint16 *sample, Sint16 *end);
|
|
|
|
void audio_start(int instance, Device *d);
|
|
|
|
void audio_finished_handler(int instance);
|