1
0
Fork 0
Commit graph

1526 commits

Author SHA1 Message Date
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 b6720383a3 Make Arc<EguiState> persistable 2022-07-13 23:16:54 +02:00
Robbert van der Helm b9c1a4e5e1 Make Arc<IcedState> persistable 2022-07-13 23:16:54 +02:00
Robbert van der Helm ef1d56646a Make Arc<ViziaState> persistable
This allows the plugin instance's size and scale to be remembered.
2022-07-13 23:16:54 +02:00
Robbert van der Helm 2a1abf10e1 Fix typo in Diopser readme 2022-07-13 23:16:54 +02:00
Robbert van der Helm 0395fd91b1 Only connect JACK ports after activating client
Otherwise JACK2 will hate us. Forever!

The AtomicRefCell now needs to be a mutex because the process call may
be called while this connection function is still running.
2022-07-13 19:19:17 +02:00
Robbert van der Helm 78e7883fc4 Use a jack crate fork to fix the fallback
Before this you'd get a panic in jack-sys instead.
2022-07-13 17:52:43 +02:00
Robbert van der Helm 1f3d2f9a66 Fix typo in standalone documentation example 2022-07-13 17:06:22 +02:00
Robbert van der Helm d828e697a3 Actually expose the CLAP render extension
Oops.
2022-07-11 15:00:10 +02:00
Robbert van der Helm c63573ff37 Switch to clap-sys 0.3.0 from crates.io 2022-07-08 02:19:43 +02:00
Robbert van der Helm 9a09e8ce32 Fix typos in Cargo.toml 2022-07-08 02:18:24 +02:00
Robbert van der Helm 8915723457 Fix typos in the breaking changes 2022-07-06 20:54:27 +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 2bb698a8f1 Mark the smoother's style field pub
This is useful when using the smoother as a simple amplitude envelope.
2022-07-06 20:14:29 +02:00
Robbert van der Helm d610230aca Mention polyphonic modulation in the readme 2022-07-06 19:44:03 +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 fb43047cbe Document Bitwig not providing voice ID for NoteOff 2022-07-06 17:16:19 +02:00
Robbert van der Helm 16077101b2 Gate NoteEvent::VoiceTerminated behind MIDI_INPUT 2022-07-06 17:16:19 +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 e77eca88a5 Rename the midi_note_to_freq() argument name
To match the 'note' term used everywhere else.
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 958bea45e6 Re-export PolyModulationConfig from the prelude 2022-07-06 14:38:08 +02:00
Robbert van der Helm 4b905e28d4 Add Clone and Debug instances for Smoother 2022-07-06 14:32:18 +02:00
Robbert van der Helm 68cf0455ee Rework and optimize block smoothing API
You now need to bring your own buffer instead of the smoother having a
built in vector you would need to pre-allocate. This makes the API
simpler, and also much more flexible when doing polyphonic modulation.

In addition, the new API is much more efficient when there is no
smoothing going on anymore.
2022-07-06 14:29:29 +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 ec77d3b450 Fix typo in comment 2022-07-06 13:55:26 +02:00
Robbert van der Helm 2ac5eaadf8 Handle choke events in MidiInverter 2022-07-06 13:41:20 +02:00
Robbert van der Helm 1424b98e38 Break PolyModulation into that and MonoAutomation
This is needed to properly support polyphonic modulation, since the
modulated value may still be automated in the meantime and the
polyphonic modulation must act as an offset for that value. This does
mean that the plugin must add the normalized value and normaliezd offset
by itself. The `PolyModulation` event now also contains a description of
how this can be used. It would have been nicer to be able to send
polyphonic automation-style events instead (like the PolyModulation was
doing before), but that's sadly not feasible without NIH-plug being
involved in the voice management.
2022-07-06 13:40:12 +02:00
Robbert van der Helm 9520234b57 Pass poly modulation events through to the plugin 2022-07-06 00:09:53 +02:00
Robbert van der Helm 0187325b60 Add (currently unused) PolyModulation events 2022-07-05 23:51:37 +02:00
Robbert van der Helm af4314b581 Mark poly mod parameters as such 2022-07-05 23:41:35 +02:00
Robbert van der Helm 54b47ecf71 Keep track of poly mod parameter IDs 2022-07-05 23:41:08 +02:00
Robbert van der Helm cdee721e9c Allow the plugin to change current voice capacity 2022-07-05 23:26:23 +02:00
Robbert van der Helm f828761677 Implement the CLAP voice info extension 2022-07-05 23:26:23 +02:00
Robbert van der Helm 1de561e4a0 Add poly mod config constant to ClapPlugin
Setting this will enable the 'voice-info' extension.
2022-07-05 23:26:23 +02:00
Robbert van der Helm 1466358e14 Support Plugin::HARD_REALTIME_ONLY for VST3 2022-07-05 22:24:52 +02:00
Robbert van der Helm 905925e032 Move the hard realtime constant to Plugin
Since we could indeed just add the `|OnlyRT` category to the VST3
plugin.
2022-07-05 22:20:07 +02:00
Robbert van der Helm 992fcfe969 Add polyphonic modulation IDs to parameters
In a bit we should be able to use this with a new `PolyModulation` note
event to allow polyphonic modulation.
2022-07-05 19:39:50 +02:00
Robbert van der Helm 7ea2851775 Clarify the input event timing handling in VST3 2022-07-04 22:45:52 +02:00
Robbert van der Helm 1bbb56151d Remove duplication in CLAP note timing handling 2022-07-04 22:43:48 +02:00
Robbert van der Helm 5b264179d4 Add note choke events 2022-07-04 22:42:04 +02:00
Robbert van der Helm d027a6319f Add VoiceTerminated events
These need to be output by a plugin when using polyphonic
modulation (which is currently not yet supported by NIH-plug).
2022-07-04 19:31:40 +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 f11b3c1a03 Fix typos in parameter value docstrings 2022-07-04 18:01:55 +02:00