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
e8002730a0
Fix clippy lints
2022-11-05 14:19:47 +01:00
Robbert van der Helm
560f97f77d
Use Mutex instead of RwLock for gain example
...
Neither makes a lot of sense here, but RwLock makes even less sense.
2022-11-05 14:19:32 +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
eed5a62abb
Add build closure parameter to create_egui_editor
2022-10-20 14:04:08 +02:00
Robbert van der Helm
4f74b4b4cc
Mention saving Crossover setup as default preset
2022-10-19 16:00:20 +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
Robbert van der Helm
d57003a0e9
Update macOS instructions in plugin readmes
2022-10-09 21:35:25 +02:00
Simon Leiner
0caef90b1a
Fix typos in comments
2022-09-29 15:13:43 +02:00
Simon Leiner
f4995abf88
Fix typos in documentation
2022-09-29 15:13:43 +02:00
Robbert van der Helm
e4d1ad39ab
Remove old todo
2022-09-22 17:39:22 +02:00
Robbert van der Helm
269c2a51e1
Re-enable assert_process_allocs for gain_gui_egui
2022-09-21 16:25:07 +02:00
Robbert van der Helm
eb11da731d
Enable the standalone for gain_gui_egui
2022-09-21 16:11:17 +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
cd02ebb839
Use less arbitrary decay weights for the gain GUIs
...
This solves the same problem as #27 but in a cleaner way. The previous
commits refactored the smoothing to make it possible to use the
calculations in plugin code to do the same thing as #27 , but then I
realized that that doesn't make much sense since the time to decay into
complete silence isn't very meaningful for this kind of computation.
2022-09-04 19:09:22 +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
743d456e0f
Don't build the gain example with zstd enabled
2022-08-18 19:46:51 +02:00
Robbert van der Helm
1bb1cde913
Add optional Zstandard compression for state
...
This can be particularly useful when using the persistent fields feature
to store JSON or other large textual documents.
2022-08-18 13:55:48 +02:00
Robbert van der Helm
c412d3cca6
Remove debug print
2022-08-18 13:45:13 +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
3ffc2f0604
Change single branch match to if let
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
fdbff129f8
Use linear gain params in gain examples
...
Using the new skewed coefficient calculation function for gain ranges
from a couple commits ago.
Closes #18 .
2022-07-24 21:21:13 +02:00
Robbert van der Helm
7b66145e8b
Use correct gain skew factor for Safety Limiter
2022-07-24 20:48:13 +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
Robbert van der Helm
8fbdc43ce3
Fix the high frequency rolloff
2022-07-24 15:15:47 +02:00
Robbert van der Helm
eda842c6a9
Fix the envelope coefficients
...
The minus was missing here.
2022-07-24 15:15:47 +02:00
Robbert van der Helm
c2003879cb
Store ratio reciprocals instead of ratios
...
We're doing linear space compression, so we need the reciprocal of the
actual ratio.
2022-07-24 15:15:47 +02:00
Robbert van der Helm
ef3a7a76d5
Handle 0 attack and release
2022-07-24 15:15:47 +02:00
Robbert van der Helm
dae9dc758c
Implement the envelope followers
2022-07-24 15:15:47 +02:00
Robbert van der Helm
147cf3f633
Add a not very functional process function
2022-07-24 15:15:47 +02:00
Robbert van der Helm
9aa4a64e5f
Compute the ratios for Spectral Compressor
2022-07-24 15:15:47 +02:00
Robbert van der Helm
482599b351
Compute the thresholds for Spectral Compressor
2022-07-24 15:15:47 +02:00