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
8371f767ce
Fix typo in debug assert macros
2022-03-20 12:44:29 +01:00
Robbert van der Helm
a6f4202ac5
Add a todo for combining the Params methods
2022-03-20 02:44:13 +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
4c5d61057e
Fix typos
2022-03-19 19:24:08 +01:00
Robbert van der Helm
a6e35cfaa9
Add methods for normalized parameter stepping
...
This is mostly useful for GUIs.
2022-03-19 16:12:56 +01:00
Robbert van der Helm
95370667d7
Rearrange the Param methods
2022-03-19 16:09:31 +01:00
Robbert van der Helm
d9330628c0
Add stepping functions to Param
...
This can be useful for GUI widgets.
2022-03-19 16:06:20 +01:00
Robbert van der Helm
64950055ea
Implement most of the iced ParamSlider for Vizia
2022-03-19 01:17:13 +01:00
Robbert van der Helm
f43d209a60
Add a .plain_value() to ParamPtr
...
Useful for snapping when you don't have access to the concrete parameter
type.
2022-03-18 18:10:22 +01:00
Robbert van der Helm
fb60f3a28b
Remove unused Param::set_from_string
...
This method is a bit more efficient than converting the string to a
normalized value and then setting the parameter using that but it's not
used right now and it adds a form of redundancy.
2022-03-18 17:53:38 +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
581e5911fc
Add parameter groups with #[nested = "Group Name"]
2022-03-16 17:04:38 +01:00
Robbert van der Helm
6628baf47e
Split up the nih_plug_derive crate into modules
2022-03-16 15:53:35 +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
Robbert van der Helm
1fa2b5f74f
Add an Editor callback to notify parameter changes
...
This will be needed to allow iced to be reactive in our model.
2022-03-13 18:03:23 +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
26c503d862
Remove accidentally copied tests
2022-03-10 19:38:39 +01:00
Robbert van der Helm
36d54edae7
Add a constant for sample accurate automation
2022-03-10 18:57:17 +01:00
Robbert van der Helm
02622e6e4f
Split up the buffer module
2022-03-10 18:15:55 +01:00
Robbert van der Helm
3c5aff1ec6
Rename Buffer::iter_mut() to iter_samples()
...
Since there's also an iter_blocks(). This is consistent with the new
Block method.
2022-03-09 20:11:37 +01:00
Robbert van der Helm
fcd0522a33
Mark the remaining buffer iterators as inline
2022-03-09 19:45:42 +01:00
Robbert van der Helm
5041f959b7
Add a per-sample per-channel iterator for blocks
2022-03-09 19:27:21 +01:00
Robbert van der Helm
dfb2407698
Rename the Channels struct to ChannelSamples
...
To make it slightly more obvious what it's iterating over.
2022-03-09 19:19:32 +01:00
Robbert van der Helm
2811ab2996
Mark more of the buffer functions as inline
2022-03-09 15:02:38 +01:00
Robbert van der Helm
1a7ad0a7a0
Trim whitespace and units when parsing parameters
2022-03-08 18:53:35 +01:00