1
0
Fork 0
Commit graph

482 commits

Author SHA1 Message Date
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
Robbert van der Helm fad560ab9f Precompute 2-log frequencies for the compressors 2022-07-24 15:15:47 +02:00
Robbert van der Helm b8525cac4d Split compressor params into up/downwards 2022-07-24 15:15:47 +02:00
Robbert van der Helm e68bb8d632 Add a stub for a compressor bank
This is what the compressor data structure will more or less look like.
The thresholds and ratios still need to be split up in their upwards and
downwards counterparts and the callback listeners should be updated
accordingly.
2022-07-24 15:15:47 +02:00
Robbert van der Helm fdcf8f79bc Make the Spectral Compressor editor taller
All the sliders.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 2658404162 Rearrange compressor and threshold parameters 2022-07-24 15:15:47 +02:00
Robbert van der Helm 6f92c81c1b Add parameters for window size and overlap 2022-07-24 15:15:47 +02:00
Robbert van der Helm 5dff08c62b Add a dedicated threshold params struct
The input gain is now replaced by a global threshold.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 49f6df7248 Add a high-frequency ratio rolloff parameter 2022-07-24 15:15:47 +02:00
Robbert van der Helm d00ae369c0 Add knee width parameters 2022-07-24 15:15:47 +02:00
Robbert van der Helm ed3f760965 Move the compressor parameters to their own module 2022-07-24 15:15:47 +02:00
Robbert van der Helm 08c78454da Add scrollbar to Spectral Compressor's generic GUI 2022-07-24 15:15:47 +02:00
Robbert van der Helm a406f451b0 Remove the word Threshold from the parameter names
This makes them too long otherwise.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 07136bcdc9 Add compressor params for Spectral Compressor
These are not yet hooked up to anything.
2022-07-24 15:15:47 +02:00
Robbert van der Helm 7c66f5d856 Add a dry-wet mixer to Spectral Compressor 2022-07-24 15:15:47 +02:00
Robbert van der Helm 46faaaf1ac Add a DC filter 2022-07-24 15:15:47 +02:00
Robbert van der Helm 12aa8544cd Add a non-functional STFT to Spectral Compressor 2022-07-24 15:15:47 +02:00
Robbert van der Helm 85e52b8ab7 Add boilerplate for a Spectral Compressor port 2022-07-24 15:15:47 +02:00
Robbert van der Helm 6e89d3737b Change the scaling on Safety Limiter's threshold
With the addition of negative values the linear scale doesn't work
anymore.
2022-07-22 22:49:59 +02:00
Robbert van der Helm f5459e95a5 Fix typo in Crossover description
Closes #19.
2022-07-22 18:46:53 +02:00
Robbert van der Helm 2c9945db79 Allow negative thresholds for Safety Limiter 2022-07-20 19:45:29 +02:00
Robbert van der Helm 8e2650e43a
Merge pull request #15 from AmaiKinono/typo
Fix typos in the gain example
2022-07-18 23:38:03 +02:00
AmaiKinono 00fa9e9703 Fix typos in the gain example 2022-07-17 00:51:01 +08:00
Robbert van der Helm ba7b5a3b32 Fix examples for out of order events
This would be a host bug, but in theory CLAP hosts could provide out of
order events this way.
2022-07-14 12:50:16 +02:00
Robbert van der Helm 0469bdf806 Persist the editor states for all plugins 2022-07-13 23:16:54 +02:00
Robbert van der Helm 2a1abf10e1 Fix typo in Diopser readme 2022-07-13 23:16:54 +02:00
Robbert van der Helm c24d4062e4 Add an attack-release amp envelope to PolyModSynth 2022-07-06 20:49:21 +02:00
Robbert van der Helm 1510cbb884 Remove assertion failure on polymod voice mismatch 2022-07-06 19:30:48 +02:00
Robbert van der Helm 35e584b3c8 Add a poly mod gain parameter to PolyModSynth 2022-07-06 19:18:49 +02:00
Robbert van der Helm 097d6c9fc4 Terminate all matches voices in PolyModSynth
This is needed for a single NoteOff followed by multiple NoteOns for the
same key/channel with different note IDs.
2022-07-06 18:03:53 +02:00
Robbert van der Helm 95b4d9785e Remove the MIDI output from PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm efc32f3944 Add a basic aliasing sawtooth wave to PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm 4ad4f8f76d Add more basic fields for PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm c36f29e3ca Add basic voice management for PolyModSynth
This of course still misses important things like amplitude envelopes,
so notes will never end on their own. Those will be added as part of
audio processing.
2022-07-06 17:16:19 +02:00
Robbert van der Helm 69aa8433fa Configure the voice capacity for PolyModSynth 2022-07-06 14:40:27 +02:00
Robbert van der Helm 89b2d0a66c Add a stub for poly_mod_synth
This will serve as an example implementation for polyphonic modulation.
2022-07-06 13:55:59 +02:00
Robbert van der Helm 2ac5eaadf8 Handle choke events in MidiInverter 2022-07-06 13:41:20 +02:00
Robbert van der Helm a2f8a9bebf Add voice ID fields for all non-MIDI note events
This will be useful when adding polyphonic modulation.
2022-07-04 18:31:59 +02:00
Robbert van der Helm 7cd7294b22 Make CLAP descriptions and special URLs optional
This closes #14.
2022-07-04 12:46:34 +02:00
Robbert van der Helm 883b43b6a7 Support string->value conversions for Diopser's most important parameter 2022-07-02 00:45:01 +02:00