LMMS
Loading...
Searching...
No Matches
Spc_Filter.h
Go to the documentation of this file.
1// Simple low-pass and high-pass filter to better match sound output of a SNES
2
3// Game_Music_Emu https://bitbucket.org/mpyne/game-music-emu/
4#ifndef SPC_FILTER_H
5#define SPC_FILTER_H
6
7#include "blargg_common.h"
8
9struct SPC_Filter {
10public:
11
12 // Filters count samples of stereo sound in place. Count must be a multiple of 2.
13 typedef short sample_t;
14 void run( sample_t* io, int count );
15
16// Optional features
17
18 // Clears filter to silence
19 void clear();
20
21 // Sets gain (volume), where gain_unit is normal. Gains greater than gain_unit
22 // are fine, since output is clamped to 16-bit sample range.
23 enum { gain_unit = 0x100 };
24 void set_gain( int gain );
25
26 // Enables/disables filtering (when disabled, gain is still applied)
27 void enable( bool b );
28
29 // Sets amount of bass (logarithmic scale)
30 enum { bass_none = 0 };
31 enum { bass_norm = 8 }; // normal amount
32 enum { bass_max = 31 };
33 void set_bass( int bass );
34
35public:
36 SPC_Filter();
37 BLARGG_DISABLE_NOTHROW
38private:
39 enum { gain_bits = 8 };
40 int gain;
41 int bass;
42 bool enabled;
43 struct chan_t { int p1, pp1, sum; };
45};
46
47inline void SPC_Filter::enable( bool b ) { enabled = b; }
48
49inline void SPC_Filter::set_gain( int g ) { gain = g; }
50
51inline void SPC_Filter::set_bass( int b ) { bass = b; }
52
53#endif
int g
Definition inflate.c:1573
Definition Spc_Filter.h:43
int pp1
Definition Spc_Filter.h:43
int sum
Definition Spc_Filter.h:43
int p1
Definition Spc_Filter.h:43
int bass
Definition Spc_Filter.h:41
@ bass_max
Definition Spc_Filter.h:32
void enable(bool b)
Definition Spc_Filter.h:47
void clear()
Definition Spc_Filter.cpp:20
bool enabled
Definition Spc_Filter.h:42
chan_t ch[2]
Definition Spc_Filter.h:44
SPC_Filter()
Definition Spc_Filter.cpp:22
@ gain_bits
Definition Spc_Filter.h:39
void run(sample_t *io, int count)
Definition Spc_Filter.cpp:30
@ bass_none
Definition Spc_Filter.h:30
int gain
Definition Spc_Filter.h:40
void set_gain(int gain)
Definition Spc_Filter.h:49
void set_bass(int bass)
Definition Spc_Filter.h:51
short sample_t
Definition Spc_Filter.h:13
@ gain_unit
Definition Spc_Filter.h:23
@ bass_norm
Definition Spc_Filter.h:31
b
Definition crypt.c:628
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263