1
0
Fork 0
Commit graph

1046 commits

Author SHA1 Message Date
Robbert van der Helm
17f3c6cc6c Add an in-place version of the Hann function 2022-03-07 20:52:37 +01:00
Robbert van der Helm
f05d209169 Add an analysis-only function to StftHelper 2022-03-07 01:14:36 +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
7c8da39159 Fix position increment in STFT helper
This was what was causing the spectral leakage. It already sounded like
parts of the buffer were being cleared too early or old parts were being
reused, but I guess that makes sense now...
2022-03-06 18:45:34 +01:00
Robbert van der Helm
82e74a7c53 Redefine the Hann window as a cosine
This fixes some of the spectral leakage.
2022-03-06 18:38:50 +01:00
Robbert van der Helm
295e5493ec Add post-IDFT windowing to StftHelper 2022-03-06 17:50:58 +01:00
Robbert van der Helm
c81ec15228 Fix comment on window scale remapping 2022-03-06 15:46:59 +01:00
Robbert van der Helm
07cf10e81d Add more todos to the STFT helper 2022-03-06 15:45:19 +01:00
Robbert van der Helm
af4db7be53 Fix fallback permit_alloc() implementation 2022-03-06 15:42:32 +01:00
Robbert van der Helm
8e2fd66573 Process sidechain inputs in STFT helper 2022-03-06 15:36:50 +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
f7b3bd9198 Add gain compensation to the STFT helper 2022-03-06 15:28:35 +01:00
Robbert van der Helm
0fa394247f Add a permit_alloc function
Since assert_no_alloc also hides panic messages which can make debugging
more difficult:
https://github.com/Windfisch/rust-assert-no-alloc/issues/4
2022-03-06 15:11:42 +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
bf215ef88e Add a Hann function for the STFT helper 2022-03-06 14:41:40 +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
963696cbff Warn on invalid ranges with logarithmic smoothing 2022-03-06 12:27:52 +01:00
Robbert van der Helm
8355c38b9a Add some TODOs to the STFT helper 2022-03-06 02:15:14 +01:00
Robbert van der Helm
4ff2e65b5c Add a note regarding the Buffer lifetime 2022-03-06 02:10:33 +01:00
Robbert van der Helm
b2600f4b93 Add a helper for buffering audio for STFTs 2022-03-06 02:07:44 +01:00
Robbert van der Helm
e5bac1e220 Add a channel count function to Buffer 2022-03-06 01:21:00 +01:00
Robbert van der Helm
54881dfa15 Add a len() function to Buffer 2022-03-06 01:12:28 +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
79ab0cd7ed Add the special win32-dpi-aware feature on Windows 2022-03-05 16:02:52 +01:00
Robbert van der Helm
9267a8371c Add DPI scaling support
That hopefully works.
2022-03-05 13:37:35 +01:00
Robbert van der Helm
e491ff6319 Fix clippy lints 2022-03-04 15:07:34 +01:00
Robbert van der Helm
e2605c8cee Add transport information for VST3 and CLAP
This is available through the process context.
2022-03-04 15:05:00 +01:00
Robbert van der Helm
713e778117 Add a Default implementation for the transport 2022-03-04 14:32:23 +01:00
Robbert van der Helm
a483dbc6a6 Add a Transport struct with conversion methods
We'll add this to the ProcessContext in a bit.
2022-03-04 14:25:38 +01:00
Robbert van der Helm
99f97978a9 Reorder ProcessContext methods
When we'll add more things here the more common getters should come
first and less common operations like changing latency should come last.
2022-03-04 13:22:58 +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
3e0316e17c Add missing docstrings 2022-03-03 23:34:06 +01:00
Robbert van der Helm
80457ac0f9 Fix doc links after prelude migration 2022-03-03 23:30:29 +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
ca461d3d15 Touch up list of missing features 2022-03-03 22:27:48 +01:00
Robbert van der Helm
542012aa0e Request restart for latency change when processing
Calling this change function seems to work fine, but apparently you're
supposed to do it this way.
2022-03-03 21:58:40 +01:00
Robbert van der Helm
8acebadac0 Fix EnumParam step count after refactor 2022-03-03 21:34:04 +01:00
Robbert van der Helm
02a6b99308 Fix broken links in docs 2022-03-03 21:22:20 +01:00
Robbert van der Helm
4160970571 Implement PersistentField for AtomicRefCell 2022-03-03 21:21:08 +01:00
Robbert van der Helm
80b1bf12f2 Use AtomicRefCell for all uncontested locks
Since it would be a bug if those locks were somehow contested.
2022-03-03 21:21:08 +01:00
Robbert van der Helm
184355a886 Delay CLAP host extension query to init()
Or the CLAP example host will get very mad at us.
2022-03-03 21:09:12 +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
c0f03a97fc Add a todo about removing skewed integer ranges 2022-03-03 18:36:36 +01:00
Robbert van der Helm
27570be4a6 Implement platform-specific CLAP GUI extensions 2022-03-03 18:29:37 +01:00
Robbert van der Helm
b5993c1bb8 Add a CLAP GuiContext for sending param changes 2022-03-03 17:47:41 +01:00
Robbert van der Helm
a4930dc887 Add parameter change outputs for CLAP
But without any way to send them, at least for now.
2022-03-03 17:21:32 +01:00