1
0
Fork 0
Commit graph

79 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 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 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 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
Robbert van der Helm 5766f037b2 Implement the general CLAP GUI extension 2022-03-03 15:52:10 +01:00
Robbert van der Helm 91f2f49fd3 Create stubs for the CLAP editor 2022-03-03 15:40:16 +01:00
Robbert van der Helm 87830abdf6 Store a reference to the wrapper on the wrapper 2022-03-03 15:13:36 +01:00
Robbert van der Helm 6d63d3f095 Rename wrapper:👏:plugin to *::wrapper
To match the struct name.
2022-03-03 15:08:14 +01:00
Robbert van der Helm 4ceb0efdc4 Use Arc instead of Box for the wrapper
We'll need this for the GuiContext.
2022-03-03 15:06:47 +01:00
Robbert van der Helm d1840b8d86 Move Box creation to the CLAP wrapper
So the new->destroy pair makes more sense
2022-03-03 15:01:28 +01:00
Robbert van der Helm cd070ad876 Remove todo about latency not being implemented 2022-03-03 14:42:17 +01:00
Robbert van der Helm 4eb35ed585 Implement the CLAP latency extension 2022-03-03 00:46:49 +01:00
Robbert van der Helm c3efc81957 Remove old todo 2022-03-03 00:11:12 +01:00
Robbert van der Helm 41ee117bfa Prepent CLAP states with the length
To avoid having to read in chunks.
2022-03-02 22:25:10 +01:00