synth.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef _FLUIDSYNTH_SYNTH_H
00022
#define _FLUIDSYNTH_SYNTH_H
00023
00024
00025
#ifdef __cplusplus
00026
extern "C" {
00027
#endif
00028
00029
00056
FLUIDSYNTH_API fluid_synth_t*
new_fluid_synth(
fluid_settings_t* settings);
00057
00058
00065
FLUIDSYNTH_API int delete_fluid_synth(
fluid_synth_t* synth);
00066
00067
00073
FLUIDSYNTH_API fluid_settings_t*
fluid_synth_get_settings(
fluid_synth_t* synth);
00074
00075
00076
00077
00078
00079
00080
00081
00083
FLUIDSYNTH_API int fluid_synth_noteon(
fluid_synth_t* synth,
int chan,
int key,
int vel);
00084
00086
FLUIDSYNTH_API int fluid_synth_noteoff(
fluid_synth_t* synth,
int chan,
int key);
00087
00089
FLUIDSYNTH_API int fluid_synth_cc(
fluid_synth_t* synth,
int chan,
int ctrl,
int val);
00090
00092
FLUIDSYNTH_API int fluid_synth_get_cc(
fluid_synth_t* synth,
int chan,
int ctrl,
int* pval);
00093
00095
FLUIDSYNTH_API int fluid_synth_pitch_bend(
fluid_synth_t* synth,
int chan,
int val);
00096
00098
FLUIDSYNTH_API
00099
int fluid_synth_get_pitch_bend(
fluid_synth_t* synth,
int chan,
int* ppitch_bend);
00100
00102
FLUIDSYNTH_API int fluid_synth_pitch_wheel_sens(
fluid_synth_t* synth,
int chan,
int val);
00103
00105
FLUIDSYNTH_API int fluid_synth_get_pitch_wheel_sens(
fluid_synth_t* synth,
int chan,
int* pval);
00106
00108
FLUIDSYNTH_API int fluid_synth_program_change(
fluid_synth_t* synth,
int chan,
int program);
00109
00111
FLUIDSYNTH_API
00112
int fluid_synth_bank_select(
fluid_synth_t* synth,
int chan,
unsigned int bank);
00113
00115
FLUIDSYNTH_API
00116
int fluid_synth_sfont_select(
fluid_synth_t* synth,
int chan,
unsigned int sfont_id);
00117
00130
FLUIDSYNTH_API
00131
int fluid_synth_program_select(
fluid_synth_t* synth,
int chan,
00132
unsigned int sfont_id,
00133
unsigned int bank_num,
00134
unsigned int preset_num);
00135
00138
FLUIDSYNTH_API
00139
int fluid_synth_get_program(
fluid_synth_t* synth,
int chan,
00140
unsigned int* sfont_id,
00141
unsigned int* bank_num,
00142
unsigned int* preset_num);
00143
00148
FLUIDSYNTH_API int fluid_synth_program_reset(
fluid_synth_t* synth);
00149
00152
FLUIDSYNTH_API int fluid_synth_system_reset(
fluid_synth_t* synth);
00153
00154
00155
00156
00157
00158
00159
00160
00163
FLUIDSYNTH_API int fluid_synth_start(
fluid_synth_t* synth,
unsigned int id,
00164
fluid_preset_t* preset,
int audio_chan,
00165
int midi_chan,
int key,
int vel);
00166
00168
FLUIDSYNTH_API int fluid_synth_stop(
fluid_synth_t* synth,
unsigned int id);
00169
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00194
FLUIDSYNTH_API
00195
int fluid_synth_sfload(
fluid_synth_t* synth,
const char* filename,
int reset_presets);
00196
00204
FLUIDSYNTH_API int fluid_synth_sfreload(
fluid_synth_t* synth,
unsigned int id);
00205
00213
FLUIDSYNTH_API int fluid_synth_sfunload(
fluid_synth_t* synth,
unsigned int id,
int reset_presets);
00214
00222
FLUIDSYNTH_API int fluid_synth_add_sfont(
fluid_synth_t* synth,
fluid_sfont_t* sfont);
00223
00231
FLUIDSYNTH_API void fluid_synth_remove_sfont(
fluid_synth_t* synth,
fluid_sfont_t* sfont);
00232
00238
FLUIDSYNTH_API int fluid_synth_sfcount(
fluid_synth_t* synth);
00239
00247
FLUIDSYNTH_API fluid_sfont_t*
fluid_synth_get_sfont(
fluid_synth_t* synth,
unsigned int num);
00248
00255
FLUIDSYNTH_API fluid_sfont_t*
fluid_synth_get_sfont_by_id(
fluid_synth_t* synth,
unsigned int id);
00256
00257
00259
FLUIDSYNTH_API fluid_preset_t*
fluid_synth_get_channel_preset(
fluid_synth_t* synth,
int chan);
00260
00263
FLUIDSYNTH_API int fluid_synth_set_bank_offset(
fluid_synth_t* synth,
int sfont_id,
int offset);
00264
00266
FLUIDSYNTH_API int fluid_synth_get_bank_offset(
fluid_synth_t* synth,
int sfont_id);
00267
00268
00269
00270
00271
00272
00273
00274
00275
00277
FLUIDSYNTH_API void fluid_synth_set_reverb(
fluid_synth_t* synth,
double roomsize,
00278
double damping,
double width,
double level);
00279
00281
FLUIDSYNTH_API void fluid_synth_set_reverb_on(
fluid_synth_t* synth,
int on);
00282
00283
00285
FLUIDSYNTH_API double fluid_synth_get_reverb_roomsize(
fluid_synth_t* synth);
00286
FLUIDSYNTH_API double fluid_synth_get_reverb_damp(
fluid_synth_t* synth);
00287
FLUIDSYNTH_API double fluid_synth_get_reverb_level(
fluid_synth_t* synth);
00288
FLUIDSYNTH_API double fluid_synth_get_reverb_width(
fluid_synth_t* synth);
00289
00290
00291 #define FLUID_REVERB_DEFAULT_ROOMSIZE 0.2f
00292 #define FLUID_REVERB_DEFAULT_DAMP 0.0f
00293 #define FLUID_REVERB_DEFAULT_WIDTH 0.5f
00294 #define FLUID_REVERB_DEFAULT_LEVEL 0.9f
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304 enum fluid_chorus_mod {
00305
FLUID_CHORUS_MOD_SINE = 0,
00306
FLUID_CHORUS_MOD_TRIANGLE = 1
00307 };
00308
00313
FLUIDSYNTH_API void fluid_synth_set_chorus(
fluid_synth_t* synth,
int nr,
double level,
00314
double speed,
double depth_ms,
int type);
00315
00317
FLUIDSYNTH_API void fluid_synth_set_chorus_on(
fluid_synth_t* synth,
int on);
00318
00320
FLUIDSYNTH_API int fluid_synth_get_chorus_nr(
fluid_synth_t* synth);
00321
FLUIDSYNTH_API double fluid_synth_get_chorus_level(
fluid_synth_t* synth);
00322
FLUIDSYNTH_API double fluid_synth_get_chorus_speed_Hz(
fluid_synth_t* synth);
00323
FLUIDSYNTH_API double fluid_synth_get_chorus_depth_ms(
fluid_synth_t* synth);
00324
FLUIDSYNTH_API int fluid_synth_get_chorus_type(
fluid_synth_t* synth);
00325
00326
00327 #define FLUID_CHORUS_DEFAULT_N 3
00328 #define FLUID_CHORUS_DEFAULT_LEVEL 2.0f
00329 #define FLUID_CHORUS_DEFAULT_SPEED 0.3f
00330 #define FLUID_CHORUS_DEFAULT_DEPTH 8.0f
00331 #define FLUID_CHORUS_DEFAULT_TYPE FLUID_CHORUS_MOD_SINE
00332
00333
00334
00335
00336
00337
00338
00339
00340
00343
FLUIDSYNTH_API int fluid_synth_count_midi_channels(
fluid_synth_t* synth);
00344
00347
FLUIDSYNTH_API int fluid_synth_count_audio_channels(
fluid_synth_t* synth);
00348
00351
FLUIDSYNTH_API int fluid_synth_count_audio_groups(
fluid_synth_t* synth);
00352
00355
FLUIDSYNTH_API int fluid_synth_count_effects_channels(
fluid_synth_t* synth);
00356
00357
00358
00359
00360
00361
00362
00363
00364
00366
FLUIDSYNTH_API void fluid_synth_set_gain(
fluid_synth_t* synth,
float gain);
00367
00369
FLUIDSYNTH_API float fluid_synth_get_gain(
fluid_synth_t* synth);
00370
00372
FLUIDSYNTH_API int fluid_synth_set_polyphony(
fluid_synth_t* synth,
int polyphony);
00373
00375
FLUIDSYNTH_API int fluid_synth_get_polyphony(
fluid_synth_t* synth);
00376
00386
FLUIDSYNTH_API int fluid_synth_get_internal_bufsize(
fluid_synth_t* synth);
00387
00389
FLUIDSYNTH_API
00390
int fluid_synth_set_interp_method(
fluid_synth_t* synth,
int chan,
int interp_method);
00391
00392
00393 enum fluid_interp {
00394
00395
FLUID_INTERP_NONE = 0,
00396
00397
FLUID_INTERP_LINEAR = 1,
00398
00399
00400
FLUID_INTERP_DEFAULT = 4,
00401
FLUID_INTERP_4THORDER = 4,
00402
FLUID_INTERP_7THORDER = 7,
00403
FLUID_INTERP_HIGHEST=7
00404 };
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00429
FLUIDSYNTH_API
00430
int fluid_synth_set_gen(
fluid_synth_t* synth,
int chan,
int param,
float value);
00431
00432
00441
FLUIDSYNTH_API float fluid_synth_get_gen(
fluid_synth_t* synth,
int chan,
int param);
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00463
FLUIDSYNTH_API
00464
int fluid_synth_create_key_tuning(
fluid_synth_t* synth,
int tuning_bank,
int tuning_prog,
00465
char* name,
double* pitch);
00466
00479
FLUIDSYNTH_API
00480
int fluid_synth_create_octave_tuning(
fluid_synth_t* synth,
int tuning_bank,
int tuning_prog,
00481
char* name,
double* pitch);
00482
00497
FLUIDSYNTH_API
00498
int fluid_synth_tune_notes(
fluid_synth_t* synth,
int tuning_bank,
int tuning_prog,
00499
int len,
int *keys,
double* pitch,
int apply);
00500
00508
FLUIDSYNTH_API
00509
int fluid_synth_select_tuning(
fluid_synth_t* synth,
int chan,
int tuning_bank,
int tuning_prog);
00510
00516
FLUIDSYNTH_API int fluid_synth_reset_tuning(
fluid_synth_t* synth,
int chan);
00517
00522
FLUIDSYNTH_API void fluid_synth_tuning_iteration_start(
fluid_synth_t* synth);
00523
00524
00534
FLUIDSYNTH_API
00535
int fluid_synth_tuning_iteration_next(
fluid_synth_t* synth,
int* bank,
int* prog);
00536
00537
00549
FLUIDSYNTH_API int fluid_synth_tuning_dump(
fluid_synth_t* synth,
int bank,
int prog,
00550
char* name,
int len,
double* pitch);
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00566
FLUIDSYNTH_API double fluid_synth_get_cpu_load(
fluid_synth_t* synth);
00567
00569
FLUIDSYNTH_API char*
fluid_synth_error(
fluid_synth_t* synth);
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00598
FLUIDSYNTH_API int fluid_synth_write_s16(
fluid_synth_t* synth,
int len,
00599
void* lout,
int loff,
int lincr,
00600
void* rout,
int roff,
int rincr);
00601
00602
00618
FLUIDSYNTH_API int fluid_synth_write_float(
fluid_synth_t* synth,
int len,
00619
void* lout,
int loff,
int lincr,
00620
void* rout,
int roff,
int rincr);
00621
00622
FLUIDSYNTH_API int fluid_synth_nwrite_float(
fluid_synth_t* synth,
int len,
00623
float** left,
float** right,
00624
float** fx_left,
float** fx_right);
00625
00640
FLUIDSYNTH_API int fluid_synth_process(
fluid_synth_t* synth,
int len,
00641
int nin,
float** in,
00642
int nout,
float** out);
00643
00644
00645
00646
00647 typedef int (*
fluid_audio_callback_t)(
fluid_synth_t* synth,
int len,
00648
void* out1,
int loff,
int lincr,
00649
void* out2,
int roff,
int rincr);
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00663
FLUIDSYNTH_API void fluid_synth_add_sfloader(
fluid_synth_t* synth,
fluid_sfloader_t* loader);
00664
00671
FLUIDSYNTH_API fluid_voice_t*
fluid_synth_alloc_voice(
fluid_synth_t* synth,
fluid_sample_t* sample,
00672
int channum,
int key,
int vel);
00673
00679
FLUIDSYNTH_API void fluid_synth_start_voice(
fluid_synth_t* synth,
fluid_voice_t* voice);
00680
00681
00684
FLUIDSYNTH_API void fluid_synth_get_voicelist(
fluid_synth_t* synth,
00685
fluid_voice_t* buf[],
int bufsize,
int ID);
00686
00687
00689
FLUIDSYNTH_API int fluid_synth_handle_midi_event(
void* data,
fluid_midi_event_t* event);
00690
00691
00693
FLUIDSYNTH_API void fluid_synth_set_midi_router(
fluid_synth_t* synth,
00694
fluid_midi_router_t* router);
00695
00696
#ifdef __cplusplus
00697
}
00698
#endif
00699
00700
#endif
Generated on Sat Jun 11 17:30:08 2005 for libfluidsynth by
1.3.8