Commit graph

1498 commits

Author SHA1 Message Date
Josh Green
f3b62ad39a Overhauled MIDI router and added public API for creating and adding rules.
Updated synth.audio-channels and synth.audio-groups to reflect actual maximum value of 128.
Re-enabled aufile-support argument in configure.ac to make it possible to disable audio output driver.
Updates to doc/Doxyfile to exclude private header files.
Lots of updates to doc/fluidsynth-v11-devdoc.txt: Removed some information that seemed irrelavent to the topic at hand, added descriptions of all FluidSynth settings and sorted, re-wrote MIDI router information and added example code, and more.
Removed src/config.h.in from svn.
2009-10-22 07:06:26 +00:00
Josh Green
9ea9f60494 Merged support for new_fluid_audio_driver2 to DirectSound driver from Z-Maestro. 2009-10-20 22:51:17 +00:00
Josh Green
c7a865ff24 Removed fluid_file_renderer_get_(type_names/format_names/endian_names) from API, now just using settings subsystem.
Removed explicity enable of AUFILE_SUPPORT in fluid_adriver.c.
Warning about failure to set high priority scheduling, now only printed if actually attempted high priority scheduling.
Removed unused fluid_alsa2.c.
Moved fluid_file_audio_driver_settings() from fluid_aufile.c to fluid_filerenderer.c and renamed to fluid_file_renderer_settings().
Added fluid_file_renderer_find_valid_format() to search for valid audio formats for a given file type (to fix Ogg/Vorbis output).
Added audio.jack.server and midi.jack.server settings.
Now using jack_client_open() instead of deprecated jack_client_new().
Fixed declaration of new_fluid_midishare_midi_driver() in fluid_mdriver.c.
Added support for realtime settings to fluid_oss.c and fluid_pulse.c.
Added call to Pa_Terminate() in fluid_portaudio_driver_settings() to free unused resources (such as Jack connections).
Removed synth.midi-mode and preset note-off ignore code for now, until its properly supported.
Added/improved command line "help" output for -a, -E, -m, -O and -T.
Welcome message and "Rendering audio to file .." message now displayed on fast render (-F).
2009-10-19 05:41:07 +00:00
Josh Green
420ba8198f Added correct spelling of FLUID_SEQ_PITCHWHEELSENS with backwards compatible misspelled symbol.
Added FLUID_OK and FLUID_FAILED to public API (misc.h).
Renamed parameter of new_fluid_sequencer2() to use_system_timer.
Renamed fludi_sequencer_get_useSystemTimer() to fluid_sequencer_get_use_system_timer().
Added missing FLUIDSYNTH_API to fluid_sequencer_add_midi_event_to_buffer().
Declared many local functions as static.
Changed settings in doc/Doxyfile to only extract public documentation.
Tons and tons of documentation updates on public API.
2009-10-15 07:00:30 +00:00
David Henningsson
76777760ce Default to 10 ms min-note-length. Minor refactoring. 2009-10-14 07:27:30 +00:00
Josh Green
220337916e Fixed some endian related bugs in fluid_defsfont.c which were introduced when the real glib.h was included.
Some changes of "sound font" to SoundFont in fluid_defsfont.c.
Added FLUID_IS_BIG_ENDIAN macro to fluid_sys.h.
2009-10-13 03:41:19 +00:00
David Henningsson
e86df648a9 Implement feature to have a minimum note length for all notes 2009-10-13 01:08:10 +00:00
Josh Green
3bc6d961a6 Min glib version set to 2.6.5 (latest version for OS2).
Added public function fluid_midi_event_set_sysex().
MIDI sysex events now use param2 to indicate if its dynamically allocated or not.
Added SYSEX handling to alsa sequencer.
Re-wrote fluid_midi_parser_parse to handle SYSEX data (used by ALSA raw MIDI, CoreMidi, Jack and OSS MIDI drivers).
Added 'out' parameter to fluid_istream_readline for displaying the prompt.
Fixed bug in MIDI router where router mutex was left in a locked state with MIDI system reset messages.
Added SYSEX handling to MIDI router.
Added SYSEX handling to MidiShare driver.
Fixed synth->thread_queues free bug caused by order of fluid_private_free and queue frees.
Bug fixes in fluid_synth_sysex() to handle GM ON SYSEX and check length for GS reset message.
WIN32 HACK in fluid_sys.c to OR a flag into fluid_istream_t and fluid_ostream_t on WIN32 to differentiate between file descriptors and sockets.
Bug fix in delete_fluid_timer() where double free would occur if auto destroy was enabled.
Fixed bugs in WIN32 socket server code, which now functions properly.
CR chars are stripped in fluid_istream_gets().
Added SYSEX processing to winmidi driver, which was a non-trivial undertaking!  Fixed allocation bug related to midi.winmidi.device setting.
Command line string option settings are now surrounded by single quotes and separate with commas.
2009-10-12 19:18:06 +00:00
Josh Green
1b425d9e12 Made with_reverb and with_chorus of type int instead of char, so that atomic int ops will work right. 2009-10-11 04:08:29 +00:00
David Henningsson
629fd249ff Make ogg vorbis support to work if libsndfile >= 1.0.18 2009-10-09 18:43:27 +00:00
David Henningsson
aac65ca01a file name handling fixed 2009-10-08 21:59:35 +00:00
David Henningsson
f49fed5e83 Do not call fluid_player_join if the player does not advance 2009-10-08 19:56:03 +00:00
Josh Green
2579d853fb Added FLUID_EVENT_QUEUE_ELEM_MIDI_MODE event queue event.
Added handling of GM On/Off and GS reset SYSEX messages.
Added synth.midi-mode-lock parameter to prevent SYSEX messages from changing MIDI mode.
If MIDI mode is set to "gm" or "gs" then note-offs are ignored for percussion instruments (except Long Guiro and Long Whistle).
Split off MIDI Tuning Standard SYSEX messages into fluid_synth_sysex_midi_tuning.
2009-10-08 05:31:11 +00:00
Josh Green
422924ee45 Added -Wno-unused-parameter because its annoying to have warning for unused parameters.
Removed many unused variables.
Added a new macro fluid_profile_ref_var() for defining a profiling reference variable, to get rid of unused variable warnings when profiling is disabled.
Removed unused functions fluid_oss_get_caps and fluid_oss_get_sample_formats.
2009-10-07 05:20:55 +00:00
Josh Green
799f01a2dc Added no/yes options to boolean string settings that were missing them.
Added synth.midi-mode setting with normal/gm/gs/xg options, does not do anything yet.
Removed -Wno-unused from configure.ac so that warnings are given for unused variables and functions.
2009-10-06 06:53:53 +00:00
Josh Green
16a6d7ef63 Removed all but the synth parameter from new_fluid_file_renderer(), which now accesses the synth's settings directly.
Fixed incorrect order with synth.device-id setting.
2009-10-05 07:03:42 +00:00
Josh Green
ebd21b4dd9 Added new settings public functions: fluid_settings_foreach_option_alpha, fluid_settings_option_count and fluid_settings_foreach_alpha.
Shell output "no such settings" was missing newline and corrected grammer.
Shell settings and info commands now list settings and options in alphabetical order.
Added fluid_list_str_compare_func() for sorting string lists.
Moved setting name token parsing to fluid_settings_get() and fluid_settings_set().
fluidsynth -o help now lists settings alphabetically and displays string option values.
2009-10-05 00:13:48 +00:00
Josh Green
ae6b17d916 Fixed some warnings in fluid_filerenderer and improved -T, -E, -O help output for case where libsndfile support not enabled. 2009-10-03 18:21:12 +00:00
Josh Green
e0a18f7c2a Added libsndfile support to fluid_filerenderer.c with file type, audio format and endian byte order options.
Added 3 additional parameters to new_fluid_file_renderer() for specifying audio format options.
Added public functions fluid_file_renderer_get_(type/format/endian)_names.
Added new settings options "audio.file.(type/format/endian)".
fluid_aufile.c updated to use new file renderer.
fluid_settings_add_option and fluid_settings_remove_option now use const char *.
Added FLUID_N_ELEMENTS and FLUID_MUTEX_INIT to fluid_sys.h.
Added -E, -O and -T command line options and help for file rendering options.
Re-organized --help output to be lower case letter before upper case.
Added FLUID_STRRCHR to fluidsynth_priv.h.
2009-10-03 18:12:19 +00:00
Josh Green
43a9923dff Added public API functions: fluid_synth_sysex, fluid_synth_activate_key_tuning, fluid_synth_activate_octave_tuning, fluid_synth_tune_notes, fluid_synth_activate_tuning and fluid_synth_deactivate_tuning.
Added audio.realtime, audio.realtime-prio, midi.realtime and midi.realtime-prio (only ALSA updated to use them at this point).
Fixed bug in new_fluid_channel() where tuning field was not initialized.
fluid_settings.h had wrong field order in prototypes for fluid_settings_register_num and fluid_settings_register_int.
Added multi core support: "synth.cpu-cores" setting, fluid_synth_core_thread_func() and many core_ variables to fluid_synth_t.
Switched fluid_mutex_t back to a normal non-recursive mutex and added fluid_rec_mutex_t.
Added fluid_cond_t thread synchronization stuff.
Added fluid_cond_mutex_t which is a dynamically allocated regular mutex for use with fluid_cond_t.
fluid_settings_t and fluid_synth_t are now using fluid_rec_mutex_t (same as before, just name change).
Added platform specific fluid_thread_self_set_prio() functions to fluid_sys.c for activating high priority for the calling thread.
Modified new_fluid_thread() to take a prio and prio_level parameters.
Added missing fluid_atomic_pointer_set().
fluid_voice_write() changed to only take a voice audio buffer to render to, mixing is done separately with new fluid_voice_mix().
fluid_voice_write() now returns the count of samples rendered.
fluid_voice_effects() split into fluid_voice_filter() and fluid_voice_mix().
Added dsp_buf_count field to fluid_voice_t to keep track of last count of samples rendered to dsp_buf.
fluid_voice_get_channel() converted to a macro.
Added FLUID_DEFAULT_AUDIO_RT_PRIO and FLUID_DEFAULT_MIDI_RT_PRIO in fluidsynth_priv.h, set to 90 and 80 respectively which get used for audio.realtime-prio and midi.realtime-prio (was 90 and 90 before).
2009-09-29 21:40:28 +00:00
Josh Green
012f627017 Tuning unref event is now sent in fluid_channel_init() if there is an old tuning.
Some one liner functions in fluid_chan.c moved to macros in fluid_chan.h.
Added tuning_bank and tuning_prog fields to fluid_channel_t.
Unnecessary 'if (status & 0x80)' removed from fluid_midi_file_read_event().
Added paramptr field to fluid_midi_event_t for dynamic SYSEX data (size of data stored to param1).
SYSEX messages now handled in fluid_midi_file_read_event().
delete_fluid_midi_event() will free paramptr if its a SYSEX message.
Removed fluid_midi_send_event() and replaced with fluid_synth_handle_midi_event().
Added some enums and #defines for SYSEX MIDI Tuning Standard messages.
Added synth.device-id settings field for SYSEX device ID.
Renamed fluid_synth_cc_LOCAL to fluid_synth_cc_real, which now handles event queue determination.
Tuning bank and program changes are now handled in fluid_synth_cc_real().
Added fluid_synth_sysex() for processing SYSEX messages (MIDI Tuning Standard messages only currently).
Added public fluid_synth_activate_key_tuning() which has an additional apply parameter.
Added public fluid_synth_activate_octave_tuning() which has an additional apply parameter.
Added public fluid_synth_activate_tuning() which has an additional apply parameter.
Added public fluid_synth_deactivate_tuning() which has an additional apply parameter.
Reverted behavior of fluid_synth_create_key_tuning, fluid_synth_create_octave_tuning and fluid_synth_reset_tuning, to be non-realtime.
SYSEX messages now handled in fluid_synth_handle_midi_event().
2009-09-26 20:10:14 +00:00
Josh Green
ac93e45103 Tuning system should now be thread safe.
Added reference counting to fluid_tuning_t.
Added fluid_tuning_duplicate() to duplicate a tuning.
Added FLUID_EVENT_QUEUE_ELEM_(SET_TUNING/REPL_TUNING/UNREF_TUNING) events.
The tuning iterator functions now use a thread private variable to be thread safe.
Tuning changes can now be activated in realtime (existing voices updated).
Added fluid_synth_get_event_elem() helper function.
Added fluid_atomic_float_(get/set) which use automic integer functions and memcpy.
CPU load should now be thread safe (using atomic integer functions to get/set float value).
Added missing free of thread_queues private in delete_fluid_synth().
Added conversion macros to/from integers and pointers.
Some cleanup in fluid_voice_calculate_gen_pitch() and made it public to libfluidsynth, used to activate tuning changes in realtime.
2009-09-25 00:56:48 +00:00
Josh Green
e5c832c587 Merged fluidsynth_event_queue branch r207:223 into trunk. 2009-09-22 07:04:07 +00:00
David Henningsson
cf39719f5d Remove some debug messages which were added in the last commit 2009-08-14 19:40:50 +00:00
David Henningsson
c914b41476 Fix scaletune error (ticket #26) and synth reset between songs (ticket #31) 2009-08-14 19:37:07 +00:00
David Henningsson
bacd8dbe37 Fix build problem on Solaris (fixes ticket #52) 2009-07-30 08:38:42 +00:00
David Henningsson
17d65e2889 Implement fluid_player_set_loop (fixes ticket #33), fix small memory leak in midi player. 2009-07-28 12:39:06 +00:00
David Henningsson
0f79f2f496 Removed GPL violation (code ripped from USB-MIDI driver rewritten) 2009-07-28 10:48:59 +00:00
David Henningsson
65f822722e Simple clarification regarding synth->effect_channels and fx_left_buf/fx_right_buf 2009-07-27 10:51:05 +00:00
David Henningsson
fa4be13951 Set default reverb level back to zero. 2009-07-09 04:24:30 +00:00
David Henningsson
94e1720aa5 Fix default values to be more consistent with MIDI spec. Also fixes ticket #29 2009-07-08 09:42:17 +00:00
David Henningsson
c67206e383 Fix spelling errors 2009-06-22 19:15:57 +00:00
David Henningsson
f831f48db5 Fix correct man page section 2009-06-18 09:26:31 +00:00
David Henningsson
174ad10e1b Call sample timers before processing block to get better latency 2009-06-07 08:10:09 +00:00
Josh Green
22edb56803 src/Makefile.am: Added -Wl,--as-needed to cut down on dependencies.
src/ fluid_synth.c: Declared functions as static which are local,
  removed useless fluid_synth_verify_settings function.
src/fluid_synth.h: Removed declarations which are now static.
src/fluid_voice.c: Declared functions as static which are local.
src/fluid_voice.h: Removed declarations which are now static,
  added note concerning fluid_voice_gen_value being declared but not used.
2009-06-07 05:16:47 +00:00
David Henningsson
20949ac440 Use sequencer as a buffer for incoming midi events to ensure thread safety (ticket #43). Note: should be reverted once the synth has better thread safety on its own. 2009-06-04 20:41:15 +00:00
David Henningsson
e25765e61b Enable sequencer to accept all types of events that MIDI threads can generate. Change behavior of fluid_sequencer_send_at to ensure thread safety. 2009-06-04 20:31:06 +00:00
David Henningsson
a8bffeb370 Avoid segfault in midi router command handler. Closes ticket #45. 2009-05-14 23:59:30 +00:00
David Henningsson
76b598313a Add functions to get all valid audio/midi driver names (fixes ticket #41) 2009-05-09 14:51:22 +00:00
David Henningsson
4880b8e574 Fix two memory leaks in the sequencer. 2009-05-04 05:51:25 +00:00
David Henningsson
7993412330 Modify sequencer to (optionally) use sample timer instead of system timer 2009-05-03 11:32:44 +00:00
Josh Green
95e985b4c9 Removed WIN32 use of recv() in fluid_istream_gets() since it is also used for stdin. Probably wont work for WIN32 TCP sockets though. 2009-05-02 19:58:23 +00:00
Pedro Lopez-Cabanillas
70aff30d4b fix for win32 build 2009-05-01 19:06:49 +00:00
Pedro Lopez-Cabanillas
4709880402 Doxygen documentation: license changed to CC-BY-SA 3.0
Modules created: audio and settings
2009-05-01 17:26:42 +00:00
Josh Green
83b5ac65ec Added doc/README with info on building API docs and online doc link. 2009-05-01 07:08:36 +00:00
Josh Green
d5cf08dd14 Changed the Doxygen API: 1.1.0 stuff to @since: 1.1.0. 2009-04-29 04:31:11 +00:00
Josh Green
5394a4e81e Fixed build by removing paste duplicates in fluid_filerenderer.c and some other misc stuff. 2009-04-27 19:55:08 +00:00
Josh Green
5fcedecdfd glib is now a dependency, lots of platform specific code moved to glib, implemented initial WIN32 TCP socket code (not tested). 2009-04-27 19:13:49 +00:00
David Henningsson
7de961292b Sample timers and fast MIDI-file rendering (fixes ticket #15) 2009-04-25 15:17:15 +00:00
Pedro Lopez-Cabanillas
648a9f155b * Documentation revision for 1.1.0 2009-04-20 21:10:55 +00:00