1
0
Fork 0
Commit graph

705 commits

Author SHA1 Message Date
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 32f981b1f6 Fix Buffr Glitch for crossfade lengths of 1 sample 2023-02-02 16:27:43 +01:00
Robbert van der Helm d7cefcd29a Fix typos 2023-02-01 19:03:50 +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 fba2c47614 Add a SysEx example plugin 2023-02-01 14:52:01 +01:00
Robbert van der Helm e3a7e4a931 Allow any audio setup for midi_inverter 2023-02-01 14:39:47 +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 32957c222f Add a missing category feature to the sine example 2023-01-28 23:23:56 +01:00
Robbert van der Helm 9206b8489d Bump Buffr Blitch to 0.2.0 2023-01-17 15:06:41 +01:00
Robbert van der Helm 821f4aac21 Prefer releasing voices in voice stealing 2023-01-17 02:44:59 +01:00
Robbert van der Helm 98e2e11d25 Smooth the gain expression in Buffr Glitch 2023-01-17 02:27:59 +01:00
Robbert van der Helm dd6a998977 Document the Buffr Glitch polyphony support 2023-01-17 02:20:43 +01:00
Robbert van der Helm 0bb224050e Add dry mixing back in Buffr Glitch 2023-01-17 02:20:02 +01:00
Robbert van der Helm 17a89bcee6 Add polypony to Buffr Glitch 2023-01-17 02:06:14 +01:00
Robbert van der Helm bc98463b28 Add a basic amp envelope to Buffr Glitch 2023-01-17 01:53:38 +01:00
Robbert van der Helm 22b3b9527b Add a crossfade option to Buffr Glitch 2023-01-17 00:31:20 +01:00
Robbert van der Helm baca2431c9 Add gain expression support to Buffr Glitch 2023-01-16 23:58:49 +01:00
Robbert van der Helm 955f40da11 Remove all traces of Buffr Glitch normalization
This isn't going to work anymore.
2023-01-16 23:48:57 +01:00
Robbert van der Helm ae6ea7f2f0 Add velocity sensitivity to Buffr Glitch 2023-01-16 18:48:55 +01:00
Robbert van der Helm 2a1201580c Change Buffr Gltich to start recording on key down
From a 'buffer glitch' point of view the old behavior made a lot of
sense, but it wasn't as musical.
2023-01-16 18:34:12 +01:00
Robbert van der Helm 886f3a78ef Log on NaN and inf in Safety Limiter 2023-01-16 01:25:10 +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 b56d8771f3 Add a changelog for Spectral Compressor 2023-01-16 00:58:46 +01:00
Robbert van der Helm 9f560b2c5c Bump Spectral Compressor version 2023-01-15 18:28:49 +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 02e522cff1 Update Crisp for cosmic-text changes 2023-01-12 19:03:02 +01:00
Robbert van der Helm 00d840794d Update gain_gui_vizia for cosmic-text changes 2023-01-12 19:03:02 +01:00
Robbert van der Helm 0b5811e8c7 Update Diopser for cosmic-text changes 2023-01-12 19:03:02 +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 e5a26ac199 Send individual parameter changes for VST3 plugins 2023-01-11 16:59:21 +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 6e7ee125b6 Sorta fix stock widget usage in gain_gui_egui
The parameter changed from storing its value as decibels to storing gain
at some point.
2023-01-10 20:26:31 +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 dfeb8164ca Fix new Clippy lints 2023-01-06 16:13:01 +01:00
Robbert van der Helm a0c1fc2e01 Link a default Bitwig preset for Crossover
And update the screenshot to show remote controls.
2023-01-05 16:34:50 +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 5115ff7b47 Mention safe mode in Diopser readme 2022-11-29 20:59:41 +01:00
Robbert van der Helm 0d2af71180 Increase minimum frequency in Diopser safe mode 2022-11-29 20:53:51 +01:00
Robbert van der Helm d7acd6573a Only set parameter values on safe mode when needed
Otherwise this resets the filters every time.
2022-11-29 20:48:47 +01:00
Robbert van der Helm 035e345e21 Limit Diopser frequency range in safe mode 2022-11-29 20:45:06 +01:00
Robbert van der Helm afd8830636 Clamp scrolling in RestrictedParamSlider 2022-11-29 20:36:30 +01:00
Robbert van der Helm 3ba0ddffee Simmplify safe mode granular drag mapping 2022-11-29 20:34:02 +01:00
Robbert van der Helm 3635cfb78e Default Diopser automation precision to 100%
This is fine with the limited range.
2022-11-29 20:11:20 +01:00
Robbert van der Helm aca09c49c7 Auto-disable Diopser safe mode for older instances
Since this used to not do anything.
2022-11-29 20:00:21 +01:00
Robbert van der Helm 836a72dbc4 Implement Diopser's safe mode for filter stages
These are now limited to 40 by default.
2022-11-29 19:47:42 +01:00
Robbert van der Helm 32f123b47d Add a RestrictedParamSlider to Diopser
This currently is just a stripped down ParamSlider, but it will allow
the slider's range to be capped when safe mode is enabled.
2022-11-29 19:09:55 +01:00
Robbert van der Helm 1ef987a403 Show the modulation value in Diopser X-Y pad 2022-11-28 01:00:54 +01:00
Robbert van der Helm 4eb7614ee7 Wrap Diopser safe mode boolean in a struct
This struct will also be used to limit the parameter ranges later.
2022-11-23 01:00:45 +01:00
Robbert van der Helm 82b7426689 Namespace custom CLAP features 2022-11-22 21:09:32 +01:00
Robbert van der Helm dfd0109205 Move Diopser filter stages range to a function
We'll use this in the safe mode abstraction to clamp the parameter's
range when safe mode is engaged.
2022-11-22 18:20:36 +01:00
Robbert van der Helm fc6fcf4cf5 Move Diopser param structs and helpers to module
We'll need to expose some more ranges here so we can limit the ranges in
safe mode.
2022-11-22 18:06:59 +01:00
Robbert van der Helm 5e4cfb0e5a Add scrolling for the X-Y pad 2022-11-22 15:23:08 +01:00
Robbert van der Helm a3056713c8 Don't normalize empty buffers in Buffr Glitch 2022-11-18 19:32:52 +01:00
Robbert van der Helm cea84edceb Add a tip on stopping ringing to Diopser's readme 2022-11-18 17:58:04 +01:00
Robbert van der Helm c05bc21581 Also reset Vizia widgets on right click
Because why choose. Right click, Ctrl+click, and double click all do the
same thing now.
2022-11-18 17:53:13 +01:00
Robbert van der Helm d97e5ccd30 Actually use the correct formatter 2022-11-18 17:43:34 +01:00
Robbert van der Helm ec94dadc04 Use correct formatter for Diopser's bypass param 2022-11-18 17:42:59 +01:00
Robbert van der Helm 66e7625724 Add a border radius to X-Y pad tooltip
To match the text input box. It adds a bit of flair to a plugin that's
otherwise 100% flat with straight lines and 90 degree angles.
2022-11-18 17:38:06 +01:00
Robbert van der Helm ef2a4d9dde Mention Alt+click on X-Y pad in new tips section 2022-11-18 17:03:20 +01:00
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