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
487ff3d566
Don't let the sine test tone plugin sleep
2022-05-24 13:17:40 +02:00
Robbert van der Helm
f4f54029eb
Add a deactivation callback
...
This is the equivalent of initialize()
2022-05-24 13:05:06 +02:00
Robbert van der Helm
596b04af0a
Add preliminary support for auxiliary IO
...
The missing parts are allocating buffers for these busses, copying data
to those buffers, and adding methods to the ProcessContext to interact
with these inputs and outputs.
2022-05-23 17:13:49 +02:00
Robbert van der Helm
0459405ced
Remove STFT example readme
...
This hasn't been using fftw for a while now so it's no longer relevant.
2022-05-20 03:23:57 +02:00
Robbert van der Helm
c5841cbe33
Add missing latency compensation in STFT example
...
The latency introduced by the linear phase filter wasn't compensated
for.
2022-05-08 03:14:56 +02:00
Robbert van der Helm
6400e2d71d
Fix gain compensation in new STFT example
2022-05-08 02:25:44 +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
58d7dc034c
Fix gain compensation in STFT examples
2022-04-28 17:24:35 +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
96ec1da037
Export the standalone target for gain_gui_vizia
2022-04-24 15:48:05 +02:00
Robbert van der Helm
00fff75c5e
Rename MIDI inverter example plugin directory
...
To match the package name.
2022-04-18 02:33:29 +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
c917114020
Rename the gain GUI examples to match package name
2022-04-14 23:53:14 +02:00
Robbert van der Helm
bcc8453861
Update MIDI inverter comment
2022-04-11 20:55:43 +02:00
Robbert van der Helm
49f1a45b76
Add a MIDI effect that inverts all signals
...
To demonstrates the API. The CLAP version does not seem to be able to
output anything other than basic notes in Bitwig Studio 4.2.3.
2022-04-11 20:47:00 +02:00
Robbert van der Helm
97b2c9a2b1
Replace sine loop
2022-04-11 18:25:01 +02:00
Robbert van der Helm
e4606918e7
Rename next_midi_event() to next_event()
2022-04-11 18:15:14 +02:00
Robbert van der Helm
eb5b81fcac
Remove MidiInput::None from nontrivial examples
...
Since it's the default, makes the examples a bit shorter.
2022-04-11 18:02:55 +02:00
Robbert van der Helm
25dd0d9bef
Control sine level through velocity and aftertouch
2022-04-08 17:44:05 +02:00
Robbert van der Helm
b9a10455bb
Add polyphonic aftertouch support
2022-04-07 20:55:31 +02:00
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
6dd11561c5
Add resize handles to all vizia GUIs
2022-03-29 00:49:31 +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
d35276437d
Patch vizia to not require pub for lenses
2022-03-23 23:29:49 +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
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
4d58df1e08
Add an iced peak meter widget
2022-03-15 17:06:47 +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
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
bda8ecfb23
Add a biquad for low- and high-pass filters
2022-03-09 13:24:57 +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
115d03a34a
Make the window size for configurable
2022-03-07 21:19:38 +01:00
Robbert van der Helm
376c1d7b0a
Fix gain compensation in STFT example
2022-03-07 02:04:47 +01:00
Robbert van der Helm
b06e67bde7
Supper non-buffer and non-sidechain inputs in STFT
2022-03-06 22:26:37 +01:00
Robbert van der Helm
e61a42e96f
Revert windowing change from 93ab08e
...
This is actually needed to prevent spectral leakage from IDTFs with
small window sizes.
2022-03-06 19:17:42 +01:00
Robbert van der Helm
93ab08e5d5
Remove post-IDFT windowing in STFT helper
...
There's no reason to.
2022-03-06 19:08:04 +01:00
Robbert van der Helm
175030b77c
Fix STFT example filter normalization
2022-03-06 18:56:07 +01:00
Robbert van der Helm
0f78b02685
Add a simple filter example with FFTW
2022-03-06 17:54:23 +01:00
Robbert van der Helm
601ced9363
Add a license note on the STFT example
2022-03-06 16:14:04 +01:00
Robbert van der Helm
d7ea21f597
Fix clippy lints
2022-03-06 15:41:35 +01:00
Robbert van der Helm
2343485c1c
Don't do gain compensation in STFT helper
...
You'll likely want to add some scaling yourself anyways, so this would
just be a wasted operation since the scaling also depends on your window
function.
2022-03-06 15:36:24 +01:00
Robbert van der Helm
e72203f919
Use the new overlap-add helper in the STFT example
...
Still without any proper FFT stuff.
2022-03-06 15:28:53 +01:00
Robbert van der Helm
592a908132
Fix samples until next window calculation
2022-03-06 15:11:42 +01:00
Robbert van der Helm
3c62670164
Add proper overlap-add to the StftHelper
...
Doesn't make much sense without it.
2022-03-06 14:33:30 +01:00
Robbert van der Helm
b416d1630b
Add the basis for a simple STFT example
...
Right now it doesn't do any FFT operations yet, but all the pieces are
in place using the new STFT helper.
2022-03-06 02:07:53 +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
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
6c9db8fee8
Change sample iterator variable names in examples
2022-03-03 21:38:50 +01:00
Robbert van der Helm
0666743cc7
Fix Gain GUI CLAP identifier
2022-03-03 21:31:43 +01:00
Robbert van der Helm
be4bbd4400
Allow nested parameter structs
...
See the Parameters docstring for the caveats.
2022-03-03 20:38:28 +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
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
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
19d2dc0a67
Implement step snapping for parameters
2022-02-13 17:52:54 +01:00
Robbert van der Helm
3d8cfd7477
Use the step sizes
2022-02-13 16:43:11 +01:00
Robbert van der Helm
adf59c192b
Add a step size for float parameters
2022-02-13 16:41:31 +01:00
Robbert van der Helm
710fbf0c7d
Remove now unused parameter
2022-02-12 20:02:32 +01:00
Robbert van der Helm
cd0b870682
Directly pass a style to .with_smoother()
2022-02-12 19:56:37 +01:00
Robbert van der Helm
d6b358f8ca
Don't require importing Param for derive macro
2022-02-12 19:55:39 +01:00
Robbert van der Helm
bc11c97fcf
Use the new builder interface
2022-02-12 17:19:52 +01:00
Robbert van der Helm
342aebee89
Add a plugin skeleton for a Diopser port
2022-02-12 16:29:23 +01:00
Robbert van der Helm
f645b6a92f
Relicense under the ISC license
2022-02-12 16:04:46 +01:00