Commit Graph

2062 Commits

Author SHA1 Message Date
David Henningsson b4ee43c81b Fix race condition when trying to make several threads real-time simultaneously 2010-07-03 12:26:03 +00:00
David Henningsson 668901c737 Fix multiblock rendering for write_float and write_s16 2010-07-03 12:25:43 +00:00
David Henningsson 96d007ea64 Multi-core rendering 2010-07-03 12:25:16 +00:00
David Henningsson 710d46e9e8 Add settings for thread safety 2010-07-01 11:36:59 +00:00
David Henningsson 0fa019bab3 Optionally Mutex-protect fluidsynth's public API 2010-07-01 11:14:55 +00:00
David Henningsson d88dd7310b Remove unused object 2010-07-01 11:14:35 +00:00
David Henningsson 41853f6f69 Refactor/fix mixer implementation, fix a few bugs 2010-06-30 16:39:20 +00:00
David Henningsson a26b5a6117 Fixup previous commit 2010-06-29 14:44:29 +00:00
David Henningsson ac8533c193 Add sample update function 2010-06-29 14:03:44 +00:00
David Henningsson d5cd9dee7e Move even more files into subdirs 2010-06-29 10:28:38 +00:00
David Henningsson 5d9eade6e7 Move synth core to synth subdir 2010-06-28 20:49:01 +00:00
David Henningsson b79a3e1cbe Event queue for thread boundary, refactor ringbuffer, move some files to unused subdir 2010-06-28 20:03:12 +00:00
David Henningsson d5ab7a8f74 Create bindings and sfloader subdirs 2010-06-27 22:05:33 +00:00
David Henningsson 4856f6d647 Create new datatypes subdirectory 2010-06-27 22:04:27 +00:00
David Henningsson e3fd4984dd Split voice into soft and hard real-time parts 2010-06-26 15:02:58 +00:00
David Henningsson 335f21b697 Add d-bus support to CMake build system, and add howto to README.cmake. (Thanks, plcl!) 2010-06-25 11:12:49 +00:00
David Henningsson 277262b5ea Create subdirectories for drivers and rvoice, and update cmake build 2010-06-20 22:13:57 +00:00
David Henningsson 41717700a5 Refactor lfos into separate file 2010-06-20 06:53:20 +00:00
David Henningsson 933555f2ce Refactor volume and modulation envelopes into separate file 2010-06-20 06:53:00 +00:00
David Henningsson cb143c8fdf Refactor resonant filter into separate file 2010-06-20 06:52:37 +00:00
David Henningsson 6c0ef45e0e D-Bus and rtkit support 2010-06-11 08:23:36 +00:00
Pedro Lopez-Cabanillas a4977b83d6 commit test 2010-05-22 17:43:05 +00:00
Pedro Lopez-Cabanillas 06b672dec6 Updated svn:ignores 2010-05-04 10:26:40 +00:00
Pedro Lopez-Cabanillas 6d3234279a Patch by nshepperd, ticket #78. Segmentation fault in non-interactive mode. 2010-05-04 10:21:54 +00:00
David Henningsson ae09187308 Build issue with OSS on OpenSolaris, credits to laurent. Fixes ticket #74. 2010-04-18 19:47:12 +00:00
David Henningsson 3bf3818f9b Fix OpenSolaris / Sun Studio build issue, credits to laurent. Fixes ticket #73. 2010-04-18 19:32:15 +00:00
Pedro Lopez-Cabanillas 23778b05d6 Check correctly "mmsystem.h" in Windows 2010-04-10 10:45:44 +00:00
Pedro Lopez-Cabanillas 6624f6f2b7 CMake build system - initial implementation 2010-03-17 20:14:13 +00:00
Pedro Lopez-Cabanillas 079e437330 Fix overflow in fluid_curtime(), reported and diagnosed by Felix Krause. 2010-03-17 15:40:07 +00:00
Pedro Lopez-Cabanillas 420882ce2e Fix for fluid_handle_pitch_bend_range(). In ANSI C/C90, all declarations must precede statements in every block. An example of a C compiler following this rule is MSVC. 2010-03-16 19:42:15 +00:00
David Henningsson 57c78bc23a Bug fix for race condition - player_join exiting between files 2010-02-28 10:07:29 +00:00
David Henningsson 26f3119031 Fix typo, segmentation fault and support multiple instances of audio driver. Patch by KO Myung-Hun. 2010-02-11 18:01:47 +00:00
David Henningsson 8131539ad6 Implement pitch bend and pitch bend range as shell commands, contributed by "monk" 2010-01-17 09:50:53 +00:00
David Henningsson 663bb787bd Add options for auto-adjusting latency and media role. Change stream name to "FluidSynth output". 2010-01-01 09:05:38 +00:00
Josh Green a66d020aca Reverb and Chorus no longer queuing, to fix performance issues and now set under mutex. 2009-12-16 02:48:07 +00:00
Josh Green 93475f4d4c fluid_synth_program_change() wasn't working properly in regards to unsetting the preset, should be fixed now. 2009-12-14 19:06:59 +00:00
Josh Green 8aa1027115 Reverted bank and SoundFont ID queuing, now executed immediately using atomic instructions as previously.
Program number now uses 8 bits in the SoundFont ID/bank/program integer, where a value of 128 indicates an unset preset.
fluid_synth_unset_program() now causes preset to be unassigned until a program change occurs.
Updated units in documentation for fluid_player_set_midi_tempo().
2009-12-14 03:57:25 +00:00
David Henningsson b1f76f8b0c Update deltatime on midi file load (closes ticket #59) 2009-12-05 11:19:24 +00:00
Josh Green 39b542ad02 New README-OSX from Ebrahim Mayat for 1.1.1. 2009-11-29 04:12:52 +00:00
Josh Green 9e434ca8e0 Updated versions for 1.1.1 release. 2009-11-27 23:27:54 +00:00
Josh Green 2ee782a6cc Now setting shadow_preset parameter directly in fluid_channel_set_preset() which fixes crash bug where MIDI system reset event would cause shadow_preset and preset to get out of sync.
Reverted return queuing of program changes. Program changes are once again real-time unsafe.
Added public function fluid_synth_unset_program().
Renamed fluid_synth_get_channel_preset_info() to fluid_synth_get_channel_info().
Changed fluid_preset_info_t to fluid_synth_channel_info_t and moved to synth.h header.
Shell 'channels' command now uses thread safe fluid_synth_get_channel_info().
Removed fluid_synth_set_preset_LOCAL(), now just using fluid_channel_set_preset().
Added New In 1.1.1 section to developer docs.
2009-11-27 22:28:23 +00:00
David Henningsson 836a6b45d8 Recommit fix for voice stealing algorithm 2009-11-18 19:14:29 +00:00
Josh Green 35f5a739a2 Added events for bank select and SoundFont ID select and a payload structure for MIDI channel and integer values.
Return queue process is now a thread, instead of a timer, which blocks until signaled by synthesis thread.
fluid_synth_one_block() signals return queue process if any events are pending.
Program change messages are now queued via return event queue if they occur in synthesis context.
Changed fluid_synth_cc() to always queue when in non-synthesis context, no more exceptions.
fluid_synth_bank_select() and fluid_synth_sfont_select() now queue if called out of synthesis context.
Removed checks for synth->state == FLUID_SYNTH_PLAYING, since those functions shouldn't be getting called after state is changed to STOPPED (in delete_fluid_synth).
2009-11-17 08:13:23 +00:00
Josh Green 7758f5a630 Added public fluid_synth_get_channel_preset_info() function and fluid_preset_info_t structure.
Added shadow_preset field to fluid_channel_t which stores the last assigned preset (irrespective of queuing).
Presets now deleted under lock for shadow_preset functionality.
Marked fluid_synth_get_channel_preset() as deprecated.
2009-11-16 07:43:43 +00:00
Josh Green 50c88d392a Moved snd_pcm_nonblock call into new_fluid_alsa_audio_driver2() and out of audio run functions.
Removed unnecessary test of snd_pcm_state and call to snd_pcm_drop.
Removed SETCC macro in fluid_chan.c and replaced with fluid_channel_set_cc() which uses atomic op.
Removed invalid fluid_channel_set_cc() and fluid_channel_get_cc() function declarations (they were replaced with macros).
Added shadow_polyphony field to fluid_synth_t which is accessed via atomic ops by all threads, polyphony field is now only set by synthesis thread.
fluid_synth_cc() now sets cc channel field atomically and queues an update as needed.
synth_thread_id field assigned every call to fluid_synth_one_block().
fluid_synth_alloc_voice() now atomically accesses gain.
Fixed bug in fluid_timer_join() where timer->thread was set to NULL even if auto_destroy was enabled, but was at that point no longer in existence.
2009-11-15 02:34:24 +00:00
Josh Green 8f63cef0aa Actual checkin of -Wno-cast-qual warning inhibitor (wasn't actually checked in in r264).
Added example source files and fluidsynth-v11-devdoc.txt in doc/ to EXTRA_DIST.
Added work around in fluid_coremidi.c for OSX 10.4.
2009-11-07 03:26:19 +00:00
David Henningsson 7eeb88d42f fix unknown macro warning 2009-11-05 22:16:10 +00:00
Josh Green 5040b4bcb0 Reverted char * -> const char * changes to function prototypes: fluid_log_function_t, fluid_default_log_function, fluid_settings_foreach_option_t, fluid_settings_foreach_t, fluid_server_newclient_func_t.
Removed WITHOUT_SERVER from src/config_win32.h.in (the right one this time).
Added atomic value set/get functions for various channel parameters in fluid_chan.h.
Removed shadow parameters in fluid_chorus_t (they weren't needed before).
Merged fluid_chorus_update() into fluid_chorus_set().
Fixed crash bug in Jack driver related to last_client remaining set even if the client was deleted.
fluid_mod_get_value() now uses new fluid_channel_get_* atomic macros.
Synth gain, polyphony, channel pressure, pitch bend and pitch bend sensitivity are now assigned atomically AND querying the value will return the most recent assignment (fixes QSynth knob jumping issues), also changed many _LOCAL functions to update the current assigned value instead of passing the value via the event queue.
Reverb and chorus shadow values set atomically and querying the values will return the most recently assigned ones (fixes QSynth knob jumping issues).
Fixed bug in fluid_synth_process_event_queue_LOCAL() related to chorus parameter order.
Added -Wno-cast-qual to get rid of warning of required cast from (const char *) to (char *).
2009-11-05 04:37:51 +00:00
Josh Green 8b231faab7 Added fluid_synth_get_active_voice_count(). 2009-11-01 22:56:26 +00:00
Josh Green b46061bfe7 High priority scheduling was not working in alsa, oss and pthread drivers. Converted to using fluid_thread_t.
Removed prio parameter from new_fluid_thread (now just using prio_level of 0 to disable).
Fixed non-blocking in alsa_raw and alsa_seq drivers.
Added polling and non-blocking to OSS MIDI driver.
2009-10-30 21:49:54 +00:00