Robbert van der Helm
f646ffcfb5
Update the Vizia fork
2022-04-20 00:33:14 +02:00
Robbert van der Helm
49f1a45b76
Add a MIDI effect that inverts all signals
...
To demonstrates the API. The CLAP version does not seem to be able to
output anything other than basic notes in Bitwig Studio 4.2.3.
2022-04-11 20:47:00 +02:00
Robbert van der Helm
c96e61e321
Use a vst3-sys fork for fixed NoteOffEvent fields
2022-04-11 18:53:50 +02:00
Robbert van der Helm
84d91d8826
Update dependencies for CLAP
...
The signature for this function was incorrect.
2022-04-11 16:18:39 +02:00
Robbert van der Helm
24837d1552
Implement full MIDI support for CLAP
2022-04-07 23:28:31 +02:00
Robbert van der Helm
5b03ae8d0e
Update vizia fork
2022-04-07 18:44:37 +02:00
Robbert van der Helm
a49393f863
Update for CLAP 0.24
2022-04-05 16:32:00 +02:00
Robbert van der Helm
6dd11561c5
Add resize handles to all vizia GUIs
2022-03-29 00:49:31 +02:00
Robbert van der Helm
7b9eff456c
Update for new vizia resize patch
...
This version uses a property on the context instead of events. This gets
rid of all of the problems and complexity of the previous
implementation.
2022-03-29 00:02:11 +02:00
Robbert van der Helm
4195105e43
Replace FFTW in Diopser with realfft
2022-03-28 18:02:26 +02:00
Robbert van der Helm
2211232ed1
Use realfft for Puberty Simulator
2022-03-28 17:51:36 +02:00
Robbert van der Helm
80c3fb8d51
Swap fftw in the stft example out for realfft
...
The FFTW bindings can't statically link on Windows.
2022-03-28 17:13:23 +02:00
Robbert van der Helm
b56c9892c0
Update vizia to fix redrawing after resizing
...
Everything's still very laggy because we're processing 16 resize events
per frame, we need some way to debounce events until the end of the
frame in vizia.
2022-03-28 13:38:40 +02:00
Robbert van der Helm
d46169cb18
Update vizia dependency to fix rounding issue
2022-03-27 23:16:14 +02:00
Robbert van der Helm
a39eea1fe9
Add a way to rescale and resize the UI from VIZIA
...
With some additional VIZIA patches. This currently causes the layout to
do weird things, so it's not usable yet. On the baseview side this has
also only been implemented for Linux. Once the vizia quirks are gone we
can add a widget that you can add to your GUI to make it scaleable.
2022-03-27 23:09:47 +02:00
Robbert van der Helm
7f365d1113
Update dependencies
2022-03-25 21:04:48 +01:00
Robbert van der Helm
d35276437d
Patch vizia to not require pub for lenses
2022-03-23 23:29:49 +01:00
Robbert van der Helm
a1be942d6d
Add flags to control parameter visibility
...
For the host and in generic UIs. These aren't wired up to anything yet.
2022-03-23 13:04:14 +01:00
Robbert van der Helm
d9003ca2d1
Don't use a ScrollView for Dipser's generic editor
2022-03-22 18:49:46 +01:00
Robbert van der Helm
101075795d
Use a vizia generic UI for Diopser
2022-03-22 18:32:02 +01:00
Robbert van der Helm
ff000565e5
Add ScrollView styling to make it look flatter
2022-03-22 18:31:40 +01:00
Robbert van der Helm
9992c9abb3
Update vizia to fix blurry blurry PeakMeter ticks
2022-03-22 00:51:26 +01:00
Robbert van der Helm
b8ff936b21
Add part of a simple peak meter widget for vizia
2022-03-21 22:28:54 +01:00
Robbert van der Helm
6f264bad85
Fix text entry for vizia ParamSlider
...
With a couple new vizia commits that add the required behavior through
events and a new callback.
2022-03-21 15:58:12 +01:00
Robbert van der Helm
4f9a83860b
Replace Binding with two display properties
2022-03-20 01:21:51 +01:00
Robbert van der Helm
d8f8d545dd
Update vizia with font DPI scaling fiz
2022-03-19 23:57:14 +01:00
Robbert van der Helm
629619256e
Add some text entry handling for vizia ParamSlider
...
This will need to wait for https://github.com/vizia/vizia/issues/85 as
right now it's not yet possible to get this to behave correctly (other
than perhaps sending manual WindowEvents on the next frame).
2022-03-19 15:29:10 +01:00
Robbert van der Helm
64950055ea
Implement most of the iced ParamSlider for Vizia
2022-03-19 01:17:13 +01:00
Robbert van der Helm
ed3a17bf33
Update vizia
...
Now setting a font size on the `*` selector works.
2022-03-18 12:28:26 +01:00
Robbert van der Helm
da4523ac4c
Add a thin weight for Noto Sans
2022-03-18 01:37:22 +01:00
Robbert van der Helm
2c62b13ba5
Add the start of a Gain GUI port to vizia
2022-03-18 01:28:18 +01:00
Robbert van der Helm
fb5ce3c670
Add back the egui Gain GUI version
2022-03-17 23:25:42 +01:00
Robbert van der Helm
dc9f1bff45
Rename Gain GUI to Gain GUI (iced)
2022-03-17 23:22:47 +01:00
Robbert van der Helm
c9e42e6c2c
Add a basic adapter for vizia
2022-03-17 23:14:45 +01:00
Robbert van der Helm
db1401cccd
Update to upstream clap-sys
...
Now that the PR for CLAP 0.23 has been merged.
2022-03-16 20:59:09 +01:00
Robbert van der Helm
82f1923399
Add scrollbar padding option to iced generic UI
...
This makes the scroll bar look less cramped.
2022-03-16 01:29:03 +01:00
Robbert van der Helm
1ddc305be5
Use the new iced generic UI for Diopser
...
This handles a bit nicer than the egui UI.
2022-03-16 01:20:13 +01:00
Robbert van der Helm
ccc8088218
Update for CLAP 0.23
2022-03-15 18:47:29 +01:00
Robbert van der Helm
d830a0a1e4
Update iced_baseview to fix animations
2022-03-15 16:20:17 +01:00
Robbert van der Helm
01e7998c03
Revert Diopser back to egui
...
I should probably first redo the Gain GUI example with vizia before
deciding on a final GUI framework for Diopser.
2022-03-15 13:54:12 +01:00
Robbert van der Helm
efa1a5a0b4
Allow text entry on Alt+Click
2022-03-15 12:48:40 +01:00
Robbert van der Helm
cf1314ce53
Update iced_baseview
...
Now the window always redraws no matter what.
2022-03-14 19:20:05 +01:00
Robbert van der Helm
95827afc81
Use Noto Sans instead of the default Lato
2022-03-14 15:50:29 +01:00
Robbert van der Helm
986e93b8d0
Implement double click for reset
2022-03-14 14:43:30 +01:00
Robbert van der Helm
ee9e3701f3
Implement dragging for the parameter slider
2022-03-14 14:17:06 +01:00
Robbert van der Helm
df4b56d818
Update targeted iced_baseview fork
...
feature/update-dependencies now uses upstream baseview.
2022-03-14 13:34:03 +01:00
Robbert van der Helm
291abb8bcf
Add a placeholder for a parameter slider widget
2022-03-14 00:53:22 +01:00
Robbert van der Helm
664267745a
Replace gain_gui's editor with an iced stub
2022-03-13 21:59:13 +01:00
Robbert van der Helm
fe1db50678
Update iced_baseview dependency
2022-03-13 19:07:51 +01:00
Robbert van der Helm
1fa2b5f74f
Add an Editor callback to notify parameter changes
...
This will be needed to allow iced to be reactive in our model.
2022-03-13 18:03:23 +01:00
Robbert van der Helm
5f0c7d0ac7
Update iced_baseview dependency
2022-03-13 15:09:04 +01:00
Robbert van der Helm
812f6d86f8
Fix Cargo.lock
...
Apparently this was causing the macOS CI to fail.
2022-03-13 01:08:06 +01:00
Robbert van der Helm
ab1e170f74
Replace Diopser egui GUI with empty iced GUI
2022-03-12 23:28:18 +01:00
Robbert van der Helm
3ebe34c870
Add most bits and pieces for iced support
2022-03-12 23:15:33 +01:00
Robbert van der Helm
cd5a4f01bf
Mirror the flags and re-exports from iced_baseview
2022-03-12 22:24:01 +01:00
Robbert van der Helm
4105a887a8
Add a generic UI for Crisp
2022-03-09 15:15:09 +01:00
Robbert van der Helm
48bc64ebb1
Update for CLAP 0.21
2022-03-09 00:27:44 +01:00
Robbert van der Helm
bb341fdf50
Add an empty plugin for Crisp
2022-03-08 18:03:38 +01:00
Robbert van der Helm
dfaa19d998
Update clap-sys dependency
2022-03-08 00:54:09 +01:00
Robbert van der Helm
8ee380864c
Update for CLAP 0.20
2022-03-08 00:21:51 +01:00
Robbert van der Helm
55e258bd27
Add the one and only Puberty Simulator plugin
2022-03-07 19:51:38 +01:00
Robbert van der Helm
e1e6b2137e
Compute a spectrum in Diopser
...
This will be used in the GUI.
2022-03-07 15:03:49 +01:00
Robbert van der Helm
0f78b02685
Add a simple filter example with FFTW
2022-03-06 17:54:23 +01:00
Robbert van der Helm
b416d1630b
Add the basis for a simple STFT example
...
Right now it doesn't do any FFT operations yet, but all the pieces are
in place using the new STFT helper.
2022-03-06 02:07:53 +01:00
Robbert van der Helm
b70af50fcd
Add a simple generic UI to Diopser
2022-03-05 19:39:57 +01:00
Robbert van der Helm
9d5de10d16
Use upstream vst3-sys again
...
Now that https://github.com/RustAudio/vst3-sys/pull/46 has been merged.
2022-03-02 10:36:38 +01:00
Robbert van der Helm
fa7f9fd85b
Provide a cargo subcommand for NIH-plug's bundler
2022-03-02 10:27:55 +01:00
Robbert van der Helm
8e0597b780
Move the xtask binary to a library
...
So you can use it in your own projects with minimal copying and pasting.
2022-03-02 10:02:03 +01:00
Robbert van der Helm
3f6f472a34
Use portable_simd from std instead of packed_simd
...
Since this seems to be the way forward and they encourage using the
feature flag instead of the using it as a separate crate.
2022-03-01 20:59:31 +01:00
Robbert van der Helm
3e8b2b3759
Use AtomicRef instead of Mutexes for block smooth
2022-03-01 19:52:56 +01:00
Robbert van der Helm
d5d90e3e61
Add a ClapPlugin trait
...
Just like the Vst3Plugin trait
2022-02-28 14:45:07 +01:00
Robbert van der Helm
07d8f81f44
Update to egui 0.17
2022-02-27 16:49:18 +01:00
Robbert van der Helm
9d137fe813
Use reflinks when supported
2022-02-27 01:06:45 +01:00
Robbert van der Helm
d39ebb5b51
Add a bundler module for parsing exported symbols
...
We can use this to detect which plugin formats are supported by a
plugin. Otherwise the bundler would be very awkward to use when
supporting multiple formats.
2022-02-26 20:00:32 +01:00
Robbert van der Helm
fefc2de9ba
Update vst3-sys dependency to allow pub fields
2022-02-16 20:11:30 +01:00
Robbert van der Helm
95446cb2bf
Allow specifying custom names for bundles
2022-02-15 22:28:15 +01:00
Robbert van der Helm
935d952d81
Make the biquads SIMD capable
2022-02-15 18:00:01 +01:00
Robbert van der Helm
4f08dce975
Remove now unused strum dependency
2022-02-14 15:36:31 +01:00
Robbert van der Helm
39e8dfc83c
Add somewhat shady enum parameters
2022-02-14 02:04:17 +01:00
Robbert van der Helm
342aebee89
Add a plugin skeleton for a Diopser port
2022-02-12 16:29:23 +01:00
Robbert van der Helm
f645b6a92f
Relicense under the ISC license
2022-02-12 16:04:46 +01:00
Robbert van der Helm
ed5e0f673b
Use an updated vst3-sys for cross compilation
2022-02-10 19:59:36 +01:00
Robbert van der Helm
057d0cbf56
Use a patched patched baseview fixing modifiers
...
This should fix https://github.com/RustAudio/baseview/issues/116 .
2022-02-09 18:41:30 +01:00
Robbert van der Helm
7eb8622736
Drag very granularly with Shift+Drag
2022-02-09 12:24:01 +01:00
Robbert van der Helm
57297cc04c
Update the patched baseview
...
This version adds back Windows and macOS OpenGL context creation.
NIH-plug does not yet have a functional event loop for those platforms
though.
2022-02-08 12:38:17 +01:00
Robbert van der Helm
02115d5004
Use a patched {egui-,}baseview for X11 GL contexts
2022-02-07 21:58:59 +01:00
Robbert van der Helm
611c0a4c39
Update baseview dependencies
...
These got updated to use more recent dependencies.
2022-02-07 11:45:12 +01:00
Robbert van der Helm
0fb8ce6f7e
Add part of a Windows event loop implementation
2022-02-07 00:33:41 +01:00
Robbert van der Helm
556bec7c0b
Move editor handling to its own struct
...
This makes the API much, much nicer (especially consuming the egui
wrapper), and it also avoids having to lock the plugin instance which is
obviously very bad if the plugin is also supposed to be processing audio
on another thread.
2022-02-06 17:12:57 +01:00
Robbert van der Helm
bad5d0ace6
Use a patched baseview with fixed window visual
...
Otherwise trying to embed the GUI in REAPER will panic.
https://github.com/RustAudio/baseview/pull/113
2022-02-06 13:33:28 +01:00
Robbert van der Helm
5017dad7d3
Add a semi-broken GUI example
...
This needs a lot of work. We need widgets that know how to deal with our
parameters, and also basic widgets for things like meters. Egui-baseview
also has a couple quirks left. Most notably it only updates when
actively moving over the GUI (which means VU meters look pretty janky)
and it randomly panics.
2022-02-06 13:16:28 +01:00
Robbert van der Helm
2486368d08
Use AtomicF32 for the smoothing
...
This should at least not have a big performance impact since we can use
relaxed memory ordering here. AtomicCell always uses acquire/release
ordering.
2022-02-06 03:43:59 +01:00
Robbert van der Helm
021c183331
Add an egui editor adapter
2022-02-06 00:22:33 +01:00
Robbert van der Helm
b1afe0b224
Downgrade raw-window-handle for baseview compat
2022-02-06 00:22:15 +01:00
Robbert van der Helm
7ac1df0d8d
Add stubs for editor handling
2022-02-05 12:46:26 +01:00
Robbert van der Helm
dfedd7b2c4
Enable assert_no_alloc in debug builds
2022-02-03 15:58:00 +01:00
Robbert van der Helm
59b70eecae
Add a sine test tone generator
2022-02-01 19:56:28 +01:00
Robbert van der Helm
4495064558
Redesign the wrapper's interiors for thread safety
...
There are a lot of locks needed now here, but none of them should be
contended. This is much better than potentially having RefCell's blow up
due to simultaneous mutable borrows, and the Arc is needed for the event
loop.
2022-01-31 19:44:02 +01:00
Robbert van der Helm
6494d1ed5f
Store persistent fields as plain JSON strings
...
On second thought, this is much better. The resulting file size will be
much smaller because only double quotes need to be escaped. It's also
easier to read at a glance.
2022-01-30 18:23:13 +01:00
Robbert van der Helm
3111d75b29
Serialize custom persistent fields as base64
...
This still takes up more space than plain JSON would, but I don't know
if serde_json would allow inlining that JSON. Presumably not. It would
get hairy quickly as a regular embedded JSON string due to the encoding.
2022-01-30 18:15:01 +01:00
Robbert van der Helm
0c24398234
Target vst3-sys fork with better pointer semantics
2022-01-30 01:37:10 +01:00
Robbert van der Helm
902c3b2bf6
Upgrade vst3-sys dependency
2022-01-29 20:54:52 +01:00
Robbert van der Helm
3019f7aea6
Add a way to create VST3 bundles after building
2022-01-29 18:38:09 +01:00
Robbert van der Helm
46cd75ec53
Add an xtask binary target for running tasks
2022-01-29 17:31:51 +01:00
Robbert van der Helm
97a88e0db2
Implement saving parameter state
...
Restoring is next.
2022-01-29 14:20:14 +01:00
Robbert van der Helm
673180fb6b
Update vst3-sys dependency
...
So the VST3 macro works for types with lifetime bounds.
2022-01-28 16:29:09 +01:00
Robbert van der Helm
d357add75a
Implement most of the VST3 parameter handling
2022-01-27 00:19:50 +01:00
Robbert van der Helm
a959f7a2ad
Add an UTF-16 equivalent for strlcpy()
2022-01-26 21:02:52 +01:00
Robbert van der Helm
1a619c474b
Use a vst3-sys fork with support for generics
2022-01-26 15:38:43 +01:00
Robbert van der Helm
c3f8b8fb8c
Re-export the nih_plug_derive macro
...
No need to have to use this crate separately.
2022-01-26 12:50:30 +01:00
Robbert van der Helm
6edba6555e
Generate VST3 entry point functions
2022-01-26 12:37:45 +01:00
Robbert van der Helm
52f80de5dc
Add a dummy library for testing the macro
2022-01-25 22:18:55 +01:00
Robbert van der Helm
4cd9c6d3d3
Rename packages to snake case
...
I much prefer kebab case, but snake case is better here since Rust would
convert it to snake case when used as an identifier anyways and you also
can't use snake case modules without explicit module path attributes.
2022-01-25 12:35:13 +01:00
Robbert van der Helm
6357711783
Add another crate for a proc macro
2022-01-25 12:35:13 +01:00
Robbert van der Helm
e8697d9a74
Redo the parameters without atomics
...
These atomics make things more difficult and they don't solve the main
problem: storing the parameter objects in an easy to use struct while
still allowing hash based access to them from the plugin wrapper. Going
through this new Params trait makes a lot more sense, and with pinning
this should be safe.
2022-01-25 02:17:30 +01:00
Robbert van der Helm
b1415a36da
Rename library to nih-plug
...
Makes more sense that way.
2022-01-24 21:34:08 +01:00
Robbert van der Helm
64f7dc8148
Add some of the building blocks for param handling
2022-01-24 21:00:37 +01:00