LMMS
Loading...
Searching...
No Matches
Dual_Resampler.h
Go to the documentation of this file.
1// Combination of Fir_Resampler and Blip_Buffer mixing. Used by Sega FM emulators.
2
3// Game_Music_Emu https://bitbucket.org/mpyne/game-music-emu/
4#ifndef DUAL_RESAMPLER_H
5#define DUAL_RESAMPLER_H
6
7#include "Fir_Resampler.h"
8#include "Blip_Buffer.h"
9
11public:
13 virtual ~Dual_Resampler();
14
15 typedef short dsample_t;
16
17 double setup( double oversample, double rolloff, double gain );
18 blargg_err_t reset( int max_pairs );
19 void resize( int pairs_per_frame );
20 void clear();
21
22 void dual_play( long count, dsample_t* out, Blip_Buffer& );
23
24protected:
25 virtual int play_frame( blip_time_t, int pcm_count, dsample_t* pcm_out ) = 0;
26private:
27
28 blargg_vector<dsample_t> sample_buf;
33
37};
38
39inline double Dual_Resampler::setup( double oversample, double rolloff, double gain )
40{
41 return resampler.time_ratio( oversample, rolloff, gain * 0.5 );
42}
43
45{
47 resampler.clear();
48}
49
50#endif
blip_long blip_time_t
Definition Blip_Buffer.h:17
double const rolloff
Definition Vgm_Emu.cpp:23
Definition Blip_Buffer.h:23
void play_frame_(Blip_Buffer &, dsample_t *)
Definition Dual_Resampler.cpp:58
short dsample_t
Definition Dual_Resampler.h:15
void mix_samples(Blip_Buffer &, dsample_t *)
Definition Dual_Resampler.cpp:111
int sample_buf_size
Definition Dual_Resampler.h:29
int oversamples_per_frame
Definition Dual_Resampler.h:30
blargg_vector< dsample_t > sample_buf
Definition Dual_Resampler.h:28
Fir_Resampler< 12 > resampler
Definition Dual_Resampler.h:34
int buf_pos
Definition Dual_Resampler.h:31
Dual_Resampler()
Definition Dual_Resampler.cpp:23
void clear()
Definition Dual_Resampler.h:44
virtual int play_frame(blip_time_t, int pcm_count, dsample_t *pcm_out)=0
void resize(int pairs_per_frame)
Definition Dual_Resampler.cpp:42
blargg_err_t reset(int max_pairs)
Definition Dual_Resampler.cpp:33
void dual_play(long count, dsample_t *out, Blip_Buffer &)
Definition Dual_Resampler.cpp:79
double setup(double oversample, double rolloff, double gain)
Definition Dual_Resampler.h:39
virtual ~Dual_Resampler()
Definition Dual_Resampler.cpp:31
int resampler_size
Definition Dual_Resampler.h:32
Definition Fir_Resampler.h:80
float out
Definition lilv_test.c:1461
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263