Robbert van der Helm
1141616466
Replace ACCEPTS_MIDI bool with new enum
...
So we can gate future MIDI CC support behind an additional option since
this involves more work on the VST3 side.
2022-04-07 20:27:37 +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
2211232ed1
Use realfft for Puberty Simulator
2022-03-28 17:51:36 +02:00
Robbert van der Helm
b4ff09ca33
Get rid of unnecessary RustFFT scratch buffer
2022-03-28 17:45:46 +02:00
Robbert van der Helm
80c3fb8d51
Swap fftw in the stft example out for realfft
...
The FFTW bindings can't statically link on Windows.
2022-03-28 17:13:23 +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
f1f2a8a06e
Rename the modes in Crisp to be more fitting
2022-03-25 15:51:40 +01: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
31a84d51dd
Make the Crisp editor slightly taller
2022-03-22 19:50:40 +01:00
Robbert van der Helm
b6bbf06170
Fix Crisp label positioning
2022-03-22 19:49:05 +01:00
Robbert van der Helm
57fb259104
Use a vizia generic UI for Crisp
2022-03-22 18:53:32 +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
f85c9c8d82
Remove unused param from vizia gain GUI example
2022-03-21 23:57:12 +01:00
Robbert van der Helm
fe3ed360a3
Revert Gain GUI slider to the Centered style
2022-03-21 23:47:00 +01:00
Robbert van der Helm
d84b456edb
Draw ticks for the vizia PeakMeter
...
They are just slightly blurry.
2022-03-21 23:45:55 +01:00
Robbert van der Helm
b8ff936b21
Add part of a simple peak meter widget for vizia
2022-03-21 22:28:54 +01:00
Robbert van der Helm
c2b530af36
Also use f32_hz_then_khz in Crisp
2022-03-21 14:51:51 +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
30b913e159
Don't use direct Param initialization in exmaples
...
Since you now also need to specify the default field you probably
shouldn't use this anymore.
2022-03-21 13:29:03 +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
a844051054
Store defaults on Param objects
...
And add methods for querying them.
2022-03-21 12:49:59 +01:00
Robbert van der Helm
1a9db3ab8e
Temporarily add more widgets to vizia Gain GUI
2022-03-20 01:23:44 +01:00
Robbert van der Helm
629619256e
Add some text entry handling for vizia ParamSlider
...
This will need to wait for https://github.com/vizia/vizia/issues/85 as
right now it's not yet possible to get this to behave correctly (other
than perhaps sending manual WindowEvents on the next frame).
2022-03-19 15:29:10 +01:00
Robbert van der Helm
de80c53c14
Mention the -1 pixel offset
2022-03-19 01:22:38 +01:00
Robbert van der Helm
aed3c14229
Add the ParamSlider to the VIZIA Gain GUI
2022-03-19 01:17:36 +01:00
Robbert van der Helm
e2c691ba55
Add default styling for nih_plug_vizia GUIs
2022-03-18 19:12:38 +01:00
Robbert van der Helm
ed3a17bf33
Update vizia
...
Now setting a font size on the `*` selector works.
2022-03-18 12:28:26 +01:00
Robbert van der Helm
87d9136b6f
Use thinner fonts for vizia
...
Because they look like they're one weight too heavy.
2022-03-18 01:37:24 +01:00
Robbert van der Helm
2c62b13ba5
Add the start of a Gain GUI port to vizia
2022-03-18 01:28:18 +01:00
Robbert van der Helm
fb5ce3c670
Add back the egui Gain GUI version
2022-03-17 23:25:42 +01:00
Robbert van der Helm
dc9f1bff45
Rename Gain GUI to Gain GUI (iced)
2022-03-17 23:22:47 +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
aa3e6282b7
Use the new iced generic UI for Crisp
2022-03-16 01:30:29 +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
4d58df1e08
Add an iced peak meter widget
2022-03-15 17:06:47 +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
9bfc44d787
Use Noto Sans Light for the GUI title
2022-03-14 16:05:39 +01:00
Robbert van der Helm
ee9e3701f3
Implement dragging for the parameter slider
2022-03-14 14:17:06 +01:00
Robbert van der Helm
4e9ee27c19
Finish the drawing for the iced param slider
2022-03-14 13:17:19 +01:00
Robbert van der Helm
291abb8bcf
Add a placeholder for a parameter slider widget
2022-03-14 00:53:22 +01:00
Robbert van der Helm
664267745a
Replace gain_gui's editor with an iced stub
2022-03-13 21:59:13 +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
48ff012cea
Document sample accurate automation in the example
2022-03-10 20:19:03 +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
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
76394731a6
Optimize branching in Crisp
2022-03-09 19:42:13 +01:00
Robbert van der Helm
48ed39269d
Add a wet-only control to Crisp
2022-03-09 19:38:57 +01:00
Robbert van der Helm
9fc5b048ad
Iterate in blocks in Crisp
...
I want to add a wet-only version, and this can help reduce per-sample
branching a bit.
2022-03-09 19:35:26 +01:00
Robbert van der Helm
2a30df057c
Move filter frequency limits to constants
2022-03-09 18:26:55 +01:00
Robbert van der Helm
9bb46fc377
Add a noise low-pass filter for Crisp
2022-03-09 18:25:27 +01:00
Robbert van der Helm
cdad01063e
Fix default Crisp HPF frequency value
2022-03-09 16:29:29 +01:00
Robbert van der Helm
4d64e300e4
Increase Crisp editor width so all labels fit
2022-03-09 15:21:41 +01:00
Robbert van der Helm
f9446644aa
Remove unit from Crisp filter frequency params
2022-03-09 15:17:49 +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
57ca8a5ccb
Add a pre-RM LPF to Crisp
...
This makes the effect more usable with high frequency inputs.
2022-03-09 15:11:41 +01:00
Robbert van der Helm
92aac6e471
Add a high pass filter to the Crisp noise
2022-03-09 13:48:23 +01:00
Robbert van der Helm
bda8ecfb23
Add a biquad for low- and high-pass filters
2022-03-09 13:24:57 +01:00
Robbert van der Helm
a08624209c
Fix GPL copyright headers
2022-03-09 13:17:26 +01:00
Robbert van der Helm
305a3f922b
Fix comments in the Crisp plugin
2022-03-09 00:51:52 +01:00
Robbert van der Helm
8f45ef84ee
Change Crisp keyword order
...
Since Bitwig uses the first relevant one as the category.
2022-03-09 00:29:46 +01:00
Robbert van der Helm
919eb7e5e6
Remove now unused include
2022-03-09 00:27:39 +01:00
Robbert van der Helm
3a4f8abb4b
Increase the default Crisp amount
2022-03-09 00:05:37 +01:00
Robbert van der Helm
6072eb103d
Add a stereo control parameter for Crisp
2022-03-09 00:03:35 +01:00
Robbert van der Helm
e8301f6c9d
Add back symmetrical AM
2022-03-08 23:46:05 +01:00
Robbert van der Helm
55315fb7f3
Add an output gain parameter
2022-03-08 23:30:12 +01:00
Robbert van der Helm
792e9469b5
AM only the positive ranges
...
This is what the original Fake Distortion preset did.
2022-03-08 23:20:30 +01:00
Robbert van der Helm
46901bf5c9
Add a basic version of Crisp
2022-03-08 21:10:36 +01:00
Robbert van der Helm
4cca7af930
Make the PCG implementation const compatible
2022-03-08 20:51:01 +01:00
Robbert van der Helm
817ff72265
Add a PCG implementation for pcg32i and floats
2022-03-08 20:42:59 +01:00
Robbert van der Helm
6bfc4ab76f
Add a basic sketch for Crisp
2022-03-08 19:02:21 +01:00
Robbert van der Helm
2c6f65a342
Add formatters for percentages
2022-03-08 18:45:18 +01:00
Robbert van der Helm
24f3593de0
Move order conversion to formatters module
2022-03-08 18:31:20 +01:00
Robbert van der Helm
bb341fdf50
Add an empty plugin for Crisp
2022-03-08 18:03:38 +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
da1e850722
Avoid allocations when switching between plans
2022-03-08 13:27:16 +01:00
Robbert van der Helm
6e1b4cf37f
Increase skewed pitch range
...
Sicne +/- 1 is more or less the usable range.
2022-03-08 12:51:08 +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
ef1abe0508
Tweak the gain compensation
2022-03-07 21:33:00 +01:00
Robbert van der Helm
715ba467a9
Make the window overlap configurable
...
It gets super whacky now.
2022-03-07 21:26:50 +01:00
Robbert van der Helm
115d03a34a
Make the window size for configurable
2022-03-07 21:19:38 +01:00
Robbert van der Helm
81308d0c8d
Change gain multiplier coefficients
2022-03-07 20:47:34 +01:00
Robbert van der Helm
9ae8b4620f
Smooth pitch value changes
2022-03-07 20:27:43 +01:00
Robbert van der Helm
344427f254
Skew the pitch parameter range
2022-03-07 20:22:16 +01:00
Robbert van der Helm
951cac51d7
Add a pitch parameter to Puberty Simulator
...
Because might as well.
2022-03-07 20:21:20 +01:00
Robbert van der Helm
e575514543
Change Puberty Simulator description
2022-03-07 20:08:47 +01:00