1
0
Fork 0
Commit graph

223 commits

Author SHA1 Message Date
Robbert van der Helm da86d1c6b1 Open a basic baseview window for standalone target 2022-04-24 15:48:41 +02:00
Robbert van der Helm 3b0291b4f5 Add function for setting up file and windbg logs
And also writing panics to those logs.
2022-04-24 15:08:48 +02:00
Robbert van der Helm 37b62e4278 Add an IRunLoop event runner on Linux 2022-04-20 19:44:03 +02:00
Robbert van der Helm 5a835cd303 Update Vizia fork
Resizing now scales row and column spacing correctly.
2022-04-20 01:38:39 +02:00
Robbert van der Helm eb49b0962e Revert "Revert "Update the Vizia fork""
This reverts commit 0fa6eab4d3.
2022-04-20 01:01:28 +02:00
Robbert van der Helm 0fa6eab4d3 Revert "Update the Vizia fork"
This reverts commit f646ffcfb5.

Text sizes are broken with the current master branch version of Vizia.
2022-04-20 00:40:21 +02:00
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