diff options
Diffstat (limited to 'gme/Ym2413_Emu.h')
-rw-r--r-- | gme/Ym2413_Emu.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gme/Ym2413_Emu.h b/gme/Ym2413_Emu.h new file mode 100644 index 00000000..98a2a48e --- /dev/null +++ b/gme/Ym2413_Emu.h @@ -0,0 +1,33 @@ +// YM2413 FM sound chip emulator interface + +// Game_Music_Emu 0.5.2 +#ifndef YM2413_EMU_H +#define YM2413_EMU_H + +class Ym2413_Emu { + struct OPLL* opll; +public: + Ym2413_Emu(); + ~Ym2413_Emu(); + + // Set output sample rate and chip clock rates, in Hz. Returns non-zero + // if error. + int set_rate( double sample_rate, double clock_rate ); + + // Reset to power-up state + void reset(); + + // Mute voice n if bit n (1 << n) of mask is set + enum { channel_count = 14 }; + void mute_voices( int mask ); + + // Write 'data' to 'addr' + void write( int addr, int data ); + + // Run and write pair_count samples to output + typedef short sample_t; + enum { out_chan_count = 2 }; // stereo + void run( int pair_count, sample_t* out ); +}; + +#endif |