Robbert van der Helm
ec329143ae
Add a todo for a Diopser bypass crossfade
2022-11-11 20:44:10 +01:00
Robbert van der Helm
e42970c013
Modify Y-parameter before X-parameter
...
So the X-parameter shows up as last touched in the DAW.
2022-11-11 20:31:15 +01:00
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
d4b93cfdee
Add URLs to the plugin Cargo.toml files
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
837ef14e1d
Bump Diopser version to 0.3.0
...
In preparation for this new GUI to be completed, or I may forget.
2022-11-11 20:26:30 +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
d57003a0e9
Update macOS instructions in plugin readmes
2022-10-09 21:35:25 +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
2a1abf10e1
Fix typo in Diopser readme
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
6e37353c67
Link to the correct CI pipeline for builds
2022-06-10 15:59:18 +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
d72bd56fe7
Change the limiter recommendation on Diopser
...
And explain what can happen and why when you start sweeping parameters
around.
2022-06-03 18:22:23 +02:00
Robbert van der Helm
82565592fa
Mention Safety Limiter in Diopser readme
2022-06-02 16:34:25 +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
1f0094c920
Link plugin downloads in readme
2022-05-24 23:56:21 +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
d589f81228
Change last to latest
2022-05-09 02:47:29 +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
e74172b67b
Split build and package workflows
2022-04-11 16:11:42 +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
fedfa47b43
Fix building instructions in readmes
2022-03-07 22:07:57 +01:00
Robbert van der Helm
55e258bd27
Add the one and only Puberty Simulator plugin
2022-03-07 19:51:38 +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