derselbst
3ef6af5ade
Merge branch 'recent-docs'
2018-10-06 11:45:18 +02:00
derselbst
fd7db023dd
set upper chorus depth to 256 ms
...
upper depth limit (ms) = (MAX_SAMPLES * 1000) / lower sample rate limit
with MAX_SAMPLES==2048 && lowersrate==8000
2018-10-05 18:39:54 +02:00
derselbst
f972fbf1ec
remove experimental hint from fluid_synth_set_sample_rate()
2018-10-05 18:12:31 +02:00
derselbst
57ef2dfed8
fix memory leaks in load_phdr() and load_ihdr()
2018-10-02 20:20:22 +02:00
derselbst
7f2d655b9c
fix various NULL derefs in fluid_sffile
2018-10-02 20:14:56 +02:00
derselbst
b31afd65a5
fix NULL deref in new_fluid_hashtable_full()
2018-10-02 19:33:50 +02:00
carlo-bramini
6f8a574e36
Various fixes to dsound driver ( #435 )
...
- fluid_dsound_audio_run() and fluid_win32_error() are now static functions.
- WAVEFORMATEX is not required by DirectSound during the playback. We do not need it anymore after calling ::SetFormat(), so allocating this structure dynamically inside driver structure is useless.
- Implemented support for float sample type.
- Uses an event object for handling the end of thread, it allows to combine the quit event with the later wait in milliseconds in a single block.
- Calculates the amount of milliseconds to sleep rather than sleeping always for one millisecond.
- Fix an error into a FLUID_LOG() call.
- Fix handle leak of the thread, now it is correctly closed with CloseHandle().
- ExitThread() is a nonsense in that position, since the thread is already exiting.
- Fix error when compiling with WSDK 8.1, by defining NOBITMAP, in case NOGDI macro added somewhere
2018-09-29 10:08:34 +02:00
derselbst
923f5f3544
update API doc of delete_fluid_sequencer()
2018-09-21 19:00:28 +02:00
Tom M
fb684aa5d8
Merge pull request #434 from rncbc/jack_driver-last_client-reuse-fix
...
jack_driver: last_client reuse fix.
2018-09-20 20:20:55 +02:00
jjceresa
75b77f0186
Remove redundant invalid preset generators checking in fluid_defpreset_noteon() ( #430 )
2018-09-20 20:11:11 +02:00
rncbc
99e235e279
jack_driver: last_client reuse fix.
2018-09-20 09:04:21 +01:00
Colin Kinloch
f4b88fc747
coremidi input port and autoconnect ( #427 )
2018-09-15 14:08:55 +02:00
jjceresa
f566f0ef33
Simplify fluid_mod_get_xxx_value() signature. ( #429 )
2018-09-15 14:01:15 +02:00
Tom M
e4b8e2b44c
Implement fluid_get_userconf() on windows ( #425 )
2018-09-09 22:34:35 +02:00
derselbst
eb132d8196
correctly typedef fluid_stat_buf_t for glib < 2.26
2018-08-30 22:14:27 +02:00
derselbst
b9dd426046
correctly typedef fluid_stat_buf_t
...
fixing copy'n paste mistake... excuse me
2018-08-30 19:53:40 +02:00
derselbst
9052bad56c
silence MSVC type narrowing warnings in fluid_cmd.c
2018-08-30 18:45:29 +02:00
derselbst
7d9a02d836
replace strlen with FLUID_STRLEN
2018-08-30 18:40:49 +02:00
derselbst
cdc8d38f4e
silence MSVC type narrowing warnings in fluid_settings.c
2018-08-30 18:33:05 +02:00
derselbst
70fbabf97c
fix incompatible types warning: 'fluid_stat_buf_t *' to '_stat64i32 *'
...
only occurs on Win64 with glib < 2.26
2018-08-30 17:38:19 +02:00
derselbst
4d8574d38a
change fluid_log_* prototypes to const char*
2018-08-23 16:56:22 +02:00
Tom M
55a4bb5597
Merge pull request #421 from FluidSynth/test-flag
...
Always build unit tests, remove `enable-tests` cmake flag
2018-08-10 16:39:17 +02:00
derselbst
500959701e
move fluid_file_renderer_settings() declaration to fluid_adriver.h
2018-08-08 20:55:32 +02:00
derselbst
908aaeb5cc
cmake: setup linker directories before creating target
2018-08-07 15:19:05 +02:00
derselbst
39f574942e
cmake: remove redundant include and link dir variables
...
cf. docs of pkg_check_modules()
2018-08-07 15:07:20 +02:00
derselbst
ff1482ec06
fix dll visibility on win32 for unittests
2018-08-06 20:29:50 +02:00
derselbst
521e5451fc
remove cmake option enable-tests
...
Always build unit tests instead and use cmakes OBJECT library to bypass visibility control and the value of BUILD_SHARED_LIBS.
2018-08-05 20:50:41 +02:00
derselbst
063ab5d7d2
remove unused midi driver status functions
2018-07-21 10:43:38 +02:00
derselbst
47c4a5b1c7
remove various redundant audio / midi driver declarations
...
by moving already existing function declarations to fluid_adriver.h and
fluid_mdriver.h resp.
2018-07-21 10:37:43 +02:00
derselbst
f6f66d53fd
make fluid_synth_write_float() safe when called with NULL buffers
2018-07-20 19:30:18 +02:00
derselbst
8afb46515f
fix comment for sinc interpolation table
...
a Hanning window is applied, rather than a Hamming window
2018-07-19 17:22:44 +02:00
derselbst
bb413011f7
update deprecated note of fluid_synth_nwrite_float()
2018-07-16 12:21:55 +02:00
derselbst
2185194d43
cleanup fluid_synth_process()
...
remove code duplications
2018-07-15 19:52:48 +02:00
jjceresa
3db36117a1
Adding seamless attack transition for legato notes.
...
Since v 2.1 ,as recommended by soundfont 2.01/2.4 spec
ATTACK section is convex. So, when skiping from a
section above ATTACK to ATTACK, it is necessary to
correct current modulation envelope value to get
seamless transition.
2018-07-14 23:33:16 +02:00
derselbst
af1fc75717
add fluid_synth_count_effects_groups()
2018-07-12 10:34:02 +02:00
derselbst
7e627c575c
fix NULL deref in jack driver
2018-07-11 21:07:37 +02:00
derselbst
b46998ba04
fix alsa driver with custom callback
2018-07-11 21:05:12 +02:00
Tom M
c4f0b19c64
Merge pull request #405 from FluidSynth/fluid-synth-process
...
Complete implementation of fluid_synth_process() and add support for multi-channel effects rendering.
2018-07-11 17:26:51 +02:00
derselbst
4b5dc36d53
extend the documentation of fluid_synth_process()
2018-07-11 14:44:40 +02:00
derselbst
7f1cdd2acf
make fluid_synth_add_default_mod() const correct
2018-07-11 11:52:45 +02:00
derselbst
e6e6c570f6
fix NULL deref in new_fluid_rvoice_mixer()
2018-07-11 10:49:57 +02:00
derselbst
88fda6f99b
support multiple effects units
...
adds a new setting "synth.effects-groups" that allows multiple effects
units, in order to render effects of each midi channel to a separate
audio channel
2018-07-07 12:53:25 +02:00
Tom M
334c752b2a
Merge pull request #409 from FluidSynth/player-reset
...
Promote player.reset-synth to real-time setting
2018-07-04 12:48:17 +02:00
jjceresa
8d8e7ecd20
noteoff during the attack section of the modulation envelope.
...
- this insures seamless pitch and filter frequency cutoff transition.
2018-07-01 23:05:24 +02:00
Tom M
5cd99057bf
Merge pull request #407 from FluidSynth/delete-ramsfont
...
Remove ramsfont
2018-07-01 12:54:51 +02:00
carlo-bramini
4ea94a324f
Fix single thread build ( #410 )
...
Compilation fails if ENABLE_MIXER_THREADS is set to zero, due to a mismatch of parenthesis.
2018-07-01 12:54:07 +02:00
derselbst
5c99b86234
warn if user provided shell config wasnt found
2018-07-01 07:20:15 +02:00
derselbst
fefb91def9
promote player.reset-synth to real-time setting
2018-07-01 07:12:35 +02:00
derselbst
3ffa6a318e
warn if non-realtime settings are set
2018-07-01 06:56:22 +02:00
derselbst
d7609d43f6
remove ramsfont
2018-06-26 08:34:41 +02:00
derselbst
a8be173ba3
fix memory leak in fluid_midi_file_read_event()
2018-06-26 07:55:46 +02:00
derselbst
5e3d5acbdb
prefer FLUID_STRNCPY to strcpy
2018-06-26 07:43:54 +02:00
derselbst
d0958c6e35
Merge branch 'master' into modenv-convex
2018-06-26 06:53:02 +02:00
derselbst
2e46df839a
fix build
2018-06-26 06:52:35 +02:00
derselbst
cee3d4e985
force attack section of modEnv to be convex
2018-06-25 17:59:57 +02:00
derselbst
f8b95969c8
rename fluid_event_priv.h -> fluid_event.h
2018-06-25 17:59:14 +02:00
derselbst
5ea6bed2d4
Merge branch 'master' into fluid-synth-process
2018-06-25 17:12:29 +02:00
derselbst
9382edabd5
enforce coding style guide
...
using astyle
2018-06-24 13:13:18 +02:00
derselbst
728c560cc6
Merge branch 'master' into fluid-synth-process
2018-06-20 15:25:39 +02:00
jjceresa
19b525af9b
Add comment for main function()
2018-06-20 15:11:43 +02:00
jjceresa
1dc7ce042b
Adding comments to fluidsynth.c
2018-06-20 15:11:00 +02:00
derselbst
734eaa9bb4
deprecate fluid_synth_nwrite_float() in favor of fluid_synth_process()
2018-06-18 16:21:37 +02:00
derselbst
b9c75f3a8e
docs: elaborate on sample buffer zeroing
...
of fluid_synth_process()
2018-06-18 16:15:24 +02:00
derselbst
c309e417c5
adjust implementation of audio drivers for fluid_synth_process()
2018-06-18 16:01:27 +02:00
derselbst
723816cd5d
implement new behaviour of fluid_synth_process()
2018-06-18 16:01:27 +02:00
Tom M
b6b6931468
Revert "implement true zero gain for maximum attenuation ( #396 )" ( #398 )
...
This reverts commit 29d1947ccc
. Reading the spec again, the final gain amp should actually applied for the whole voice, not just single buffers (cf. sect. 9.1.8 Figure 2). Thus rvoice_mixer is not the correct place to implement this. It should instead be done in fluid_rvoice_calc_amp().
reopens #319
closes #399
2018-06-17 19:54:37 +02:00
derselbst
a55e7e8d79
fix discarding const
2018-06-17 15:59:05 +02:00
derselbst
9e2ea65618
document FLUID_MIXER_MAX_BUFFERS_DEFAULT
2018-06-17 15:58:22 +02:00
Tom M
29d1947ccc
implement true zero gain for maximum attenuation ( #396 )
...
fixes #319
2018-06-15 18:46:10 +02:00
jjceresa
0921ccc4c0
introducing FLUID_PEAK_ATTENUATION macro. ( #397 )
...
avoids hard-coding the magic 96 dB everywhere in the code
2018-06-15 18:42:15 +02:00
derselbst
a1bc872754
implement new_fluid_cmd_handler() according to documentation
...
by only registering commands requested by the user
2018-06-12 07:39:33 +02:00
derselbst
183a69a51f
avoid leaking midi_router in fluidsynth.c
2018-06-12 06:37:24 +02:00
derselbst
5c83c9748b
allow manipulating midi files using midi_router
2018-06-11 17:50:35 +02:00
derselbst
b3cb079b60
avoid exporting conversion tables to public
2018-06-10 13:16:43 +02:00
derselbst
e50042744b
avoid unnecessarily exporting functions to public
...
mark them static
2018-06-10 08:51:15 +02:00
derselbst
995f22192d
add a getter for fluid_preset_t::sfont
2018-06-04 10:49:58 +02:00
Tom M
b0e22993cf
Merge pull request #394 from FluidSynth/sfaccessors
...
soundfont loader accessor function
2018-06-03 09:07:26 +02:00
derselbst
a33e3c698d
set soundfont iteration methods on fluid_sfont_t creation
2018-06-03 07:13:04 +02:00
derselbst
77e608e3ce
add public getters and iteration functions for fluid_sfont_t
2018-06-02 15:01:40 +02:00
derselbst
344133a704
add public getters for fluid_preset_t
2018-06-02 14:07:53 +02:00
derselbst
734e5db849
prefer using DEBUG rather than NDEBUG
2018-06-02 13:23:50 +02:00
KO Myung-Hun
85356d2732
fix compilation below GLib v2.26.0
...
GStatBuf was introduced in GLib v2.26.0, fixes #389
2018-05-28 21:32:48 +02:00
derselbst
d0d156f50f
silence gcc4.8 erroneously reporting uninitialized vars
2018-05-20 10:45:35 +02:00
derselbst
c61b93dd74
update copyright year
2018-05-20 10:28:23 +02:00
derselbst
b70b24ce0a
remove fluid_rvoice_mixer_set_threads() as rvoice event function
...
Changing the number of rendering threads on-the-fly is not considered to be a usecase. In fact it will cause glitchy audio if doing so while synthesizing because all rendering threads are killed and their mixdown buffers are reallocated. This change should fix glitchy audio that might occur at the beginning of synthesization, as the rvoice_event for thread allocation may be dispatched (too) late.
2018-05-19 17:04:37 +02:00
derselbst
ce337e2497
use explicit array access in fluid_synth_nwrite_float()
...
rather than pointer arithmetic
2018-05-18 13:09:03 +02:00
derselbst
6bcdf87c06
fix broken multithread rendering
...
and minor current_blockcount cleanups
2018-05-18 13:07:16 +02:00
Tom M
fcc69471d6
Merge pull request #385 from FluidSynth/issue49
...
Add reverb and chorus settings
2018-05-18 10:15:11 +02:00
Tom M
7aea42c96f
Merge pull request #374 from FluidSynth/rvoice-align
...
Enable / Improve vectorizion in rvoice_mixer
2018-05-18 10:14:14 +02:00
derselbst
df4c9878de
fix endless loop in fluid_sample_timer_process()
2018-05-18 09:58:05 +02:00
Tom M
51252b72b4
Merge branch 'master' into issue49
2018-05-17 22:13:36 +02:00
Tom M
b40fb9d782
Merge pull request #382 from FluidSynth/unregister
...
fix double free when deleting fluid_seqbind_t
2018-05-17 22:13:08 +02:00
derselbst
0188cd9d93
rename reverb roomsize setting to match naming conventions
2018-05-17 21:44:03 +02:00
derselbst
435361ef0c
rename chorus getters to match naming conventions
...
fluid_synth_get_chorus_speed() and fluid_synth_get_chorus_depth()
2018-05-17 21:38:04 +02:00
derselbst
57abab0a31
document reverb and chorus settings
2018-05-17 19:59:34 +02:00
derselbst
e1a3e2468b
require explicit unregistering of sequencer clients
2018-05-17 15:36:38 +02:00
derselbst
75e168cb58
update API doc of fluid_synth_process() and add usage example
2018-05-17 14:43:59 +02:00
derselbst
70837ce8fc
turn reverb and chorus settings into realtime settings
2018-05-14 14:56:34 +02:00
carlo-bramini
04930d62d1
__restrict supported from VS 2005 and newer ( #383 )
...
Check if the MS compiler really supports this keyword.
2018-05-14 13:52:28 +02:00
derselbst
5d3f727547
fix use after free in fluid_sample_timer_process()
2018-05-14 10:27:21 +02:00
derselbst
5f70eb8226
fix double free when deleting fluid_seqbind_t
2018-05-13 11:38:22 +02:00
Tom M
f1384f03d9
Merge branch 'master' into rvoice-align
2018-05-11 16:53:42 +02:00
derselbst
b9ffd8f587
deprecate reverb and chorus shell commands
2018-05-10 21:26:08 +02:00
derselbst
8690b4dbda
remove default reverb and chorus macros from public API
...
should now be fetched through a settings instance
2018-05-10 20:00:25 +02:00
derselbst
4f2be10507
add reverb and chorus settings
...
as suggested by #49
2018-05-10 20:00:25 +02:00
derselbst
8c2ef30038
fix uninitialized member access
...
of voice_zone->range.ignore; introduced in #370
2018-05-09 11:39:21 +02:00
jjceresa
3dcb7d3b92
remove redundant function declarations ( #379 )
...
Remove fluid_channel_get_interp_method(), fluid_channel_set_interp_method(), fluid_channel_get_preset() and fluid_channel_get_num() as they are already defined as macros.
2018-05-05 21:08:59 +02:00
derselbst
d47de30f16
fix tautological comparision
...
on platforms where `char` is implemented as `unsigned char`, addresses #378
2018-05-05 20:55:26 +02:00
jjceresa
2bff09b420
fluid_rvoice_check_sample_sanity cleanup ( #375 )
...
Check already done by the caller.
2018-05-05 16:40:55 +02:00
derselbst
d8f46f2bae
remove unused vars, clarify comments
2018-05-05 15:17:09 +02:00
derselbst
5280aae7ac
optimize fluid_align_ptr() for alignment powers of two
2018-05-04 16:40:45 +02:00
Tom M
05c2d57e65
Merge pull request #372 from FluidSynth/rvoice-refactor3
...
rvoice_mixer refactorings + cleanups
2018-05-02 20:51:53 +02:00
derselbst
c64d2b44be
silence uninitialized warning
2018-04-30 10:16:01 +02:00
derselbst
edd52edac2
consistently use signed int for sfont_id, bank_num and preset_num
2018-04-30 10:09:48 +02:00
derselbst
3e3bef87ec
report errors in fluid_handle_set()
2018-04-29 16:11:30 +02:00
derselbst
1a5ea8d8e5
fix signedness warning
2018-04-27 21:32:00 +02:00
derselbst
ab255b7178
avoid polling variables from global mem
...
that never change
2018-04-27 20:54:30 +02:00
derselbst
1d9dfd2a2a
optimize fluid_mixer_buffers_zero()
...
only zero needed parts of sample buffers
2018-04-27 18:25:07 +02:00
derselbst
b7cf79bc15
vectorize mixdown loop of fluid_mixer_buffers_mix()
2018-04-27 17:49:22 +02:00
derselbst
58008aae18
convert rvoice_mixer mixdown buffer to 1D arrays
2018-04-27 17:34:29 +02:00
derselbst
ed312b7acc
refactor fluid_rvoice_mixer_process_fx()
2018-04-26 22:01:50 +02:00
derselbst
89015494cb
vectorize mixing loop of fluid_rvoice_buffers_mix()
2018-04-26 22:01:49 +02:00
derselbst
f332f32a7c
remove optimization for centered stereo samples
...
in favour of vectorized mixing loop. Was incredibly unlikely to happen anyway.
2018-04-26 16:47:06 +02:00
derselbst
ba9da3b790
enable FLUID_ASSERT macro
2018-04-26 16:38:12 +02:00
derselbst
7ebdabae0c
allocate mono voice mix buffer on the heap
2018-04-26 16:25:26 +02:00
derselbst
e229f62020
cmake: detect openMP
2018-04-26 16:25:18 +02:00
derselbst
cdbd508007
add fluid_align_ptr() for aligning pointers
2018-04-26 16:07:19 +02:00
Marcus Weseloh
9ad07430ea
Merge pull request #370 from FluidSynth/unique-sfont-insts
...
Only import Soundfont instruments once
2018-04-25 22:58:01 +02:00
derselbst
354bea9cfc
fix build if ENABLE_MIXER_THREADS == 0
2018-04-25 21:08:48 +02:00
derselbst
2ad96d020e
avoid leaking rvoice_mixer threads
...
introduced in 7ae9099293
2018-04-25 21:05:02 +02:00
derselbst
f8e4890a63
refactor data types of fluid_channel_t members
...
Use char if possible + reorder fields to avoid padding. Overall saved 408 bytes per fluid_channel_t instance
2018-04-25 17:21:38 +02:00
derselbst
f34567fb61
reorder fields of struct _fluid_voice_t
...
to minimize padding
2018-04-25 16:21:37 +02:00
derselbst
f867e3b15a
fix rvoice_buffers initialization loop
2018-04-25 15:59:00 +02:00
derselbst
8aa073b4a4
remove redundant fluid_rvoice_mixer_t::remove_voice_callback
...
call rvoice_eventhandler directly to handle finished voices
2018-04-25 15:59:00 +02:00
derselbst
5d28ecc5cc
remove redundant fluid_rvoice_mixer_t::buf_blocks
...
as it's always equal to FLUID_MIXER_MAX_BUFFERS_DEFAULT
2018-04-25 15:59:00 +02:00
derselbst
0b64c8d887
remove fluid_rvoice_dsp_t::is_looping flag
...
and pass it to interpolate functions directly and reorder flags
2018-04-25 15:58:59 +02:00
derselbst
b95266cf6c
remove fluid_rvoice_dsp_t::dsp_buf
...
pass dsp_buf to interpolation functions directly
2018-04-25 15:58:59 +02:00
derselbst
9178eebf39
add FLUID_RESTRICT
...
for restrict pointers
2018-04-25 15:58:59 +02:00
derselbst
f2cf1f82c7
move fluid_rvoice_buffers_mix() to rvoice_mixer
2018-04-25 14:57:40 +02:00
derselbst
907ec27a9e
optimize away memset/mix if voice is quiet
2018-04-25 14:56:20 +02:00
Marcus Weseloh
df3bab0b40
Only import instruments once from Soundfont
...
This changes the way instruments and their related information is imported
from a Soundfont. Previously, each preset zone got a complete copy of the
instrument and related information, wasting a lot of precious memory.
After this change, an instrument and related information is only
imported once and then linked into all preset zones that use this
instrument.
2018-04-22 19:09:23 +02:00
Marcus Weseloh
c4003bef39
Store mutable information about inst zones in new fluid_voice_zone_t struct
...
This change separates the static instrument zone information read from
the Soundfont from the information that gets modified on import and
later via the legato handling. It opens opens up the possibility of
having unique instruments that only get imported once and then linked
into the individual preset zones.
2018-04-22 19:08:09 +02:00
Marcus Weseloh
3603a34a77
Also load 46 zero words area after sample for uncompressed samples
2018-04-22 12:20:37 +02:00
Marcus Weseloh
3ce3575269
Ensure that loops are sanitized and sample is optimized for dynamically loaded samples
2018-04-22 10:37:14 +02:00
Marcus Weseloh
7240461e5b
Merge branch 'master' into dynamic-sample-loading
2018-04-21 23:34:20 +02:00
Marcus Weseloh
9dcb4148cb
Only open the Soundfont for sample reading if necessary
2018-04-21 23:22:45 +02:00
derselbst
02de830043
fix dangling pointer on inst_zone sample lookup
...
fixes #369
2018-04-21 23:17:19 +02:00
derselbst
323b9b8cbf
avoid assigning incompatible pointers
2018-04-21 22:31:18 +02:00
derselbst
17dded3700
avoid NULL deref in fluid_rampreset_preset_delete()
2018-04-21 16:55:08 +02:00
derselbst
71592ec679
fix memory leaks during sfont loading
2018-04-21 16:48:56 +02:00