1
0
Fork 0
Commit graph

175 commits

Author SHA1 Message Date
Robbert van der Helm a14b4cf61e Fix years in copyright headers 2023-02-27 00:59:56 +01:00
Robbert van der Helm 338f79e6be Save and restore Spectral Compressor editor state 2023-02-26 17:35:04 +01:00
Robbert van der Helm 083326a933 Revert addition of Spectral Compressor standalones
Until the standalones at least have some way to change parameter values
without a GUI these probably shouldn't be published with standalones.
2023-02-26 16:25:11 +01:00
Robbert van der Helm 49e99eef53 Update the JACK bindings
We should no longer have to use our own fork for this.
2023-02-26 16:23:24 +01:00
Robbert van der Helm 72c43adda6 Mark the Spectral Compressor struct as pub
For testing with standalones.
2023-02-23 22:55:15 +01:00
Robbert van der Helm e8fd18ab80 Completely reword the audio IO layout system
Instead of a VST3-style polling function to test if a plugin supports a
certain layout, the plugin now explicitly enumerates the supported
layouts. This aligns better with non-VST3 plugin formats.
2023-02-20 16:57:32 +01:00
Robbert van der Helm d6184ea06e Replace VST3 category string with enum slice
I've been putting this off for a while, but now is finally the day. We
already did this for CLAP a while back. This is both simpler and less
error prone.
2023-02-01 16:09:03 +01:00
Robbert van der Helm c8ed795524 Add a SysExMessage type to Plugin
This is needed to enable sending and receiving SysEx #54. Because
associated type defaults still are not stable, this requires every
plugin that doesn't need this to set this to the unit type:

```rust
type SysExMessage = ();
```
2023-01-31 18:18:41 +01:00
Robbert van der Helm cf52d60a61 Make the Spectral Compressor title link to GitHub 2023-01-16 01:18:32 +01:00
Robbert van der Helm 77cbef5f82 Add the Spectral Compressor version to the GUI 2023-01-16 01:17:07 +01:00
Robbert van der Helm 1e83d29fab Change SC to work in the decibel domain
This makes the soft-knee function differentiable and the performance
should in theory be slightly higher when using these fast gain<->dB
conversion functions. This also fixes the high-frequency rolloff not
working correctly for the downwards compressors.
2023-01-15 18:28:49 +01:00
Robbert van der Helm 1c80331829 Fix incorrect MIN_OVERLAP_TIMES calculations
These aren't actually used which is why this never came up. The
other (similarly unused) constants were calculated correctly.
2023-01-14 00:16:57 +01:00
Robbert van der Helm 8a4720e427 Update Spectral Compressor for cosmic-text changes 2023-01-12 19:03:02 +01:00
Robbert van der Helm bb521fcb82 Upgrade Vizia for the cosmic-text changes
This brings some breaking changes, and vertical positioning of text may
have changed slightly.
2023-01-12 19:03:02 +01:00
Robbert van der Helm bdc8537f3f Add explicit .max(f32::EPSILON) back in SC
`util::db_to_gain_fast()` doesn't snap to 0, but for low enough values
it will still become 0 eventually.
2023-01-11 15:21:18 +01:00
Robbert van der Helm 27acce3237 Remove the DC filter from Spectral Compressor
It's not needed anymore and the behavior is confusing. This was added to
prevent upwards compression and gain increases on DC values from blowing
up. But we no longer do upwards compression on DC bins anyways.
2023-01-08 00:03:38 +01:00
Robbert van der Helm cb827d18dd Rename Buffer::len() to Buffer::samples()
To reduce ambiguity.
2023-01-05 16:04:38 +01:00
Robbert van der Helm 11d9476a5f Use db_to_gain_fast() in plugins 2023-01-04 17:05:13 +01:00
Robbert van der Helm ab9adaf13e Update copyright notices for 2023
Happy new year!
2023-01-01 18:52:44 +01:00
Robbert van der Helm 82b7426689 Namespace custom CLAP features 2022-11-22 21:09:32 +01:00
Robbert van der Helm babe271556 Fix font size in Spectral Compressor disclaimer 2022-11-17 18:17:58 +01:00
Robbert van der Helm aa7d5195ce Grab plugin URLs from the Cargo.toml file 2022-11-11 20:26:39 +01:00
Robbert van der Helm 922a81f654 Drop all mentions of vizia point scale
It does use pixels instead of points.
2022-11-11 16:21:30 +01:00
Robbert van der Helm a7e425581f Use CARGO_PKG_VERSION for plugin versions
Instead of duplicating this. Means that plugin versions only need to be
updated in the Cargo.toml file.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 6f7780bdeb Don't register any fonts by default for vizia
These now need to be registered individually by the plugin. This saves
on binary size.
2022-11-06 14:05:12 +01:00
Robbert van der Helm 89c2b1f84e Replace create_vizia_editor_without_theme w/ enum
This involves a small breaking change. You can now also completely
disable all of Vizia's theming.
2022-11-06 14:04:55 +01:00
Robbert van der Helm c980576102 Add an AsyncExecutor for editor GUIs
This is decoupled form `GuiContext` as that would require invasive
changes all over the place.
2022-10-22 15:05:39 +02:00
Robbert van der Helm 5ea2377c18 Replace AsyncExecutor with simple closure
This makes everything much simpler. The task type is now defined
directly on `Plugin`.
2022-10-22 02:01:03 +02:00
Robbert van der Helm 84f834abb6 Add AsyncExecutor support to ProcessContext 2022-10-22 02:01:03 +02:00
Robbert van der Helm 6ffa23971e Add AsyncExecutor support to InitContext 2022-10-22 00:21:08 +02:00
Robbert van der Helm 297ad2a83e Add an AsyncExecutor associated type to Plugin
This will make it possible to run background tasks in a type safe way.
Sadly, this does mean that every plugin now needs to define the type
alias and constructor function since Rust does not yet support defaults
for associated types.
2022-10-21 23:52:46 +02:00
Robbert van der Helm 81bdad87b5 Replace custom Params in SC with #[nested]
Using the new `id_prefix` attribute. This doesn't break backwards
compatibility.
2022-10-13 01:32:48 +02:00
Robbert van der Helm 727d88c4d7 Add ID renaming superpowers to #[nested(...)]
This can now be used for most common use cases where you previously had
to do a manual `Params` implementation, like arrays of parameter objects
and duplicate parameter objects.
2022-10-13 01:28:05 +02:00
Simon Leiner 0caef90b1a Fix typos in comments 2022-09-29 15:13:43 +02:00
Robbert van der Helm a51c359c0b Fix Spectral Compressor high frequency rolloff 2022-09-15 01:39:16 +02:00
Robbert van der Helm 5ac9c32c19 Fix SC high freq rolloff at 22.05 kHz
This prevents the effect from getting brighter as you increase the
sample rate.
2022-09-14 17:47:07 +02:00
Robbert van der Helm 5fa2382c8c Add a Spectral Compressor todo for rolloff 2022-09-12 02:42:43 +02:00
Robbert van der Helm c566888fa3 💥 Use interior mutability for parameters
Instead of the previous technically-unsound approach. While it wouldn't
cause any issues in practice, it did break Rust's guarantees. That was a
design choice after adding support for editors in NIH-plug, but this is
probably the better long term solution.

The downside is that all uses of `param.value` now need to be changed to
`param.value()`.
2022-09-06 21:57:24 +02:00
Robbert van der Helm 67496f9c79 Default sidechain channel link to 80% 2022-09-04 15:50:49 +02:00
Robbert van der Helm 7cb189b8ef Disable downwards hi-freq rolloff by default 2022-09-04 15:50:20 +02:00
Robbert van der Helm 08b1e43a15 Apply downwards compression to DC bins
In Spectral Compressor. We avoided this because it messes up upwards
compression, but downwards compression is perfectly fine.
2022-09-04 15:07:23 +02:00
Robbert van der Helm a7bc90050e Fix the DC gain compensation in SC 2022-09-02 13:52:17 +02:00
Robbert van der Helm f231be1b1e Default Spectral Compressor threshold to -12 dB 2022-09-02 13:46:15 +02:00
Robbert van der Helm 50ac2cb2b6 Lower the init value even further 2022-08-20 19:54:15 +02:00
Robbert van der Helm b3f918dee5 Lower Spectral Compressor envelope init value 2022-08-20 19:40:51 +02:00
Robbert van der Helm 5b021da373 Don't apply output gain to unfiltered DC bins 2022-08-20 16:53:33 +02:00
Robbert van der Helm 14450da80a Add spectral sidechain compression to SC [2/2]
Forgot to stage this in 9550fe0d10.
2022-08-20 16:45:45 +02:00
Robbert van der Helm 9550fe0d10 Add spectral sidechain compression to SC 2022-08-20 16:37:20 +02:00
Robbert van der Helm 35c6b97ade Increase Spectral Compressor ratio range 2022-08-20 15:49:03 +02:00
Robbert van der Helm 1a706ea1c7 Rename DEFAULT_NUM_INPUTS and DEFAULT_NUM_OUTPUTS 2022-08-19 14:34:21 +02:00
Robbert van der Helm f557707b09 Fix typo in 3d3b7e5 2022-07-26 19:19:58 +02:00
Robbert van der Helm 3d3b7e5122 Default SC DC filter to off 2022-07-26 19:07:30 +02:00
Robbert van der Helm 3d6cad54dd Reset SC envelopes to sqrt(1/2) to prevent pops 2022-07-26 18:51:27 +02:00
Robbert van der Helm 862d475b2b Prevent divisions by zero in sidechain mode 2022-07-25 16:47:42 +02:00
Robbert van der Helm f7201a0f58 Implement the sidechain compression mode 2022-07-25 16:47:42 +02:00
Robbert van der Helm 29ebfbeef1 Make SC disclaimer smaller
Because there are now more controls.
2022-07-25 16:47:42 +02:00
Robbert van der Helm 6da8756e31 Use unchecked access instead of zip 2022-07-25 16:33:24 +02:00
Robbert van der Helm dd49bd9e7f Move knee scaling factor to a function 2022-07-25 16:33:24 +02:00
Robbert van der Helm 49d5ba147a Move actual compression routines to functions 2022-07-25 16:33:24 +02:00
Robbert van der Helm 2813f3d827 Compute sidechain magnitude spectra when enabled 2022-07-25 16:33:24 +02:00
Robbert van der Helm 1fbcd583a4 Don't apply pink noise curve in sidechain mode 2022-07-25 16:33:24 +02:00
Robbert van der Helm a799aec7bd Add (unused) parameters for the compression mode 2022-07-25 16:33:24 +02:00
Robbert van der Helm 4060986b28 Rearrange compressor parameter order 2022-07-25 16:33:24 +02:00
Robbert van der Helm 4f8d5160de Mark SC parameter struct fields as pub 2022-07-25 14:21:45 +02:00
Robbert van der Helm e20b10d601 Store SC output gain as linear gain
Using the new conversion function.
2022-07-24 20:46:49 +02:00
Robbert van der Helm 42c42dff9b Never compress the DC bin in SC
This just results in more problems than it solves for small window
sizes.
2022-07-24 19:04:53 +02:00
Robbert van der Helm 6b26828839 Default both offsets to 0 dB again
Otherwise the UI just looks weird.
2022-07-24 19:01:28 +02:00
Robbert van der Helm 692b1051ad Avoid compressing DC bin on larger windows
Even if the DC filter is disabled. We do want to compress this on
smaller windows as it covers the entire bass range.
2022-07-24 18:39:04 +02:00
Robbert van der Helm 2a464c478c Default SC global threshold to 0 dBFS 2022-07-24 18:30:20 +02:00
Robbert van der Helm ce0aa0079c Slightly lower the threshold parameter 2022-07-24 18:26:57 +02:00
Robbert van der Helm ce72dc5f03 Fix disabled DC filter behavior
This fixes a NaN from taking the logarithm of zero, and the lower bins
are not actually compressed when this option is disabled. This is useful
when using tiny window sizes as the first bin will span quite a chunk of
the spectrum.
2022-07-24 18:25:46 +02:00
Robbert van der Helm 74b33af7d7 Fix DC bin skipping being off by one 2022-07-24 18:00:15 +02:00
Robbert van der Helm dffc169c99 Skew slope and curve more towards 0
Especially positive curve values can get out of hand quick
2022-07-24 17:48:02 +02:00
Robbert van der Helm d53d03c5cf Default downwards hi-freq rolloff to 0.25
Sort of makes sense to have these two be symmetrical
2022-07-24 17:43:31 +02:00
Robbert van der Helm 22dcbdf4a9 Make the default parameters a bit more gentle 2022-07-24 17:25:58 +02:00
Robbert van der Helm c06b134e93 Show the upwards parameter on the left
It makes more sense this way.
2022-07-24 17:17:28 +02:00
Robbert van der Helm 126cf3b141 Add a disclaimer to the GUI
Because there's a good chance things will change later and patches may
not sound exactly the same anymore.
2022-07-24 17:13:09 +02:00
Robbert van der Helm 0b1d9b60db Also skew the slope parameter 2022-07-24 17:07:35 +02:00
Robbert van der Helm 3fe1769a43 Change the global threshold range
This should go lower and it doesn't need to exceed much past 0
dBFS (since full 0 dBFS in the frequency domain will peak pretty hard in
the time domain).
2022-07-24 17:06:20 +02:00
Robbert van der Helm 4a2373b664 Implement upwards compression 2022-07-24 16:56:01 +02:00
Robbert van der Helm 8ca66cf9bb Move the main threshold up in the list 2022-07-24 16:29:50 +02:00
Robbert van der Helm 455ab0364a Skew the threshold curve parameter
Since the center values will be most interesting useful range.
2022-07-24 16:24:31 +02:00
Robbert van der Helm 068549607d Add soft-knee downwards compression 2022-07-24 15:58:30 +02:00
Robbert van der Helm 08201d2a87 Compute knee starts and ends 2022-07-24 15:54:58 +02:00
Robbert van der Helm 92f03e768f Default the rolloff parameters to 0 2022-07-24 15:15:47 +02:00
Robbert van der Helm b3166e3977 Rearrange Spectral Compressor GUI into 4x4 grid 2022-07-24 15:15:47 +02:00
Robbert van der Helm 4f62ebd2ea Wrap nested Params structs in Arcs
So we can use the generic UIs. Vizia needs these to be 'static.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 4327828e6b Move the Params implementation to CompressorParams
So now CompressorBankParams can just derive Params.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 278ae227a7 Make the Spectral Compressor editor a bit wider
Next up is splitting this up in four generic UI panes to make it a bit
easier to use. That was why all of the previous commits moved parameters
around.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 6ae1c55f76 Deduplicate compressors with custom Params impl
This now also finally serves as an example on how to do this.
2022-07-24 15:15:47 +02:00
Robbert van der Helm fa392e61f1 Move attack and release to global parameters 2022-07-24 15:15:47 +02:00
Robbert van der Helm 3c1a1c8f14 Move global parameters to their own struct
We'll temporarily split the generic UI into four panes to make it a bit
easier to use.
2022-07-24 15:15:47 +02:00
Robbert van der Helm c53726bf9e Move the global threshold down in the list 2022-07-24 15:15:47 +02:00
Robbert van der Helm 06694683d3 Move the frequency center parameter down
Somehow this is always where I'm looking for it.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 7db5da7930 Make the slope parameter range wider 2022-07-24 15:15:47 +02:00
Robbert van der Helm f58e278c85 Fix offsets in threshold calculations 2022-07-24 15:15:47 +02:00
Robbert van der Helm f0efdad059 Rearrange Spectral Compressor parameters 2022-07-24 15:15:47 +02:00
Robbert van der Helm 332ac2b231 Add basic hard-knee downwards compression 2022-07-24 15:15:47 +02:00
Robbert van der Helm faec0e35af Allow more granular ratios 2022-07-24 15:15:47 +02:00
Robbert van der Helm 43f86bcc85 Prevent threshold from reaching zero 2022-07-24 15:15:47 +02:00