shithub: neindaw

ref: d29b1fa9119ef89090971376b6c4b5378813efd7
dir: /piper/piper.h/

View raw version
typedef struct Cmd Cmd;
typedef struct Synth Synth;

enum {
	CmdNote,
	CmdVol,
	CmdRaw,
};

struct Cmd {
	int type;
	union {
		struct {
			float freq;
			float dur;
			float vel;
		}note[3];
		char *raw;
		float vol;
	};
	int numnotes;
};

struct Synth {
	char *name;
	int (*cmd)(void *aux, Cmd *c);
	void *(*alloc)(char *path);
};

extern Synth ay_3_8910;
extern Synth kick_drum;

int i36(uchar c);
float note2freq(uchar note, uchar octave);
int pathopen(char *path, char *fmt, ...);