1
0
Fork 0
Commit graph

170 commits

Author SHA1 Message Date
Robbert van der Helm fbe1fa1d4a Set X-Y pad value on mouse down 2022-11-11 20:29:13 +01:00
Robbert van der Helm 27d42797ee Add basic dragging gestures to the X-Y pad 2022-11-11 20:26:39 +01:00
Robbert van der Helm 3510350425 Add styling for the X-Y pad handle 2022-11-11 20:26:39 +01:00
Robbert van der Helm e24adf4c67 Add the basis for an X-Y pad widget
The handle does not have any styling yet, and there's also no way to
interact with the widget.
2022-11-11 20:26:39 +01:00
Robbert van der Helm 8088630803 Always use floating point values for pixels 2022-11-11 20:26:39 +01:00
Robbert van der Helm d280c2d767 Open Diopser GH page when clicking on the title 2022-11-11 20:26:39 +01:00
Robbert van der Helm aa7d5195ce Grab plugin URLs from the Cargo.toml file 2022-11-11 20:26:39 +01:00
Robbert van der Helm 72dbce92eb Add scaffolding for the X-Y pad 2022-11-11 20:26:39 +01:00
Robbert van der Helm 6e103baf4d Show Diopser version in the GUI 2022-11-11 20:26:39 +01:00
Robbert van der Helm cce10d79ca Move Diopser's stylesheet
Since there's now a dedicated editor module directory
2022-11-11 17:34:35 +01:00
Robbert van der Helm 3fbc06e819 Add more Diopser GUI scaffolding 2022-11-11 17:26:24 +01:00
Robbert van der Helm 922a81f654 Drop all mentions of vizia point scale
It does use pixels instead of points.
2022-11-11 16:21:30 +01:00
Robbert van der Helm 884683a190 Drop ParamLabel again
This isn't going to work with vizia right now.
2022-11-11 14:13:05 +01:00
Robbert van der Helm c9c4116e9d Add part of a vertical ParamLabel
Vizia doesn't seem to support this right now, so I'll drop this again.
2022-11-11 14:11:14 +01:00
Robbert van der Helm a7e425581f Use CARGO_PKG_VERSION for plugin versions
Instead of duplicating this. Means that plugin versions only need to be
updated in the Cargo.toml file.
2022-11-11 03:15:05 +01:00
Robbert van der Helm e184e6d8a6 Consome scrolling events
This sort of fixes using these in ScrollViews
2022-11-11 03:15:05 +01:00
Robbert van der Helm 316d9221df Add scrolling support for the safe mode button 2022-11-11 03:15:05 +01:00
Robbert van der Helm dfd5aa9a11 Add constants for Diopser's editor 2022-11-11 03:15:05 +01:00
Robbert van der Helm 5b05107f5b Add missing GPL header in Diopser 2022-11-11 03:15:05 +01:00
Robbert van der Helm c1573f47c3 Make Automation Precision slider less wide 2022-11-11 03:15:05 +01:00
Robbert van der Helm 8f02cdc1fa Add an Automation Precision slider to Diopser
Using the new label override
2022-11-11 03:15:05 +01:00
Robbert van der Helm 9d696925e3 Add a safe mode button to Diopser's GUI 2022-11-11 03:15:05 +01:00
Robbert van der Helm 2d4ac47f15 Add a not yet used safe mode AtomicBool to Diopser
This will limit the range of the filter stages parameter in the GUI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm b8f43ad1fe Create bypass button on Diopser GUI 2022-11-11 03:15:05 +01:00
Robbert van der Helm aee08bae20 Add a dedicated bypass param for Diopser
This will be shown in the GUI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 28c62cf7ca Add some UI scaffolding for Diopser
This still uses the old generic UI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm cfb9993603 Make the Diopser struct pub
This makes it easier to quickly set up a standalone for GUI testing.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 6f7780bdeb Don't register any fonts by default for vizia
These now need to be registered individually by the plugin. This saves
on binary size.
2022-11-06 14:05:12 +01:00
Robbert van der Helm 89c2b1f84e Replace create_vizia_editor_without_theme w/ enum
This involves a small breaking change. You can now also completely
disable all of Vizia's theming.
2022-11-06 14:04:55 +01:00
Robbert van der Helm c980576102 Add an AsyncExecutor for editor GUIs
This is decoupled form `GuiContext` as that would require invasive
changes all over the place.
2022-10-22 15:05:39 +02:00
Robbert van der Helm 5ea2377c18 Replace AsyncExecutor with simple closure
This makes everything much simpler. The task type is now defined
directly on `Plugin`.
2022-10-22 02:01:03 +02:00
Robbert van der Helm 84f834abb6 Add AsyncExecutor support to ProcessContext 2022-10-22 02:01:03 +02:00
Robbert van der Helm 6ffa23971e Add AsyncExecutor support to InitContext 2022-10-22 00:21:08 +02:00
Robbert van der Helm 297ad2a83e Add an AsyncExecutor associated type to Plugin
This will make it possible to run background tasks in a type safe way.
Sadly, this does mean that every plugin now needs to define the type
alias and constructor function since Rust does not yet support defaults
for associated types.
2022-10-21 23:52:46 +02:00
Robbert van der Helm c566888fa3 💥 Use interior mutability for parameters
Instead of the previous technically-unsound approach. While it wouldn't
cause any issues in practice, it did break Rust's guarantees. That was a
design choice after adding support for editors in NIH-plug, but this is
probably the better long term solution.

The downside is that all uses of `param.value` now need to be changed to
`param.value()`.
2022-09-06 21:57:24 +02:00
Robbert van der Helm 1a706ea1c7 Rename DEFAULT_NUM_INPUTS and DEFAULT_NUM_OUTPUTS 2022-08-19 14:34:21 +02:00
Robbert van der Helm 0469bdf806 Persist the editor states for all plugins 2022-07-13 23:16:54 +02:00
Robbert van der Helm 7cd7294b22 Make CLAP descriptions and special URLs optional
This closes #14.
2022-07-04 12:46:34 +02:00
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 b7bfa5f18e Update Vizia
With two months of breaking changes, hooray! But everything should still
work after some bug squashing in Vizia.
2022-06-18 01:59:57 +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 3fe24e7dc6 Use more typical convolution FFT in STFT example 2022-05-08 02:22:36 +02:00
Robbert van der Helm 55eeb689dd Add a padding option to StftHelper 2022-05-08 02:12:37 +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 e35886c216 Move window function handling out of StftHelper
And apply the window function only once at the end of the process
function for the plugins that used it.
2022-04-28 17:20:39 +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 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