1
0
Fork 0
Commit graph

231 commits

Author SHA1 Message Date
Robbert van der Helm
f084f14095 Refactor GUIs to use param's own default value
This removes the need to pass a lot of these `ParamSetter`s and
`GuiContext`s around. We also don't need explicit events to reset a
parameter anymore since you can get this information from the parameter
itself.
2022-03-21 13:11:36 +01:00
Robbert van der Helm
c22e522629 Greatly simplify Params trait
This now is a single vector with all of the information in the correct
order instead of the hashmaps and a vector. This avoids deduplication,
and it especially makes manual `Params` implementations a lot more
convenient since you can't mess up with mismatching IDs between the
methods.

To accommodate exactly this, the persistent fields methods also have a
default implementation and the trait has been marked as `unsafe` since
it's the programmer's responsibility to make sure these `ParamPtr`s will
remain valid.
2022-03-20 13:05:02 +01:00
Robbert van der Helm
b9d79771cc Use String instead of &'static str in Params
This may hurt performance in generic UIs a bit, but it will allow you to
programatically generate custom Params implementations for repeated
Parameters structs.
2022-03-20 02:14:18 +01:00
Robbert van der Helm
8077f10c27 Replace index based for loop
This initially did a linear search within the loop so iterating over the
collection wasn't possible. Now we need to use a hashmap anyways, so
this can be simplified again.
2022-03-17 23:00:15 +01:00
Robbert van der Helm
edb492932f Fix parent finding in VST3 unit transformation
Oops.
2022-03-16 22:01:47 +01:00
Robbert van der Helm
d9e943a88d Filter out the root group 2022-03-16 22:00:31 +01:00
Robbert van der Helm
8d6a7ae861 Add Debug implementations for ParamUnits 2022-03-16 21:55:59 +01:00
Robbert van der Helm
6e31e18b88 Add parameter groups to VST3 wrapper using units
This was such a mess to implement, and none of the hosts I have
installed even support it.
2022-03-16 20:40:11 +01:00
Robbert van der Helm
2bf32aa771 Add the ParamUnits to the VST3 wrapper 2022-03-16 20:26:02 +01:00
Robbert van der Helm
ea30ba7ffb Initialize parameter fields earlier
This seems a bit nicer than initializing them on the struct as empty and
then mutating the struct.
2022-03-16 20:26:02 +01:00
Robbert van der Helm
63a7aadb75 Add an abstraction around VST3's unit shenanigans
And the ability to convert group paths to them.
2022-03-16 20:26:02 +01:00
Robbert van der Helm
bbf6e009d1 Add a todo for VST3 parameter units
Implementing this is going to be a pain.
2022-03-16 17:18:25 +01:00
Robbert van der Helm
f18c92b3b4 Support parameter groups for CLAP 2022-03-16 17:15:33 +01:00
Robbert van der Helm
ce85874340 Implement the CLAP tail extension 2022-03-15 22:28:26 +01:00
Robbert van der Helm
1e9fdeddfb Don't report supporting MIDI and expression events
Since currently these would just get thrown out anyways.
2022-03-15 22:18:37 +01:00
Robbert van der Helm
69e4bc9156 Implement the CLAP note ports extension 2022-03-15 22:16:50 +01:00
Robbert van der Helm
f53f6829f0 Implement the CLAP event filter extension 2022-03-15 22:08:29 +01:00
Robbert van der Helm
b95c833352 Don't handle CLAP modulation events
This would require special handling. Modulation acts as an absolute
offset for the current parameter value, not as a relative adjustment to
that value.
2022-03-15 21:26:11 +01:00
Robbert van der Helm
9232f8a51e Derive Debug and Clone for CLAP output events 2022-03-15 18:53:35 +01:00
Robbert van der Helm
ccc8088218 Update for CLAP 0.23 2022-03-15 18:47:29 +01:00
Robbert van der Helm
6fe967f65e Implement parameter change notifications for CLAP 2022-03-13 18:30:21 +01:00
Robbert van der Helm
e1f0f619ed Implement parameter change notifications for VST3 2022-03-13 18:28:56 +01:00
Andrew Palm
4fbf7e0ed3 Fix compilation errors when SSE not available
Looks like these were missed in 7d3beb174e and d878fd692a.
2022-03-11 09:04:57 -05:00
Robbert van der Helm
87e447ab25 Mention potential race condition in CLAP events 2022-03-11 14:33:43 +01:00
Robbert van der Helm
f98ba70764 Comment on the CLAP gesture handling 2022-03-11 13:27:23 +01:00
Robbert van der Helm
7339e8e956 Include CLAP_EVENT_SHOULD_RECORD for gestures
Apparently this is what you're supposed to do.
2022-03-11 13:03:26 +01:00
Robbert van der Helm
c1ca97c78c Fix false positive warning in CLAP GUI parameters 2022-03-11 00:49:34 +01:00
Robbert van der Helm
246c319bbf Implement automation gestures for CLAP 2022-03-11 00:14:39 +01:00
Robbert van der Helm
5d3527c5c2 Also implement sample accurate automation for VST3 2022-03-10 23:39:58 +01:00
Robbert van der Helm
b41b4ef725 Implement sample accurate automation for CLAP 2022-03-10 20:14:42 +01:00
Robbert van der Helm
b9412657c1 Fix allocation error from thread locals 2022-03-08 14:07:29 +01:00
Robbert van der Helm
37e1b9523b Optionally disallow allocations in reset function 2022-03-08 00:46:17 +01:00
Robbert van der Helm
70d3b5d557 Add a reset function to the plugin trait
This is used as part of CLAP 0.19/0.20, and we can just always call it
after the initialize function to stay consistent for VST3 plugins.
2022-03-08 00:35:55 +01:00
Robbert van der Helm
10ced981bd Remove todos about fixing skewed discrete ranges
Because those have been removed.
2022-03-08 00:27:25 +01:00
Robbert van der Helm
8ee380864c Update for CLAP 0.20 2022-03-08 00:21:51 +01:00
Robbert van der Helm
79ab0cd7ed Add the special win32-dpi-aware feature on Windows 2022-03-05 16:02:52 +01:00
Robbert van der Helm
9267a8371c Add DPI scaling support
That hopefully works.
2022-03-05 13:37:35 +01:00
Robbert van der Helm
e2605c8cee Add transport information for VST3 and CLAP
This is available through the process context.
2022-03-04 15:05:00 +01:00
Robbert van der Helm
99f97978a9 Reorder ProcessContext methods
When we'll add more things here the more common getters should come
first and less common operations like changing latency should come last.
2022-03-04 13:22:58 +01:00
Robbert van der Helm
80457ac0f9 Fix doc links after prelude migration 2022-03-03 23:30:29 +01:00
Robbert van der Helm
4c0b07c578 💥 Move re-exports to a prelude module
So you can import everything at once, because you're likely going to
need at least 90% of it anyways.
2022-03-03 23:23:51 +01:00
Robbert van der Helm
f581294d7b Update rustdoc formatting for links
Apparently it showed this text verbatim, and not in monospace.
2022-03-03 23:05:12 +01:00
Robbert van der Helm
542012aa0e Request restart for latency change when processing
Calling this change function seems to work fine, but apparently you're
supposed to do it this way.
2022-03-03 21:58:40 +01:00
Robbert van der Helm
80b1bf12f2 Use AtomicRefCell for all uncontested locks
Since it would be a bug if those locks were somehow contested.
2022-03-03 21:21:08 +01:00
Robbert van der Helm
184355a886 Delay CLAP host extension query to init()
Or the CLAP example host will get very mad at us.
2022-03-03 21:09:12 +01:00
Robbert van der Helm
27570be4a6 Implement platform-specific CLAP GUI extensions 2022-03-03 18:29:37 +01:00
Robbert van der Helm
b5993c1bb8 Add a CLAP GuiContext for sending param changes 2022-03-03 17:47:41 +01:00
Robbert van der Helm
a4930dc887 Add parameter change outputs for CLAP
But without any way to send them, at least for now.
2022-03-03 17:21:32 +01:00
Robbert van der Helm
8f92669a47 Keep track of the processing status 2022-03-03 17:03:52 +01:00
Robbert van der Helm
de4921c033 Move CLAP input event handling to a function 2022-03-03 16:58:57 +01:00