1
0
Fork 0
Commit graph

201 commits

Author SHA1 Message Date
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
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 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 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 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 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 70378be6e9 Replace --bundle-vst3 with export detection
We'll need this for when we support other plugin formats.
2022-02-26 20:12:08 +01:00
Robbert van der Helm 6cc1e4f73f Add nightly links that don't require a login 2022-02-16 16:02:41 +01:00
Robbert van der Helm d37b866115 Explicitly mention the nightly toolchain 2022-02-15 20:13:28 +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
Robbert van der Helm 2f803915eb Allow compiling Diopser without SIMD 2022-02-15 18:30:45 +01:00
Robbert van der Helm d0f1a79279 Use SIMD for Diopser
It's pretty damn fast now, especially compared to the JUCE version.
2022-02-15 18:05:26 +01:00
Robbert van der Helm 935d952d81 Make the biquads SIMD capable 2022-02-15 18:00:01 +01:00
Robbert van der Helm 8c30eccb27 Add an identity function for biquad coefficients 2022-02-15 17:13:49 +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 fc8aec5afa Explain not using the inner iterator in Diopser 2022-02-15 00:39:30 +01:00
Robbert van der Helm 24f81e2542 Fix Diopser DSP load 2022-02-15 00:33:34 +01:00
Robbert van der Helm fa8b87ec71 Remove mentions of Diopser port being unfinished 2022-02-15 00:00:41 +01:00
Robbert van der Helm b84022caed Add the filter spread parameters to Diopser
This includes a much better octave-based version instead of the old
'exponential' version.
2022-02-14 23:59:53 +01:00
Robbert van der Helm c1d91498e1 Update the todo list for Diopser 2022-02-13 20:21:59 +01:00
Robbert van der Helm f399b30dba Implement the smoothing interval on Diopser 2022-02-13 19:54:49 +01:00
Robbert van der Helm 0bd0ea6af2 Add an automation precision parameter to Diopser 2022-02-13 19:41:31 +01:00
Robbert van der Helm c9a9f76dce Update note on Diopser's status
The port is unfinished, but the origin version's feature are all there
and it works well.
2022-02-13 18:42:35 +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 eea05cc748 Rename reset_iter to iter_mut
So it's more consistent.
2022-02-12 23:28:15 +01:00
Robbert van der Helm 2c394aabd5 Add nicer adapter for repeating channel iteration 2022-02-12 23:16:07 +01:00
Robbert van der Helm fb382520af Fix typo in comment 2022-02-12 21:53:19 +01:00
Robbert van der Helm 2f371874d0 Add a super basic port of Diopser 2022-02-12 21:51:58 +01:00
Robbert van der Helm 2241000c20 Fix the biquad
Oops.
2022-02-12 21:11:44 +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 e3d445cea6 Add a simple biquad filter 2022-02-12 18:07:40 +01:00
Robbert van der Helm fe881cbdc9 Add the GPL header for Diopser 2022-02-12 17:28:40 +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