summaryrefslogtreecommitdiff
path: root/plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h')
-rw-r--r--plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h b/plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h
new file mode 100644
index 00000000..7a573c45
--- /dev/null
+++ b/plugins/gme/Game_Music_Emu-0.5.2/player/Music_Player.h
@@ -0,0 +1,69 @@
+// Simple game music file player
+
+// Game_Music_Emu 0.5.2
+#ifndef MUSIC_PLAYER_H
+#define MUSIC_PLAYER_H
+
+#include "gme/Music_Emu.h"
+
+class Music_Player {
+public:
+ // Initialize player and set sample rate
+ blargg_err_t init( long sample_rate = 44100 );
+
+ // Load game music file. NULL on success, otherwise error string.
+ blargg_err_t load_file( const char* path );
+
+ // (Re)start playing track. Tracks are numbered from 0 to track_count() - 1.
+ blargg_err_t start_track( int track );
+
+ // Stop playing current file
+ void stop();
+
+// Optional functions
+
+ // Number of tracks in current file, or 0 if no file loaded.
+ int track_count() const;
+
+ // Info for current track
+ track_info_t const& track_info() const { return track_info_; }
+
+ // Pause/resume playing current track.
+ void pause( int );
+
+ // True if track ended
+ bool track_ended() const;
+
+ // Pointer to emulator
+ Music_Emu* emu() const { return emu_; }
+
+ // Set stereo depth, where 0.0 = none and 1.0 = maximum
+ void set_stereo_depth( double );
+
+ // Set tempo, where 0.5 = half speed, 1.0 = normal, 2.0 = double speed
+ void set_tempo( double );
+
+ // Set voice muting bitmask
+ void mute_voices( int );
+
+ // Set buffer to copy samples from each buffer into, or NULL to disable
+ typedef short sample_t;
+ void set_scope_buffer( sample_t* buf, int size ) { scope_buf = buf; scope_buf_size = size; }
+
+public:
+ Music_Player();
+ ~Music_Player();
+private:
+ Music_Emu* emu_;
+ sample_t* scope_buf;
+ long sample_rate;
+ int scope_buf_size;
+ bool paused;
+ track_info_t track_info_;
+
+ void suspend();
+ void resume();
+ static void fill_buffer( void*, sample_t*, int );
+};
+
+#endif