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

[svn] various fixes :(
author nenolod
date Mon, 26 Dec 2005 14:12:35 -0800
parents 252843aac42f
children
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 // Multi-channel effects buffer with panning, echo and reverb effects
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 EFFECTS_BUFFER_H
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
7 #define EFFECTS_BUFFER_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 "Multi_Buffer.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 // Effects_Buffer uses several buffers and outputs stereo sample pairs.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
12 class Effects_Buffer : public Multi_Buffer {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
13 public:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
14 Effects_Buffer();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
15 ~Effects_Buffer();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
16
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
17 // Channel Effect Center Pan
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
18 // ---------------------------------
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
19 // 0 reverb pan_1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
20 // 1 reverb pan_2
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
21 // 2 echo -
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
22 // 3 echo -
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
23 // 4 echo -
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
24
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
25 // Channel configuration
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
26 struct config_t {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
27 double pan_1; // -1.0 = left, 0.0 = center, 1.0 = right
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
28 double pan_2;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
29 double echo_delay; // msec
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
30 double echo_level; // 0.0 to 1.0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
31 double reverb_delay; // msec
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
32 double delay_variance; // difference between left/right delays (msec)
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
33 double reverb_level; // 0.0 to 1.0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
34 bool effects_enabled; // if false, use optimized simple mixer
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
35 config_t();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
36 };
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 configuration of buffer
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
39 void config( const config_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 Multi_Buffer.h
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
42 blargg_err_t sample_rate( long samples_per_sec, int msec );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
43 void clock_rate( long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
44 void bass_freq( int );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
45 void clear();
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
46 channel_t channel( int );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
47 void end_frame( blip_time_t, bool was_stereo = true );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
48 long read_samples( blip_sample_t*, long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
49
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
50
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
51 // End of public interface
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
52 private:
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
53 typedef long fixed_t;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
54
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
55 enum { buf_count = 7 };
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
56 Blip_Buffer bufs [buf_count];
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
57 enum { chan_count = 5 };
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
58 channel_t channels [chan_count];
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
59 config_t config_;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
60 long stereo_remain;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
61 long effect_remain;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
62 bool effects_enabled;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
63
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
64 blip_sample_t* reverb_buf;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
65 blip_sample_t* echo_buf;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
66 int reverb_pos;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
67 int echo_pos;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
68
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
69 struct {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
70 fixed_t pan_1_levels [2];
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
71 fixed_t pan_2_levels [2];
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
72 int echo_delay_l;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
73 int echo_delay_r;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
74 fixed_t echo_level;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
75 int reverb_delay_l;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
76 int reverb_delay_r;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
77 fixed_t reverb_level;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
78 } chans;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
79
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
80 void mix_mono( blip_sample_t*, long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
81 void mix_stereo( blip_sample_t*, long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
82 void mix_enhanced( blip_sample_t*, long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
83 void mix_mono_enhanced( blip_sample_t*, long );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
84 };
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
85
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
86 inline Effects_Buffer::channel_t Effects_Buffer::channel( int i ) {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
87 return channels [i % chan_count];
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
88 }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
89
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
90 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
91