1
0
Fork 0
Commit graph

641 commits

Author SHA1 Message Date
Robbert van der Helm 3e4c7fa99d Add Alt+click text entry for X-Y pad 2022-11-18 17:03:13 +01:00
Robbert van der Helm f7de5afcc5 Fix name in Buffr Glitch compilation instructions 2022-11-18 16:26:52 +01:00
Robbert van der Helm 11f8b242c5 Snap Diopser frequency to notes with Alt+drag 2022-11-18 16:11:54 +01:00
Robbert van der Helm 463c04c492 Add a screenshot of Diopser's new GUI
It's not entirely finished yet, but this is pretty much what it will end
up looking like.
2022-11-18 02:06:55 +01:00
Robbert van der Helm 8e9a1d1b60 Filter out DC bin in Diopser's spectrum analyzer 2022-11-18 01:41:37 +01:00
Robbert van der Helm 420c3099f5 Smooth the Diopser spectrum analyzer 2022-11-18 01:31:31 +01:00
Robbert van der Helm 1bec387216 Finally draw Diopser's spectrum analyzer 2022-11-18 01:06:25 +01:00
Robbert van der Helm 025513e3b4 Move Diopser frequency range to a function
We'll reuse this in the spectrum analyzer.
2022-11-18 00:39:13 +01:00
Robbert van der Helm 3e935dc5ad Pass sample rate to Diopser's editor 2022-11-18 00:38:54 +01:00
Robbert van der Helm ba9b1f9e94 Do include DC bin in Diopser spectrum 2022-11-18 00:33:41 +01:00
Robbert van der Helm 16dd364ec5 Remove Diopser tooltip todo 2022-11-17 23:57:23 +01:00
Robbert van der Helm 087aea9e53 Store the spectrum on Diopser's editor data struct 2022-11-17 23:56:06 +01:00
Robbert van der Helm b2210072fc Add a todo for Diopser safe mode 2022-11-17 23:42:27 +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 b8b8f697f5 Consume the XyPadEvent
This doesn't need to be propagated up the tree.
2022-11-15 17:53:34 +01:00
Robbert van der Helm 4b81191225 Remove tooltip position when tooltip width changes 2022-11-15 17:52:45 +01:00
Robbert van der Helm 5a9786fd53 Attempt to improve left-side tooltip positioning 2022-11-15 17:09:32 +01:00
Robbert van der Helm 8df9575a16 Move X-Y pad tooltip updating to a function 2022-11-15 17:06:49 +01:00
Robbert van der Helm 2816b9418e Account for DPI scaling in granular dragging 2022-11-12 02:00:18 +01:00
Robbert van der Helm e13d79b288 Fix X-Y pad tooltip position with DPI scaling 2022-11-12 01:55:42 +01:00
Robbert van der Helm d8729ffd34 Add a minimum width to tooltip width comparison
To make it flicker around less at the right edge of the X-Y pad.
2022-11-12 01:45:26 +01:00
Robbert van der Helm 6f34eb3129 Add a 'Q: ' prefix to the resonance in tooltip 2022-11-12 01:44:53 +01:00
Robbert van der Helm 52eb85201e Use new frequency+note name formatter in Diopser
This is really nice for the tooltip.
2022-11-12 01:27:12 +01:00
Robbert van der Helm 8b8cbf1952 Add the X-Y pad tooltip
With some fancy positioning
2022-11-12 00:43:28 +01:00
Robbert van der Helm cf40eb208d Add granular dragging for the X-Y pad 2022-11-12 00:00:21 +01:00
Robbert van der Helm a2251509ee Move the octaves label to filter spread unit
Instead of having this in the parameter's name. Looks better in the GUI.
2022-11-11 21:52:00 +01:00
Robbert van der Helm b2f6175d54 Add bypass smoothing for Diopser
Using a simple equal-power crossfade.
2022-11-11 21:23:39 +01:00
Robbert van der Helm ec329143ae Add a todo for a Diopser bypass crossfade 2022-11-11 20:44:10 +01:00
Robbert van der Helm e42970c013 Modify Y-parameter before X-parameter
So the X-parameter shows up as last touched in the DAW.
2022-11-11 20:31:15 +01:00
Robbert van der Helm fbe1fa1d4a Set X-Y pad value on mouse down 2022-11-11 20:29:13 +01:00
Robbert van der Helm 27d42797ee Add basic dragging gestures to the X-Y pad 2022-11-11 20:26:39 +01:00
Robbert van der Helm 3510350425 Add styling for the X-Y pad handle 2022-11-11 20:26:39 +01:00
Robbert van der Helm e24adf4c67 Add the basis for an X-Y pad widget
The handle does not have any styling yet, and there's also no way to
interact with the widget.
2022-11-11 20:26:39 +01:00
Robbert van der Helm 8088630803 Always use floating point values for pixels 2022-11-11 20:26:39 +01:00
Robbert van der Helm d280c2d767 Open Diopser GH page when clicking on the title 2022-11-11 20:26:39 +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 d4b93cfdee Add URLs to the plugin Cargo.toml files 2022-11-11 20:26:39 +01:00
Robbert van der Helm 72dbce92eb Add scaffolding for the X-Y pad 2022-11-11 20:26:39 +01:00
Robbert van der Helm 6e103baf4d Show Diopser version in the GUI 2022-11-11 20:26:39 +01:00
Robbert van der Helm 837ef14e1d Bump Diopser version to 0.3.0
In preparation for this new GUI to be completed, or I may forget.
2022-11-11 20:26:30 +01:00
Robbert van der Helm cce10d79ca Move Diopser's stylesheet
Since there's now a dedicated editor module directory
2022-11-11 17:34:35 +01:00
Robbert van der Helm 3fbc06e819 Add more Diopser GUI scaffolding 2022-11-11 17:26:24 +01:00
Robbert van der Helm 60d4490998 Remove unused stylesheet in gain_gui_vizia 2022-11-11 16:21:47 +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 884683a190 Drop ParamLabel again
This isn't going to work with vizia right now.
2022-11-11 14:13:05 +01:00
Robbert van der Helm c9c4116e9d Add part of a vertical ParamLabel
Vizia doesn't seem to support this right now, so I'll drop this again.
2022-11-11 14:11:14 +01:00
Robbert van der Helm ec061cd0e5 Format the dry level control as decibels 2022-11-11 03:15:05 +01:00
Robbert van der Helm 42cf4cd652 Add a dry amount control to Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm e6c43e35d3 Fix copying tail to playback buffer
I noticed the effect wasn't deterministic, when I saw this. Oops.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 333ff2c05e Add an octave shift to Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm 179ff6a035 Add automatic normalization to Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm 7c04ec856f Add the MIDI playback to Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm ea61947f1d Accept MIDI input in Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm 86b5ed8f7e Push samples to the ring buffer 2022-11-11 03:15:05 +01:00
Robbert van der Helm 3475ea2de8 Add a ring buffer for Buffr Glitch 2022-11-11 03:15:05 +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 f18675ea64 Add an empty template for Buffr Glitch 2022-11-11 03:15:05 +01:00
Robbert van der Helm e184e6d8a6 Consome scrolling events
This sort of fixes using these in ScrollViews
2022-11-11 03:15:05 +01:00
Robbert van der Helm 316d9221df Add scrolling support for the safe mode button 2022-11-11 03:15:05 +01:00
Robbert van der Helm dfd5aa9a11 Add constants for Diopser's editor 2022-11-11 03:15:05 +01:00
Robbert van der Helm 5b05107f5b Add missing GPL header in Diopser 2022-11-11 03:15:05 +01:00
Robbert van der Helm c1573f47c3 Make Automation Precision slider less wide 2022-11-11 03:15:05 +01:00
Robbert van der Helm 8f02cdc1fa Add an Automation Precision slider to Diopser
Using the new label override
2022-11-11 03:15:05 +01:00
Robbert van der Helm 9d696925e3 Add a safe mode button to Diopser's GUI 2022-11-11 03:15:05 +01:00
Robbert van der Helm 2d4ac47f15 Add a not yet used safe mode AtomicBool to Diopser
This will limit the range of the filter stages parameter in the GUI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm b8f43ad1fe Create bypass button on Diopser GUI 2022-11-11 03:15:05 +01:00
Robbert van der Helm aee08bae20 Add a dedicated bypass param for Diopser
This will be shown in the GUI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 28c62cf7ca Add some UI scaffolding for Diopser
This still uses the old generic UI.
2022-11-11 03:15:05 +01:00
Robbert van der Helm cfb9993603 Make the Diopser struct pub
This makes it easier to quickly set up a standalone for GUI testing.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 87e40afd07 Reinitialize Crisp filter constants on load
Otherwise these filters are at their default coefficients when recalling
previous state.
2022-11-11 03:12:41 +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 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