Commit Graph

2587 Commits

Author SHA1 Message Date
Mauro Carvalho Chehab 4e8f570d32 Don't warn when parsing config files
When fluid_shell is called from fluid_source(), is is currently
printing this message:

    Received EOF while reading commands, exiting the shell.

Suppress it.
2021-01-08 23:48:40 +01:00
Mauro Carvalho Chehab 3d805e9a03 Only change a set if the value actually changed
That prevents warnings about changing a non-realtime parameter
set command is issued, but the value is identical to the
previous one.
2021-01-08 23:47:39 +01:00
derselbst e04cd572cb Merge branch '2.1.x' into master 2021-01-03 21:37:32 +01:00
Tom M fd9bf6a6b0
MinGW CI: Provide Release Build Binaries (#738) 2021-01-03 20:55:48 +01:00
derselbst 272b3b8717 Update API docs on fluid_synth_sfunload() 2021-01-03 18:30:16 +01:00
jjceresa cf424de5cf delete_fluid_synth() may not unload soundfonts still used by rvoices 2021-01-03 18:30:16 +01:00
jjceresa 0d38823527 SoundFonts cannot be unloaded if polyphony is ever exceeded
If polyphony is exceeded and FluidSynth has to allocate a voice by
calling fluid_synth_free_voice_by_kill_LOCAL(), two problems occur:

 1)The value returned by fluid_synth_get_active_voice_count() never
   returns back to 0.
 2)SoundFont samples are not unref'd properly, and therefore if an attempt is
   made to unload the SoundFont, the deferred unload timer is started, and
   fluid_synth_sfunload_callback() unsuccessfully tries	to unload the SoundFont forever.

These 2 issues are fixed by this commit.
2021-01-03 18:30:16 +01:00
Tom M 5c1cfe6a5f
Regression tests for #727 (#735)
This PR adds regression tests for #727, ensuring that soundfonts are correctly unloaded via the lazy-timer-unloading mechanism.
2021-01-03 09:42:42 +01:00
Tom M 6339feb106 Update API docs on settings recycling 2021-01-03 09:41:46 +01:00
derselbst 57f40ea91c Fix heap-use-after free 2021-01-03 09:41:46 +01:00
derselbst 03cf8e28f6 Add a unit test for issue 733 2021-01-03 09:41:46 +01:00
derselbst 17dfadbd0b Fix SonarCloud Analysis on 2.1.x branch
By adding sonar-project.properties from master
2021-01-02 17:14:41 +01:00
Tom M 4bfeff5764
Elaborate API docs on voice state 2021-01-01 22:27:25 +01:00
derselbst 26710f1076 Bump to 2.1.6 2021-01-01 21:26:12 +01:00
derselbst 6b0ddee85c Update CI scripts from master 2021-01-01 21:22:27 +01:00
jjceresa 0ae16f6a2b
Check first MIDI files then Soundfonts files in fluidsynth.c (#731) 2020-12-31 10:28:12 +01:00
Tom M a14c70cbbd
Fix the fluid_synth_set_sample_rate() change problem for jack driver (#722) 2020-12-31 10:25:53 +01:00
Tom M 21d20eac67
Replace AppVeyor vcpkg CI with Azure Pipelines (#728) 2020-12-29 19:35:04 +01:00
derselbst 1be0e5ae7c Log error when audio callback function fails
Addresses #724
2020-12-28 18:08:38 +01:00
Tom M 9a25e71b02
Add FLUID_SEQ_SCALE event type (#723) 2020-12-27 17:53:36 +01:00
derselbst 0853cac6a3 Fix doxygen warnings 2020-12-27 10:48:07 +01:00
derselbst 0968e403c9 Remove pre-generated doxygen files 2020-12-22 13:23:28 +01:00
derselbst bc056b576b Print error if fluid_is_soundfont() fails 2020-12-22 13:16:30 +01:00
derselbst 3c84dcc816 Update API docs about UTF8 filenames 2020-12-22 11:30:14 +01:00
derselbst ed34742824 Add log messages to fluid_fopen() 2020-12-22 11:30:14 +01:00
getraid-gg 1cdeebef37 Enable the use of UTF-8 filenames under Windows (#718)
While `fopen` (used through the macro `FLUID_FOPEN`) uses UTF-8 on *nix, it's restricted to ANSI on Windows. A change to enable using paths containing non-ANSI characters was suggested before in issue #128 but was rejected due to requiring large parts of both the public API and private implementation to be modified to accommodate Windows.

This PR instead changes the macro definition for `FLUID_FOPEN` from `fopen` to a new wrapper, `fluid_fopen`. This wrapper is defined in `fluidsynth_priv.h` and defined in `fluid_sys.c` (following the pattern of `fluid_alloc`). Under Windows, it converts the `const char*` UTF-8 parameters to Unicode `wchar_t*` strings using the Windows API function `MultiByteToWideChar` and opens the file using the Windows API-specific `_wfopen`. On all other platforms, it simply calls `fopen`.

The public API is unchanged. This solution will require Windows users of the API to convert UTF-16 strings to UTF-8 (which then get converted back into UTF-16 anyway), but that's still an improvement over only being able to use ANSI paths.

This PR also adds a new test, `test_utf8_open`, which tests `FLUID_FOPEN` directly and through `fluid_is_soundfont` and `fluid_synth_sfload` using a new soundfont file, `sf2/■VintageDreamsWaves-v2■.sf2`, which is just a copy of `VintageDreamsWaves-v2.sf2` with Unicode characters in the filename.
2020-12-22 11:30:14 +01:00
derselbst 468f6ff082 Update Issue templates to point to GitHub discussion 2020-12-20 12:30:42 +01:00
derselbst e5f5bb5471 Breaking unit tests for WindowsXP should be fatal 2020-12-19 14:42:17 +01:00
derselbst b14265cf99 Elaborate on synth.device-id 2020-12-18 11:57:11 +01:00
Carlo Bramini f15147d43a
Replace g_ascii_strtoll() with FLUID_STRTOL() (#717) 2020-12-16 09:15:04 +01:00
Carlo Bramini 3719c58246
Make some strings const (#716) 2020-12-16 00:05:28 +01:00
Marcus Weseloh e68f4b22de Revert "Commit to test API doc build"
This reverts commit fd39f6e1e0.
2020-12-13 16:37:20 +01:00
Marcus Weseloh fd39f6e1e0
Commit to test API doc build
Will be removed with next commit again.
2020-12-13 16:31:45 +01:00
Marcus Weseloh b7f7d818a7
Also set commit name and email for api doc build commits 2020-12-13 16:26:55 +01:00
Marcus Weseloh 01ecf9e3b9
Fix commit message for deploying API doc 2020-12-13 14:56:16 +01:00
Marcus Weseloh 5ff3b73a4d
Clean existing files in API doc on GH pages 2020-12-13 14:53:32 +01:00
Marcus Weseloh fcad97bacd
Fix build path in API doc publish step 2020-12-13 14:50:32 +01:00
Marcus Weseloh 9f853e7d53
Update API doc build to upload to GH pages 2020-12-13 14:48:51 +01:00
Tom M 9cd0fbdbf8
Re-enable unit tests with mingw
and allow them to fail to ensure build artifacts are being published
2020-12-11 12:37:52 +01:00
Tom M f6276a14ab
Fix Windows CI
Remove fake pkg-config
2020-12-11 12:22:00 +01:00
Chris Xiong 9b485fad7c
Handle GS SysEx messages for setting whether a channel is used for rhythm part. (#708)
Some MIDI files that uses the GS standard uses channels other than channel 10 as percussion channel. Currently FluidSynth ignores the messages setting that up, causing notes meant to be played with a drum instrument played with a melodic instrument or vice versa. This patch will partially fix the issue.

Currently the implementation in this patch doesn't cover a specific "quirk" in Roland GS Modules: they seem to remember the last used instrument in the selected mode. This patch simply sets the instrument number to 0 instead.

A test file is attached. If played correctly (with `-o synth.device-id=16`) no out of place drum or piano sounds should be heard.

[wikipedia_MIDI_sample_gstest.mid.gz](https://github.com/FluidSynth/fluidsynth/files/5610727/wikipedia_MIDI_sample_gstest.mid.gz)
2020-11-29 00:20:04 +01:00
Nathan Umali 33c147402b
Update owner of the SoundFont registered trademark. (#706)
As of the time of this PR, the SoundFont registered trademark is owned by Creative Technology Ltd.
http://tmsearch.uspto.gov/bin/showfield?f=doc&state=4803:rj74xq.2.1
http://assignments.uspto.gov/assignments/q?db=tm&qt=sno&reel=&frame=&sno=74325965
2020-11-25 12:31:16 +01:00
jjceresa c9b187bd85
Fx unit api (#673)
This PR addresses #669 point 2.1.
It proposes set/get API functions to change/read fx unit parameters.
The deprecated shell commands are updated. Now the commands line have 2 parameters:
- first parameter is the fx unit index.
- second parameter is the value to apply to the fx unit.
2020-11-22 21:02:06 +01:00
Marcus Weseloh 0c34b3d56c Update generated fluidsettings.txt for API doc build on fluidsynth.org 2020-11-19 21:07:06 +01:00
Tom M bfe0f26d96
Merge pull request #703 from mawe42/doc-improvements
API documentation cleanup and improvements
2020-11-16 22:57:22 +01:00
Marcus Weseloh 4a7d7ad688 Settings reference style more consistent with rest of reference pages 2020-11-16 22:29:42 +01:00
Marcus Weseloh 602a2bcdc1 Remove unused command alias and sync Doxyfile.cmake and Doxyfile 2020-11-16 22:09:06 +01:00
Marcus Weseloh c7f9d05190
GitHub Action to build the API docs from master branch (#704)
Uploads the complete HTML API docs as an artifact called api_docs.zip
2020-11-16 15:27:56 +01:00
Marcus Weseloh 9971f9372c Workaround for doxygen bug with linebreaks in ALIASES
Using \_linebr is not ideal, as it's an internal command. But that
seems to be the most compatible way to specify line breaks in ALIASES
accross different doxygen versions at the moment.
2020-11-15 00:31:32 +01:00
Marcus Weseloh 42f91986cd Use SVG for fluid mixer image 2020-11-14 21:16:23 +01:00