1
0
Fork 0
Commit graph

125 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 f3db4a9ed0 Add a (not yet functional) standalone exporter 2022-04-24 15:48:05 +02:00
Robbert van der Helm ac69e3ef54 Document assert_no_alloc interaction with panics 2022-04-24 15:40:44 +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 00fff75c5e Rename MIDI inverter example plugin directory
To match the package name.
2022-04-18 02:33:29 +02:00
Robbert van der Helm 8eaecb6e5c Add a way to completely exclude the vst3-sys dep
Because technically you might still include GPL'd symbols even if you
wouldn't use the `nih_export_vst3!()` macro.
2022-04-15 16:14:42 +02:00
Robbert van der Helm c917114020 Rename the gain GUI examples to match package name 2022-04-14 23:53: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 1e12fbe3f5 Add a feature flag to enable doc_auto_cfg 2022-04-11 16:41:09 +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 a49393f863 Update for CLAP 0.24 2022-04-05 16:32:00 +02: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 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 ff9e0f2ddf Add an empty crate for iced support 2022-03-12 22:11:37 +01:00
Robbert van der Helm 5e8548d9ce Enable thin LTO on the release profile 2022-03-09 01:16:48 +01:00
Robbert van der Helm cec42ac2d6 Strip symbols from release builds
Keeps everything a lot smaller, and I'm not expecting backtraces from
release builds anyways.
2022-03-09 01:08:50 +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 8ee380864c Update for CLAP 0.20 2022-03-08 00:21:51 +01:00
Robbert van der Helm 57239ab1c1 Fix url in main Cargo.toml file 2022-03-07 20:03:05 +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 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 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 33905e5bc2 Add optional SIMD helpers for channel buffers 2022-03-01 21:39:53 +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 15f27e2746 Move features section in main Cargo.toml 2022-02-15 18:13:47 +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 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 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 5a84733e7e Add more metadata to the Cargo.toml file 2022-02-05 19:40:42 +01:00
Robbert van der Helm 7ac1df0d8d Add stubs for editor handling 2022-02-05 12:46:26 +01:00
Robbert van der Helm 10c306e035 Move example plugins into a subdirectory 2022-02-03 16:57:10 +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 49054b10f2 Break the workspace members array up in lines 2022-02-01 19:39:45 +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 2f59adadcc Update vst3-sys to a version with atomic refcounts 2022-01-31 19:42:35 +01:00
Robbert van der Helm b65158283a Support parking_lot mutexes and rwlocks 2022-01-31 19:42:35 +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 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 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 070e68c084 Move nih_plug to the repo's root
Makes more sense to have this be on the same level as the workspace
since technically this crate can be used separately.
2022-01-26 12:52:57 +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 736468a510 Move nih-plug to a workspace 2022-01-25 12:23:19 +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
Robbert van der Helm d748bd62ff Initial commit 2022-01-24 21:00:37 +01:00