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
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
5cbd8827e9
Update clap-sys with optional function pointers
...
None of these function pointers are allowed to be null, yet even the
official `clap-helpers` do this. This new `clap_call!()` macro asserts
that a pointer is non-null before calling it.
2022-07-04 00:07:06 +02:00
Robbert van der Helm
24d499e716
Fix typos in nih_plug_xtask's readme
2022-07-03 19:49:20 +02:00
Robbert van der Helm
52d9fff313
Don't cache the cargo bin directory on the CI
...
This still causes issues.
2022-07-03 17:08:32 +02:00
Robbert van der Helm
97baa9d55c
Remove duplicate comment
2022-07-03 17:04:33 +02:00
Robbert van der Helm
c91b74355f
Let rustfmt handle string wrapping
2022-07-03 16:52:38 +02:00
Robbert van der Helm
ed880f5297
Handle buffered CLAP stream reads and writes
...
`clap-validator` now tests this.
2022-07-03 16:51:15 +02:00
Robbert van der Helm
5e6e920418
Use BTreeMaps in the state
...
This ensures that the order is consistent when saving the same state
file multiple times.
2022-07-02 19:13:18 +02:00
Robbert van der Helm
71efe779a5
Recompute normalized values when setting params
...
This makes it so that the value is consistent after reloading the
preset.
2022-07-02 19:04:43 +02:00
Robbert van der Helm
883b43b6a7
Support string->value conversions for Diopser's most important parameter
2022-07-02 00:45:01 +02:00
Robbert van der Helm
32ad1212f1
Silence clippy::type_complexity
...
Clippy now wants us to move any usage of the Fn* traits to a typedef.
Doing so will almost certainly not help readability.
2022-07-01 15:50:23 +02:00
Robbert van der Helm
0599780030
Remove unnecessary reborrows
2022-07-01 15:50:16 +02:00
Robbert van der Helm
1d7cbe4c4d
Suppress unused_unit more locally
2022-07-01 14:58:31 +02:00
Robbert van der Helm
29e9d620ca
Fix the sine test tone CLAP category
2022-06-29 01:32:39 +02:00