Robbert van der Helm
883b43b6a7
Support string->value conversions for Diopser's most important parameter
2022-07-02 00:45:01 +02:00
Robbert van der Helm
f7bfbb8d95
Add stable IDs to the plugin's enum parameters
...
Existing instances will automatically be upgraded to these IDs when the
instance gets saved. This makes it possible to rearrange things later
when needed.
2022-06-04 13:36:17 +02:00
Robbert van der Helm
bfc472e49b
Introduce a new enum for CLAP features
...
Based on the new CLAP 0.26 clap-features.h.
2022-06-02 01:16:30 +02:00
Robbert van der Helm
6996fdaed1
Update features names for CLAP 0.26
2022-06-02 00:52:13 +02:00
Robbert van der Helm
c7f5cd1cec
Fix NaNs in negative out of bounds skewed params
...
This would result in a NaN, and the clamping wouldn't catch that.
2022-05-29 14:33:16 +02:00
Robbert van der Helm
ee900f74c2
Support auxiliary inputs and outputs for CLAP
...
This does not yet work for VST3. You'll always get empty slices there.
2022-05-27 02:30:57 +02:00
Robbert van der Helm
b2e6bd5515
Create a separate InitContext
...
Only a couple of these functions would be needed during initialization.
In the next couple commits ProcessContext will get a way to access
auxiliary IO, so this really had to be separated.
2022-05-27 01:17:15 +02:00
Robbert van der Helm
535ae1260e
Remove now unnecessary explicit dyn casts
...
Rust-analyzer used to not infer this, seems like now it does.
2022-05-24 23:55:48 +02:00
Robbert van der Helm
98876670f8
Re-export debug macros from the debug module
...
This makes it easy to import just the macros without having to use the
oldschool `#[macro_use] extern crate ...;` syntax.
2022-04-30 02:10:54 +02:00
Robbert van der Helm
9acd312768
Parmaeters are not real, they can't hurt you
2022-04-24 19:46:07 +02:00
Robbert van der Helm
cab0af5153
Add explicit dyn trait casts
...
So Rust Analyzer stops complaining.
2022-04-15 19:31:38 +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
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
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
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
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
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
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
7632b21a95
Remove debug code from sine example
...
Not sure how this ended up here.
2022-02-15 03:45:39 +01:00
Robbert van der Helm
fc8aec5afa
Explain not using the inner iterator in Diopser
2022-02-15 00:39:30 +01:00
Robbert van der Helm
24f81e2542
Fix Diopser DSP load
2022-02-15 00:33:34 +01:00