Commit Graph

1814 Commits

Author SHA1 Message Date
Tom M 09076e231d
Update issue_template.md 2019-01-17 19:52:27 +01:00
derselbst b98ba5bc63 Merge branch '2.0.x'
Closes #500
2019-01-12 16:54:35 +01:00
Marcus Weseloh caf61baa04 Increase verbosity for fluid_settings_* functions 2019-01-12 14:37:27 +01:00
Marcus Weseloh 53bed2d506 Fix example code to deactivate reverb and chorus via fluid_settings_setint 2019-01-12 14:37:20 +01:00
Marcus Weseloh 241f676047 Add note about changes to fluid_settings_set* functions introduced in #293 2019-01-12 14:37:12 +01:00
Tom M 4f25d0c809
Merge pull request #498 from FluidSynth/zone-names
As instrument zone are common to all preset zones, an instrument zone cannot uniquely identified by a preset zone name.
Note: instrument zone name and preset zone name are used in warning about invalid modulators.
2019-01-04 11:25:10 +01:00
jjceresa b462e25ba3 Removing useless preset_zone parameter. 2019-01-03 19:57:27 +01:00
jjceresa cc3d93b56e Change on prefixe zone name
-Name of an instrument zone shouldn't prefixed by the preset zone
 name.
 This is due to the fact that instrument zone are common to all
 preset zone. Consequently, an instrument zone cannot identfied
 via a preset zone.
-This new change, simply prefixe a zone as this:
 instrument zone name prefixed by iz:
 preset zone name prefixed by pz:
2019-01-03 19:40:55 +01:00
derselbst 8b1820580b Merge branch '2.0.x' 2018-12-30 12:42:30 +01:00
derselbst 1bae9b2fe1 bump to version 2.0.3 2018-12-30 12:42:00 +01:00
derselbst 0f6c40c15e stop adding empty strings to readline's history 2018-12-29 19:58:10 +01:00
derselbst 8634613509 fix incorrect documentation of fluid_sample_sizeof() 2018-12-29 18:27:24 +01:00
derselbst b7b420617b fix double free in fluid_sample_set_sound_data() 2018-12-29 18:21:43 +01:00
derselbst 15d27b7145 fix inverse logic in fluid_sample_set_sound_data() 2018-12-29 17:34:36 +01:00
derselbst 4d612c22f4 fix segfaults in fluid_is_soundfont() and fluid_is_midifile() 2018-12-29 11:18:36 +01:00
derselbst 488da516cd clarify documentation of fluid_sample_sizeof() 2018-12-28 14:54:13 +01:00
derselbst c8b18056c6 remove unused fluid_sample_t::userdata 2018-12-28 14:47:55 +01:00
derselbst 2c9c176e17 fix documentation of fluid_sfont_iteration_next_t 2018-12-26 21:03:59 +01:00
derselbst 6d981aedfe Merge branch '2.0.x' into master 2018-12-22 16:08:54 +01:00
carlo-bramini 828307ff09 Fix error with MSVC (#492)
FLUID_INLINE must be used instead of inline, otherwise MSVC fails to build fluidsynth.
2018-12-22 16:08:09 +01:00
derselbst d2078e63b4 clarify need for io.h 2018-12-22 16:05:22 +01:00
derselbst 06ec2d4e67 Revert "remove unused io.h include"
This reverts commit cb485806c3. Fixes #491.
2018-12-22 16:04:49 +01:00
derselbst 5fe56b32b2 clarify availability sdl2 and waveout audio driver options 2018-12-21 20:11:01 +01:00
derselbst 10ddcc0cd3 Merge branch '2.1-testing' into master 2018-12-21 20:05:32 +01:00
jjceresa 458cea0aff Fix incorrect comment (#488)
Normalized value of MIDI sources (before unipolar or bipolar mapping) is always in the range [0..+1], regardless of MIDI event (even for FLUID_MOD_PITCHWHEEL).
2018-12-21 19:54:15 +01:00
Tom M d666515c31
Merge pull request #487 from FluidSynth/min-attenuation
Fix minor bug in lower_boundary_for_attenuation()
2018-12-21 19:53:26 +01:00
jjceresa e9b0f0d24b Add modulators checking at soundfont loading time (#467)
Actually some basic modulators check are done at noteon time (in fluid_voice_add_mod()). That means that we know if a modulator (modx) is invalid only when a MIDI noteon is received and only for a preset modx belongs to. This is not appropriate.

This moves the modulator checking at soundfont loading time. Enhancements are:
1) A better verbose modulator integrity check, for any soundfont loaded at appropriate time.
1.1) All modulators are checked (preset zone (local/global), instrument zone (local/global).
1.2.1) Modulators check are enforced to source src1 and src2  (for non-CC and CC sources) (following SF specs (except for CC LSB) ( see comment in fluid_synth_cc_LOCAL()).
Modulators CC sources checking is coherent with the actual behaviour in fluid_synth_cc_LOCAL() in regard of modulation triggering.
1.2.2) Also, identical modulator in the same zone are detected. 
1.2.3) Any invalid modulator(sources invalid, or modulator identical) is removed at loading time with a warning message displaying the cause and name of the modulators.

2) This fix a bug in noteon, in the case of identical modulators in global preset zone.
Assuming 2 identical modulator (m1 and m2) in a preset global zone, the actual noteon doesn't check this case (the actual code detect identical modulator in all others zones (instrument (local or global), preset(local)) but not preset global).

3) NoteOn is faster.
3.1)There is no more modulators checks at noteon making this more efficient.
3.2) As there are no identical modulator in the same zone, there is no more identity modulator check (i.e local zone against local zone), (i.e global zone against global zone). This result in a faster code and the bug described in (2) is gone.

4) Modulators sources checking as been added in API functions fluid_synth_add_default_mod() and fluid_voice_add_mod(). Please
2018-12-21 19:42:00 +01:00
jjceresa e8dd6ae389 Import modulator source src1 correctly.
- When primary source input (src1) is set to General Controller
  'No Controller', output will be forced to 0.0 at synthesis time
  (see fluid_mod_get_value()).
  That means that the minimum value of the modulator will be always 0.0.
  We need to force amount value to 0 to ensure a correct evaluation of the
  minimum value later (see fluid_voice_get_lower_boundary_for_attenuation()).
2018-12-21 12:19:37 +01:00
derselbst 54a9f29305 remove public comments about internal details 2018-12-20 17:46:10 +01:00
derselbst d0813be1c5 add missing getters for lyric and text midi events
fixes #468
2018-12-20 17:45:10 +01:00
jjceresa b659fd82a5 Import modulator source src2 correctly.
- When secondary source input (src2) is set to General
  Controller 'No Controller', output will be forced to +1.0 at synthesis time
  (see fluid_mod_get_value()).
  That means that this source will behave unipolar only. We need to force the
  unipolar flags to ensure the modulator will behave correctly later in
  fluid_voice_get_lower_boundary_for_attenuation().
2018-12-19 18:12:09 +01:00
derselbst 2cef5b0587 Merge branch 'master' into 2.1-testing 2018-12-19 14:22:40 +01:00
Marcus Weseloh 8da7f11a11 Only retrieve modification time once and remove warning if failed
This change removes the warning message if retrieving the soundfont file
modification time fails in the sample cache loader. The warning made sense
while we didn't have mtime support on all platforms, but after switching
to GLibs g_stat, it's no longer needed.

To reduce the number of calls to fluid_get_file_modification_time and also
get rid of a possible race condition, getting the mtime has been moved to
fluid_samplecache_load.

This change also fixes #483 because it removes the bogus warning messages
if a soundfont was loaded from memory by abusing the filename to store a
pointer.
2018-12-19 14:14:34 +01:00
carlo-bramini c9b8d40fc2 Fourcc support (#482)
Have a direct comparison to the fourcc code rather than searching through chunk ids all the time with chunkid()
2018-12-19 14:09:29 +01:00
jjceresa b7af84fbd5 optimizing fluid_voice_modulate() (#486)
This avoids recalculation of the same generator when several modulators have that generator as destination.
2018-12-19 14:07:34 +01:00
jjceresa 06bca9b894 Fix minor bug in lower_boundary_for_attenuation()
- v variable is renamed min_val for clarity.
- This fix a bug when calculating the possible minimun
  value (min_val) of a modulator. min_val should only
  be dependant of:
  - signs of mapped sources (ie bipolar [-1..+1] or unipolar [0..+1])
  - sign of amount.
  - absolute value of amount.
2018-12-16 07:57:51 +01:00
Tom M ef5739f3ce
Merge pull request #484 from FluidSynth/fix-cross-build
Cross Compilation Fixes
2018-12-15 07:46:53 +01:00
derselbst a9662bf331 fix gcc8 complaining about stringop-truncation 2018-12-14 19:42:08 +01:00
derselbst 4f1f7349db fix cmake not finding make_tables when cross-compiling
Fixes #477.
2018-12-14 17:50:03 +01:00
derselbst cb485806c3 remove unused io.h include 2018-12-14 17:50:03 +01:00
derselbst 73689925da disable clang-tidy for normal builds
It may cause errors when cross compiling. Keep it for profiling builds
though.

Fixes #475.
2018-12-14 17:49:49 +01:00
carlo-bramini 978283bbf0 Add Sdl2 driver (#478) 2018-12-14 16:43:35 +01:00
derselbst dde52c35dd update test_sfont_loading to call fluid_is_soundfont() 2018-12-09 10:35:21 +01:00
derselbst d5ba910f3c document waveout option for audio.driver 2018-12-04 19:36:10 +01:00
jjceresa ba9092ef98 Reducing defsfont loader code (#480) 2018-12-02 17:42:51 +01:00
carlo-bramini cfe2d158f4 Add WaveOut driver (#466) 2018-12-01 15:04:26 +01:00
jjceresa 749ce44753 Implement FDN Reverb (#380)
Supersedes the previous Schroeder-Moorer based "Freeverb".
2018-12-01 14:55:18 +01:00
Tom M b67ecb8b56
Merge pull request #406 from FluidSynth/modenv-convex
Convex shape for modEnv
2018-12-01 14:41:42 +01:00
Tom M b9c253b6d9
Merge pull request #473 from carlo-bramini/winmidi-fixes-1
Minor Winmidi fixes
2018-12-01 13:00:01 +01:00
carlo-bramini ebb383b47f
Force default device if none is selected 2018-11-25 21:20:18 +01:00