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
Robbert van der Helm
8f92669a47
Keep track of the processing status
2022-03-03 17:03:52 +01:00