Commit graph

188 commits

Author SHA1 Message Date
Marcus Weseloh
e312f5bedd Use TRUE/FALSE for boolean flag 2017-11-20 19:56:42 +01:00
Marcus Weseloh
c7da1ef511 Fix typos and clarify comments 2017-11-20 19:55:06 +01:00
Marcus Weseloh
a328dce437 Remove includes that are already in fluid_ladspa.h 2017-11-20 19:40:26 +01:00
Marcus Weseloh
72d32da33d Remove redundant declarations of public API functions 2017-11-19 17:27:07 +01:00
Marcus Weseloh
0786d8a37f Remove unused define 2017-11-19 14:43:19 +01:00
Marcus Weseloh
e94b7f8003 Remove unused include in fluid_ladspa.c 2017-11-19 14:31:36 +01:00
Marcus Weseloh
79c32301f2 Move fluid_synth_get_ladspa_fx to synth, typedef to types. 2017-11-19 14:29:32 +01:00
Marcus Weseloh
e511992680 Expose LADSPA functions via public API
Always compile in fluid_ladspa.h and c to that the LADSPA API functions
are always exposed, but use dummy functions that return failure (NULL,
FLUID_FAILED or FALSE) if LADSPA isn't available.
2017-11-18 20:48:30 +01:00
Marcus Weseloh
1863c618e8 Add function to get LADSPA effects instance from synth 2017-11-18 20:48:30 +01:00
jjceresa
b71e1230e2
Adjust the upper limit of roomsize.
The upper limit is narrowed from 1.2 to 1.0 value to avoid output
growing  exponentially.
2017-11-16 00:16:34 +01:00
Marcus Weseloh
9dc7a4e52c Merge branch 'master' into ladspa 2017-11-13 22:30:41 +01:00
carlo-bramini
4a5648141c glib.h is already included by fluidsynth_priv.h 2017-11-12 16:26:50 +01:00
carlo-bramini
3fb1bf8d5c Remove includes already into fluidsynth_priv.h with #ifdef...#endif 2017-11-12 14:53:26 +01:00
Marcus Weseloh
50b50e765d Remove debug print statement 2017-11-12 00:54:10 +01:00
Marcus Weseloh
9509628da1 Use glib dynamic librar loading functions 2017-11-12 00:53:57 +01:00
derselbst
c7a02bd812 make fluid_settings_foreach_t const correct 2017-11-11 11:09:17 +01:00
derselbst
12a9692211 make fluid_settings_foreach_option_t const correct 2017-11-11 11:04:12 +01:00
Marcus Weseloh
007cd2b5fc Merge branch 'master' into ladspa
Resolve conflicts in:
	src/bindings/fluid_ladspa.c
2017-11-10 19:36:30 +01:00
Tom M
a13cf153d9
Merge pull request #265 from FluidSynth/delete-refactor
refactor destructor functions to return void if possible and make them safe when called with NULL
2017-11-08 15:45:49 +01:00
Marcus Weseloh
87c37f305d Explicity create left and right host buffers
Makes it possible to create a single host buffer node for the
effect sends.
2017-11-07 23:49:57 +01:00
Marcus Weseloh
4b2414761b Reapply "make struct _fluid_ladspa_fx_t opaque" effects from 5afb1a854b 2017-11-07 23:49:57 +01:00
Marcus Weseloh
9f6ef4e67e Cleanup API and docs
- Rename functions to clarify purpose
- Group functions in header by purpose
- Cleanup doc comments
- Remove unused members from structs
2017-11-07 23:49:57 +01:00
Marcus Weseloh
6508d36bea Remove some macros and cleanup comments 2017-11-07 23:49:57 +01:00
Marcus Weseloh
1ba0450f3a Remove enum for output mode, use a simple flag instead 2017-11-07 23:49:57 +01:00
Marcus Weseloh
be38fa98e3 Cleanup ladspa commands and add more comments
Remove the <effect name>:<port name> syntax for ladspa_link again,
better to have them as two separate arguments. Also remove the
<lib name>:<plugin label> syntax, use separate args where as well.
2017-11-07 23:49:57 +01:00
Marcus Weseloh
61ea5e19db Remove the node concept completely from LADSPA api 2017-11-07 23:49:57 +01:00
Marcus Weseloh
9af97fb02b Add note that LADSPA doesn't need very long command lines anymore 2017-11-07 23:49:57 +01:00
Marcus Weseloh
0b263175d3 Rename "plugin" to "effect" where it's used to mean "plugin instance" 2017-11-07 23:49:57 +01:00
Marcus Weseloh
4212dd04f7 Smaller cleanups for fluid_cmd 2017-11-07 23:49:57 +01:00
Marcus Weseloh
ea3481c57e Control port values are always float 2017-11-07 23:49:57 +01:00
Marcus Weseloh
fa0b210233 Rename function to set effect control port value 2017-11-07 23:49:57 +01:00
Marcus Weseloh
bcf711f51a Rename check for effect port existance 2017-11-07 23:49:57 +01:00
Marcus Weseloh
adcd5a5d53 Cleanup automatic control node creation
Change function signatures and names to better reflect what they do
and when they do it.
2017-11-07 23:49:57 +01:00
Marcus Weseloh
72517b8715 No need for user created control nodes anymore
Control nodes are created automatically when effect is added now.
Also remove the now unused FLUID_LADSPA_FIXED direction.
2017-11-07 23:49:57 +01:00
Marcus Weseloh
e0463843fa Rename ladspa_node to ladspa_buffer
Users don't need to create control nodes anymore
2017-11-07 23:49:57 +01:00
Marcus Weseloh
026bcbcc78 Create control nodes automatically and use better interface to set value
Removes ladspa_control_defaults and ladspa_control in favour of the new
ladspa_set. Nodes for all effect controls are created when the effect
is instantiated.
2017-11-07 23:49:57 +01:00
Marcus Weseloh
ea9c868c86 Make plugin label optional when creating effect 2017-11-07 23:49:57 +01:00
Marcus Weseloh
a4312c65ed Remove explicit direction from ladspa_link and fluid_ladspa_connect 2017-11-07 23:49:57 +01:00
Marcus Weseloh
1684427c33 Rename ladspa_port to ladspa_link 2017-11-07 23:49:57 +01:00
Marcus Weseloh
55cd5040a7 Allow port names in fluid_port to be specified as one argument 2017-11-07 23:49:57 +01:00
Marcus Weseloh
5aecf97097 Rename command ladspa_plugin to ladspa_effect, remove ladspa_mode 2017-11-07 23:49:57 +01:00
Marcus Weseloh
6eb8212723 Add consistent checking for inactive ladspa in fluid commands 2017-11-07 23:49:57 +01:00
Marcus Weseloh
5b4ad47bee Effects (plugin instances) identified by name instead of unique id 2017-11-07 23:49:57 +01:00
Marcus Weseloh
e77e702b16 Add support for run_adding mode of plugins and in-place rendering
In-place rendering is implemented in such a way that there is no
change in behaviour if it is enabled or not. So there's no need
for a user setting.

Run adding mode is a LADSPA feature that plugins can support. Using
that mode, they don't replace an output buffer, but add their rendered
audio to it (with a user definable gain). A very necessary feature to
be able to use a LADSPA reverb in place of the internal reverb.
2017-11-07 23:49:57 +01:00
derselbst
2ed47f23b5 Revert "make struct _fluid_ladspa_fx_t opaque" to prepare ladspa merge
It's effects will be replicated after merge.

This reverts commit 5afb1a854b.

# Conflicts:
#	src/bindings/fluid_ladspa.c
2017-11-07 23:49:57 +01:00
carlo-bramini
cb4f1d389d No need to read-modify-write, just set errors to TRUE 2017-11-04 13:07:18 +01:00
derselbst
bf978e2b6b even more destructor refactor 2017-10-30 11:28:08 +01:00
derselbst
323320e7e4 refactor all destructor functions
to return void if possible and not crash if called with NULL
2017-10-29 13:23:08 +01:00
derselbst
2b882c2877 fix build 2017-10-28 14:19:20 +02:00
derselbst
6dfd736460 refactor return values in fluid_cmd.c
consistently return FLUID_OK or FLUID_FAILED for shell command handlers
2017-10-28 14:02:44 +02:00
derselbst
707f1eb079 conflicting function delcarations
fix build
2017-10-28 13:53:33 +02:00
derselbst
0ef6da7740 minor clarification 2017-10-28 13:50:13 +02:00
derselbst
642b9750b2 remove unimplemented fluid_handle_mstat() 2017-10-28 13:31:10 +02:00
derselbst
634c07ed45 remove error hiding casts in fluid_commands[] 2017-10-28 13:30:35 +02:00
derselbst
1eb6aa97f3 avoid using deprecated tuning functions 2017-10-27 16:59:20 +02:00
derselbst
db373f168f Merge branch 'fluid_atomic' of git://github.com/VolcanoMobile/fluidsynth into VolcanoMobile-fluid_atomic 2017-10-27 15:58:54 +02:00
derselbst
5afb1a854b make struct _fluid_ladspa_fx_t opaque 2017-10-26 21:45:29 +02:00
Philippe Simons
cdd9f75112 thread function return type (#254)
typedef the return value of thread starting routines, as suggested by @loki666
2017-10-26 18:08:10 +02:00
loki666
6d9081e1a5 use fluid_atomic types in fluid_ladspa and fluid_winmidi 2017-10-25 23:03:56 +02:00
derselbst
a1810385e1 Merge branch 'carlo-bramini-misc-fixes-1' 2017-10-25 17:52:17 +02:00
carlo-bramini
96f0f5fe88 Use _close() on _WIN32 2017-10-24 20:25:58 +02:00
Marcus Weseloh
e485129705 Merge pull request #249 from mawe42/more-ladspa-cleanup
More LADSPA cleanup and refactor
2017-10-24 15:50:05 +02:00
Marcus Weseloh
dab11fd503 Breakup very long fluid_ladspa_check into smaller functions 2017-10-24 00:40:09 +02:00
Marcus Weseloh
ab26f85bf8 Add check for in-place broken plugins
In-place broken plugins can't cope with input and output audio
ports connected to the same buffer.
2017-10-23 23:16:06 +02:00
Marcus Weseloh
8814926857 Replace number of inputs and outputs on ports with pointer to connected node
Ports can only have a single input or output, so no need for two counters.
And keeping track of the connected node means we can check for
INPLACE_BROKEN plugins, if multiple ports connect to the same node.
2017-10-23 22:12:04 +02:00
Marcus Weseloh
93dbac3535 When clearing LADSPA, also reset connection counts on system nodes 2017-10-23 22:07:58 +02:00
Marcus Weseloh
a1ff8d0e55 Render all block using a single LADSPA run
Removes the need for VLAs before ladspa call in rvoice mixer and number
for for loops to set up and advance the buffers. Also reduces the number
of state changes (and atomic operations) by calling fluid_ladspa_run only
once.
2017-10-23 21:41:28 +02:00
Marcus Weseloh
105d9835cb Explicity pass in the audio buffer size when creating LADSPA fx.
And don't pass in node buffer sizes into new_fluid_ladspa_node but
determine it from the node type.
2017-10-23 21:41:20 +02:00
derselbst
168274fbbd fix build 2017-10-23 12:43:07 +02:00
R. Mattes
afe915dab2 Fixed dumptuning 2017-10-22 21:36:25 +02:00
carlo-bramini
e1c3b46ee2 Fix an handle leak 2017-10-22 19:13:16 +02:00
R. Mattes
38758c78dd Fixed nasty loop test 2017-10-22 18:47:00 +02:00
derselbst
2deffc40c0 remove redundant #ifdef LADSPA
cmake will take care of compiling fluid_ladspa.c
2017-10-22 14:31:57 +02:00
Marcus Weseloh
799f3ea44c Merge pull request #242 from mawe42/ladspa-additional-fixes
More fixes to LADSPA system
2017-10-22 11:38:37 +02:00
Marcus Weseloh
e18e54d7ae White-space 2017-10-22 11:24:25 +02:00
Marcus Weseloh
e0dcdbcdfc Correct documentation for fluid_ladspa_run 2017-10-22 11:24:25 +02:00
Marcus Weseloh
47d640571b Add missing check for ladspa_is_active to ladsap_control_defaults 2017-10-22 11:24:25 +02:00
Marcus Weseloh
29a4abb9a5 Use int for number of inputs and outputs, some plugins have a lot of ports 2017-10-22 11:24:25 +02:00
derselbst
24614d343d Revert "ladspa: atomically get and set pending_deactivation"
This reverts commit 6c69b8ccff.
2017-10-22 11:23:34 +02:00
Marcus Weseloh
3cc684e47e Avoid a few ifdefs by defining two separate sets of node<->buffer functions 2017-10-21 22:36:34 +02:00
Marcus Weseloh
4d256ce8cc Add new command to FluidSynth shell to set control ports to default value 2017-10-21 19:49:49 +02:00
Marcus Weseloh
2787b0e10e Add function to automatically set unconnected port to default value
Uses the hints in the plugin to determine the default value.
2017-10-21 19:47:03 +02:00
Marcus Weseloh
7534e54d4f Check LADSPA setup before activation 2017-10-21 19:47:03 +02:00
derselbst
c205e0162d avoid null dereferences in delete_fluid_ladspa_plugin()
be extremely paranoid as suggested by clang-tidy
2017-10-21 19:01:07 +02:00
derselbst
6c69b8ccff ladspa: atomically get and set pending_deactivation 2017-10-21 18:31:20 +02:00
derselbst
81505b9324 remove redundant ';' 2017-10-21 18:22:19 +02:00
derselbst
402f76bfb8 avoid duplicate ';' 2017-10-21 18:21:03 +02:00
derselbst
1d0cfd605f prefer using enum for LADSPA state 2017-10-21 18:13:40 +02:00
derselbst
4911bc8de4 credit @mawe42 for rewriting LADSPA 2017-10-21 18:09:38 +02:00
derselbst
79cef163a1 fix cast operator precedence 2017-10-21 18:05:54 +02:00
Tom M
c594bdf466 Merge branch 'master' into fluidsynth-on-mcu-1 2017-10-21 17:38:54 +02:00
Tom M
0600ba7c68 Merge pull request #235 from mawe42/ladspa-cleanup
LADSPA effect unit refactor
2017-10-21 17:36:04 +02:00
Marcus Weseloh
9f4c60c6c8 Remove unused includes 2017-10-21 17:18:05 +02:00
Marcus Weseloh
885178ef9d Replace timeout in deactivate with mutex and cond. 2017-10-21 16:32:04 +02:00
Marcus Weseloh
5f488123d8 Also make node names case-insensitive and update comments to reflect this. 2017-10-21 15:58:22 +02:00
Marcus Weseloh
cecf115a38 Replace the fuzzy prefix matching by a simple strncasecmp.
That spaces and underscores are treated as equal is no needed anymore
anyway, as the token parser of the shell understands quoted names.
So searching for "Dry / Wet Mix" is possible.

Adds new FLUID_STRNCASECMP macro to fluid_priv.
2017-10-21 15:55:43 +02:00
Marcus Weseloh
2c7e1696fd Completely decouple LADSPA engine from FluidSynth
Knowledge of FluidSynth is completely removed from the LADSPA effects
unit. All synchronization happens inside LADSPA with atomic operations.
The LADSPA fx instance created by FluidSynth is only special in that
FluidSynth knows about it and calls it's run method when enabled.

This simplifies the code structure, makes the FluidSynth and the LADSPA
engine easier to maintain due to the loose coupling. It also enables
users to create their own (or additional) LADSPA fx unit for further
processing as soon as we expose the LADSPA functions via a public API.
2017-10-21 15:07:39 +02:00
Marcus Weseloh
812ea57ed0 Bugfix: properly release the LADSPA API lock after exiting fluid_ladspa_check 2017-10-21 15:03:38 +02:00
derselbst
36f7cc1b21 avoid garbage value for client->handler 2017-10-21 13:04:09 +02:00
carlo-bramini
87bff4d3ef Optimized arrays to be fully const and FLUID_N_ELEMENTS() support. 2017-10-21 12:43:59 +02:00