1
0
Fork 0
Commit graph

125 commits

Author SHA1 Message Date
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
Robbert van der Helm da8f4c20cf Add more labels to the gain_gui example
Before adding a VU meter widget and removing all of this cruft.
2022-02-09 19:49:23 +01:00
Robbert van der Helm 7eb8622736 Drag very granularly with Shift+Drag 2022-02-09 12:24:01 +01:00
Robbert van der Helm 5dd3cab305 Temporarily show this slider for a skewed int 2022-02-09 11:51:53 +01:00
Robbert van der Helm 07f9a18d3d Rename EguiState::open to is_open
This makes it more clear that it doesn't actually open the editor.
2022-02-08 20:33:08 +01:00
Robbert van der Helm d9ac60ae85 Only calculate peak meter while GUI is open
To show off this feature.
2022-02-08 20:28:40 +01:00
Robbert van der Helm 4260c5441c Add a way to know whether the egui editor is open 2022-02-08 20:16:39 +01:00
Robbert van der Helm 02614e4a5a Use absolute values for the peak meter gain
I guess I wasn't thinking too clearly when I wrote this.
2022-02-06 19:20:03 +01:00
Robbert van der Helm 556bec7c0b Move editor handling to its own struct
This makes the API much, much nicer (especially consuming the egui
wrapper), and it also avoids having to lock the plugin instance which is
obviously very bad if the plugin is also supposed to be processing audio
on another thread.
2022-02-06 17:12:57 +01:00
Robbert van der Helm eefb5e604c Actually, adjust the peak meter range to -60 dBFS
This is the same range Bitwig shows in their tiny VU meters in between
devices.
2022-02-06 14:59:13 +01:00
Robbert van der Helm 0943d54404 Adjust the peak meter normalization to -40 dBFS 2022-02-06 14:58:14 +01:00
Robbert van der Helm a95b25cd06 Tweak the peak meter display 2022-02-06 14:18:47 +01:00
Robbert van der Helm 40d7799df9 Don't handle context in create_egui_editor
There's no need for special handling here, just let the plugin do its
own thing.
2022-02-06 14:02:55 +01:00
Robbert van der Helm a10e1e1152 Rename the VU meter to generic digital peak meter
Before I get a visit from the VU police.
2022-02-06 13:36:55 +01:00
Robbert van der Helm 5017dad7d3 Add a semi-broken GUI example
This needs a lot of work. We need widgets that know how to deal with our
parameters, and also basic widgets for things like meters. Egui-baseview
also has a couple quirks left. Most notably it only updates when
actively moving over the GUI (which means VU meters look pretty janky)
and it randomly panics.
2022-02-06 13:16:28 +01:00
Robbert van der Helm 0514d2de96 Increase the gain smoothing time 2022-02-06 02:36:31 +01:00
Robbert van der Helm 53f802b295 Fix accidental gain smoothing style change 2022-02-06 02:08:58 +01:00
Robbert van der Helm b075d1b1bb Modify the editor API to use trait objects
The alternative isn't really feasible without specialization, and
NIH-plug should work on the stable compiler.
2022-02-05 17:12:03 +01:00
Robbert van der Helm 7ac1df0d8d Add stubs for editor handling 2022-02-05 12:46:26 +01:00
Robbert van der Helm bbc190c67f Hold the RwLock guard in the process context
This avoids having to constantly acquire a new lock.
2022-02-04 23:03:11 +01:00
Robbert van der Helm cbd51b0c3a Monomorphize the context variables
For the parameter setting context functions we don't be able to use
trait objects.
2022-02-04 22:34:53 +01:00
Robbert van der Helm 2c0b797c40 Avoid clicks in the MIDI sine example 2022-02-04 15:26:37 +01:00
Robbert van der Helm 15d0e69d46 Remove TODO about adding MIDI support
Since we did just that.
2022-02-04 15:17:42 +01:00
Robbert van der Helm 366deda83c Add MIDI support to the sine example 2022-02-04 15:17:42 +01:00
Robbert van der Helm f69fdcef5f Add another plugin constant for MIDI support 2022-02-04 15:17:42 +01:00
Robbert van der Helm 295ecc94ee Shorten frequency parameter name
Since it would overflow otherwise.
2022-02-03 17:01:20 +01:00
Robbert van der Helm 10c306e035 Move example plugins into a subdirectory 2022-02-03 16:57:10 +01:00