9 #if INT_MAX < 0x7FFFFFFF
10 #error "int must be at least 32 bits"
65 void clear(
int entire_buffer = 1 );
131#ifndef BLIP_BUFFER_ACCURACY
132 #define BLIP_BUFFER_ACCURACY 16
138#ifndef BLIP_PHASE_BITS
140 #define BLIP_PHASE_BITS 8
142 #define BLIP_PHASE_BITS 6
190template<
int quality,
int range>
194 void volume(
double v ) {
impl.volume_unit(
v * (1.0 / (range < 0 ? -range : range)) ); }
272 #if defined (__GNUC__) || _MSC_VER >= 1100
273 #define BLIP_RESTRICT __restrict
275 #define BLIP_RESTRICT
281#define BLIP_READER_BEGIN( name, blip_buffer ) \
282 const Blip_Buffer::buf_t_* BLIP_RESTRICT name##_reader_buf = (blip_buffer).buffer_;\
283 blip_long name##_reader_accum = (blip_buffer).reader_accum_
286#define BLIP_READER_BASS( blip_buffer ) ((blip_buffer).bass_shift_)
293#define BLIP_READER_READ( name ) (name##_reader_accum >> (blip_sample_bits - 16))
296#define BLIP_READER_READ_RAW( name ) (name##_reader_accum)
299#define BLIP_READER_NEXT( name, bass ) \
300 (void) (name##_reader_accum += *name##_reader_buf++ - (name##_reader_accum >> (bass)))
304#define BLIP_READER_END( name, blip_buffer ) \
305 (void) ((blip_buffer).reader_accum_ = name##_reader_accum)
338template<
int quality,
int range>
345 delta *=
impl.delta_factor;
364 int const rev = fwd +
quality - 2;
365 int const mid =
quality / 2 - 1;
369 #if defined (_M_IX86) || defined (_M_IA64) || defined (__i486__) || \
370 defined (__x86_64__) || defined (__ia64__) || defined (__i386__)
374 #define ADD_IMP( out, in ) \
375 buf [out] += (blip_long) imp [blip_res * (in)] * delta
377 #define BLIP_FWD( i ) {\
378 ADD_IMP( fwd + i, i );\
379 ADD_IMP( fwd + 1 + i, i + 1 );\
381 #define BLIP_REV( r ) {\
382 ADD_IMP( rev - r, r + 1 );\
383 ADD_IMP( rev + 1 - r, r );\
390 ADD_IMP( fwd + mid - 1, mid - 1 );
391 ADD_IMP( fwd + mid , mid );
399 ADD_IMP( rev + 1, 0 );
405 #define BLIP_FWD( i ) {\
406 blip_long t0 = i0 * delta + buf [fwd + i];\
407 blip_long t1 = imp [blip_res * (i + 1)] * delta + buf [fwd + 1 + i];\
408 i0 = imp [blip_res * (i + 2)];\
410 buf [fwd + 1 + i] = t1;\
412 #define BLIP_REV( r ) {\
413 blip_long t0 = i0 * delta + buf [rev - r];\
414 blip_long t1 = imp [blip_res * r] * delta + buf [rev + 1 - r];\
415 i0 = imp [blip_res * (r - 1)];\
417 buf [rev + 1 - r] = t1;\
425 blip_long t0 = i0 * delta + buf [fwd + mid - 1];
429 buf [fwd + mid - 1] = t0;
430 buf [fwd + mid ] = t1;
437 blip_long t1 = *imp * delta + buf [rev + 1];
448template<
int quality,
int range>
457template<
int quality,
int range>
463 int delta = amp -
impl.last_amp;
#define BLIP_RESTRICT
Definition Blip_Buffer.h:275
int const blip_sample_bits
Definition Blip_Buffer.h:257
int blip_long
Definition Blip_Buffer.h:13
const int blip_med_quality
Definition Blip_Buffer.h:183
#define BLIP_BUFFER_ACCURACY
Definition Blip_Buffer.h:132
int const blip_buffer_extra_
Definition Blip_Buffer.h:149
const int blip_best_quality
Definition Blip_Buffer.h:311
const int blip_high_quality
Definition Blip_Buffer.h:185
blip_long blip_time_t
Definition Blip_Buffer.h:17
int const blip_max_length
Definition Blip_Buffer.h:487
#define BLIP_PHASE_BITS
Definition Blip_Buffer.h:142
int const blip_reader_default_bass
Definition Blip_Buffer.h:290
blip_ulong blip_resampled_time_t
Definition Blip_Buffer.h:147
const int blip_good_quality
Definition Blip_Buffer.h:184
const long blip_unscaled
Definition Blip_Buffer.h:309
const int blip_low_quality
Definition Blip_Buffer.h:310
int const blip_default_length
Definition Blip_Buffer.h:488
int const blip_widest_impulse_
Definition Blip_Buffer.h:148
unsigned blip_ulong
Definition Blip_Buffer.h:14
int const blip_res
Definition Blip_Buffer.h:150
short blip_sample_t
Definition Blip_Buffer.h:20
@ blip_sample_max
Definition Blip_Buffer.h:21
const long clock_rate
Definition Gym_Emu.cpp:26
Definition Blip_Buffer.h:23
blip_long buffer_size_
Definition Blip_Buffer.h:113
void clear(int entire_buffer=1)
Definition Blip_Buffer.cpp:67
friend class Blip_Reader
Definition Blip_Buffer.h:122
int length_
Definition Blip_Buffer.h:120
blip_resampled_time_t resampled_duration(int t) const
Definition Blip_Buffer.h:91
void set_modified()
Definition Blip_Buffer.h:87
const char * blargg_err_t
Definition Blip_Buffer.h:25
void mix_samples(blip_sample_t const *buf, long count)
Definition Blip_Buffer.cpp:439
blip_ulong blip_resampled_time_t
Definition Blip_Buffer.h:89
void bass_freq(int frequency)
Definition Blip_Buffer.cpp:131
Blip_Buffer()
Definition Blip_Buffer.cpp:28
Blip_Buffer & operator=(const Blip_Buffer &)
void remove_samples(long count)
Definition Blip_Buffer.cpp:177
~Blip_Buffer()
Definition Blip_Buffer.cpp:53
blip_resampled_time_t resampled_time_t
Definition Blip_Buffer.h:101
void remove_silence(long count)
Definition Blip_Buffer.cpp:150
long sample_rate() const
Definition Blip_Buffer.h:475
long samples_avail() const
Definition Blip_Buffer.h:474
long sample_rate_
Definition Blip_Buffer.h:117
long read_samples(blip_sample_t *dest, long max_samples, int stereo=0)
Definition Blip_Buffer.cpp:398
long clock_rate() const
Definition Blip_Buffer.h:477
blip_time_t count_clocks(long count) const
Definition Blip_Buffer.cpp:163
blip_long reader_accum_
Definition Blip_Buffer.h:114
blargg_err_t set_sample_rate(long samples_per_sec, int msec_length=1000/4)
Definition Blip_Buffer.cpp:79
Blip_Buffer(Blip_Buffer &&)=default
int bass_freq_
Definition Blip_Buffer.h:119
Blip_Buffer(const Blip_Buffer &)
int output_latency() const
Definition Blip_Buffer.h:476
int modified_
Definition Blip_Buffer.h:121
int length() const
Definition Blip_Buffer.h:473
int clear_modified()
Definition Blip_Buffer.h:88
long clock_rate_
Definition Blip_Buffer.h:118
int bass_shift_
Definition Blip_Buffer.h:115
long count_samples(blip_time_t duration) const
Definition Blip_Buffer.cpp:156
blip_resampled_time_t resampled_time(blip_time_t t) const
Definition Blip_Buffer.h:92
blip_resampled_time_t offset_
Definition Blip_Buffer.h:111
blip_resampled_time_t clock_rate_factor(long clock_rate) const
Definition Blip_Buffer.cpp:123
blip_time_t buf_t_
Definition Blip_Buffer.h:109
blargg_err_t sample_rate(long r, int msec)
Definition Blip_Buffer.h:103
blip_ulong factor_
Definition Blip_Buffer.h:110
blargg_err_t sample_rate(long r)
Definition Blip_Buffer.h:102
void end_frame(blip_time_t time)
Definition Blip_Buffer.cpp:144
buf_t_ * buffer_
Definition Blip_Buffer.h:112
Definition Blip_Buffer.h:321
int begin(Blip_Buffer &)
Definition Blip_Buffer.h:480
const Blip_Buffer::buf_t_ * buf
Definition Blip_Buffer.h:330
blip_long read_raw() const
Definition Blip_Buffer.h:325
blip_long accum
Definition Blip_Buffer.h:331
void end(Blip_Buffer &b)
Definition Blip_Buffer.h:327
void next(int bass_shift=9)
Definition Blip_Buffer.h:326
blip_long read() const
Definition Blip_Buffer.h:324
Definition Blip_Buffer.h:153
Blip_Synth_Fast_()
Definition Blip_Buffer.cpp:192
void treble_eq(blip_eq_t const &)
Definition Blip_Buffer.h:161
int last_amp
Definition Blip_Buffer.h:156
int delta_factor
Definition Blip_Buffer.h:157
void volume_unit(double)
Definition Blip_Buffer.cpp:199
Blip_Buffer * buf
Definition Blip_Buffer.h:155
Definition Blip_Buffer.h:164
double volume_unit_
Definition Blip_Buffer.h:174
int last_amp
Definition Blip_Buffer.h:167
short *const impulses
Definition Blip_Buffer.h:175
int const width
Definition Blip_Buffer.h:176
blip_long kernel_unit
Definition Blip_Buffer.h:177
int delta_factor
Definition Blip_Buffer.h:168
Blip_Buffer * buf
Definition Blip_Buffer.h:166
void volume_unit(double)
Definition Blip_Buffer.cpp:356
void adjust_impulse()
Definition Blip_Buffer.cpp:283
Blip_Synth_(short *impulses, int width)
Definition Blip_Buffer.cpp:206
void treble_eq(blip_eq_t const &)
Definition Blip_Buffer.cpp:307
int impulses_size() const
Definition Blip_Buffer.h:178
Blip_Buffer * output() const
Definition Blip_Buffer.h:200
void offset(blip_time_t t, int delta) const
Definition Blip_Buffer.h:213
void offset_inline(blip_time_t t, int delta) const
Definition Blip_Buffer.h:222
void update(blip_time_t time, int amplitude)
Definition Blip_Buffer.h:461
Blip_Synth()
Definition Blip_Buffer.h:234
short imp_t
Definition Blip_Buffer.h:231
void offset_resampled(blip_resampled_time_t, int delta, Blip_Buffer *) const
Definition Blip_Buffer.h:339
void offset_inline(blip_time_t t, int delta, Blip_Buffer *buf) const
Definition Blip_Buffer.h:219
Blip_Synth_ impl
Definition Blip_Buffer.h:230
void volume(double v)
Definition Blip_Buffer.h:194
imp_t impulses[blip_res *(quality/2)+1]
Definition Blip_Buffer.h:232
void treble_eq(blip_eq_t const &eq)
Definition Blip_Buffer.h:197
void output(Blip_Buffer *b)
Definition Blip_Buffer.h:201
void offset(blip_time_t, int delta, Blip_Buffer *) const
Definition Blip_Buffer.h:452
blip_time_t count_clocks(long count) const
void mix_samples(blip_sample_t const *buf, long count)
blargg_err_t set_sample_rate(long samples_per_sec, int msec_length)
Silent_Blip_Buffer()
Definition Blip_Buffer.cpp:59
buf_t_ buf[blip_buffer_extra_+1]
Definition Blip_Buffer.h:262
Definition Blip_Buffer.h:239
long cutoff_freq
Definition Blip_Buffer.h:252
void generate(float *out, int count) const
Definition Blip_Buffer.cpp:265
long sample_rate
Definition Blip_Buffer.h:251
blip_eq_t(double treble_db=0)
Definition Blip_Buffer.h:468
double treble
Definition Blip_Buffer.h:249
friend class Blip_Synth_
Definition Blip_Buffer.h:254
long rolloff_freq
Definition Blip_Buffer.h:250
struct huft * t
Definition inflate.c:943
unsigned v[N_MAX]
Definition inflate.c:1584
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 left
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 right
int quality
Definition jpeglib.h:919
float out
Definition lilv_test.c:1461
void DWORD DWORD LPVOID DWORD cf
Definition swell-functions.h:807
int r
Definition crypt.c:458
typedef int(UZ_EXP MsgFn)()
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263