annotate Plugins/Input/console/Classic_Emu.h @ 90:252843aac42f trunk

[svn] Import the initial sources for console music support.
author nenolod
date Tue, 01 Nov 2005 19:57:26 -0800
parents
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 // Classic game music emulator interface base class for emulators which use Blip_Buffer
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
3 // for sound output.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
4
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
5 // 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
6
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
7 #ifndef CLASSIC_EMU_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
8 #define CLASSIC_EMU_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
9
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
10 #include "Music_Emu.h"
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
11 class Blip_Buffer;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
12 class blip_eq_t;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
13 class Multi_Buffer;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
14
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
15 class Classic_Emu : public Music_Emu {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
16 public:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
17 Classic_Emu();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
18 ~Classic_Emu();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
19
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
20 // Initialize emulator with specified sample rate. Sample output is in stereo.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
21 virtual blargg_err_t init( long sample_rate );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
22
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
23 // Initialize emulator using custom output buffer
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
24 blargg_err_t init( Multi_Buffer* buf );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
25
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
26 // Frequency equalizer parameters (see notes.txt)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
27 struct equalizer_t {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
28 double treble; // treble level at 22kHz, in dB (-3.0dB = 0.50)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
29 long cutoff; // beginning of low-pass rolloff, in Hz
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
30 long bass; // high-pass breakpoint, in Hz
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
31 equalizer_t( double treble_ = 0, long cutoff_ = 0, int bass_ = 33 ) :
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
32 treble( treble_ ), cutoff( cutoff_ ), bass( bass_ ) { }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
33 };
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
34
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
35 // Current frequency equalizater parameters
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
36 const equalizer_t& equalizer() const;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
37
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
38 // Set frequency equalizer parameters
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
39 void set_equalizer( const equalizer_t& );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
40
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
41 // See Music_Emu.h
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
42 void mute_voices( int );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
43 blargg_err_t play( long, sample_t* );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
44
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
45
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
46 // End of public interface
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
47 protected:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
48 virtual void starting_track();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
49 virtual blargg_err_t setup_buffer( long clock_rate );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
50 virtual void set_voice( int index, Blip_Buffer* center,
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
51 Blip_Buffer* left = NULL, Blip_Buffer* right = NULL ) = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
52 virtual long run( int msec, bool* added_stereo = NULL ) = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
53 virtual void update_eq( blip_eq_t const& ) = 0;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
54 private:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
55 Multi_Buffer* buf;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
56 Multi_Buffer* std_buf; // owned
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
57 equalizer_t equalizer_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
58 void update_eq_();
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 blargg_err_t Classic_Emu::init( Multi_Buffer* buf_ ) {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
62 buf = buf_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
63 return blargg_success;
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 inline const Classic_Emu::equalizer_t& Classic_Emu::equalizer() const {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
66 return equalizer_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
67 }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
68 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
69