Commit graph

356 commits

Author SHA1 Message Date
derselbst
b84e8b83e0 Merge branch '2.1.x' into master 2021-01-29 14:42:04 +01:00
derselbst
e2d67ea772 Bump to 2.1.7 2021-01-29 14:37:27 +01:00
derselbst
c7878dec74 Update API docs of fluid_settings_getstr_default() 2021-01-28 11:15:23 +01:00
derselbst
e887a6369c Update new_fluid_audio_driver2() support list 2021-01-23 16:28:56 +01:00
derselbst
b9820362f4 Update API docs about bug #751 2021-01-23 15:57:28 +01:00
derselbst
1e18ee7781 Use oboe 1.5.0 2021-01-19 18:48:52 +01:00
jjceresa
2cada68e02
Fix MIDI player tempo reset issues (#711) 2021-01-10 12:01:28 +01:00
derselbst
e04cd572cb Merge branch '2.1.x' into master 2021-01-03 21:37:32 +01:00
derselbst
26710f1076 Bump to 2.1.6 2021-01-01 21:26:12 +01:00
Tom M
9a25e71b02
Add FLUID_SEQ_SCALE event type (#723) 2020-12-27 17:53:36 +01:00
derselbst
0968e403c9 Remove pre-generated doxygen files 2020-12-22 13:23:28 +01:00
derselbst
3c84dcc816 Update API docs about UTF8 filenames 2020-12-22 11:30:14 +01:00
derselbst
b14265cf99 Elaborate on synth.device-id 2020-12-18 11:57:11 +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
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
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
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
Marcus Weseloh
7d994ff9be Add intro text to deprecated list 2020-11-14 18:46:17 +01:00
Marcus Weseloh
0a23598126 Remove obsolete doxygen config options 2020-11-14 18:32:39 +01:00
Marcus Weseloh
3d930ffda4 Remove debug leftover 2020-11-14 17:12:39 +01:00
Marcus Weseloh
a279b2b397 Make top links black on hover, not white 2020-11-14 17:10:06 +01:00
Marcus Weseloh
d0db0cc119 Document how to revert the styling and layout changes 2020-11-14 16:27:43 +01:00
Marcus Weseloh
6113c15f94 Improve styling of field tables (enum values) 2020-11-14 16:22:50 +01:00
Marcus Weseloh
a03362a155 Style improvements for small screens
- hide side nav
- hide search box
- make content full height
2020-11-14 16:13:10 +01:00
Marcus Weseloh
5ccc7543ae Hide nav sync toggle button 2020-11-14 16:12:17 +01:00
Marcus Weseloh
3c1c796396 Add generated fluidsettings.txt for fluidsynth.org API doc build
Probably not the final solution, but works for now.
2020-11-14 15:10:57 +01:00
Marcus Weseloh
eebbfb6a62 Smaller cleanup and reformatting of long lines. 2020-11-14 14:59:29 +01:00
Marcus Weseloh
b565b3ebc3 Use custom \setting{} alias to link to fluid settings 2020-11-14 14:56:18 +01:00
Marcus Weseloh
0f9aed6f83 Use \image for images and improve quality of FluidMixer image 2020-11-14 14:25:44 +01:00
Marcus Weseloh
cb16f8d32d Split HTML_EXTRA_FILEs into separate lines 2020-11-14 14:04:05 +01:00
Marcus Weseloh
c4512367c4 Move examples into doc/examples directory 2020-11-14 13:40:46 +01:00
Marcus Weseloh
20ec6f3376 Move usage guide pages into separate files in doc/usage 2020-11-14 13:26:05 +01:00
Marcus Weseloh
67cb344a20 Move recent changes into separate file 2020-11-14 13:23:55 +01:00
Marcus Weseloh
cc84da2094 Split doxygen INPUT into separate lines, for easier readability 2020-11-14 13:21:57 +01:00
Marcus Weseloh
3c68eaa619 Sync the static Doxyfile with Doxyfile.cmake
Still missing is the integration of the generated fluidsettings.txt,
as that requires a build script currently not available on the
server generating the public API docs.
2020-11-13 23:21:47 +01:00
Marcus Weseloh
2a2027085e Separate new_* and delete_* functions from the rest 2020-11-13 22:23:29 +01:00
Marcus Weseloh
ee2ac9e1d9 Mark settings with callbacks as realtime and output this in the generated docs 2020-11-13 20:46:02 +01:00
Marcus Weseloh
1d9d7e9042 Also update the styling of the deprecated list 2020-11-12 22:31:19 +01:00
Marcus Weseloh
d2a29ec4c5 Make sure libxslt is only searched if doxygen is available as well 2020-11-12 21:50:35 +01:00
Marcus Weseloh
5a70df1cb7 Remove footer, as it takes away valuable vertical space 2020-11-12 21:27:00 +01:00
Marcus Weseloh
921c0e08c0 Updated documentation styling 2020-11-12 21:27:00 +01:00
Marcus Weseloh
d4741b7d5e Sort groups/modules, briefs and members 2020-11-12 21:27:00 +01:00
Marcus Weseloh
f5900a261f Custom doxygen layout to rename modules to API Reference 2020-11-12 21:27:00 +01:00
Marcus Weseloh
512f39b1a1 Some more brief message abbreviation hints 2020-11-12 21:27:00 +01:00
Marcus Weseloh
48761ea724 Consistent capitalization of usage guide section names 2020-11-12 21:27:00 +01:00
Marcus Weseloh
4ea5d64eb7 Rename setting reference page name to lowercase, for consistency 2020-11-12 21:27:00 +01:00
Marcus Weseloh
8617e53a00 Replace all links to fluidsettings.xml with proper \ref's 2020-11-12 21:23:31 +01:00
Marcus Weseloh
c5b50455d7 Use xsltproc to include settings in API documentation 2020-11-12 21:23:31 +01:00
Marcus Weseloh
272cc5edad Some additional subgrouping 2020-11-12 21:23:31 +01:00
Marcus Weseloh
d00849b556 Restructure devdocs into separate pages 2020-11-12 21:23:31 +01:00
Marcus Weseloh
339b30c946 Move doxygen customizations into separate directory 2020-11-12 21:23:31 +01:00
Marcus Weseloh
d1237c4678 Make larger enums easier to read 2020-11-12 21:23:31 +01:00
Marcus Weseloh
cfa9e7bedc Enable navigation sidebar 2020-11-12 21:23:31 +01:00
Marcus Weseloh
93b3375fe3 Remove "References" and "Referenced by" links from doc
They auto generated links are quite long on some functions, making
the documentation harder to read.
2020-11-12 21:23:31 +01:00
Marcus Weseloh
ae145daf72 Remove FLUIDSYNTH_API and FLUID_DEPRECATED macros from documentation 2020-11-12 21:23:15 +01:00
Marcus Weseloh
c18e008d70 Options seems to be more widely used, so use that instead of Choices 2020-11-02 19:37:14 +01:00
Marcus Weseloh
54e164426f As gs is default for midi-bank-select, list it as first option for clarity 2020-11-02 19:33:08 +01:00
Marcus Weseloh
f1d760f02c Update ladspa.active description
Use 1 (TRUE) for consistency and mention LADSPA documentation
2020-11-02 19:32:37 +01:00
Marcus Weseloh
f3390e8049 Update effects-groups description to avoid the word "unit" 2020-11-02 19:31:54 +01:00
Marcus Weseloh
4fef48e740 Better explain currently unused effects-channels 2020-11-02 19:31:31 +01:00
Marcus Weseloh
f2d0789b26 Consistently format all floats 2020-11-02 19:30:24 +01:00
Marcus Weseloh
d14c9edc4f Update periods and period-size with current values from source 2020-11-02 19:05:36 +01:00
Marcus Weseloh
cd4376dfea shell.port is an int setting, not num 2020-11-02 19:00:35 +01:00
Marcus Weseloh
8d5377e391 Use (empty string) for empty default values of str settings 2020-11-02 18:55:36 +01:00
Marcus Weseloh
4f50c7278c Cleanup section label markup and rendering 2020-11-02 18:49:13 +01:00
Marcus Weseloh
a8041e45f8 Updated XSL / styling for fluidsettings.xml 2020-11-02 18:26:21 +01:00
Marcus Weseloh
109c41c355
Add public API to pin and unpin presets to the sample cache (#698)
Following the discussion about an API to pin and unpin preset samples in the sample cache here:
https://lists.nongnu.org/archive/html/fluid-dev/2020-10/msg00016.html

Short explanation of the change:

Only the default loader currently supports dynamic sample loading, so I thought it might be a good idea to keep the changes for this feature mostly contained in the default loader as well. I've added two new preset notify flags (FLUID_PRESET_PIN and FLUID_PRESET_UNPIN) that are handled by the preset->notify callback and trigger the loading and possibly unloading of the samples.
2020-10-31 13:23:15 +01:00
Jon Latané
21653bd08b
Update Android CircleCI build to use latest orb, Android API, Oboe and Cerbero (#690)
This fixes the currently-broken CircleCI build for Android-useable .so files.

Currently the Cerbero build is based off https://github.com/falrm/cerbero until https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/641 is merged and deployed to the GitHub cerbero mirror.

Here is a successful build with the updated CircleCI workflow: https://app.circleci.com/pipelines/github/falrm/fluidsynth-android/31/workflows/0ad3186a-394c-4736-984b-96496b608053/jobs/32

Fixes #688
2020-10-20 17:09:11 +02:00
Tom M
3efaaffba5
Update and rename README.Android.md to README.md 2020-10-18 11:38:52 +02:00
derselbst
f14cbb8782 Add FluidMixer chart to API docs 2020-10-11 19:40:05 +02:00
derselbst
15d4794013 Elaborate on synth.cpu-cores 2020-10-11 18:48:53 +02:00
Tom M
97615ef2cf
Promote Controller/Pressure/Bend event functions to 32bits (#670) 2020-10-08 16:33:52 +02:00
jjceresa
b55884b273
Make winmidi driver multi devices capable. (#677) 2020-09-27 14:22:56 +02:00
Tom M
4c1292d8ab
Remove fluid_event_any_control_change() from public API (#674)
Originally, I have only marked it deprecated. But since we have an SOVERSION bump next release and because this function was only meant for internal usage, I think it's safe to remove it right now.
2020-09-12 10:40:57 +02:00
derselbst
23b270c08b Merge branch '2.1.x' into master 2020-09-06 14:54:26 +02:00
derselbst
ff7c72c80f Bump to 2.1.5 2020-09-06 11:52:39 +02:00
jjceresa
7834c4eb62 Add a chart about voice mixing and rendering 2020-09-02 20:54:05 +02:00
derselbst
277eda6bc6 Update Android Asset loader to new callback API 2020-07-12 13:03:30 +02:00
derselbst
62b715483f Merge branch '2.1.x' into master 2020-07-09 19:39:21 +02:00
Tom M
031b740451
Update Doxyfile 2020-07-06 18:46:57 +02:00
derselbst
d73135fc48 Merge branch '2.1.x' into master 2020-07-05 16:32:47 +02:00
derselbst
459949a62b Bump to 2.1.4 2020-07-05 16:19:33 +02:00
derselbst
56f8f9be7c Update API docs 2020-07-05 16:15:11 +02:00
derselbst
0354196e43 Fix typo in API docs 2020-05-27 17:26:14 +02:00
Tom M
0d98c47545
Revise the sequencer's event queue (#604)
Proposing a new event queue for the sequencer, based on prior discussion:
https://lists.nongnu.org/archive/html/fluid-dev/2019-12/msg00001.html

With this change fluidsynth will require a C++98 compliant compiler.

Consider this as RFC, feedback is welcome.

The "pain-points" from the discussion:

#### 1. It is slow.

Done (thanks to heap sort), see runtime of `test_seq_event_queue_sort`.

#### 2. A meaningful ordering for events with the same tick has not been considered.

Done, see comments in `fluid_seq_queue.cpp`.

#### 3. Complicated implementation

Now uses one single event queue, which requires C++98. Implemented similarly to std::priority_queue by using heap sort.

The "queue" I use currently is of type `std::deque`. `deque` does not provide preallocation. `std::vector` does provide it. However, `std::deque` has the huge advantage that appending additional elements is cheap. For `std::vector` appending new elements would require to reallocate all the memory and copy it to the new array. So,

* either use `std::deque` with the risk that memory allocation may occur during `fluid_sequencer_send_at()`, or
* use `std::vector` with a preallocated pool of events and make `fluid_sequencer_send_at()` when the `vector` runs out of capacity.

Comments?

#### 4. Events that have been processed are deleted and gone.

After having thought about this more, this is the correct behavior. After events have been dispatched, they must be released to free underlying memory, see point 3. For the very rare case that a client (e.g. fluid_player) may require those events in the future, the client should be responsible for storing the events somewhere.

#### 5. The sequencer supports the system timer as alternative time source.

The conclusion from the mailing list was that the system timer can be removed. This has been done.

#### 6. Time Scaling

Time scaling can now be used for arbitrary tempo changes. The previous implementation was capable of that as well, however, the time-scale was limited to 1000. The only limitation for the scale is now >0, see `test_seq_scale`.

### Other Points

* `fluid_sequencer_remove_events()` turned out to be broken before, as it did not remove all events from the queue. This has been fixed, see `test_seq_event_queue_remove`.

* Consider the following code executed by `threadA`:

```c
fluid_sequencer_send_at(event0);
fluid_sequencer_set_time_scale(); // new scale
fluid_sequencer_send_at(event1);
```

The new scale will be definitely applied to `event1`. However, if another concurrently running `threadB` executes `fluid_sequencer_process()`, it was previously not clear, whether the new scale was also applied to event0. This depends on whether `event0` was still in the `preQueue`, and this depends on `event0.time` and the tick count that `fluid_sequencer_process()` is being called with. This has been changed. As of now, events are queued with their timestamp AS-IS. And only the latest call to `fluid_sequencer_set_time_scale()` is being considered during `fluid_sequencer_process()`. This makes the implementation very simple, i.e. no events need to be changed and the sequencer doesn't have to be locked down. On the other hand, it means that `fluid_sequencer_set_time_scale()` can only be used for tempo changes when called from the sequencer callback. In other words, if `threadA` executes the code above followed by `fluid_sequencer_process()`, `event0` and `event1` will be executed with the same tempo, which is the latest scale provided to the seq. Is this acceptable? The old implementation had the same limitation. And when looking through the internet, I only find users who call `fluid_sequencer_set_time_scale()` from the sequencer callback. Still, this is a point I'm raising for discussion.
2020-05-26 17:16:22 +02:00
Tom M
9995fd88b2
Support loading SoundFonts >2GiB on Windows (#629)
Since sizeof(long) == 4 even on 64 bit Windose, big files cannot be
loaded natively via the ANSI C file API. This change makes fluidsynth's
file callback API use long long, which is guaranteed to be at least 64
bit wide.
2020-05-26 16:53:59 +02:00
derselbst
5af89f8c92 Bump to 2.1.3 2020-05-23 14:29:17 +02:00
derselbst
304096add7 Update API docs about synthesis context 2020-05-02 20:12:01 +02:00
derselbst
f14c33a4e6 Elaborate docs of audio.realtime-prio 2020-04-22 17:28:38 +02:00
derselbst
2a6b22e9bb Bump to 2.1.2 2020-04-05 18:44:06 +02:00
derselbst
eff728753b Update API docs 2020-03-08 09:55:09 +01:00
Tom M
3b851da6f7
Amend comment in fluidsynth_fx.c 2020-02-16 19:55:28 +01:00
derselbst
ab15b32656 Bump to 2.1.1 2020-02-16 15:59:11 +01:00
derselbst
98d395bab0 Update fluidsynth_fx example to explain effects mixing 2020-02-16 10:03:45 +01:00
derselbst
746cbeb1c1 Remove orphaned SF spec link from API docs 2020-02-16 09:44:07 +01:00
derselbst
d5424462b5 Update documentation of --verbose option 2020-02-14 13:40:50 +01:00