diff --git a/Builds/MacOSX/lib/libFLAC.8.dylib b/Builds/MacOSX/lib/libFLAC.8.dylib index 579a1ef..92d4794 100644 Binary files a/Builds/MacOSX/lib/libFLAC.8.dylib and b/Builds/MacOSX/lib/libFLAC.8.dylib differ diff --git a/Builds/MacOSX/lib/libfluidsynth.dylib b/Builds/MacOSX/lib/libfluidsynth.dylib old mode 100755 new mode 100644 index 71c4751..52f36e3 Binary files a/Builds/MacOSX/lib/libfluidsynth.dylib and b/Builds/MacOSX/lib/libfluidsynth.dylib differ diff --git a/Builds/MacOSX/lib/libglib-2.0.0.dylib b/Builds/MacOSX/lib/libglib-2.0.0.dylib index 47e8943..70d91ff 100644 Binary files a/Builds/MacOSX/lib/libglib-2.0.0.dylib and b/Builds/MacOSX/lib/libglib-2.0.0.dylib differ diff --git a/Builds/MacOSX/lib/libgthread-2.0.0.dylib b/Builds/MacOSX/lib/libgthread-2.0.0.dylib index 4c375fc..798dd62 100644 Binary files a/Builds/MacOSX/lib/libgthread-2.0.0.dylib and b/Builds/MacOSX/lib/libgthread-2.0.0.dylib differ diff --git a/Builds/MacOSX/lib/libintl.8.dylib b/Builds/MacOSX/lib/libintl.8.dylib old mode 100755 new mode 100644 index c2409a9..bd8af02 Binary files a/Builds/MacOSX/lib/libintl.8.dylib and b/Builds/MacOSX/lib/libintl.8.dylib differ diff --git a/Builds/MacOSX/lib/libogg.0.dylib b/Builds/MacOSX/lib/libogg.0.dylib index 7d6495e..ac4134d 100644 Binary files a/Builds/MacOSX/lib/libogg.0.dylib and b/Builds/MacOSX/lib/libogg.0.dylib differ diff --git a/Builds/MacOSX/lib/libpcre.1.dylib b/Builds/MacOSX/lib/libpcre.1.dylib index a64a45b..667b85b 100644 Binary files a/Builds/MacOSX/lib/libpcre.1.dylib and b/Builds/MacOSX/lib/libpcre.1.dylib differ diff --git a/Builds/MacOSX/lib/libsndfile.1.dylib b/Builds/MacOSX/lib/libsndfile.1.dylib index 68efb44..2b1fd05 100644 Binary files a/Builds/MacOSX/lib/libsndfile.1.dylib and b/Builds/MacOSX/lib/libsndfile.1.dylib differ diff --git a/Builds/MacOSX/lib/libvorbis.0.dylib b/Builds/MacOSX/lib/libvorbis.0.dylib index 385a9fb..35144f2 100644 Binary files a/Builds/MacOSX/lib/libvorbis.0.dylib and b/Builds/MacOSX/lib/libvorbis.0.dylib differ diff --git a/Builds/MacOSX/lib/libvorbisenc.2.dylib b/Builds/MacOSX/lib/libvorbisenc.2.dylib index 65117e7..1e820a0 100644 Binary files a/Builds/MacOSX/lib/libvorbisenc.2.dylib and b/Builds/MacOSX/lib/libvorbisenc.2.dylib differ diff --git a/Builds/MacOSX/make_portable.sh b/Builds/MacOSX/make_portable.sh index 2042aa5..8b9dc20 100755 --- a/Builds/MacOSX/make_portable.sh +++ b/Builds/MacOSX/make_portable.sh @@ -2,6 +2,9 @@ # Example input: # ./make_portable.sh mycoolbinary +# Or: +# USE_RPATH=1 ./make_portable.sh mycoolbinary +# # where mycoolbinary is a mach-o object file # (for example an executable binary or a .dylib) # @@ -29,11 +32,27 @@ trap 'error ${LINENO}' ERR BINARY="$1" BINARYDIR=$(dirname "$BINARY") -LIBREL="lib" -LIB="$BINARYDIR/$LIBREL" +LIBDIRNAME=${LIBDIRNAME:-lib} +LIBOUTPUTDIR="$BINARYDIR/$LIBDIRNAME" + +# assume that our binary is running from: +# CoolBinary.app/Contents/MacOS/coolbinary +# and wants to navigate to: +# CoolBinary.app/Contents/lib/coollibrary.dylib +RPATH_FALLBACK="@loader_path/../$LIBDIRNAME" + +if [ -z ${USE_RPATH+x} ]; then + # don't use rpath + OBJLOADREL="$RPATH_FALLBACK" +else + OBJLOADREL="@rpath" + # define in our binary what it should expand the + # runtime search path @rpath to + install_name_tool -add_rpath "$RPATH_FALLBACK" "$BINARY" +fi # make a lib folder -mkdir -p "$LIB" +mkdir -p "$LIBOUTPUTDIR" # find every LC_LOAD_DYLIB command in the obj file # filter to just loads under /usr/local @@ -65,22 +84,22 @@ get_env_specific_dependencies_recursive () { DEP_PATHS=$(get_env_specific_dependencies_recursive "$BINARY") -mkdir -p "$LIB" +mkdir -p "$LIBOUTPUTDIR" # copy each distinct dylib in the dependency tree into our lib folder echo "$DEP_PATHS" \ | xargs -n1 realpath \ | sort \ | uniq \ -| xargs -I'{}' cp {} "$LIB/" +| xargs -I'{}' cp {} "$LIBOUTPUTDIR/" -chmod +w "$LIB"/*.dylib +chmod +w "$BINARY" "$LIBOUTPUTDIR"/*.dylib while read -r obj; do [ -z "$obj" ] && continue OBJ_LEAF_NAME=$(echo "$obj" | awk -F'/' '{print $NF}') # rewrite the install name of this obj file. completely optional. # provides good default for future people who link to it. - install_name_tool -id "@rpath/$OBJ_LEAF_NAME" "$obj" + install_name_tool -id "$OBJLOADREL/$OBJ_LEAF_NAME" "$obj" # iterate over every LC_LOAD_DYLIB command in the objfile while read -r load; do @@ -88,10 +107,6 @@ while read -r obj; do LOAD_LEAF_NAME=$(echo "$load" | awk -F'/' '{print $NF}') # rewrite a LC_LOAD_DYLIB command in this obj file # to point relative to @rpath - install_name_tool -change "$load" "@rpath/$LOAD_LEAF_NAME" "$obj" + install_name_tool -change "$load" "$OBJLOADREL/$LOAD_LEAF_NAME" "$obj" done < <(get_env_specific_direct_dependencies "$obj") -done < <(cat <(echo "$BINARY") <(echo "$DEP_PATHS" | awk -F'/' -v l="$LIB" -v OFS='/' '{print l,$NF}')) - -# define in our binary what it should expand the -# runtime search path @rpath to -install_name_tool -add_rpath "@loader_path/$LIBREL" "$BINARY" +done < <(cat <(echo "$BINARY") <(echo "$DEP_PATHS" | awk -F'/' -v l="$LIBOUTPUTDIR" -v OFS='/' '{print l,$NF}')) diff --git a/include/fluidsynth.h b/include/fluidsynth.h index cbe71a5..1ea422f 100644 --- a/include/fluidsynth.h +++ b/include/fluidsynth.h @@ -97,7 +97,6 @@ extern "C" { #include "fluidsynth/synth.h" #include "fluidsynth/shell.h" #include "fluidsynth/sfont.h" -#include "fluidsynth/ramsfont.h" #include "fluidsynth/audio.h" #include "fluidsynth/event.h" #include "fluidsynth/midi.h" diff --git a/include/fluidsynth/audio.h b/include/fluidsynth/audio.h index 8341b81..c9b8c58 100644 --- a/include/fluidsynth/audio.h +++ b/include/fluidsynth/audio.h @@ -52,25 +52,25 @@ extern "C" { * @param out Array of buffers to store (dry) audio to. Buffers may alias with buffers of \c fx. * @return Should return #FLUID_OK on success, #FLUID_FAILED if an error occured. */ -typedef int (*fluid_audio_func_t)(void* data, int len, - int nfx, float* fx[], - int nout, float* out[]); +typedef int (*fluid_audio_func_t)(void *data, int len, + int nfx, float *fx[], + int nout, float *out[]); -FLUIDSYNTH_API fluid_audio_driver_t* new_fluid_audio_driver(fluid_settings_t* settings, - fluid_synth_t* synth); +FLUIDSYNTH_API fluid_audio_driver_t *new_fluid_audio_driver(fluid_settings_t *settings, + fluid_synth_t *synth); -FLUIDSYNTH_API fluid_audio_driver_t* new_fluid_audio_driver2(fluid_settings_t* settings, - fluid_audio_func_t func, - void* data); +FLUIDSYNTH_API fluid_audio_driver_t *new_fluid_audio_driver2(fluid_settings_t *settings, + fluid_audio_func_t func, + void *data); -FLUIDSYNTH_API void delete_fluid_audio_driver(fluid_audio_driver_t* driver); +FLUIDSYNTH_API void delete_fluid_audio_driver(fluid_audio_driver_t *driver); -FLUIDSYNTH_API fluid_file_renderer_t *new_fluid_file_renderer(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_file_renderer_process_block(fluid_file_renderer_t* dev); -FLUIDSYNTH_API void delete_fluid_file_renderer(fluid_file_renderer_t* dev); -FLUIDSYNTH_API int fluid_file_set_encoding_quality(fluid_file_renderer_t* dev, double q); +FLUIDSYNTH_API fluid_file_renderer_t *new_fluid_file_renderer(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_file_renderer_process_block(fluid_file_renderer_t *dev); +FLUIDSYNTH_API void delete_fluid_file_renderer(fluid_file_renderer_t *dev); +FLUIDSYNTH_API int fluid_file_set_encoding_quality(fluid_file_renderer_t *dev, double q); -FLUIDSYNTH_API int fluid_audio_driver_register(const char** adrivers); +FLUIDSYNTH_API int fluid_audio_driver_register(const char **adrivers); #ifdef __cplusplus } diff --git a/include/fluidsynth/event.h b/include/fluidsynth/event.h index 1f60107..cbd1fa6 100644 --- a/include/fluidsynth/event.h +++ b/include/fluidsynth/event.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -35,101 +35,102 @@ extern "C" { /** * Sequencer event type enumeration. */ -enum fluid_seq_event_type { - FLUID_SEQ_NOTE = 0, /**< Note event with duration */ - FLUID_SEQ_NOTEON, /**< Note on event */ - FLUID_SEQ_NOTEOFF, /**< Note off event */ - FLUID_SEQ_ALLSOUNDSOFF, /**< All sounds off event */ - FLUID_SEQ_ALLNOTESOFF, /**< All notes off event */ - FLUID_SEQ_BANKSELECT, /**< Bank select message */ - FLUID_SEQ_PROGRAMCHANGE, /**< Program change message */ - FLUID_SEQ_PROGRAMSELECT, /**< Program select message */ - FLUID_SEQ_PITCHBEND, /**< Pitch bend message */ - FLUID_SEQ_PITCHWHEELSENS, /**< Pitch wheel sensitivity set message @since 1.1.0 was mispelled previously */ - FLUID_SEQ_MODULATION, /**< Modulation controller event */ - FLUID_SEQ_SUSTAIN, /**< Sustain controller event */ - FLUID_SEQ_CONTROLCHANGE, /**< MIDI control change event */ - FLUID_SEQ_PAN, /**< Stereo pan set event */ - FLUID_SEQ_VOLUME, /**< Volume set event */ - FLUID_SEQ_REVERBSEND, /**< Reverb send set event */ - FLUID_SEQ_CHORUSSEND, /**< Chorus send set event */ - FLUID_SEQ_TIMER, /**< Timer event (useful for giving a callback at a certain time) */ - FLUID_SEQ_ANYCONTROLCHANGE, /**< Any control change message (only internally used for remove_events) */ - FLUID_SEQ_CHANNELPRESSURE, /**< Channel aftertouch event @since 1.1.0 */ - FLUID_SEQ_KEYPRESSURE, /**< Polyphonic aftertouch event @since 2.0.0 */ - FLUID_SEQ_SYSTEMRESET, /**< System reset event @since 1.1.0 */ - FLUID_SEQ_UNREGISTERING, /**< Called when a sequencer client is being unregistered. @since 1.1.0 */ +enum fluid_seq_event_type +{ + FLUID_SEQ_NOTE = 0, /**< Note event with duration */ + FLUID_SEQ_NOTEON, /**< Note on event */ + FLUID_SEQ_NOTEOFF, /**< Note off event */ + FLUID_SEQ_ALLSOUNDSOFF, /**< All sounds off event */ + FLUID_SEQ_ALLNOTESOFF, /**< All notes off event */ + FLUID_SEQ_BANKSELECT, /**< Bank select message */ + FLUID_SEQ_PROGRAMCHANGE, /**< Program change message */ + FLUID_SEQ_PROGRAMSELECT, /**< Program select message */ + FLUID_SEQ_PITCHBEND, /**< Pitch bend message */ + FLUID_SEQ_PITCHWHEELSENS, /**< Pitch wheel sensitivity set message @since 1.1.0 was mispelled previously */ + FLUID_SEQ_MODULATION, /**< Modulation controller event */ + FLUID_SEQ_SUSTAIN, /**< Sustain controller event */ + FLUID_SEQ_CONTROLCHANGE, /**< MIDI control change event */ + FLUID_SEQ_PAN, /**< Stereo pan set event */ + FLUID_SEQ_VOLUME, /**< Volume set event */ + FLUID_SEQ_REVERBSEND, /**< Reverb send set event */ + FLUID_SEQ_CHORUSSEND, /**< Chorus send set event */ + FLUID_SEQ_TIMER, /**< Timer event (useful for giving a callback at a certain time) */ + FLUID_SEQ_ANYCONTROLCHANGE, /**< Any control change message (only internally used for remove_events) */ + FLUID_SEQ_CHANNELPRESSURE, /**< Channel aftertouch event @since 1.1.0 */ + FLUID_SEQ_KEYPRESSURE, /**< Polyphonic aftertouch event @since 2.0.0 */ + FLUID_SEQ_SYSTEMRESET, /**< System reset event @since 1.1.0 */ + FLUID_SEQ_UNREGISTERING, /**< Called when a sequencer client is being unregistered. @since 1.1.0 */ #ifndef __DOXYGEN__ - FLUID_SEQ_LASTEVENT /**< @internal Defines the count of events enums @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ + FLUID_SEQ_LASTEVENT /**< @internal Defines the count of events enums @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ #endif }; /* Event alloc/free */ -FLUIDSYNTH_API fluid_event_t* new_fluid_event(void); -FLUIDSYNTH_API void delete_fluid_event(fluid_event_t* evt); +FLUIDSYNTH_API fluid_event_t *new_fluid_event(void); +FLUIDSYNTH_API void delete_fluid_event(fluid_event_t *evt); /* Initializing events */ -FLUIDSYNTH_API void fluid_event_set_source(fluid_event_t* evt, fluid_seq_id_t src); -FLUIDSYNTH_API void fluid_event_set_dest(fluid_event_t* evt, fluid_seq_id_t dest); +FLUIDSYNTH_API void fluid_event_set_source(fluid_event_t *evt, fluid_seq_id_t src); +FLUIDSYNTH_API void fluid_event_set_dest(fluid_event_t *evt, fluid_seq_id_t dest); /* Timer events */ -FLUIDSYNTH_API void fluid_event_timer(fluid_event_t* evt, void* data); +FLUIDSYNTH_API void fluid_event_timer(fluid_event_t *evt, void *data); /* Note events */ -FLUIDSYNTH_API void fluid_event_note(fluid_event_t* evt, int channel, - short key, short vel, - unsigned int duration); +FLUIDSYNTH_API void fluid_event_note(fluid_event_t *evt, int channel, + short key, short vel, + unsigned int duration); -FLUIDSYNTH_API void fluid_event_noteon(fluid_event_t* evt, int channel, short key, short vel); -FLUIDSYNTH_API void fluid_event_noteoff(fluid_event_t* evt, int channel, short key); -FLUIDSYNTH_API void fluid_event_all_sounds_off(fluid_event_t* evt, int channel); -FLUIDSYNTH_API void fluid_event_all_notes_off(fluid_event_t* evt, int channel); +FLUIDSYNTH_API void fluid_event_noteon(fluid_event_t *evt, int channel, short key, short vel); +FLUIDSYNTH_API void fluid_event_noteoff(fluid_event_t *evt, int channel, short key); +FLUIDSYNTH_API void fluid_event_all_sounds_off(fluid_event_t *evt, int channel); +FLUIDSYNTH_API void fluid_event_all_notes_off(fluid_event_t *evt, int channel); /* Instrument selection */ -FLUIDSYNTH_API void fluid_event_bank_select(fluid_event_t* evt, int channel, short bank_num); -FLUIDSYNTH_API void fluid_event_program_change(fluid_event_t* evt, int channel, short preset_num); -FLUIDSYNTH_API void fluid_event_program_select(fluid_event_t* evt, int channel, unsigned int sfont_id, short bank_num, short preset_num); +FLUIDSYNTH_API void fluid_event_bank_select(fluid_event_t *evt, int channel, short bank_num); +FLUIDSYNTH_API void fluid_event_program_change(fluid_event_t *evt, int channel, short preset_num); +FLUIDSYNTH_API void fluid_event_program_select(fluid_event_t *evt, int channel, unsigned int sfont_id, short bank_num, short preset_num); /* Real-time generic instrument controllers */ -FLUIDSYNTH_API -void fluid_event_control_change(fluid_event_t* evt, int channel, short control, short val); +FLUIDSYNTH_API +void fluid_event_control_change(fluid_event_t *evt, int channel, short control, short val); /* Real-time instrument controllers shortcuts */ -FLUIDSYNTH_API void fluid_event_pitch_bend(fluid_event_t* evt, int channel, int val); -FLUIDSYNTH_API void fluid_event_pitch_wheelsens(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_modulation(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_sustain(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_pan(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_volume(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_reverb_send(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_chorus_send(fluid_event_t* evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_pitch_bend(fluid_event_t *evt, int channel, int val); +FLUIDSYNTH_API void fluid_event_pitch_wheelsens(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_modulation(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_sustain(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_pan(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_volume(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_reverb_send(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_chorus_send(fluid_event_t *evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_key_pressure(fluid_event_t* evt, int channel, short key, short val); -FLUIDSYNTH_API void fluid_event_channel_pressure(fluid_event_t* evt, int channel, short val); -FLUIDSYNTH_API void fluid_event_system_reset(fluid_event_t* evt); +FLUIDSYNTH_API void fluid_event_key_pressure(fluid_event_t *evt, int channel, short key, short val); +FLUIDSYNTH_API void fluid_event_channel_pressure(fluid_event_t *evt, int channel, short val); +FLUIDSYNTH_API void fluid_event_system_reset(fluid_event_t *evt); /* Only for removing events */ -FLUIDSYNTH_API void fluid_event_any_control_change(fluid_event_t* evt, int channel); +FLUIDSYNTH_API void fluid_event_any_control_change(fluid_event_t *evt, int channel); /* Only when unregistering clients */ -FLUIDSYNTH_API void fluid_event_unregistering(fluid_event_t* evt); +FLUIDSYNTH_API void fluid_event_unregistering(fluid_event_t *evt); /* Accessing event data */ -FLUIDSYNTH_API int fluid_event_get_type(fluid_event_t* evt); -FLUIDSYNTH_API fluid_seq_id_t fluid_event_get_source(fluid_event_t* evt); -FLUIDSYNTH_API fluid_seq_id_t fluid_event_get_dest(fluid_event_t* evt); -FLUIDSYNTH_API int fluid_event_get_channel(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_key(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_velocity(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_control(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_value(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_program(fluid_event_t* evt); -FLUIDSYNTH_API void* fluid_event_get_data(fluid_event_t* evt); -FLUIDSYNTH_API unsigned int fluid_event_get_duration(fluid_event_t* evt); -FLUIDSYNTH_API short fluid_event_get_bank(fluid_event_t* evt); -FLUIDSYNTH_API int fluid_event_get_pitch(fluid_event_t* evt); -FLUIDSYNTH_API unsigned int fluid_event_get_sfont_id(fluid_event_t* evt); +FLUIDSYNTH_API int fluid_event_get_type(fluid_event_t *evt); +FLUIDSYNTH_API fluid_seq_id_t fluid_event_get_source(fluid_event_t *evt); +FLUIDSYNTH_API fluid_seq_id_t fluid_event_get_dest(fluid_event_t *evt); +FLUIDSYNTH_API int fluid_event_get_channel(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_key(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_velocity(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_control(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_value(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_program(fluid_event_t *evt); +FLUIDSYNTH_API void *fluid_event_get_data(fluid_event_t *evt); +FLUIDSYNTH_API unsigned int fluid_event_get_duration(fluid_event_t *evt); +FLUIDSYNTH_API short fluid_event_get_bank(fluid_event_t *evt); +FLUIDSYNTH_API int fluid_event_get_pitch(fluid_event_t *evt); +FLUIDSYNTH_API unsigned int fluid_event_get_sfont_id(fluid_event_t *evt); #ifdef __cplusplus } diff --git a/include/fluidsynth/gen.h b/include/fluidsynth/gen.h index 74ccd21..4b62583 100644 --- a/include/fluidsynth/gen.h +++ b/include/fluidsynth/gen.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -33,80 +33,81 @@ extern "C" { /** * Generator (effect) numbers (Soundfont 2.01 specifications section 8.1.3) */ -enum fluid_gen_type { - GEN_STARTADDROFS, /**< Sample start address offset (0-32767) */ - GEN_ENDADDROFS, /**< Sample end address offset (-32767-0) */ - GEN_STARTLOOPADDROFS, /**< Sample loop start address offset (-32767-32767) */ - GEN_ENDLOOPADDROFS, /**< Sample loop end address offset (-32767-32767) */ - GEN_STARTADDRCOARSEOFS, /**< Sample start address coarse offset (X 32768) */ - GEN_MODLFOTOPITCH, /**< Modulation LFO to pitch */ - GEN_VIBLFOTOPITCH, /**< Vibrato LFO to pitch */ - GEN_MODENVTOPITCH, /**< Modulation envelope to pitch */ - GEN_FILTERFC, /**< Filter cutoff */ - GEN_FILTERQ, /**< Filter Q */ - GEN_MODLFOTOFILTERFC, /**< Modulation LFO to filter cutoff */ - GEN_MODENVTOFILTERFC, /**< Modulation envelope to filter cutoff */ - GEN_ENDADDRCOARSEOFS, /**< Sample end address coarse offset (X 32768) */ - GEN_MODLFOTOVOL, /**< Modulation LFO to volume */ - GEN_UNUSED1, /**< Unused */ - GEN_CHORUSSEND, /**< Chorus send amount */ - GEN_REVERBSEND, /**< Reverb send amount */ - GEN_PAN, /**< Stereo panning */ - GEN_UNUSED2, /**< Unused */ - GEN_UNUSED3, /**< Unused */ - GEN_UNUSED4, /**< Unused */ - GEN_MODLFODELAY, /**< Modulation LFO delay */ - GEN_MODLFOFREQ, /**< Modulation LFO frequency */ - GEN_VIBLFODELAY, /**< Vibrato LFO delay */ - GEN_VIBLFOFREQ, /**< Vibrato LFO frequency */ - GEN_MODENVDELAY, /**< Modulation envelope delay */ - GEN_MODENVATTACK, /**< Modulation envelope attack */ - GEN_MODENVHOLD, /**< Modulation envelope hold */ - GEN_MODENVDECAY, /**< Modulation envelope decay */ - GEN_MODENVSUSTAIN, /**< Modulation envelope sustain */ - GEN_MODENVRELEASE, /**< Modulation envelope release */ - GEN_KEYTOMODENVHOLD, /**< Key to modulation envelope hold */ - GEN_KEYTOMODENVDECAY, /**< Key to modulation envelope decay */ - GEN_VOLENVDELAY, /**< Volume envelope delay */ - GEN_VOLENVATTACK, /**< Volume envelope attack */ - GEN_VOLENVHOLD, /**< Volume envelope hold */ - GEN_VOLENVDECAY, /**< Volume envelope decay */ - GEN_VOLENVSUSTAIN, /**< Volume envelope sustain */ - GEN_VOLENVRELEASE, /**< Volume envelope release */ - GEN_KEYTOVOLENVHOLD, /**< Key to volume envelope hold */ - GEN_KEYTOVOLENVDECAY, /**< Key to volume envelope decay */ - GEN_INSTRUMENT, /**< Instrument ID (shouldn't be set by user) */ - GEN_RESERVED1, /**< Reserved */ - GEN_KEYRANGE, /**< MIDI note range */ - GEN_VELRANGE, /**< MIDI velocity range */ - GEN_STARTLOOPADDRCOARSEOFS, /**< Sample start loop address coarse offset (X 32768) */ - GEN_KEYNUM, /**< Fixed MIDI note number */ - GEN_VELOCITY, /**< Fixed MIDI velocity value */ - GEN_ATTENUATION, /**< Initial volume attenuation */ - GEN_RESERVED2, /**< Reserved */ - GEN_ENDLOOPADDRCOARSEOFS, /**< Sample end loop address coarse offset (X 32768) */ - GEN_COARSETUNE, /**< Coarse tuning */ - GEN_FINETUNE, /**< Fine tuning */ - GEN_SAMPLEID, /**< Sample ID (shouldn't be set by user) */ - GEN_SAMPLEMODE, /**< Sample mode flags */ - GEN_RESERVED3, /**< Reserved */ - GEN_SCALETUNE, /**< Scale tuning */ - GEN_EXCLUSIVECLASS, /**< Exclusive class number */ - GEN_OVERRIDEROOTKEY, /**< Sample root note override */ +enum fluid_gen_type +{ + GEN_STARTADDROFS, /**< Sample start address offset (0-32767) */ + GEN_ENDADDROFS, /**< Sample end address offset (-32767-0) */ + GEN_STARTLOOPADDROFS, /**< Sample loop start address offset (-32767-32767) */ + GEN_ENDLOOPADDROFS, /**< Sample loop end address offset (-32767-32767) */ + GEN_STARTADDRCOARSEOFS, /**< Sample start address coarse offset (X 32768) */ + GEN_MODLFOTOPITCH, /**< Modulation LFO to pitch */ + GEN_VIBLFOTOPITCH, /**< Vibrato LFO to pitch */ + GEN_MODENVTOPITCH, /**< Modulation envelope to pitch */ + GEN_FILTERFC, /**< Filter cutoff */ + GEN_FILTERQ, /**< Filter Q */ + GEN_MODLFOTOFILTERFC, /**< Modulation LFO to filter cutoff */ + GEN_MODENVTOFILTERFC, /**< Modulation envelope to filter cutoff */ + GEN_ENDADDRCOARSEOFS, /**< Sample end address coarse offset (X 32768) */ + GEN_MODLFOTOVOL, /**< Modulation LFO to volume */ + GEN_UNUSED1, /**< Unused */ + GEN_CHORUSSEND, /**< Chorus send amount */ + GEN_REVERBSEND, /**< Reverb send amount */ + GEN_PAN, /**< Stereo panning */ + GEN_UNUSED2, /**< Unused */ + GEN_UNUSED3, /**< Unused */ + GEN_UNUSED4, /**< Unused */ + GEN_MODLFODELAY, /**< Modulation LFO delay */ + GEN_MODLFOFREQ, /**< Modulation LFO frequency */ + GEN_VIBLFODELAY, /**< Vibrato LFO delay */ + GEN_VIBLFOFREQ, /**< Vibrato LFO frequency */ + GEN_MODENVDELAY, /**< Modulation envelope delay */ + GEN_MODENVATTACK, /**< Modulation envelope attack */ + GEN_MODENVHOLD, /**< Modulation envelope hold */ + GEN_MODENVDECAY, /**< Modulation envelope decay */ + GEN_MODENVSUSTAIN, /**< Modulation envelope sustain */ + GEN_MODENVRELEASE, /**< Modulation envelope release */ + GEN_KEYTOMODENVHOLD, /**< Key to modulation envelope hold */ + GEN_KEYTOMODENVDECAY, /**< Key to modulation envelope decay */ + GEN_VOLENVDELAY, /**< Volume envelope delay */ + GEN_VOLENVATTACK, /**< Volume envelope attack */ + GEN_VOLENVHOLD, /**< Volume envelope hold */ + GEN_VOLENVDECAY, /**< Volume envelope decay */ + GEN_VOLENVSUSTAIN, /**< Volume envelope sustain */ + GEN_VOLENVRELEASE, /**< Volume envelope release */ + GEN_KEYTOVOLENVHOLD, /**< Key to volume envelope hold */ + GEN_KEYTOVOLENVDECAY, /**< Key to volume envelope decay */ + GEN_INSTRUMENT, /**< Instrument ID (shouldn't be set by user) */ + GEN_RESERVED1, /**< Reserved */ + GEN_KEYRANGE, /**< MIDI note range */ + GEN_VELRANGE, /**< MIDI velocity range */ + GEN_STARTLOOPADDRCOARSEOFS, /**< Sample start loop address coarse offset (X 32768) */ + GEN_KEYNUM, /**< Fixed MIDI note number */ + GEN_VELOCITY, /**< Fixed MIDI velocity value */ + GEN_ATTENUATION, /**< Initial volume attenuation */ + GEN_RESERVED2, /**< Reserved */ + GEN_ENDLOOPADDRCOARSEOFS, /**< Sample end loop address coarse offset (X 32768) */ + GEN_COARSETUNE, /**< Coarse tuning */ + GEN_FINETUNE, /**< Fine tuning */ + GEN_SAMPLEID, /**< Sample ID (shouldn't be set by user) */ + GEN_SAMPLEMODE, /**< Sample mode flags */ + GEN_RESERVED3, /**< Reserved */ + GEN_SCALETUNE, /**< Scale tuning */ + GEN_EXCLUSIVECLASS, /**< Exclusive class number */ + GEN_OVERRIDEROOTKEY, /**< Sample root note override */ - /* the initial pitch is not a "standard" generator. It is not - * mentioned in the list of generator in the SF2 specifications. It - * is used, however, as the destination for the default pitch wheel - * modulator. */ - GEN_PITCH, /**< Pitch @note Not a real SoundFont generator */ + /* the initial pitch is not a "standard" generator. It is not + * mentioned in the list of generator in the SF2 specifications. It + * is used, however, as the destination for the default pitch wheel + * modulator. */ + GEN_PITCH, /**< Pitch @note Not a real SoundFont generator */ + + GEN_CUSTOM_BALANCE, /**< Balance @note Not a real SoundFont generator */ + /* non-standard generator for an additional custom high- or low-pass filter */ + GEN_CUSTOM_FILTERFC, /**< Custom filter cutoff frequency */ + GEN_CUSTOM_FILTERQ, /**< Custom filter Q */ - GEN_CUSTOM_BALANCE, /**< Balance @note Not a real SoundFont generator */ - /* non-standard generator for an additional custom high- or low-pass filter */ - GEN_CUSTOM_FILTERFC, /**< Custom filter cutoff frequency */ - GEN_CUSTOM_FILTERQ, /**< Custom filter Q */ - #ifndef __DOXYGEN__ - GEN_LAST /**< @internal Value defines the count of generators (#fluid_gen_type) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ + GEN_LAST /**< @internal Value defines the count of generators (#fluid_gen_type) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ #endif }; diff --git a/include/fluidsynth/ladspa.h b/include/fluidsynth/ladspa.h index f12bb33..978ce6d 100644 --- a/include/fluidsynth/ladspa.h +++ b/include/fluidsynth/ladspa.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -28,10 +28,10 @@ extern "C" { /** * @file ladspa.h * @brief Functions for manipulating the ladspa effects unit - * - * This header defines useful functions for programatically manipulating the ladspa + * + * This header defines useful functions for programatically manipulating the ladspa * effects unit of the synth that can be retrieved via fluid_synth_get_ladspa_fx(). - * + * * Using any of those functions requires fluidsynth to be compiled with ladspa support. * Else all of those functions are useless dummies. */ @@ -56,7 +56,7 @@ FLUIDSYNTH_API int fluid_ladspa_effect_set_control(fluid_ladspa_fx_t *fx, const const char *port_name, float val); FLUIDSYNTH_API int fluid_ladspa_effect_link(fluid_ladspa_fx_t *fx, const char *effect_name, const char *port_name, const char *name); - + #ifdef __cplusplus } #endif diff --git a/include/fluidsynth/log.h b/include/fluidsynth/log.h index 61bbef2..00d802f 100644 --- a/include/fluidsynth/log.h +++ b/include/fluidsynth/log.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -52,14 +52,15 @@ extern "C" { /** * FluidSynth log levels. */ -enum fluid_log_level { - FLUID_PANIC, /**< The synth can't function correctly any more */ - FLUID_ERR, /**< Serious error occurred */ - FLUID_WARN, /**< Warning */ - FLUID_INFO, /**< Verbose informational messages */ - FLUID_DBG, /**< Debugging messages */ +enum fluid_log_level +{ + FLUID_PANIC, /**< The synth can't function correctly any more */ + FLUID_ERR, /**< Serious error occurred */ + FLUID_WARN, /**< Warning */ + FLUID_INFO, /**< Verbose informational messages */ + FLUID_DBG, /**< Debugging messages */ #ifndef __DOXYGEN__ - LAST_LOG_LEVEL /**< @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ + LAST_LOG_LEVEL /**< @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ #endif }; @@ -69,12 +70,12 @@ enum fluid_log_level { * @param message Log message text * @param data User data pointer supplied to fluid_set_log_function(). */ -typedef void (*fluid_log_function_t)(int level, char* message, void* data); +typedef void (*fluid_log_function_t)(int level, const char *message, void *data); -FLUIDSYNTH_API -fluid_log_function_t fluid_set_log_function(int level, fluid_log_function_t fun, void* data); +FLUIDSYNTH_API +fluid_log_function_t fluid_set_log_function(int level, fluid_log_function_t fun, void *data); -FLUIDSYNTH_API void fluid_default_log_function(int level, char* message, void* data); +FLUIDSYNTH_API void fluid_default_log_function(int level, const char *message, void *data); FLUIDSYNTH_API int fluid_log(int level, const char *fmt, ...); diff --git a/include/fluidsynth/midi.h b/include/fluidsynth/midi.h index dafc034..9ddeef0 100644 --- a/include/fluidsynth/midi.h +++ b/include/fluidsynth/midi.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -30,31 +30,35 @@ extern "C" { * @brief Functions for MIDI events, drivers and MIDI file playback. */ -FLUIDSYNTH_API fluid_midi_event_t* new_fluid_midi_event(void); -FLUIDSYNTH_API void delete_fluid_midi_event(fluid_midi_event_t* event); +FLUIDSYNTH_API fluid_midi_event_t *new_fluid_midi_event(void); +FLUIDSYNTH_API void delete_fluid_midi_event(fluid_midi_event_t *event); -FLUIDSYNTH_API int fluid_midi_event_set_type(fluid_midi_event_t* evt, int type); -FLUIDSYNTH_API int fluid_midi_event_get_type(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_channel(fluid_midi_event_t* evt, int chan); -FLUIDSYNTH_API int fluid_midi_event_get_channel(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_get_key(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_key(fluid_midi_event_t* evt, int key); -FLUIDSYNTH_API int fluid_midi_event_get_velocity(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_velocity(fluid_midi_event_t* evt, int vel); -FLUIDSYNTH_API int fluid_midi_event_get_control(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_control(fluid_midi_event_t* evt, int ctrl); -FLUIDSYNTH_API int fluid_midi_event_get_value(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_value(fluid_midi_event_t* evt, int val); -FLUIDSYNTH_API int fluid_midi_event_get_program(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_program(fluid_midi_event_t* evt, int val); -FLUIDSYNTH_API int fluid_midi_event_get_pitch(fluid_midi_event_t* evt); -FLUIDSYNTH_API int fluid_midi_event_set_pitch(fluid_midi_event_t* evt, int val); -FLUIDSYNTH_API int fluid_midi_event_set_sysex(fluid_midi_event_t* evt, void *data, - int size, int dynamic); +FLUIDSYNTH_API int fluid_midi_event_set_type(fluid_midi_event_t *evt, int type); +FLUIDSYNTH_API int fluid_midi_event_get_type(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_channel(fluid_midi_event_t *evt, int chan); +FLUIDSYNTH_API int fluid_midi_event_get_channel(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_get_key(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_key(fluid_midi_event_t *evt, int key); +FLUIDSYNTH_API int fluid_midi_event_get_velocity(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_velocity(fluid_midi_event_t *evt, int vel); +FLUIDSYNTH_API int fluid_midi_event_get_control(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_control(fluid_midi_event_t *evt, int ctrl); +FLUIDSYNTH_API int fluid_midi_event_get_value(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_value(fluid_midi_event_t *evt, int val); +FLUIDSYNTH_API int fluid_midi_event_get_program(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_program(fluid_midi_event_t *evt, int val); +FLUIDSYNTH_API int fluid_midi_event_get_pitch(fluid_midi_event_t *evt); +FLUIDSYNTH_API int fluid_midi_event_set_pitch(fluid_midi_event_t *evt, int val); +FLUIDSYNTH_API int fluid_midi_event_set_sysex(fluid_midi_event_t *evt, void *data, + int size, int dynamic); FLUIDSYNTH_API int fluid_midi_event_set_text(fluid_midi_event_t *evt, - void *data, int size, int dynamic); + void *data, int size, int dynamic); +FLUIDSYNTH_API int fluid_midi_event_get_text(fluid_midi_event_t *evt, + void **data, int *size); FLUIDSYNTH_API int fluid_midi_event_set_lyrics(fluid_midi_event_t *evt, - void *data, int size, int dynamic); + void *data, int size, int dynamic); +FLUIDSYNTH_API int fluid_midi_event_get_lyrics(fluid_midi_event_t *evt, + void **data, int *size); /** * MIDI router rule type. @@ -62,14 +66,14 @@ FLUIDSYNTH_API int fluid_midi_event_set_lyrics(fluid_midi_event_t *evt, */ typedef enum { - FLUID_MIDI_ROUTER_RULE_NOTE, /**< MIDI note rule */ - FLUID_MIDI_ROUTER_RULE_CC, /**< MIDI controller rule */ - FLUID_MIDI_ROUTER_RULE_PROG_CHANGE, /**< MIDI program change rule */ - FLUID_MIDI_ROUTER_RULE_PITCH_BEND, /**< MIDI pitch bend rule */ - FLUID_MIDI_ROUTER_RULE_CHANNEL_PRESSURE, /**< MIDI channel pressure rule */ - FLUID_MIDI_ROUTER_RULE_KEY_PRESSURE, /**< MIDI key pressure rule */ + FLUID_MIDI_ROUTER_RULE_NOTE, /**< MIDI note rule */ + FLUID_MIDI_ROUTER_RULE_CC, /**< MIDI controller rule */ + FLUID_MIDI_ROUTER_RULE_PROG_CHANGE, /**< MIDI program change rule */ + FLUID_MIDI_ROUTER_RULE_PITCH_BEND, /**< MIDI pitch bend rule */ + FLUID_MIDI_ROUTER_RULE_CHANNEL_PRESSURE, /**< MIDI channel pressure rule */ + FLUID_MIDI_ROUTER_RULE_KEY_PRESSURE, /**< MIDI key pressure rule */ #ifndef __DOXYGEN__ - FLUID_MIDI_ROUTER_RULE_COUNT /**< @internal Total count of rule types @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time!*/ + FLUID_MIDI_ROUTER_RULE_COUNT /**< @internal Total count of rule types @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time!*/ #endif } fluid_midi_router_rule_type; @@ -85,35 +89,35 @@ typedef enum * to communicate events. * In the not-so-far future... */ -typedef int (*handle_midi_event_func_t)(void* data, fluid_midi_event_t* event); +typedef int (*handle_midi_event_func_t)(void *data, fluid_midi_event_t *event); -FLUIDSYNTH_API fluid_midi_router_t* new_fluid_midi_router(fluid_settings_t* settings, - handle_midi_event_func_t handler, - void* event_handler_data); -FLUIDSYNTH_API void delete_fluid_midi_router(fluid_midi_router_t* handler); -FLUIDSYNTH_API int fluid_midi_router_set_default_rules (fluid_midi_router_t *router); -FLUIDSYNTH_API int fluid_midi_router_clear_rules (fluid_midi_router_t *router); -FLUIDSYNTH_API int fluid_midi_router_add_rule (fluid_midi_router_t *router, - fluid_midi_router_rule_t *rule, int type); -FLUIDSYNTH_API fluid_midi_router_rule_t *new_fluid_midi_router_rule (void); -FLUIDSYNTH_API void delete_fluid_midi_router_rule (fluid_midi_router_rule_t *rule); -FLUIDSYNTH_API void fluid_midi_router_rule_set_chan (fluid_midi_router_rule_t *rule, - int min, int max, float mul, int add); -FLUIDSYNTH_API void fluid_midi_router_rule_set_param1 (fluid_midi_router_rule_t *rule, - int min, int max, float mul, int add); -FLUIDSYNTH_API void fluid_midi_router_rule_set_param2 (fluid_midi_router_rule_t *rule, - int min, int max, float mul, int add); -FLUIDSYNTH_API int fluid_midi_router_handle_midi_event(void* data, fluid_midi_event_t* event); -FLUIDSYNTH_API int fluid_midi_dump_prerouter(void* data, fluid_midi_event_t* event); -FLUIDSYNTH_API int fluid_midi_dump_postrouter(void* data, fluid_midi_event_t* event); +FLUIDSYNTH_API fluid_midi_router_t *new_fluid_midi_router(fluid_settings_t *settings, + handle_midi_event_func_t handler, + void *event_handler_data); +FLUIDSYNTH_API void delete_fluid_midi_router(fluid_midi_router_t *handler); +FLUIDSYNTH_API int fluid_midi_router_set_default_rules(fluid_midi_router_t *router); +FLUIDSYNTH_API int fluid_midi_router_clear_rules(fluid_midi_router_t *router); +FLUIDSYNTH_API int fluid_midi_router_add_rule(fluid_midi_router_t *router, + fluid_midi_router_rule_t *rule, int type); +FLUIDSYNTH_API fluid_midi_router_rule_t *new_fluid_midi_router_rule(void); +FLUIDSYNTH_API void delete_fluid_midi_router_rule(fluid_midi_router_rule_t *rule); +FLUIDSYNTH_API void fluid_midi_router_rule_set_chan(fluid_midi_router_rule_t *rule, + int min, int max, float mul, int add); +FLUIDSYNTH_API void fluid_midi_router_rule_set_param1(fluid_midi_router_rule_t *rule, + int min, int max, float mul, int add); +FLUIDSYNTH_API void fluid_midi_router_rule_set_param2(fluid_midi_router_rule_t *rule, + int min, int max, float mul, int add); +FLUIDSYNTH_API int fluid_midi_router_handle_midi_event(void *data, fluid_midi_event_t *event); +FLUIDSYNTH_API int fluid_midi_dump_prerouter(void *data, fluid_midi_event_t *event); +FLUIDSYNTH_API int fluid_midi_dump_postrouter(void *data, fluid_midi_event_t *event); -FLUIDSYNTH_API -fluid_midi_driver_t* new_fluid_midi_driver(fluid_settings_t* settings, - handle_midi_event_func_t handler, - void* event_handler_data); +FLUIDSYNTH_API +fluid_midi_driver_t *new_fluid_midi_driver(fluid_settings_t *settings, + handle_midi_event_func_t handler, + void *event_handler_data); -FLUIDSYNTH_API void delete_fluid_midi_driver(fluid_midi_driver_t* driver); +FLUIDSYNTH_API void delete_fluid_midi_driver(fluid_midi_driver_t *driver); /** @@ -122,32 +126,32 @@ FLUIDSYNTH_API void delete_fluid_midi_driver(fluid_midi_driver_t* driver); */ enum fluid_player_status { - FLUID_PLAYER_READY, /**< Player is ready */ - FLUID_PLAYER_PLAYING, /**< Player is currently playing */ - FLUID_PLAYER_DONE /**< Player is finished playing */ + FLUID_PLAYER_READY, /**< Player is ready */ + FLUID_PLAYER_PLAYING, /**< Player is currently playing */ + FLUID_PLAYER_DONE /**< Player is finished playing */ }; -FLUIDSYNTH_API fluid_player_t* new_fluid_player(fluid_synth_t* synth); -FLUIDSYNTH_API void delete_fluid_player(fluid_player_t* player); -FLUIDSYNTH_API int fluid_player_add(fluid_player_t* player, const char *midifile); -FLUIDSYNTH_API int fluid_player_add_mem(fluid_player_t* player, const void *buffer, size_t len); -FLUIDSYNTH_API int fluid_player_play(fluid_player_t* player); -FLUIDSYNTH_API int fluid_player_stop(fluid_player_t* player); -FLUIDSYNTH_API int fluid_player_join(fluid_player_t* player); -FLUIDSYNTH_API int fluid_player_set_loop(fluid_player_t* player, int loop); -FLUIDSYNTH_API int fluid_player_set_midi_tempo(fluid_player_t* player, int tempo); -FLUIDSYNTH_API int fluid_player_set_bpm(fluid_player_t* player, int bpm); -FLUIDSYNTH_API int fluid_player_set_playback_callback(fluid_player_t* player, handle_midi_event_func_t handler, void* handler_data); +FLUIDSYNTH_API fluid_player_t *new_fluid_player(fluid_synth_t *synth); +FLUIDSYNTH_API void delete_fluid_player(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_add(fluid_player_t *player, const char *midifile); +FLUIDSYNTH_API int fluid_player_add_mem(fluid_player_t *player, const void *buffer, size_t len); +FLUIDSYNTH_API int fluid_player_play(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_stop(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_join(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_set_loop(fluid_player_t *player, int loop); +FLUIDSYNTH_API int fluid_player_set_midi_tempo(fluid_player_t *player, int tempo); +FLUIDSYNTH_API int fluid_player_set_bpm(fluid_player_t *player, int bpm); +FLUIDSYNTH_API int fluid_player_set_playback_callback(fluid_player_t *player, handle_midi_event_func_t handler, void *handler_data); -FLUIDSYNTH_API int fluid_player_get_status(fluid_player_t* player); -FLUIDSYNTH_API int fluid_player_get_current_tick(fluid_player_t * player); -FLUIDSYNTH_API int fluid_player_get_total_ticks(fluid_player_t * player); -FLUIDSYNTH_API int fluid_player_get_bpm(fluid_player_t * player); -FLUIDSYNTH_API int fluid_player_get_midi_tempo(fluid_player_t * player); +FLUIDSYNTH_API int fluid_player_get_status(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_get_current_tick(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_get_total_ticks(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_get_bpm(fluid_player_t *player); +FLUIDSYNTH_API int fluid_player_get_midi_tempo(fluid_player_t *player); FLUIDSYNTH_API int fluid_player_seek(fluid_player_t *player, int ticks); /// - + #ifdef __cplusplus } #endif diff --git a/include/fluidsynth/misc.h b/include/fluidsynth/misc.h index 6e0bf65..7a2b457 100644 --- a/include/fluidsynth/misc.h +++ b/include/fluidsynth/misc.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -60,8 +60,8 @@ extern "C" { #define FLUID_FAILED (-1) -FLUIDSYNTH_API int fluid_is_soundfont (const char *filename); -FLUIDSYNTH_API int fluid_is_midifile (const char *filename); +FLUIDSYNTH_API int fluid_is_soundfont(const char *filename); +FLUIDSYNTH_API int fluid_is_midifile(const char *filename); #ifdef __cplusplus diff --git a/include/fluidsynth/mod.h b/include/fluidsynth/mod.h index 2449fdb..5ea5f89 100644 --- a/include/fluidsynth/mod.h +++ b/include/fluidsynth/mod.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -40,18 +40,18 @@ extern "C" { */ enum fluid_mod_flags { - FLUID_MOD_POSITIVE = 0, /**< Mapping function is positive */ - FLUID_MOD_NEGATIVE = 1, /**< Mapping function is negative */ - FLUID_MOD_UNIPOLAR = 0, /**< Mapping function is unipolar */ - FLUID_MOD_BIPOLAR = 2, /**< Mapping function is bipolar */ - FLUID_MOD_LINEAR = 0, /**< Linear mapping function */ - FLUID_MOD_CONCAVE = 4, /**< Concave mapping function */ - FLUID_MOD_CONVEX = 8, /**< Convex mapping function */ - FLUID_MOD_SWITCH = 12, /**< Switch (on/off) mapping function */ - FLUID_MOD_GC = 0, /**< General controller source type (#fluid_mod_src) */ - FLUID_MOD_CC = 16, /**< MIDI CC controller (source will be a MIDI CC number) */ - - FLUID_MOD_SIN = 0x80, /**< Custom non-standard sinus mapping function */ + FLUID_MOD_POSITIVE = 0, /**< Mapping function is positive */ + FLUID_MOD_NEGATIVE = 1, /**< Mapping function is negative */ + FLUID_MOD_UNIPOLAR = 0, /**< Mapping function is unipolar */ + FLUID_MOD_BIPOLAR = 2, /**< Mapping function is bipolar */ + FLUID_MOD_LINEAR = 0, /**< Linear mapping function */ + FLUID_MOD_CONCAVE = 4, /**< Concave mapping function */ + FLUID_MOD_CONVEX = 8, /**< Convex mapping function */ + FLUID_MOD_SWITCH = 12, /**< Switch (on/off) mapping function */ + FLUID_MOD_GC = 0, /**< General controller source type (#fluid_mod_src) */ + FLUID_MOD_CC = 16, /**< MIDI CC controller (source will be a MIDI CC number) */ + + FLUID_MOD_SIN = 0x80, /**< Custom non-standard sinus mapping function */ }; /** @@ -60,36 +60,36 @@ enum fluid_mod_flags */ enum fluid_mod_src { - FLUID_MOD_NONE = 0, /**< No source controller */ - FLUID_MOD_VELOCITY = 2, /**< MIDI note-on velocity */ - FLUID_MOD_KEY = 3, /**< MIDI note-on note number */ - FLUID_MOD_KEYPRESSURE = 10, /**< MIDI key pressure */ - FLUID_MOD_CHANNELPRESSURE = 13, /**< MIDI channel pressure */ - FLUID_MOD_PITCHWHEEL = 14, /**< Pitch wheel */ - FLUID_MOD_PITCHWHEELSENS = 16 /**< Pitch wheel sensitivity */ + FLUID_MOD_NONE = 0, /**< No source controller */ + FLUID_MOD_VELOCITY = 2, /**< MIDI note-on velocity */ + FLUID_MOD_KEY = 3, /**< MIDI note-on note number */ + FLUID_MOD_KEYPRESSURE = 10, /**< MIDI key pressure */ + FLUID_MOD_CHANNELPRESSURE = 13, /**< MIDI channel pressure */ + FLUID_MOD_PITCHWHEEL = 14, /**< Pitch wheel */ + FLUID_MOD_PITCHWHEELSENS = 16 /**< Pitch wheel sensitivity */ }; -FLUIDSYNTH_API fluid_mod_t* new_fluid_mod(void); -FLUIDSYNTH_API void delete_fluid_mod(fluid_mod_t * mod); +FLUIDSYNTH_API fluid_mod_t *new_fluid_mod(void); +FLUIDSYNTH_API void delete_fluid_mod(fluid_mod_t *mod); FLUIDSYNTH_API size_t fluid_mod_sizeof(void); -FLUIDSYNTH_API void fluid_mod_set_source1(fluid_mod_t* mod, int src, int flags); -FLUIDSYNTH_API void fluid_mod_set_source2(fluid_mod_t* mod, int src, int flags); -FLUIDSYNTH_API void fluid_mod_set_dest(fluid_mod_t* mod, int dst); -FLUIDSYNTH_API void fluid_mod_set_amount(fluid_mod_t* mod, double amount); +FLUIDSYNTH_API void fluid_mod_set_source1(fluid_mod_t *mod, int src, int flags); +FLUIDSYNTH_API void fluid_mod_set_source2(fluid_mod_t *mod, int src, int flags); +FLUIDSYNTH_API void fluid_mod_set_dest(fluid_mod_t *mod, int dst); +FLUIDSYNTH_API void fluid_mod_set_amount(fluid_mod_t *mod, double amount); -FLUIDSYNTH_API int fluid_mod_get_source1(const fluid_mod_t* mod); -FLUIDSYNTH_API int fluid_mod_get_flags1(const fluid_mod_t* mod); -FLUIDSYNTH_API int fluid_mod_get_source2(const fluid_mod_t* mod); -FLUIDSYNTH_API int fluid_mod_get_flags2(const fluid_mod_t* mod); -FLUIDSYNTH_API int fluid_mod_get_dest(const fluid_mod_t* mod); -FLUIDSYNTH_API double fluid_mod_get_amount(const fluid_mod_t* mod); +FLUIDSYNTH_API int fluid_mod_get_source1(const fluid_mod_t *mod); +FLUIDSYNTH_API int fluid_mod_get_flags1(const fluid_mod_t *mod); +FLUIDSYNTH_API int fluid_mod_get_source2(const fluid_mod_t *mod); +FLUIDSYNTH_API int fluid_mod_get_flags2(const fluid_mod_t *mod); +FLUIDSYNTH_API int fluid_mod_get_dest(const fluid_mod_t *mod); +FLUIDSYNTH_API double fluid_mod_get_amount(const fluid_mod_t *mod); -FLUIDSYNTH_API int fluid_mod_test_identity(const fluid_mod_t * mod1, const fluid_mod_t * mod2); -FLUIDSYNTH_API int fluid_mod_has_source(const fluid_mod_t * mod, int cc, int ctrl); -FLUIDSYNTH_API int fluid_mod_has_dest(const fluid_mod_t * mod, int gen); +FLUIDSYNTH_API int fluid_mod_test_identity(const fluid_mod_t *mod1, const fluid_mod_t *mod2); +FLUIDSYNTH_API int fluid_mod_has_source(const fluid_mod_t *mod, int cc, int ctrl); +FLUIDSYNTH_API int fluid_mod_has_dest(const fluid_mod_t *mod, int gen); -FLUIDSYNTH_API void fluid_mod_clone(fluid_mod_t* mod, const fluid_mod_t* src); +FLUIDSYNTH_API void fluid_mod_clone(fluid_mod_t *mod, const fluid_mod_t *src); #ifdef __cplusplus } diff --git a/include/fluidsynth/ramsfont.h b/include/fluidsynth/ramsfont.h deleted file mode 100644 index 7d3d1eb..0000000 --- a/include/fluidsynth/ramsfont.h +++ /dev/null @@ -1,66 +0,0 @@ -/* FluidSynth - A Software Synthesizer - * - * Copyright (C) 2003 Peter Hanappe and others. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA - */ - -/* RAM SoundFonts: October 2002 - Antoine Schmitt */ - -#ifndef _FLUIDSYNTH_RAMSFONT_H -#define _FLUIDSYNTH_RAMSFONT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file ramsfont.h - * @brief API for creating and managing SoundFont instruments in RAM. - * - * RAM SoundFonts live in ram. The samples are loaded from files - * or from RAM. A minimal API manages a soundFont structure, - * with presets, each preset having only one preset-zone, which - * instrument has potentially many instrument-zones. No global - * zones, and nor generator nor modulator other than the default - * ones are permitted. This may be extensible in the future. - */ - -FLUIDSYNTH_API fluid_sfont_t* fluid_ramsfont_create_sfont(void); -FLUIDSYNTH_API int fluid_ramsfont_set_name(fluid_ramsfont_t* sfont, const char *name); -FLUIDSYNTH_API -int fluid_ramsfont_add_izone(fluid_ramsfont_t* sfont, - int bank, int num, fluid_sample_t* sample, - int lokey, int hikey); -FLUIDSYNTH_API -int fluid_ramsfont_remove_izone(fluid_ramsfont_t* sfont, - int bank, int num, fluid_sample_t* sample); -FLUIDSYNTH_API -int fluid_ramsfont_izone_set_gen(fluid_ramsfont_t* sfont, - int bank, int num, fluid_sample_t* sample, - int gen_type, float value); -FLUIDSYNTH_API -int fluid_ramsfont_izone_set_loop(fluid_ramsfont_t* sfont, - int bank, int num, fluid_sample_t* sample, - int on, float loopstart, float loopend); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _FLUIDSYNTH_RAMSFONT_H */ diff --git a/include/fluidsynth/seq.h b/include/fluidsynth/seq.h index 69056fc..c0e6b55 100644 --- a/include/fluidsynth/seq.h +++ b/include/fluidsynth/seq.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -37,39 +37,39 @@ extern "C" { * @param seq The sequencer instance * @param data User defined data registered with the client */ -typedef void (*fluid_event_callback_t)(unsigned int time, fluid_event_t* event, - fluid_sequencer_t* seq, void* data); +typedef void (*fluid_event_callback_t)(unsigned int time, fluid_event_t *event, + fluid_sequencer_t *seq, void *data); -FLUIDSYNTH_API fluid_sequencer_t* new_fluid_sequencer(void); -FLUIDSYNTH_API fluid_sequencer_t* new_fluid_sequencer2(int use_system_timer); -FLUIDSYNTH_API void delete_fluid_sequencer(fluid_sequencer_t* seq); -FLUIDSYNTH_API int fluid_sequencer_get_use_system_timer(fluid_sequencer_t* seq); -FLUIDSYNTH_API -fluid_seq_id_t fluid_sequencer_register_client(fluid_sequencer_t* seq, const char *name, - fluid_event_callback_t callback, void* data); -FLUIDSYNTH_API void fluid_sequencer_unregister_client(fluid_sequencer_t* seq, fluid_seq_id_t id); -FLUIDSYNTH_API int fluid_sequencer_count_clients(fluid_sequencer_t* seq); -FLUIDSYNTH_API fluid_seq_id_t fluid_sequencer_get_client_id(fluid_sequencer_t* seq, int index); -FLUIDSYNTH_API char* fluid_sequencer_get_client_name(fluid_sequencer_t* seq, fluid_seq_id_t id); -FLUIDSYNTH_API int fluid_sequencer_client_is_dest(fluid_sequencer_t* seq, fluid_seq_id_t id); -FLUIDSYNTH_API void fluid_sequencer_process(fluid_sequencer_t* seq, unsigned int msec); -FLUIDSYNTH_API void fluid_sequencer_send_now(fluid_sequencer_t* seq, fluid_event_t* evt); -FLUIDSYNTH_API -int fluid_sequencer_send_at(fluid_sequencer_t* seq, fluid_event_t* evt, - unsigned int time, int absolute); -FLUIDSYNTH_API -void fluid_sequencer_remove_events(fluid_sequencer_t* seq, fluid_seq_id_t source, fluid_seq_id_t dest, int type); -FLUIDSYNTH_API unsigned int fluid_sequencer_get_tick(fluid_sequencer_t* seq); -FLUIDSYNTH_API void fluid_sequencer_set_time_scale(fluid_sequencer_t* seq, double scale); -FLUIDSYNTH_API double fluid_sequencer_get_time_scale(fluid_sequencer_t* seq); +FLUIDSYNTH_API fluid_sequencer_t *new_fluid_sequencer(void); +FLUIDSYNTH_API fluid_sequencer_t *new_fluid_sequencer2(int use_system_timer); +FLUIDSYNTH_API void delete_fluid_sequencer(fluid_sequencer_t *seq); +FLUIDSYNTH_API int fluid_sequencer_get_use_system_timer(fluid_sequencer_t *seq); +FLUIDSYNTH_API +fluid_seq_id_t fluid_sequencer_register_client(fluid_sequencer_t *seq, const char *name, + fluid_event_callback_t callback, void *data); +FLUIDSYNTH_API void fluid_sequencer_unregister_client(fluid_sequencer_t *seq, fluid_seq_id_t id); +FLUIDSYNTH_API int fluid_sequencer_count_clients(fluid_sequencer_t *seq); +FLUIDSYNTH_API fluid_seq_id_t fluid_sequencer_get_client_id(fluid_sequencer_t *seq, int index); +FLUIDSYNTH_API char *fluid_sequencer_get_client_name(fluid_sequencer_t *seq, fluid_seq_id_t id); +FLUIDSYNTH_API int fluid_sequencer_client_is_dest(fluid_sequencer_t *seq, fluid_seq_id_t id); +FLUIDSYNTH_API void fluid_sequencer_process(fluid_sequencer_t *seq, unsigned int msec); +FLUIDSYNTH_API void fluid_sequencer_send_now(fluid_sequencer_t *seq, fluid_event_t *evt); +FLUIDSYNTH_API +int fluid_sequencer_send_at(fluid_sequencer_t *seq, fluid_event_t *evt, + unsigned int time, int absolute); +FLUIDSYNTH_API +void fluid_sequencer_remove_events(fluid_sequencer_t *seq, fluid_seq_id_t source, fluid_seq_id_t dest, int type); +FLUIDSYNTH_API unsigned int fluid_sequencer_get_tick(fluid_sequencer_t *seq); +FLUIDSYNTH_API void fluid_sequencer_set_time_scale(fluid_sequencer_t *seq, double scale); +FLUIDSYNTH_API double fluid_sequencer_get_time_scale(fluid_sequencer_t *seq); // Compile in internal traceing functions #define FLUID_SEQ_WITH_TRACE 0 #if FLUID_SEQ_WITH_TRACE -FLUIDSYNTH_API char * fluid_seq_gettrace(fluid_sequencer_t* seq); -FLUIDSYNTH_API void fluid_seq_cleartrace(fluid_sequencer_t* seq); +FLUIDSYNTH_API char *fluid_seq_gettrace(fluid_sequencer_t *seq); +FLUIDSYNTH_API void fluid_seq_cleartrace(fluid_sequencer_t *seq); #endif #ifdef __cplusplus diff --git a/include/fluidsynth/seqbind.h b/include/fluidsynth/seqbind.h index 1fa707c..6385956 100644 --- a/include/fluidsynth/seqbind.h +++ b/include/fluidsynth/seqbind.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -32,10 +32,10 @@ extern "C" { * @brief Functions for binding sequencer objects to other subsystems. */ -FLUIDSYNTH_API -fluid_seq_id_t fluid_sequencer_register_fluidsynth(fluid_sequencer_t* seq, fluid_synth_t* synth); +FLUIDSYNTH_API +fluid_seq_id_t fluid_sequencer_register_fluidsynth(fluid_sequencer_t *seq, fluid_synth_t *synth); FLUIDSYNTH_API int -fluid_sequencer_add_midi_event_to_buffer(void* data, fluid_midi_event_t* event); +fluid_sequencer_add_midi_event_to_buffer(void *data, fluid_midi_event_t *event); #ifdef __cplusplus diff --git a/include/fluidsynth/settings.h b/include/fluidsynth/settings.h index 0784d99..aa7f083 100644 --- a/include/fluidsynth/settings.h +++ b/include/fluidsynth/settings.h @@ -88,67 +88,68 @@ extern "C" { * set of values. The type of each setting can be retrieved using the * function fluid_settings_get_type() */ -enum fluid_types_enum { - FLUID_NO_TYPE = -1, /**< Undefined type */ - FLUID_NUM_TYPE, /**< Numeric (double) */ - FLUID_INT_TYPE, /**< Integer */ - FLUID_STR_TYPE, /**< String */ - FLUID_SET_TYPE /**< Set of values */ +enum fluid_types_enum +{ + FLUID_NO_TYPE = -1, /**< Undefined type */ + FLUID_NUM_TYPE, /**< Numeric (double) */ + FLUID_INT_TYPE, /**< Integer */ + FLUID_STR_TYPE, /**< String */ + FLUID_SET_TYPE /**< Set of values */ }; -FLUIDSYNTH_API fluid_settings_t* new_fluid_settings(void); -FLUIDSYNTH_API void delete_fluid_settings(fluid_settings_t* settings); +FLUIDSYNTH_API fluid_settings_t *new_fluid_settings(void); +FLUIDSYNTH_API void delete_fluid_settings(fluid_settings_t *settings); FLUIDSYNTH_API -int fluid_settings_get_type(fluid_settings_t* settings, const char *name); +int fluid_settings_get_type(fluid_settings_t *settings, const char *name); FLUIDSYNTH_API -int fluid_settings_get_hints(fluid_settings_t* settings, const char *name, int* val); +int fluid_settings_get_hints(fluid_settings_t *settings, const char *name, int *val); FLUIDSYNTH_API -int fluid_settings_is_realtime(fluid_settings_t* settings, const char *name); +int fluid_settings_is_realtime(fluid_settings_t *settings, const char *name); FLUIDSYNTH_API -int fluid_settings_setstr(fluid_settings_t* settings, const char *name, const char *str); +int fluid_settings_setstr(fluid_settings_t *settings, const char *name, const char *str); FLUIDSYNTH_API -int fluid_settings_copystr(fluid_settings_t* settings, const char *name, char *str, int len); +int fluid_settings_copystr(fluid_settings_t *settings, const char *name, char *str, int len); FLUIDSYNTH_API -int fluid_settings_dupstr(fluid_settings_t* settings, const char *name, char** str); +int fluid_settings_dupstr(fluid_settings_t *settings, const char *name, char **str); FLUIDSYNTH_API -int fluid_settings_getstr_default(fluid_settings_t* settings, const char *name, char** def); +int fluid_settings_getstr_default(fluid_settings_t *settings, const char *name, char **def); FLUIDSYNTH_API -int fluid_settings_str_equal(fluid_settings_t* settings, const char *name, const char *value); +int fluid_settings_str_equal(fluid_settings_t *settings, const char *name, const char *value); FLUIDSYNTH_API -int fluid_settings_setnum(fluid_settings_t* settings, const char *name, double val); +int fluid_settings_setnum(fluid_settings_t *settings, const char *name, double val); FLUIDSYNTH_API -int fluid_settings_getnum(fluid_settings_t* settings, const char *name, double* val); +int fluid_settings_getnum(fluid_settings_t *settings, const char *name, double *val); FLUIDSYNTH_API -int fluid_settings_getnum_default(fluid_settings_t* settings, const char *name, double* val); +int fluid_settings_getnum_default(fluid_settings_t *settings, const char *name, double *val); FLUIDSYNTH_API -int fluid_settings_getnum_range(fluid_settings_t* settings, const char *name, - double* min, double* max); +int fluid_settings_getnum_range(fluid_settings_t *settings, const char *name, + double *min, double *max); FLUIDSYNTH_API -int fluid_settings_setint(fluid_settings_t* settings, const char *name, int val); +int fluid_settings_setint(fluid_settings_t *settings, const char *name, int val); FLUIDSYNTH_API -int fluid_settings_getint(fluid_settings_t* settings, const char *name, int* val); +int fluid_settings_getint(fluid_settings_t *settings, const char *name, int *val); FLUIDSYNTH_API -int fluid_settings_getint_default(fluid_settings_t* settings, const char *name, int* val); +int fluid_settings_getint_default(fluid_settings_t *settings, const char *name, int *val); FLUIDSYNTH_API -int fluid_settings_getint_range(fluid_settings_t* settings, const char *name, - int* min, int* max); +int fluid_settings_getint_range(fluid_settings_t *settings, const char *name, + int *min, int *max); /** * Callback function type used with fluid_settings_foreach_option() @@ -159,14 +160,14 @@ int fluid_settings_getint_range(fluid_settings_t* settings, const char *name, typedef void (*fluid_settings_foreach_option_t)(void *data, const char *name, const char *option); FLUIDSYNTH_API -void fluid_settings_foreach_option(fluid_settings_t* settings, - const char* name, void* data, - fluid_settings_foreach_option_t func); +void fluid_settings_foreach_option(fluid_settings_t *settings, + const char *name, void *data, + fluid_settings_foreach_option_t func); FLUIDSYNTH_API -int fluid_settings_option_count (fluid_settings_t* settings, const char* name); -FLUIDSYNTH_API char *fluid_settings_option_concat (fluid_settings_t* settings, - const char* name, - const char* separator); +int fluid_settings_option_count(fluid_settings_t *settings, const char *name); +FLUIDSYNTH_API char *fluid_settings_option_concat(fluid_settings_t *settings, + const char *name, + const char *separator); /** * Callback function type used with fluid_settings_foreach() @@ -177,8 +178,8 @@ FLUIDSYNTH_API char *fluid_settings_option_concat (fluid_settings_t* settings, typedef void (*fluid_settings_foreach_t)(void *data, const char *name, int type); FLUIDSYNTH_API -void fluid_settings_foreach(fluid_settings_t* settings, void* data, - fluid_settings_foreach_t func); +void fluid_settings_foreach(fluid_settings_t *settings, void *data, + fluid_settings_foreach_t func); #ifdef __cplusplus } diff --git a/include/fluidsynth/sfont.h b/include/fluidsynth/sfont.h index 658ef8f..0df4d6d 100644 --- a/include/fluidsynth/sfont.h +++ b/include/fluidsynth/sfont.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -38,7 +38,7 @@ extern "C" { * To add a new SoundFont loader to the synthesizer, call * fluid_synth_add_sfloader() and pass a pointer to an * #fluid_sfloader_t instance created by new_fluid_sfloader(). - * On creation, you must specify a callback function \p load + * On creation, you must specify a callback function \p load * that will be called for every file attempting to load it and * if successful returns a #fluid_sfont_t instance, or NULL if it fails. * @@ -51,7 +51,7 @@ extern "C" { * The #fluid_preset_t instance contains some functions to obtain * information from the preset (name, bank, number). The most * important callback is the noteon function. The noteon function - * is called by fluidsynth internally and + * is called by fluidsynth internally and * should call fluid_synth_alloc_voice() for every sample that has * to be played. fluid_synth_alloc_voice() expects a pointer to a * #fluid_sample_t instance and returns a pointer to the opaque @@ -64,10 +64,11 @@ extern "C" { /** * Some notification enums for presets and samples. */ -enum { - FLUID_PRESET_SELECTED, /**< Preset selected notify */ - FLUID_PRESET_UNSELECTED, /**< Preset unselected notify */ - FLUID_SAMPLE_DONE /**< Sample no longer needed notify */ +enum +{ + FLUID_PRESET_SELECTED, /**< Preset selected notify */ + FLUID_PRESET_UNSELECTED, /**< Preset unselected notify */ + FLUID_SAMPLE_DONE /**< Sample no longer needed notify */ }; /** @@ -91,7 +92,7 @@ enum fluid_sample_type * @param filename File name or other string identifier * @return The loaded instrument file (SoundFont) or NULL if an error occured. */ -typedef fluid_sfont_t* (*fluid_sfloader_load_t)(fluid_sfloader_t* loader, const char* filename); +typedef fluid_sfont_t *(*fluid_sfloader_load_t)(fluid_sfloader_t *loader, const char *filename); /** * The free method should free the memory allocated for a fluid_sfloader_t instance in @@ -100,13 +101,13 @@ typedef fluid_sfont_t* (*fluid_sfloader_load_t)(fluid_sfloader_t* loader, const * needs to be freed, setting this to delete_fluid_sfloader() is sufficient. * @param loader SoundFont loader */ -typedef void (*fluid_sfloader_free_t)(fluid_sfloader_t* loader); +typedef void (*fluid_sfloader_free_t)(fluid_sfloader_t *loader); -FLUIDSYNTH_API fluid_sfloader_t* new_fluid_sfloader(fluid_sfloader_load_t load, fluid_sfloader_free_t free); -FLUIDSYNTH_API void delete_fluid_sfloader(fluid_sfloader_t* loader); +FLUIDSYNTH_API fluid_sfloader_t *new_fluid_sfloader(fluid_sfloader_load_t load, fluid_sfloader_free_t free); +FLUIDSYNTH_API void delete_fluid_sfloader(fluid_sfloader_t *loader); -FLUIDSYNTH_API fluid_sfloader_t* new_fluid_defsfloader(fluid_settings_t* settings); +FLUIDSYNTH_API fluid_sfloader_t *new_fluid_defsfloader(fluid_settings_t *settings); /** * Opens the file or memory indicated by \c filename in binary read mode. @@ -114,44 +115,44 @@ FLUIDSYNTH_API fluid_sfloader_t* new_fluid_defsfloader(fluid_settings_t* setting * * @return returns a file handle on success, NULL otherwise */ -typedef void * (* fluid_sfloader_callback_open_t )(const char * filename); +typedef void *(* fluid_sfloader_callback_open_t)(const char *filename); /** * Reads \c count bytes to the specified buffer \c buf. - * + * * @return returns #FLUID_OK if exactly \c count bytes were successfully read, else returns #FLUID_FAILED and leaves \a buf unmodified. */ -typedef int (* fluid_sfloader_callback_read_t )(void *buf, int count, void * handle); +typedef int (* fluid_sfloader_callback_read_t)(void *buf, int count, void *handle); /** * Same purpose and behaviour as fseek. - * + * * @param origin either \c SEEK_SET, \c SEEK_CUR or \c SEEK_END - * + * * @return returns #FLUID_OK if the seek was successfully performed while not seeking beyond a buffer or file, #FLUID_FAILED otherwise */ -typedef int (* fluid_sfloader_callback_seek_t )(void * handle, long offset, int origin); +typedef int (* fluid_sfloader_callback_seek_t)(void *handle, long offset, int origin); -/** +/** * Closes the handle returned by #fluid_sfloader_callback_open_t and frees used ressources. - * + * * @return returns #FLUID_OK on success, #FLUID_FAILED on error */ -typedef int (* fluid_sfloader_callback_close_t )(void * handle); +typedef int (* fluid_sfloader_callback_close_t)(void *handle); /** @return returns current file offset or #FLUID_FAILED on error */ -typedef long (* fluid_sfloader_callback_tell_t )(void * handle); +typedef long (* fluid_sfloader_callback_tell_t)(void *handle); -FLUIDSYNTH_API int fluid_sfloader_set_callbacks(fluid_sfloader_t* loader, - fluid_sfloader_callback_open_t open, - fluid_sfloader_callback_read_t read, - fluid_sfloader_callback_seek_t seek, - fluid_sfloader_callback_tell_t tell, - fluid_sfloader_callback_close_t close); +FLUIDSYNTH_API int fluid_sfloader_set_callbacks(fluid_sfloader_t *loader, + fluid_sfloader_callback_open_t open, + fluid_sfloader_callback_read_t read, + fluid_sfloader_callback_seek_t seek, + fluid_sfloader_callback_tell_t tell, + fluid_sfloader_callback_close_t close); -FLUIDSYNTH_API int fluid_sfloader_set_data(fluid_sfloader_t* loader, void* data); -FLUIDSYNTH_API void* fluid_sfloader_get_data(fluid_sfloader_t* loader); +FLUIDSYNTH_API int fluid_sfloader_set_data(fluid_sfloader_t *loader, void *data); +FLUIDSYNTH_API void *fluid_sfloader_get_data(fluid_sfloader_t *loader); @@ -160,8 +161,8 @@ FLUIDSYNTH_API void* fluid_sfloader_get_data(fluid_sfloader_t* loader); * @param sfont Virtual SoundFont * @return The name of the virtual SoundFont. */ -typedef const char* (*fluid_sfont_get_name_t)(fluid_sfont_t* sfont); - +typedef const char *(*fluid_sfont_get_name_t)(fluid_sfont_t *sfont); + /** * Get a virtual SoundFont preset by bank and program numbers. * @param sfont Virtual SoundFont @@ -170,7 +171,7 @@ typedef const char* (*fluid_sfont_get_name_t)(fluid_sfont_t* sfont); * @return Should return an allocated virtual preset or NULL if it could not * be found. */ -typedef fluid_preset_t* (*fluid_sfont_get_preset_t)(fluid_sfont_t* sfont, int bank, int prenum); +typedef fluid_preset_t *(*fluid_sfont_get_preset_t)(fluid_sfont_t *sfont, int bank, int prenum); /** * Start virtual SoundFont preset iteration method. @@ -178,19 +179,17 @@ typedef fluid_preset_t* (*fluid_sfont_get_preset_t)(fluid_sfont_t* sfont, int ba * * Starts/re-starts virtual preset iteration in a SoundFont. */ -typedef void (*fluid_sfont_iteration_start_t)(fluid_sfont_t* sfont); +typedef void (*fluid_sfont_iteration_start_t)(fluid_sfont_t *sfont); /** * Virtual SoundFont preset iteration function. * @param sfont Virtual SoundFont - * @param preset Caller supplied uninitialized buffer to fill in with current preset information * @return NULL when no more presets are available, otherwise the a pointer to the current preset * - * Should store preset information to the caller supplied \a preset structure - * and advance the internal iteration state to the next preset for subsequent - * calls. + * Returns preset information to the caller. The returned buffer is only valid until a subsequent + * call to this function. */ -typedef fluid_preset_t* (*fluid_sfont_iteration_next_t)(fluid_sfont_t* sfont); +typedef fluid_preset_t *(*fluid_sfont_iteration_next_t)(fluid_sfont_t *sfont); /** * Method to free a virtual SoundFont bank. Any custom user provided cleanup function must ultimately call @@ -201,25 +200,25 @@ typedef fluid_preset_t* (*fluid_sfont_iteration_next_t)(fluid_sfont_t* sfont); * if some of the samples could not be freed because they are still in use, * in which case the free will be tried again later, until success. */ -typedef int (*fluid_sfont_free_t)(fluid_sfont_t* sfont); +typedef int (*fluid_sfont_free_t)(fluid_sfont_t *sfont); -FLUIDSYNTH_API fluid_sfont_t* new_fluid_sfont(fluid_sfont_get_name_t get_name, - fluid_sfont_get_preset_t get_preset, - fluid_sfont_iteration_start_t iter_start, - fluid_sfont_iteration_next_t iter_next, - fluid_sfont_free_t free); +FLUIDSYNTH_API fluid_sfont_t *new_fluid_sfont(fluid_sfont_get_name_t get_name, + fluid_sfont_get_preset_t get_preset, + fluid_sfont_iteration_start_t iter_start, + fluid_sfont_iteration_next_t iter_next, + fluid_sfont_free_t free); -FLUIDSYNTH_API int delete_fluid_sfont(fluid_sfont_t* sfont); +FLUIDSYNTH_API int delete_fluid_sfont(fluid_sfont_t *sfont); -FLUIDSYNTH_API int fluid_sfont_set_data(fluid_sfont_t* sfont, void* data); -FLUIDSYNTH_API void* fluid_sfont_get_data(fluid_sfont_t* sfont); +FLUIDSYNTH_API int fluid_sfont_set_data(fluid_sfont_t *sfont, void *data); +FLUIDSYNTH_API void *fluid_sfont_get_data(fluid_sfont_t *sfont); -FLUIDSYNTH_API int fluid_sfont_get_id(fluid_sfont_t* sfont); -FLUIDSYNTH_API const char* fluid_sfont_get_name(fluid_sfont_t* sfont); -FLUIDSYNTH_API fluid_preset_t* fluid_sfont_get_preset(fluid_sfont_t* sfont, int bank, int prenum); -FLUIDSYNTH_API void fluid_sfont_iteration_start(fluid_sfont_t* sfont); -FLUIDSYNTH_API fluid_preset_t* fluid_sfont_iteration_next(fluid_sfont_t* sfont); +FLUIDSYNTH_API int fluid_sfont_get_id(fluid_sfont_t *sfont); +FLUIDSYNTH_API const char *fluid_sfont_get_name(fluid_sfont_t *sfont); +FLUIDSYNTH_API fluid_preset_t *fluid_sfont_get_preset(fluid_sfont_t *sfont, int bank, int prenum); +FLUIDSYNTH_API void fluid_sfont_iteration_start(fluid_sfont_t *sfont); +FLUIDSYNTH_API fluid_preset_t *fluid_sfont_iteration_next(fluid_sfont_t *sfont); /** * Method to get a virtual SoundFont preset name. @@ -228,21 +227,21 @@ FLUIDSYNTH_API fluid_preset_t* fluid_sfont_iteration_next(fluid_sfont_t* sfont); * valid for the duration of the virtual preset (or the duration of the * SoundFont, in the case of preset iteration). */ -typedef const char* (*fluid_preset_get_name_t)(fluid_preset_t* preset); +typedef const char *(*fluid_preset_get_name_t)(fluid_preset_t *preset); /** * Method to get a virtual SoundFont preset MIDI bank number. * @param preset Virtual SoundFont preset * @param return The bank number of the preset */ -typedef int (*fluid_preset_get_banknum_t)(fluid_preset_t* preset); +typedef int (*fluid_preset_get_banknum_t)(fluid_preset_t *preset); /** * Method to get a virtual SoundFont preset MIDI program number. * @param preset Virtual SoundFont preset * @param return The program number of the preset */ -typedef int (*fluid_preset_get_num_t)(fluid_preset_t* preset); +typedef int (*fluid_preset_get_num_t)(fluid_preset_t *preset); /** * Method to handle a noteon event (synthesize the instrument). @@ -266,7 +265,7 @@ typedef int (*fluid_preset_get_num_t)(fluid_preset_t* preset); * start playing the synthesis voice. Starting with FluidSynth 1.1.0 all voices * created will be started at the same time. */ -typedef int (*fluid_preset_noteon_t)(fluid_preset_t* preset, fluid_synth_t* synth, int chan, int key, int vel); +typedef int (*fluid_preset_noteon_t)(fluid_preset_t *preset, fluid_synth_t *synth, int chan, int key, int vel); /** * Method to free a virtual SoundFont preset. Any custom user provided cleanup function must ultimately call @@ -275,38 +274,38 @@ typedef int (*fluid_preset_noteon_t)(fluid_preset_t* preset, fluid_synth_t* synt * @param preset Virtual SoundFont preset * @return Should return 0 */ -typedef void (*fluid_preset_free_t)(fluid_preset_t* preset); +typedef void (*fluid_preset_free_t)(fluid_preset_t *preset); -FLUIDSYNTH_API fluid_preset_t* new_fluid_preset(fluid_sfont_t* parent_sfont, - fluid_preset_get_name_t get_name, - fluid_preset_get_banknum_t get_bank, - fluid_preset_get_num_t get_num, - fluid_preset_noteon_t noteon, - fluid_preset_free_t free); -FLUIDSYNTH_API void delete_fluid_preset(fluid_preset_t* preset); +FLUIDSYNTH_API fluid_preset_t *new_fluid_preset(fluid_sfont_t *parent_sfont, + fluid_preset_get_name_t get_name, + fluid_preset_get_banknum_t get_bank, + fluid_preset_get_num_t get_num, + fluid_preset_noteon_t noteon, + fluid_preset_free_t free); +FLUIDSYNTH_API void delete_fluid_preset(fluid_preset_t *preset); -FLUIDSYNTH_API int fluid_preset_set_data(fluid_preset_t* preset, void* data); -FLUIDSYNTH_API void* fluid_preset_get_data(fluid_preset_t* preset); +FLUIDSYNTH_API int fluid_preset_set_data(fluid_preset_t *preset, void *data); +FLUIDSYNTH_API void *fluid_preset_get_data(fluid_preset_t *preset); -FLUIDSYNTH_API const char* fluid_preset_get_name(fluid_preset_t* preset); -FLUIDSYNTH_API int fluid_preset_get_banknum(fluid_preset_t* preset); -FLUIDSYNTH_API int fluid_preset_get_num(fluid_preset_t* preset); -FLUIDSYNTH_API fluid_sfont_t* fluid_preset_get_sfont(fluid_preset_t* preset); +FLUIDSYNTH_API const char *fluid_preset_get_name(fluid_preset_t *preset); +FLUIDSYNTH_API int fluid_preset_get_banknum(fluid_preset_t *preset); +FLUIDSYNTH_API int fluid_preset_get_num(fluid_preset_t *preset); +FLUIDSYNTH_API fluid_sfont_t *fluid_preset_get_sfont(fluid_preset_t *preset); -FLUIDSYNTH_API fluid_sample_t* new_fluid_sample(void); -FLUIDSYNTH_API void delete_fluid_sample(fluid_sample_t* sample); +FLUIDSYNTH_API fluid_sample_t *new_fluid_sample(void); +FLUIDSYNTH_API void delete_fluid_sample(fluid_sample_t *sample); FLUIDSYNTH_API size_t fluid_sample_sizeof(void); -FLUIDSYNTH_API int fluid_sample_set_name(fluid_sample_t* sample, const char *name); -FLUIDSYNTH_API int fluid_sample_set_sound_data (fluid_sample_t* sample, - short *data, - char *data24, - unsigned int nbframes, - unsigned int sample_rate, - short copy_data); +FLUIDSYNTH_API int fluid_sample_set_name(fluid_sample_t *sample, const char *name); +FLUIDSYNTH_API int fluid_sample_set_sound_data(fluid_sample_t *sample, + short *data, + char *data24, + unsigned int nbframes, + unsigned int sample_rate, + short copy_data); -FLUIDSYNTH_API int fluid_sample_set_loop(fluid_sample_t* sample, unsigned int loop_start, unsigned int loop_end); -FLUIDSYNTH_API int fluid_sample_set_pitch(fluid_sample_t* sample, int root_key, int fine_tune); +FLUIDSYNTH_API int fluid_sample_set_loop(fluid_sample_t *sample, unsigned int loop_start, unsigned int loop_end); +FLUIDSYNTH_API int fluid_sample_set_pitch(fluid_sample_t *sample, int root_key, int fine_tune); #ifdef __cplusplus } diff --git a/include/fluidsynth/shell.h b/include/fluidsynth/shell.h index c20b2e2..f9c17e0 100644 --- a/include/fluidsynth/shell.h +++ b/include/fluidsynth/shell.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -39,55 +39,55 @@ extern "C" { FLUIDSYNTH_API fluid_istream_t fluid_get_stdin(void); FLUIDSYNTH_API fluid_ostream_t fluid_get_stdout(void); -FLUIDSYNTH_API char* fluid_get_userconf(char* buf, int len); -FLUIDSYNTH_API char* fluid_get_sysconf(char* buf, int len); +FLUIDSYNTH_API char *fluid_get_userconf(char *buf, int len); +FLUIDSYNTH_API char *fluid_get_sysconf(char *buf, int len); /* The command handler */ -FLUIDSYNTH_API -fluid_cmd_handler_t* new_fluid_cmd_handler(fluid_synth_t* synth, fluid_midi_router_t* router); +FLUIDSYNTH_API +fluid_cmd_handler_t *new_fluid_cmd_handler(fluid_synth_t *synth, fluid_midi_router_t *router); -FLUIDSYNTH_API -void delete_fluid_cmd_handler(fluid_cmd_handler_t* handler); +FLUIDSYNTH_API +void delete_fluid_cmd_handler(fluid_cmd_handler_t *handler); -FLUIDSYNTH_API -void fluid_cmd_handler_set_synth(fluid_cmd_handler_t* handler, fluid_synth_t* synth); +FLUIDSYNTH_API +void fluid_cmd_handler_set_synth(fluid_cmd_handler_t *handler, fluid_synth_t *synth); /* Command function */ -FLUIDSYNTH_API -int fluid_command(fluid_cmd_handler_t* handler, const char *cmd, fluid_ostream_t out); +FLUIDSYNTH_API +int fluid_command(fluid_cmd_handler_t *handler, const char *cmd, fluid_ostream_t out); -FLUIDSYNTH_API -int fluid_source(fluid_cmd_handler_t* handler, const char *filename); +FLUIDSYNTH_API +int fluid_source(fluid_cmd_handler_t *handler, const char *filename); -FLUIDSYNTH_API -void fluid_usershell(fluid_settings_t* settings, fluid_cmd_handler_t* handler); +FLUIDSYNTH_API +void fluid_usershell(fluid_settings_t *settings, fluid_cmd_handler_t *handler); /* Shell */ -FLUIDSYNTH_API -fluid_shell_t* new_fluid_shell(fluid_settings_t* settings, fluid_cmd_handler_t* handler, - fluid_istream_t in, fluid_ostream_t out, int thread); +FLUIDSYNTH_API +fluid_shell_t *new_fluid_shell(fluid_settings_t *settings, fluid_cmd_handler_t *handler, + fluid_istream_t in, fluid_ostream_t out, int thread); -FLUIDSYNTH_API void delete_fluid_shell(fluid_shell_t* shell); +FLUIDSYNTH_API void delete_fluid_shell(fluid_shell_t *shell); /* TCP/IP server */ -FLUIDSYNTH_API -fluid_server_t* new_fluid_server(fluid_settings_t* settings, - fluid_synth_t* synth, fluid_midi_router_t* router); +FLUIDSYNTH_API +fluid_server_t *new_fluid_server(fluid_settings_t *settings, + fluid_synth_t *synth, fluid_midi_router_t *router); -FLUIDSYNTH_API void delete_fluid_server(fluid_server_t* server); +FLUIDSYNTH_API void delete_fluid_server(fluid_server_t *server); -FLUIDSYNTH_API int fluid_server_join(fluid_server_t* server); +FLUIDSYNTH_API int fluid_server_join(fluid_server_t *server); #ifdef __cplusplus diff --git a/include/fluidsynth/synth.h b/include/fluidsynth/synth.h index 72940d4..369a2c2 100644 --- a/include/fluidsynth/synth.h +++ b/include/fluidsynth/synth.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -30,112 +30,112 @@ extern "C" { /** * @file synth.h * @brief Embeddable SoundFont synthesizer - * + * * You create a new synthesizer with new_fluid_synth() and you destroy * if with delete_fluid_synth(). Use the settings structure to specify - * the synthesizer characteristics. + * the synthesizer characteristics. * * You have to load a SoundFont in order to hear any sound. For that * you use the fluid_synth_sfload() function. * * You can use the audio driver functions described below to open * the audio device and create a background audio thread. - * + * * The API for sending MIDI events is probably what you expect: * fluid_synth_noteon(), fluid_synth_noteoff(), ... */ -FLUIDSYNTH_API fluid_synth_t* new_fluid_synth(fluid_settings_t* settings); -FLUIDSYNTH_API void delete_fluid_synth(fluid_synth_t* synth); -FLUIDSYNTH_API fluid_settings_t* fluid_synth_get_settings(fluid_synth_t* synth); +FLUIDSYNTH_API fluid_synth_t *new_fluid_synth(fluid_settings_t *settings); +FLUIDSYNTH_API void delete_fluid_synth(fluid_synth_t *synth); +FLUIDSYNTH_API fluid_settings_t *fluid_synth_get_settings(fluid_synth_t *synth); /* MIDI channel messages */ -FLUIDSYNTH_API int fluid_synth_noteon(fluid_synth_t* synth, int chan, int key, int vel); -FLUIDSYNTH_API int fluid_synth_noteoff(fluid_synth_t* synth, int chan, int key); -FLUIDSYNTH_API int fluid_synth_cc(fluid_synth_t* synth, int chan, int ctrl, int val); -FLUIDSYNTH_API int fluid_synth_get_cc(fluid_synth_t* synth, int chan, int ctrl, int* pval); +FLUIDSYNTH_API int fluid_synth_noteon(fluid_synth_t *synth, int chan, int key, int vel); +FLUIDSYNTH_API int fluid_synth_noteoff(fluid_synth_t *synth, int chan, int key); +FLUIDSYNTH_API int fluid_synth_cc(fluid_synth_t *synth, int chan, int ctrl, int val); +FLUIDSYNTH_API int fluid_synth_get_cc(fluid_synth_t *synth, int chan, int ctrl, int *pval); FLUIDSYNTH_API int fluid_synth_sysex(fluid_synth_t *synth, const char *data, int len, char *response, int *response_len, int *handled, int dryrun); -FLUIDSYNTH_API int fluid_synth_pitch_bend(fluid_synth_t* synth, int chan, int val); -FLUIDSYNTH_API int fluid_synth_get_pitch_bend(fluid_synth_t* synth, int chan, int* ppitch_bend); -FLUIDSYNTH_API int fluid_synth_pitch_wheel_sens(fluid_synth_t* synth, int chan, int val); -FLUIDSYNTH_API int fluid_synth_get_pitch_wheel_sens(fluid_synth_t* synth, int chan, int* pval); -FLUIDSYNTH_API int fluid_synth_program_change(fluid_synth_t* synth, int chan, int program); -FLUIDSYNTH_API int fluid_synth_channel_pressure(fluid_synth_t* synth, int chan, int val); -FLUIDSYNTH_API int fluid_synth_key_pressure(fluid_synth_t* synth, int chan, int key, int val); -FLUIDSYNTH_API int fluid_synth_bank_select(fluid_synth_t* synth, int chan, int bank); -FLUIDSYNTH_API int fluid_synth_sfont_select(fluid_synth_t* synth, int chan, int sfont_id); +FLUIDSYNTH_API int fluid_synth_pitch_bend(fluid_synth_t *synth, int chan, int val); +FLUIDSYNTH_API int fluid_synth_get_pitch_bend(fluid_synth_t *synth, int chan, int *ppitch_bend); +FLUIDSYNTH_API int fluid_synth_pitch_wheel_sens(fluid_synth_t *synth, int chan, int val); +FLUIDSYNTH_API int fluid_synth_get_pitch_wheel_sens(fluid_synth_t *synth, int chan, int *pval); +FLUIDSYNTH_API int fluid_synth_program_change(fluid_synth_t *synth, int chan, int program); +FLUIDSYNTH_API int fluid_synth_channel_pressure(fluid_synth_t *synth, int chan, int val); +FLUIDSYNTH_API int fluid_synth_key_pressure(fluid_synth_t *synth, int chan, int key, int val); +FLUIDSYNTH_API int fluid_synth_bank_select(fluid_synth_t *synth, int chan, int bank); +FLUIDSYNTH_API int fluid_synth_sfont_select(fluid_synth_t *synth, int chan, int sfont_id); FLUIDSYNTH_API -int fluid_synth_program_select(fluid_synth_t* synth, int chan, int sfont_id, +int fluid_synth_program_select(fluid_synth_t *synth, int chan, int sfont_id, int bank_num, int preset_num); FLUIDSYNTH_API int -fluid_synth_program_select_by_sfont_name (fluid_synth_t* synth, int chan, - const char *sfont_name, int bank_num, - int preset_num); -FLUIDSYNTH_API -int fluid_synth_get_program(fluid_synth_t* synth, int chan, int* sfont_id, - int* bank_num, int* preset_num); -FLUIDSYNTH_API int fluid_synth_unset_program (fluid_synth_t *synth, int chan); -FLUIDSYNTH_API int fluid_synth_program_reset(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_system_reset(fluid_synth_t* synth); +fluid_synth_program_select_by_sfont_name(fluid_synth_t *synth, int chan, + const char *sfont_name, int bank_num, + int preset_num); +FLUIDSYNTH_API +int fluid_synth_get_program(fluid_synth_t *synth, int chan, int *sfont_id, + int *bank_num, int *preset_num); +FLUIDSYNTH_API int fluid_synth_unset_program(fluid_synth_t *synth, int chan); +FLUIDSYNTH_API int fluid_synth_program_reset(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_system_reset(fluid_synth_t *synth); -FLUIDSYNTH_API int fluid_synth_all_notes_off(fluid_synth_t* synth, int chan); -FLUIDSYNTH_API int fluid_synth_all_sounds_off(fluid_synth_t* synth, int chan); +FLUIDSYNTH_API int fluid_synth_all_notes_off(fluid_synth_t *synth, int chan); +FLUIDSYNTH_API int fluid_synth_all_sounds_off(fluid_synth_t *synth, int chan); /** * The midi channel type used by fluid_synth_set_channel_type() */ enum fluid_midi_channel_type { - CHANNEL_TYPE_MELODIC = 0, /**< Melodic midi channel */ - CHANNEL_TYPE_DRUM = 1 /**< Drum midi channel */ + CHANNEL_TYPE_MELODIC = 0, /**< Melodic midi channel */ + CHANNEL_TYPE_DRUM = 1 /**< Drum midi channel */ }; -FLUIDSYNTH_API int fluid_synth_set_channel_type(fluid_synth_t* synth, int chan, int type); +FLUIDSYNTH_API int fluid_synth_set_channel_type(fluid_synth_t *synth, int chan, int type); /* Low level access */ -FLUIDSYNTH_API fluid_preset_t* fluid_synth_get_channel_preset(fluid_synth_t* synth, int chan); -FLUIDSYNTH_API int fluid_synth_start(fluid_synth_t* synth, unsigned int id, - fluid_preset_t* preset, int audio_chan, - int midi_chan, int key, int vel); -FLUIDSYNTH_API int fluid_synth_stop(fluid_synth_t* synth, unsigned int id); +FLUIDSYNTH_API fluid_preset_t *fluid_synth_get_channel_preset(fluid_synth_t *synth, int chan); +FLUIDSYNTH_API int fluid_synth_start(fluid_synth_t *synth, unsigned int id, + fluid_preset_t *preset, int audio_chan, + int midi_chan, int key, int vel); +FLUIDSYNTH_API int fluid_synth_stop(fluid_synth_t *synth, unsigned int id); /* SoundFont management */ -FLUIDSYNTH_API -int fluid_synth_sfload(fluid_synth_t* synth, const char* filename, int reset_presets); -FLUIDSYNTH_API int fluid_synth_sfreload(fluid_synth_t* synth, int id); -FLUIDSYNTH_API int fluid_synth_sfunload(fluid_synth_t* synth, int id, int reset_presets); -FLUIDSYNTH_API int fluid_synth_add_sfont(fluid_synth_t* synth, fluid_sfont_t* sfont); -FLUIDSYNTH_API int fluid_synth_remove_sfont(fluid_synth_t* synth, fluid_sfont_t* sfont); -FLUIDSYNTH_API int fluid_synth_sfcount(fluid_synth_t* synth); -FLUIDSYNTH_API fluid_sfont_t* fluid_synth_get_sfont(fluid_synth_t* synth, unsigned int num); -FLUIDSYNTH_API fluid_sfont_t* fluid_synth_get_sfont_by_id(fluid_synth_t* synth, int id); -FLUIDSYNTH_API fluid_sfont_t *fluid_synth_get_sfont_by_name (fluid_synth_t* synth, - const char *name); -FLUIDSYNTH_API int fluid_synth_set_bank_offset(fluid_synth_t* synth, int sfont_id, int offset); -FLUIDSYNTH_API int fluid_synth_get_bank_offset(fluid_synth_t* synth, int sfont_id); +FLUIDSYNTH_API +int fluid_synth_sfload(fluid_synth_t *synth, const char *filename, int reset_presets); +FLUIDSYNTH_API int fluid_synth_sfreload(fluid_synth_t *synth, int id); +FLUIDSYNTH_API int fluid_synth_sfunload(fluid_synth_t *synth, int id, int reset_presets); +FLUIDSYNTH_API int fluid_synth_add_sfont(fluid_synth_t *synth, fluid_sfont_t *sfont); +FLUIDSYNTH_API int fluid_synth_remove_sfont(fluid_synth_t *synth, fluid_sfont_t *sfont); +FLUIDSYNTH_API int fluid_synth_sfcount(fluid_synth_t *synth); +FLUIDSYNTH_API fluid_sfont_t *fluid_synth_get_sfont(fluid_synth_t *synth, unsigned int num); +FLUIDSYNTH_API fluid_sfont_t *fluid_synth_get_sfont_by_id(fluid_synth_t *synth, int id); +FLUIDSYNTH_API fluid_sfont_t *fluid_synth_get_sfont_by_name(fluid_synth_t *synth, + const char *name); +FLUIDSYNTH_API int fluid_synth_set_bank_offset(fluid_synth_t *synth, int sfont_id, int offset); +FLUIDSYNTH_API int fluid_synth_get_bank_offset(fluid_synth_t *synth, int sfont_id); /* Reverb */ -FLUIDSYNTH_API int fluid_synth_set_reverb(fluid_synth_t* synth, double roomsize, - double damping, double width, double level); -FLUIDSYNTH_API int fluid_synth_set_reverb_roomsize(fluid_synth_t* synth, double roomsize); -FLUIDSYNTH_API int fluid_synth_set_reverb_damp(fluid_synth_t* synth, double damping); -FLUIDSYNTH_API int fluid_synth_set_reverb_width(fluid_synth_t* synth, double width); -FLUIDSYNTH_API int fluid_synth_set_reverb_level(fluid_synth_t* synth, double level); +FLUIDSYNTH_API int fluid_synth_set_reverb(fluid_synth_t *synth, double roomsize, + double damping, double width, double level); +FLUIDSYNTH_API int fluid_synth_set_reverb_roomsize(fluid_synth_t *synth, double roomsize); +FLUIDSYNTH_API int fluid_synth_set_reverb_damp(fluid_synth_t *synth, double damping); +FLUIDSYNTH_API int fluid_synth_set_reverb_width(fluid_synth_t *synth, double width); +FLUIDSYNTH_API int fluid_synth_set_reverb_level(fluid_synth_t *synth, double level); -FLUIDSYNTH_API void fluid_synth_set_reverb_on(fluid_synth_t* synth, int on); -FLUIDSYNTH_API double fluid_synth_get_reverb_roomsize(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_reverb_damp(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_reverb_level(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_reverb_width(fluid_synth_t* synth); +FLUIDSYNTH_API void fluid_synth_set_reverb_on(fluid_synth_t *synth, int on); +FLUIDSYNTH_API double fluid_synth_get_reverb_roomsize(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_reverb_damp(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_reverb_level(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_reverb_width(fluid_synth_t *synth); /* Chorus */ @@ -143,94 +143,97 @@ FLUIDSYNTH_API double fluid_synth_get_reverb_width(fluid_synth_t* synth); /** * Chorus modulation waveform type. */ -enum fluid_chorus_mod { - FLUID_CHORUS_MOD_SINE = 0, /**< Sine wave chorus modulation */ - FLUID_CHORUS_MOD_TRIANGLE = 1 /**< Triangle wave chorus modulation */ +enum fluid_chorus_mod +{ + FLUID_CHORUS_MOD_SINE = 0, /**< Sine wave chorus modulation */ + FLUID_CHORUS_MOD_TRIANGLE = 1 /**< Triangle wave chorus modulation */ }; -FLUIDSYNTH_API int fluid_synth_set_chorus(fluid_synth_t* synth, int nr, double level, - double speed, double depth_ms, int type); -FLUIDSYNTH_API int fluid_synth_set_chorus_nr(fluid_synth_t* synth, int nr); -FLUIDSYNTH_API int fluid_synth_set_chorus_level(fluid_synth_t* synth, double level); -FLUIDSYNTH_API int fluid_synth_set_chorus_speed(fluid_synth_t* synth, double speed); -FLUIDSYNTH_API int fluid_synth_set_chorus_depth(fluid_synth_t* synth, double depth_ms); -FLUIDSYNTH_API int fluid_synth_set_chorus_type(fluid_synth_t* synth, int type); +FLUIDSYNTH_API int fluid_synth_set_chorus(fluid_synth_t *synth, int nr, double level, + double speed, double depth_ms, int type); +FLUIDSYNTH_API int fluid_synth_set_chorus_nr(fluid_synth_t *synth, int nr); +FLUIDSYNTH_API int fluid_synth_set_chorus_level(fluid_synth_t *synth, double level); +FLUIDSYNTH_API int fluid_synth_set_chorus_speed(fluid_synth_t *synth, double speed); +FLUIDSYNTH_API int fluid_synth_set_chorus_depth(fluid_synth_t *synth, double depth_ms); +FLUIDSYNTH_API int fluid_synth_set_chorus_type(fluid_synth_t *synth, int type); -FLUIDSYNTH_API void fluid_synth_set_chorus_on(fluid_synth_t* synth, int on); -FLUIDSYNTH_API int fluid_synth_get_chorus_nr(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_chorus_level(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_chorus_speed(fluid_synth_t* synth); -FLUIDSYNTH_API double fluid_synth_get_chorus_depth(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_get_chorus_type(fluid_synth_t* synth); /* see fluid_chorus_mod */ +FLUIDSYNTH_API void fluid_synth_set_chorus_on(fluid_synth_t *synth, int on); +FLUIDSYNTH_API int fluid_synth_get_chorus_nr(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_chorus_level(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_chorus_speed(fluid_synth_t *synth); +FLUIDSYNTH_API double fluid_synth_get_chorus_depth(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_get_chorus_type(fluid_synth_t *synth); /* see fluid_chorus_mod */ /* Audio and MIDI channels */ -FLUIDSYNTH_API int fluid_synth_count_midi_channels(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_count_audio_channels(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_count_audio_groups(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_count_effects_channels(fluid_synth_t* synth); +FLUIDSYNTH_API int fluid_synth_count_midi_channels(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_count_audio_channels(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_count_audio_groups(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_count_effects_channels(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_count_effects_groups(fluid_synth_t *synth); /* Synthesis parameters */ -FLUIDSYNTH_API void fluid_synth_set_sample_rate(fluid_synth_t* synth, float sample_rate); -FLUIDSYNTH_API void fluid_synth_set_gain(fluid_synth_t* synth, float gain); -FLUIDSYNTH_API float fluid_synth_get_gain(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_set_polyphony(fluid_synth_t* synth, int polyphony); -FLUIDSYNTH_API int fluid_synth_get_polyphony(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_get_active_voice_count(fluid_synth_t* synth); -FLUIDSYNTH_API int fluid_synth_get_internal_bufsize(fluid_synth_t* synth); +FLUIDSYNTH_API void fluid_synth_set_sample_rate(fluid_synth_t *synth, float sample_rate); +FLUIDSYNTH_API void fluid_synth_set_gain(fluid_synth_t *synth, float gain); +FLUIDSYNTH_API float fluid_synth_get_gain(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_set_polyphony(fluid_synth_t *synth, int polyphony); +FLUIDSYNTH_API int fluid_synth_get_polyphony(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_get_active_voice_count(fluid_synth_t *synth); +FLUIDSYNTH_API int fluid_synth_get_internal_bufsize(fluid_synth_t *synth); -FLUIDSYNTH_API -int fluid_synth_set_interp_method(fluid_synth_t* synth, int chan, int interp_method); +FLUIDSYNTH_API +int fluid_synth_set_interp_method(fluid_synth_t *synth, int chan, int interp_method); /** * Synthesis interpolation method. */ -enum fluid_interp { - FLUID_INTERP_NONE = 0, /**< No interpolation: Fastest, but questionable audio quality */ - FLUID_INTERP_LINEAR = 1, /**< Straight-line interpolation: A bit slower, reasonable audio quality */ - FLUID_INTERP_4THORDER = 4, /**< Fourth-order interpolation, good quality, the default */ - FLUID_INTERP_7THORDER = 7, /**< Seventh-order interpolation */ - - FLUID_INTERP_DEFAULT = FLUID_INTERP_4THORDER, /**< Default interpolation method */ - FLUID_INTERP_HIGHEST = FLUID_INTERP_7THORDER, /**< Highest interpolation method */ +enum fluid_interp +{ + FLUID_INTERP_NONE = 0, /**< No interpolation: Fastest, but questionable audio quality */ + FLUID_INTERP_LINEAR = 1, /**< Straight-line interpolation: A bit slower, reasonable audio quality */ + FLUID_INTERP_4THORDER = 4, /**< Fourth-order interpolation, good quality, the default */ + FLUID_INTERP_7THORDER = 7, /**< Seventh-order interpolation */ + + FLUID_INTERP_DEFAULT = FLUID_INTERP_4THORDER, /**< Default interpolation method */ + FLUID_INTERP_HIGHEST = FLUID_INTERP_7THORDER, /**< Highest interpolation method */ }; /* Generator interface */ -FLUIDSYNTH_API int fluid_synth_set_gen (fluid_synth_t* synth, int chan, - int param, float value); -FLUIDSYNTH_API float fluid_synth_get_gen(fluid_synth_t* synth, int chan, int param); +FLUIDSYNTH_API int fluid_synth_set_gen(fluid_synth_t *synth, int chan, + int param, float value); +FLUIDSYNTH_API float fluid_synth_get_gen(fluid_synth_t *synth, int chan, int param); /* Tuning */ FLUIDSYNTH_API -int fluid_synth_activate_key_tuning(fluid_synth_t* synth, int bank, int prog, - const char* name, const double* pitch, int apply); +int fluid_synth_activate_key_tuning(fluid_synth_t *synth, int bank, int prog, + const char *name, const double *pitch, int apply); FLUIDSYNTH_API -int fluid_synth_activate_octave_tuning(fluid_synth_t* synth, int bank, int prog, - const char* name, const double* pitch, int apply); -FLUIDSYNTH_API -int fluid_synth_tune_notes(fluid_synth_t* synth, int bank, int prog, - int len, const int *keys, const double* pitch, int apply); +int fluid_synth_activate_octave_tuning(fluid_synth_t *synth, int bank, int prog, + const char *name, const double *pitch, int apply); FLUIDSYNTH_API -int fluid_synth_activate_tuning(fluid_synth_t* synth, int chan, int bank, int prog, +int fluid_synth_tune_notes(fluid_synth_t *synth, int bank, int prog, + int len, const int *keys, const double *pitch, int apply); +FLUIDSYNTH_API +int fluid_synth_activate_tuning(fluid_synth_t *synth, int chan, int bank, int prog, int apply); FLUIDSYNTH_API -int fluid_synth_deactivate_tuning(fluid_synth_t* synth, int chan, int apply); -FLUIDSYNTH_API void fluid_synth_tuning_iteration_start(fluid_synth_t* synth); -FLUIDSYNTH_API -int fluid_synth_tuning_iteration_next(fluid_synth_t* synth, int* bank, int* prog); -FLUIDSYNTH_API int fluid_synth_tuning_dump(fluid_synth_t* synth, int bank, int prog, - char* name, int len, double* pitch); +int fluid_synth_deactivate_tuning(fluid_synth_t *synth, int chan, int apply); +FLUIDSYNTH_API void fluid_synth_tuning_iteration_start(fluid_synth_t *synth); +FLUIDSYNTH_API +int fluid_synth_tuning_iteration_next(fluid_synth_t *synth, int *bank, int *prog); +FLUIDSYNTH_API int fluid_synth_tuning_dump(fluid_synth_t *synth, int bank, int prog, + char *name, int len, double *pitch); /* Misc */ -FLUIDSYNTH_API double fluid_synth_get_cpu_load(fluid_synth_t* synth); -FLUIDSYNTH_API const char* fluid_synth_error(fluid_synth_t* synth); +FLUIDSYNTH_API double fluid_synth_get_cpu_load(fluid_synth_t *synth); +FLUID_DEPRECATED FLUIDSYNTH_API const char *fluid_synth_error(fluid_synth_t *synth); /* Default modulators */ @@ -238,13 +241,14 @@ FLUIDSYNTH_API const char* fluid_synth_error(fluid_synth_t* synth); /** * Enum used with fluid_synth_add_default_mod() to specify how to handle duplicate modulators. */ -enum fluid_synth_add_mod { - FLUID_SYNTH_OVERWRITE, /**< Overwrite any existing matching modulator */ - FLUID_SYNTH_ADD, /**< Add (sum) modulator amounts */ +enum fluid_synth_add_mod +{ + FLUID_SYNTH_OVERWRITE, /**< Overwrite any existing matching modulator */ + FLUID_SYNTH_ADD, /**< Add (sum) modulator amounts */ }; -FLUIDSYNTH_API int fluid_synth_add_default_mod(fluid_synth_t* synth, fluid_mod_t* mod, int mode); -FLUIDSYNTH_API int fluid_synth_remove_default_mod(fluid_synth_t* synth, const fluid_mod_t* mod); +FLUIDSYNTH_API int fluid_synth_add_default_mod(fluid_synth_t *synth, const fluid_mod_t *mod, int mode); +FLUIDSYNTH_API int fluid_synth_remove_default_mod(fluid_synth_t *synth, const fluid_mod_t *mod); /* @@ -252,38 +256,39 @@ FLUIDSYNTH_API int fluid_synth_remove_default_mod(fluid_synth_t* synth, const fl * * To create a synthesizer plugin, create the synthesizer as * explained above. Once the synthesizer is created you can call - * any of the functions below to get the audio. + * any of the functions below to get the audio. */ -FLUIDSYNTH_API int fluid_synth_write_s16(fluid_synth_t* synth, int len, - void* lout, int loff, int lincr, - void* rout, int roff, int rincr); -FLUIDSYNTH_API int fluid_synth_write_float(fluid_synth_t* synth, int len, - void* lout, int loff, int lincr, - void* rout, int roff, int rincr); -FLUIDSYNTH_API int fluid_synth_nwrite_float(fluid_synth_t* synth, int len, - float** left, float** right, - float** fx_left, float** fx_right); -FLUIDSYNTH_API int fluid_synth_process(fluid_synth_t* synth, int len, - int nfx, float* fx[], - int nout, float* out[]); +FLUIDSYNTH_API int fluid_synth_write_s16(fluid_synth_t *synth, int len, + void *lout, int loff, int lincr, + void *rout, int roff, int rincr); +FLUIDSYNTH_API int fluid_synth_write_float(fluid_synth_t *synth, int len, + void *lout, int loff, int lincr, + void *rout, int roff, int rincr); +FLUID_DEPRECATED FLUIDSYNTH_API int fluid_synth_nwrite_float(fluid_synth_t *synth, int len, + float **left, float **right, + float **fx_left, float **fx_right); +FLUIDSYNTH_API int fluid_synth_process(fluid_synth_t *synth, int len, + int nfx, float *fx[], + int nout, float *out[]); /* Synthesizer's interface to handle SoundFont loaders */ -FLUIDSYNTH_API void fluid_synth_add_sfloader(fluid_synth_t* synth, fluid_sfloader_t* loader); -FLUIDSYNTH_API fluid_voice_t* fluid_synth_alloc_voice(fluid_synth_t* synth, - fluid_sample_t* sample, - int channum, int key, int vel); -FLUIDSYNTH_API void fluid_synth_start_voice(fluid_synth_t* synth, fluid_voice_t* voice); -FLUIDSYNTH_API void fluid_synth_get_voicelist(fluid_synth_t* synth, - fluid_voice_t* buf[], int bufsize, int ID); -FLUIDSYNTH_API int fluid_synth_handle_midi_event(void* data, fluid_midi_event_t* event); +FLUIDSYNTH_API void fluid_synth_add_sfloader(fluid_synth_t *synth, fluid_sfloader_t *loader); +FLUIDSYNTH_API fluid_voice_t *fluid_synth_alloc_voice(fluid_synth_t *synth, + fluid_sample_t *sample, + int channum, int key, int vel); +FLUIDSYNTH_API void fluid_synth_start_voice(fluid_synth_t *synth, fluid_voice_t *voice); +FLUIDSYNTH_API void fluid_synth_get_voicelist(fluid_synth_t *synth, + fluid_voice_t *buf[], int bufsize, int ID); +FLUIDSYNTH_API int fluid_synth_handle_midi_event(void *data, fluid_midi_event_t *event); /** * Specifies the type of filter to use for the custom IIR filter */ -enum fluid_iir_filter_type { +enum fluid_iir_filter_type +{ FLUID_IIR_DISABLED = 0, /**< Custom IIR filter is not operating */ FLUID_IIR_LOWPASS, /**< Custom IIR filter is operating as low-pass filter */ FLUID_IIR_HIGHPASS, /**< Custom IIR filter is operating as high-pass filter */ @@ -293,13 +298,14 @@ enum fluid_iir_filter_type { /** * Specifies optional settings to use for the custom IIR filter */ -enum fluid_iir_filter_flags { +enum fluid_iir_filter_flags +{ FLUID_IIR_Q_LINEAR = 1 << 0, /**< The Soundfont spec requires the filter Q to be interpreted in dB. If this flag is set the filter Q is instead assumed to be in a linear range */ FLUID_IIR_Q_ZERO_OFF = 1 << 1, /**< If this flag the filter is switched off if Q == 0 (prior to any transformation) */ FLUID_IIR_NO_GAIN_AMP = 1 << 2 /**< The Soundfont spec requires to correct the gain of the filter depending on the filter's Q. If this flag is set the filter gain will not be corrected. */ }; -FLUIDSYNTH_API int fluid_synth_set_custom_filter(fluid_synth_t*, int type, int flags); +FLUIDSYNTH_API int fluid_synth_set_custom_filter(fluid_synth_t *, int type, int flags); /* LADSPA */ @@ -310,7 +316,7 @@ FLUIDSYNTH_API fluid_ladspa_fx_t *fluid_synth_get_ladspa_fx(fluid_synth_t *synth /* API: Poly mono mode */ /** Interface to poly/mono mode variables - * + * * Channel mode bits OR-ed together so that it matches with the midi spec: poly omnion (0), mono omnion (1), poly omnioff (2), mono omnioff (3) */ enum fluid_channel_mode_flags @@ -329,7 +335,7 @@ enum fluid_channel_breath_flags /** Indicates the mode a basic channel is set to */ enum fluid_basic_channel_modes -{ +{ FLUID_CHANNEL_MODE_MASK = (FLUID_CHANNEL_OMNI_OFF | FLUID_CHANNEL_POLY_OFF), /**< Mask Poly and Omni bits of #fluid_channel_mode_flags, usually only used internally */ FLUID_CHANNEL_MODE_OMNION_POLY = FLUID_CHANNEL_MODE_MASK & (~FLUID_CHANNEL_OMNI_OFF & ~FLUID_CHANNEL_POLY_OFF), /**< corresponds to MIDI mode 0 */ FLUID_CHANNEL_MODE_OMNION_MONO = FLUID_CHANNEL_MODE_MASK & (~FLUID_CHANNEL_OMNI_OFF & FLUID_CHANNEL_POLY_OFF), /**< corresponds to MIDI mode 1 */ @@ -338,27 +344,27 @@ enum fluid_basic_channel_modes FLUID_CHANNEL_MODE_LAST /**< @internal Value defines the count of basic channel modes (#fluid_basic_channel_modes) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ }; -FLUIDSYNTH_API int fluid_synth_reset_basic_channel(fluid_synth_t* synth, int chan); +FLUIDSYNTH_API int fluid_synth_reset_basic_channel(fluid_synth_t *synth, int chan); -FLUIDSYNTH_API int fluid_synth_get_basic_channel(fluid_synth_t* synth, int chan, - int *basic_chan_out, - int *mode_chan_out, - int *basic_val_out ); -FLUIDSYNTH_API int fluid_synth_set_basic_channel(fluid_synth_t* synth, int chan, int mode, int val); +FLUIDSYNTH_API int fluid_synth_get_basic_channel(fluid_synth_t *synth, int chan, + int *basic_chan_out, + int *mode_chan_out, + int *basic_val_out); +FLUIDSYNTH_API int fluid_synth_set_basic_channel(fluid_synth_t *synth, int chan, int mode, int val); /** Interface to mono legato mode - * + * * Indicates the legato mode a channel is set to * n1,n2,n3,.. is a legato passage. n1 is the first note, and n2,n3,n4 are played legato with previous note. */ enum fluid_channel_legato_mode { - FLUID_CHANNEL_LEGATO_MODE_RETRIGGER, /**< Mode 0 - Release previous note, start a new note */ - FLUID_CHANNEL_LEGATO_MODE_MULTI_RETRIGGER, /**< Mode 1 - On contiguous notes retrigger in attack section using current value, shape attack using current dynamic and make use of previous voices if any */ - FLUID_CHANNEL_LEGATO_MODE_LAST /**< @internal Value defines the count of legato modes (#fluid_channel_legato_mode) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ + FLUID_CHANNEL_LEGATO_MODE_RETRIGGER, /**< Mode 0 - Release previous note, start a new note */ + FLUID_CHANNEL_LEGATO_MODE_MULTI_RETRIGGER, /**< Mode 1 - On contiguous notes retrigger in attack section using current value, shape attack using current dynamic and make use of previous voices if any */ + FLUID_CHANNEL_LEGATO_MODE_LAST /**< @internal Value defines the count of legato modes (#fluid_channel_legato_mode) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ }; -FLUIDSYNTH_API int fluid_synth_set_legato_mode(fluid_synth_t* synth, int chan, int legatomode); -FLUIDSYNTH_API int fluid_synth_get_legato_mode(fluid_synth_t* synth, int chan, int *legatomode); +FLUIDSYNTH_API int fluid_synth_set_legato_mode(fluid_synth_t *synth, int chan, int legatomode); +FLUIDSYNTH_API int fluid_synth_get_legato_mode(fluid_synth_t *synth, int chan, int *legatomode); /** Interface to portamento mode * @@ -366,22 +372,22 @@ FLUIDSYNTH_API int fluid_synth_get_legato_mode(fluid_synth_t* synth, int chan, i */ enum fluid_channel_portamento_mode { - FLUID_CHANNEL_PORTAMENTO_MODE_EACH_NOTE, /**< Mode 0 - Portamento on each note (staccato or legato) */ - FLUID_CHANNEL_PORTAMENTO_MODE_LEGATO_ONLY, /**< Mode 1 - Portamento only on legato note */ - FLUID_CHANNEL_PORTAMENTO_MODE_STACCATO_ONLY, /**< Mode 2 - Portamento only on staccato note */ - FLUID_CHANNEL_PORTAMENTO_MODE_LAST /**< @internal Value defines the count of portamento modes (#fluid_channel_portamento_mode) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ + FLUID_CHANNEL_PORTAMENTO_MODE_EACH_NOTE, /**< Mode 0 - Portamento on each note (staccato or legato) */ + FLUID_CHANNEL_PORTAMENTO_MODE_LEGATO_ONLY, /**< Mode 1 - Portamento only on legato note */ + FLUID_CHANNEL_PORTAMENTO_MODE_STACCATO_ONLY, /**< Mode 2 - Portamento only on staccato note */ + FLUID_CHANNEL_PORTAMENTO_MODE_LAST /**< @internal Value defines the count of portamento modes (#fluid_channel_portamento_mode) @warning This symbol is not part of the public API and ABI stability guarantee and may change at any time! */ }; -FLUIDSYNTH_API int fluid_synth_set_portamento_mode(fluid_synth_t* synth, - int chan, int portamentomode); -FLUIDSYNTH_API int fluid_synth_get_portamento_mode(fluid_synth_t* synth, - int chan, int * portamentomode); +FLUIDSYNTH_API int fluid_synth_set_portamento_mode(fluid_synth_t *synth, + int chan, int portamentomode); +FLUIDSYNTH_API int fluid_synth_get_portamento_mode(fluid_synth_t *synth, + int chan, int *portamentomode); /* Interface to breath mode */ -FLUIDSYNTH_API int fluid_synth_set_breath_mode(fluid_synth_t* synth, - int chan, int breathmode); -FLUIDSYNTH_API int fluid_synth_get_breath_mode(fluid_synth_t* synth, - int chan, int *breathmode); +FLUIDSYNTH_API int fluid_synth_set_breath_mode(fluid_synth_t *synth, + int chan, int breathmode); +FLUIDSYNTH_API int fluid_synth_get_breath_mode(fluid_synth_t *synth, + int chan, int *breathmode); #ifdef __cplusplus diff --git a/include/fluidsynth/types.h b/include/fluidsynth/types.h index dd5bfa8..47ef183 100644 --- a/include/fluidsynth/types.h +++ b/include/fluidsynth/types.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA diff --git a/include/fluidsynth/version.h b/include/fluidsynth/version.h index cf234c9..90819b2 100644 --- a/include/fluidsynth/version.h +++ b/include/fluidsynth/version.h @@ -31,10 +31,10 @@ extern "C" { * @brief Library version functions and defines */ -#define FLUIDSYNTH_VERSION "2.0.0" /**< String constant of libfluidsynth version. */ +#define FLUIDSYNTH_VERSION "2.0.5" /**< String constant of libfluidsynth version. */ #define FLUIDSYNTH_VERSION_MAJOR 2 /**< libfluidsynth major version integer constant. */ #define FLUIDSYNTH_VERSION_MINOR 0 /**< libfluidsynth minor version integer constant. */ -#define FLUIDSYNTH_VERSION_MICRO 0 /**< libfluidsynth micro version integer constant. */ +#define FLUIDSYNTH_VERSION_MICRO 5 /**< libfluidsynth micro version integer constant. */ FLUIDSYNTH_API void fluid_version(int *major, int *minor, int *micro); FLUIDSYNTH_API char* fluid_version_str(void); diff --git a/include/fluidsynth/voice.h b/include/fluidsynth/voice.h index ed3f869..f064471 100644 --- a/include/fluidsynth/voice.h +++ b/include/fluidsynth/voice.h @@ -11,7 +11,7 @@ * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -39,30 +39,31 @@ extern "C" { /** * Enum used with fluid_voice_add_mod() to specify how to handle duplicate modulators. */ -enum fluid_voice_add_mod { - FLUID_VOICE_OVERWRITE, /**< Overwrite any existing matching modulator */ - FLUID_VOICE_ADD, /**< Add (sum) modulator amounts */ - FLUID_VOICE_DEFAULT /**< For default modulators only, no need to check for duplicates */ +enum fluid_voice_add_mod +{ + FLUID_VOICE_OVERWRITE, /**< Overwrite any existing matching modulator */ + FLUID_VOICE_ADD, /**< Add (sum) modulator amounts */ + FLUID_VOICE_DEFAULT /**< For default modulators only, no need to check for duplicates */ }; -FLUIDSYNTH_API void fluid_voice_add_mod(fluid_voice_t* voice, fluid_mod_t* mod, int mode); -FLUIDSYNTH_API float fluid_voice_gen_get(fluid_voice_t* voice, int gen); -FLUIDSYNTH_API void fluid_voice_gen_set(fluid_voice_t* voice, int gen, float val); -FLUIDSYNTH_API void fluid_voice_gen_incr(fluid_voice_t* voice, int gen, float val); +FLUIDSYNTH_API void fluid_voice_add_mod(fluid_voice_t *voice, fluid_mod_t *mod, int mode); +FLUIDSYNTH_API float fluid_voice_gen_get(fluid_voice_t *voice, int gen); +FLUIDSYNTH_API void fluid_voice_gen_set(fluid_voice_t *voice, int gen, float val); +FLUIDSYNTH_API void fluid_voice_gen_incr(fluid_voice_t *voice, int gen, float val); + +FLUIDSYNTH_API unsigned int fluid_voice_get_id(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_get_channel(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_get_key(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_get_actual_key(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_get_velocity(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_get_actual_velocity(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_is_playing(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_is_on(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_is_sustained(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_is_sostenuto(const fluid_voice_t *voice); +FLUIDSYNTH_API int fluid_voice_optimize_sample(fluid_sample_t *s); +FLUIDSYNTH_API void fluid_voice_update_param(fluid_voice_t *voice, int gen); -FLUIDSYNTH_API unsigned int fluid_voice_get_id(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_get_channel(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_get_key(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_get_actual_key(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_get_velocity(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_get_actual_velocity(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_is_playing(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_is_on(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_is_sustained(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_is_sostenuto(const fluid_voice_t* voice); -FLUIDSYNTH_API int fluid_voice_optimize_sample(fluid_sample_t* s); -FLUIDSYNTH_API void fluid_voice_update_param(fluid_voice_t* voice, int gen); - #ifdef __cplusplus }