Robbert van der Helm
56e9cd54c1
Pass the GuiContext to vizia editors
...
There's no clean way to expose the state save/restore functionality
through events.
2022-04-07 16:14:34 +02:00
Robbert van der Helm
083885a40c
Rework Params trait API with Arc instead of Pin
...
This is a breaking change requiring a small change to plugin
implementations.
The reason why `Pin<&dyn Params>` was used was more as a hint to
indicate that the object must last for the plugin's lifetime, but `Pin`
doesn't enforce that. It also makes the APIs a lot more awkward.
Requiring the use of `Arc` fixes the following problems:
- When storing the params object in the wrapper, the `ParamPtr`s are
guaranteed to be stable.
- This makes it possible to access the `Params` object without acquiring
a lock on the plugin, this is very important for implementing
plugin-side preset management.
- It enforces immutability on the `Params` object.
- And of course the API is much nicer without a bunch of unsafe code to
work around Pin's limitations.
2022-04-07 15:31:46 +02:00
Robbert van der Helm
d9b018b125
Fix a very important typo
2022-03-29 03:16:55 +02:00
Robbert van der Helm
8ecc30e399
Mark SIMD conversion functions as always inline
2022-03-29 03:14:40 +02:00
Robbert van der Helm
6dd11561c5
Add resize handles to all vizia GUIs
2022-03-29 00:49:31 +02:00
Robbert van der Helm
4195105e43
Replace FFTW in Diopser with realfft
2022-03-28 18:02:26 +02:00
Robbert van der Helm
f37974448d
Change naming convention for formatters
...
This still isn't idea, but at least it's less ambiguous than it was
before this.
2022-03-27 03:43:39 +02:00
Robbert van der Helm
d35276437d
Patch vizia to not require pub for lenses
2022-03-23 23:29:49 +01:00
Robbert van der Helm
0655ce35d8
Hide Diopser's very important parameter
2022-03-23 13:20:16 +01:00
Robbert van der Helm
4086ff724f
Fix casing on GenericUi
2022-03-22 18:50:50 +01:00
Robbert van der Helm
d9003ca2d1
Don't use a ScrollView for Dipser's generic editor
2022-03-22 18:49:46 +01:00
Robbert van der Helm
101075795d
Use a vizia generic UI for Diopser
2022-03-22 18:32:02 +01:00
Robbert van der Helm
5b2f8a417b
Use the f32_hz_then_khz formatter
2022-03-21 14:44:26 +01:00
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
1ddc305be5
Use the new iced generic UI for Diopser
...
This handles a bit nicer than the egui UI.
2022-03-16 01:20:13 +01:00
Robbert van der Helm
c82e1afddb
Add a note about NaNs
2022-03-16 01:15:15 +01:00
Robbert van der Helm
01e7998c03
Revert Diopser back to egui
...
I should probably first redo the Gain GUI example with vizia before
deciding on a final GUI framework for Diopser.
2022-03-15 13:54:12 +01:00
Robbert van der Helm
130ef8ac0e
Add a button that sets the filter count
...
Just to test the reactivity.
2022-03-13 18:44:36 +01:00
Robbert van der Helm
9f8bdfcfc4
Add a dedicated message and handler for parameters
...
Parameter widgets can send these messages to update parameters.
2022-03-13 15:09:04 +01:00
Robbert van der Helm
1213d59ae7
Use new IcedEditor trait that forwards GuiContext
2022-03-13 01:07:41 +01:00
Robbert van der Helm
ab1e170f74
Replace Diopser egui GUI with empty iced GUI
2022-03-12 23:28:18 +01:00
Robbert van der Helm
1559afe080
Enable sample accurate automation in Diopser
2022-03-10 20:32:36 +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
4105a887a8
Add a generic UI for Crisp
2022-03-09 15:15:09 +01:00
Robbert van der Helm
2c6f65a342
Add formatters for percentages
2022-03-08 18:45:18 +01:00
Robbert van der Helm
ae9730ece4
Remove mono tag from Diopser
2022-03-08 17:38:46 +01:00
Robbert van der Helm
be39e19365
Allow FFTW to destroy input arrays
...
Since they're scratch buffers anyways.
2022-03-08 13:50:45 +01:00
Robbert van der Helm
fd8bd025c8
Implement the reset function everywhere
2022-03-08 00:44:10 +01:00
Robbert van der Helm
e1e6b2137e
Compute a spectrum in Diopser
...
This will be used in the GUI.
2022-03-07 15:03:49 +01:00
Robbert van der Helm
03eef2c832
Require PartialEq on plain parameter types
...
So you can compare them in parameter widgets.
2022-03-05 19:50:12 +01:00
Robbert van der Helm
b70af50fcd
Add a simple generic UI to Diopser
2022-03-05 19:39:57 +01:00
Robbert van der Helm
7fd3c31a0f
Remove support for the non-SIMD Diopser version
2022-03-04 12:49:36 +01:00
Robbert van der Helm
1083ee95b6
Still include the #[macro_use] for Diopser
...
Since it's also used in the filter module.
2022-03-04 12:21:29 +01:00
Robbert van der Helm
d758dd652f
Re-export all macros in the prelude
...
Now you don't need the `#[macro_use] extern crate nih_plug;` anymore
2022-03-04 12:01:47 +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
76369ad1e1
💥 Rework FloatParam and IntParam
...
They are now two separate types with slightly different options. I had
these merged initially because they're 95% the same, and I thought it
would be fun to have weird distributions for integer parameters, but
that doesn't really work because hosts and the plugin APIs expect the
steps to be linear. And if you're going to have an unstepped integer
parameter, might as well use FloatParam with rounding.
Because non-linear ranges are no longer possible with IntParam, the
types have been split up to make everything much more readable instead
of adding a parameterizing the range type with another type family.
2022-03-03 19:24:40 +01:00
Robbert van der Helm
c7d7a790c2
Add a todo for SIMD Diopser coefficent generation
2022-03-02 17:04:01 +01:00
Robbert van der Helm
75b1b13599
Fix the linear spread in Diopser
...
The old one wasn't what it said on the tin. Thing is, it actually
sounded much cooler, so I may bring it back as an option.
2022-03-02 16:49:16 +01:00
Robbert van der Helm
161d86ab49
Use the new SIMD helpers in Diopser
2022-03-01 21:40:21 +01:00
Robbert van der Helm
3f6f472a34
Use portable_simd from std instead of packed_simd
...
Since this seems to be the way forward and they encourage using the
feature flag instead of the using it as a separate crate.
2022-03-01 20:59:31 +01:00
Robbert van der Helm
a26ddbb45e
Change CLAP_KEYWORDS to CLAP_FEATURES
...
This name was changed in CLAP 0.19, but in 0.18 it's still called
features.
2022-02-28 17:29:53 +01:00
Robbert van der Helm
1151a80769
Add the other CLAP metadata fields
2022-02-28 17:18:11 +01:00
Robbert van der Helm
c7f1c46f18
Add a reverse DNS ID field to ClapPlugin
2022-02-28 17:04:47 +01:00
Robbert van der Helm
56c1545196
Add a basic nih_export_clap!() macro
...
This does not do anything useful yet.
2022-02-28 14:45:31 +01:00
Robbert van der Helm
d5d90e3e61
Add a ClapPlugin trait
...
Just like the Vst3Plugin trait
2022-02-28 14:45:07 +01:00
Robbert van der Helm
1d7a6a870b
Reset Diopser filters when changing certain params
...
Parameters that cannot be interpolated might cause fun artifacts if we
don't do this. Decreasing the number of stages would be fine without a
reset though.
2022-02-15 19:48:54 +01:00
Robbert van der Helm
2f803915eb
Allow compiling Diopser without SIMD
2022-02-15 18:30:45 +01:00
Robbert van der Helm
d0f1a79279
Use SIMD for Diopser
...
It's pretty damn fast now, especially compared to the JUCE version.
2022-02-15 18:05:26 +01:00
Robbert van der Helm
935d952d81
Make the biquads SIMD capable
2022-02-15 18:00:01 +01:00