Robbert van der Helm
952bb8c129
Mark Crossover struct as pub
...
For testing with standalones
2023-02-23 22:15:35 +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
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