1
0
Fork 0
Commit graph

166 commits

Author SHA1 Message Date
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 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
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
Robbert van der Helm e4d1ad39ab Remove old todo 2022-09-22 17:39:22 +02:00
Robbert van der Helm 269c2a51e1 Re-enable assert_process_allocs for gain_gui_egui 2022-09-21 16:25:07 +02:00
Robbert van der Helm eb11da731d Enable the standalone for gain_gui_egui 2022-09-21 16:11:17 +02:00
Robbert van der Helm c566888fa3 💥 Use interior mutability for parameters
Instead of the previous technically-unsound approach. While it wouldn't
cause any issues in practice, it did break Rust's guarantees. That was a
design choice after adding support for editors in NIH-plug, but this is
probably the better long term solution.

The downside is that all uses of `param.value` now need to be changed to
`param.value()`.
2022-09-06 21:57:24 +02:00
Robbert van der Helm cd02ebb839 Use less arbitrary decay weights for the gain GUIs
This solves the same problem as #27 but in a cleaner way. The previous
commits refactored the smoothing to make it possible to use the
calculations in plugin code to do the same thing as #27, but then I
realized that that doesn't make much sense since the time to decay into
complete silence isn't very meaningful for this kind of computation.
2022-09-04 19:09:22 +02:00
Robbert van der Helm 1a706ea1c7 Rename DEFAULT_NUM_INPUTS and DEFAULT_NUM_OUTPUTS 2022-08-19 14:34:21 +02:00
Robbert van der Helm 743d456e0f Don't build the gain example with zstd enabled 2022-08-18 19:46:51 +02:00
Robbert van der Helm 1bb1cde913 Add optional Zstandard compression for state
This can be particularly useful when using the persistent fields feature
to store JSON or other large textual documents.
2022-08-18 13:55:48 +02:00
Robbert van der Helm c412d3cca6 Remove debug print 2022-08-18 13:45:13 +02:00
Robbert van der Helm 3ffc2f0604 Change single branch match to if let 2022-07-25 16:33:24 +02:00
Robbert van der Helm fdbff129f8 Use linear gain params in gain examples
Using the new skewed coefficient calculation function for gain ranges
from a couple commits ago.

Closes #18.
2022-07-24 21:21:13 +02:00
Robbert van der Helm 8e2650e43a
Merge pull request #15 from AmaiKinono/typo
Fix typos in the gain example
2022-07-18 23:38:03 +02:00
AmaiKinono 00fa9e9703 Fix typos in the gain example 2022-07-17 00:51:01 +08:00
Robbert van der Helm ba7b5a3b32 Fix examples for out of order events
This would be a host bug, but in theory CLAP hosts could provide out of
order events this way.
2022-07-14 12:50:16 +02:00
Robbert van der Helm 0469bdf806 Persist the editor states for all plugins 2022-07-13 23:16:54 +02:00
Robbert van der Helm c24d4062e4 Add an attack-release amp envelope to PolyModSynth 2022-07-06 20:49:21 +02:00
Robbert van der Helm 1510cbb884 Remove assertion failure on polymod voice mismatch 2022-07-06 19:30:48 +02:00
Robbert van der Helm 35e584b3c8 Add a poly mod gain parameter to PolyModSynth 2022-07-06 19:18:49 +02:00
Robbert van der Helm 097d6c9fc4 Terminate all matches voices in PolyModSynth
This is needed for a single NoteOff followed by multiple NoteOns for the
same key/channel with different note IDs.
2022-07-06 18:03:53 +02:00
Robbert van der Helm 95b4d9785e Remove the MIDI output from PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm efc32f3944 Add a basic aliasing sawtooth wave to PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm 4ad4f8f76d Add more basic fields for PolyModSynth 2022-07-06 17:16:19 +02:00
Robbert van der Helm c36f29e3ca Add basic voice management for PolyModSynth
This of course still misses important things like amplitude envelopes,
so notes will never end on their own. Those will be added as part of
audio processing.
2022-07-06 17:16:19 +02:00
Robbert van der Helm 69aa8433fa Configure the voice capacity for PolyModSynth 2022-07-06 14:40:27 +02:00
Robbert van der Helm 89b2d0a66c Add a stub for poly_mod_synth
This will serve as an example implementation for polyphonic modulation.
2022-07-06 13:55:59 +02:00
Robbert van der Helm 2ac5eaadf8 Handle choke events in MidiInverter 2022-07-06 13:41:20 +02:00
Robbert van der Helm a2f8a9bebf Add voice ID fields for all non-MIDI note events
This will be useful when adding polyphonic modulation.
2022-07-04 18:31:59 +02:00
Robbert van der Helm 7cd7294b22 Make CLAP descriptions and special URLs optional
This closes #14.
2022-07-04 12:46:34 +02:00
Robbert van der Helm 29e9d620ca Fix the sine test tone CLAP category 2022-06-29 01:32:39 +02:00
sonata-chen a284ba020f
fix typo 2022-06-28 19:42:46 +08:00
Robbert van der Helm b7bfa5f18e Update Vizia
With two months of breaking changes, hooray! But everything should still
work after some bug squashing in Vizia.
2022-06-18 01:59:57 +02:00
Robbert van der Helm abe7fec0db Fix channel layout check in sine example 2022-06-15 00:10:27 +02:00
Robbert van der Helm bfc472e49b Introduce a new enum for CLAP features
Based on the new CLAP 0.26 clap-features.h.
2022-06-02 01:16:30 +02:00
Robbert van der Helm 6996fdaed1 Update features names for CLAP 0.26 2022-06-02 00:52:13 +02:00
Robbert van der Helm ee900f74c2 Support auxiliary inputs and outputs for CLAP
This does not yet work for VST3. You'll always get empty slices there.
2022-05-27 02:30:57 +02:00
Robbert van der Helm b2e6bd5515 Create a separate InitContext
Only a couple of these functions would be needed during initialization.
In the next couple commits ProcessContext will get a way to access
auxiliary IO, so this really had to be separated.
2022-05-27 01:17:15 +02:00
Robbert van der Helm 535ae1260e Remove now unnecessary explicit dyn casts
Rust-analyzer used to not infer this, seems like now it does.
2022-05-24 23:55:48 +02:00
Robbert van der Helm 487ff3d566 Don't let the sine test tone plugin sleep 2022-05-24 13:17:40 +02:00
Robbert van der Helm f4f54029eb Add a deactivation callback
This is the equivalent of initialize()
2022-05-24 13:05:06 +02:00
Robbert van der Helm 596b04af0a Add preliminary support for auxiliary IO
The missing parts are allocating buffers for these busses, copying data
to those buffers, and adding methods to the ProcessContext to interact
with these inputs and outputs.
2022-05-23 17:13:49 +02:00
Robbert van der Helm 0459405ced Remove STFT example readme
This hasn't been using fftw for a while now so it's no longer relevant.
2022-05-20 03:23:57 +02:00
Robbert van der Helm c5841cbe33 Add missing latency compensation in STFT example
The latency introduced by the linear phase filter wasn't compensated
for.
2022-05-08 03:14:56 +02:00
Robbert van der Helm 6400e2d71d Fix gain compensation in new STFT example 2022-05-08 02:25:44 +02:00
Robbert van der Helm 3fe24e7dc6 Use more typical convolution FFT in STFT example 2022-05-08 02:22:36 +02:00
Robbert van der Helm 55eeb689dd Add a padding option to StftHelper 2022-05-08 02:12:37 +02:00