annotate Plugins/Input/console/Music_Emu.h @ 352:f13ab2d8e9cf trunk

[svn] various fixes :(
author nenolod
date Mon, 26 Dec 2005 14:12:35 -0800
parents 252843aac42f
children 7c5e886205ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
2 // Game music emulator interface base class
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
3
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
4 // Game_Music_Emu 0.2.4. Copyright (C) 2003-2005 Shay Green. GNU LGPL license.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
5
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
6 #ifndef MUSIC_EMU_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
7 #define MUSIC_EMU_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
8
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
9 #include "blargg_common.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
10
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
11 #include "abstract_file.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
12 typedef Data_Reader Emu_Reader; // File reader base class
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
13 typedef Std_File_Reader Emu_Std_Reader; // Read from standard file
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
14 typedef Mem_File_Reader Emu_Mem_Reader; // Read from block of memory
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
15
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
16 class Music_Emu {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
17 public:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
18 Music_Emu();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
19 virtual ~Music_Emu();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
20
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
21 // Number of voices used by currently loaded file
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
22 int voice_count() const;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
23
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
24 // Names of voices
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
25 virtual const char** voice_names() const;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
26
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
27 // Number of tracks. Zero if file hasn't been loaded yet.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
28 int track_count() const;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
29
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
30 // Start a track, where 0 is the first track. Might un-mute any muted voices.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
31 virtual blargg_err_t start_track( int ) = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
32
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
33 // Mute voice n if bit n (1 << n) of mask is set
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
34 virtual void mute_voices( int mask );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
35
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
36 // Generate 'count' samples info 'buf'
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
37 typedef short sample_t;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
38 virtual blargg_err_t play( long count, sample_t* buf ) = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
39
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
40 // Skip 'count' samples
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
41 virtual blargg_err_t skip( long count );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
42
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
43 // True if a track was started and has since ended. Currently only dumped
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
44 // format tracks (VGM, GYM) without loop points have an ending.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
45 bool track_ended() const;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
46
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
47
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
48 // End of public interface
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
49 protected:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
50 typedef BOOST::uint8_t byte; // used often
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
51 int track_count_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
52 int voice_count_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
53 int mute_mask_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
54 bool track_ended_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
55 private:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
56 // noncopyable
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
57 Music_Emu( const Music_Emu& );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
58 Music_Emu& operator = ( const Music_Emu& );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
59 };
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
60
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
61 inline int Music_Emu::voice_count() const { return voice_count_; }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
62 inline int Music_Emu::track_count() const { return track_count_; }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
63 inline bool Music_Emu::track_ended() const { return track_ended_; }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
64
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
65 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
66