Robbert van der Helm
1feeb6e961
Add log messages about enabling MIDI IO with CPAL
2023-02-25 16:15:33 +01:00
Robbert van der Helm
e44d91c016
Add standalone CLI options for MIDI IO with CPAL
2023-02-25 16:11:17 +01:00
Robbert van der Helm
7c92167d85
Reorder standalone options order
...
Backend agnostic audio options should come before backend specific ones.
2023-02-25 14:48:52 +01:00
Robbert van der Helm
045598aa09
Rename CPAL standalone backend to CpalMidir
...
To make it a bit more obvious what it ends up using for IO.
2023-02-25 14:43:59 +01:00
Robbert van der Helm
d777b02d33
Use snake case for JACK client names
...
Like we're doing with the ports now.
2023-02-23 23:00:19 +01:00
Robbert van der Helm
d7e766ca00
Support auxiliary IO for JACK standalones
2023-02-23 22:58:11 +01:00
Robbert van der Helm
3ca24bdc8c
Fix dangling references with CPAL aux buffers
2023-02-23 22:30:32 +01:00
Robbert van der Helm
c6e0be341f
Actually use the standalone backend aux buffers
2023-02-23 22:20:21 +01:00
Robbert van der Helm
5d497f2de4
Add debug assertions for Arc strong counts
...
To make issues like the event loop thing more visible.
2023-02-23 21:49:24 +01:00
Robbert van der Helm
42a7bb37b4
Revert event loop APIs to use Weak instead of Arc
...
Previously the plugin wouldn't get dropped because the event loops kept
them alive. These APIs used Weak instead of Arc in the past precisely to
prevent this issue. Not sure why I changed that.
2023-02-23 21:45:09 +01:00
Robbert van der Helm
4564bf9027
Fix reference counts for background worker threads
...
We would decrement this on drop, but never increment it on clone. Oops.
2023-02-23 21:30:09 +01:00
Robbert van der Helm
5d9affad17
Provide dummy aux IO buffers with CPAL backend
2023-02-23 19:43:29 +01:00
Robbert van der Helm
3a6efe49ec
Move the unsupported aux warning to CPAL backend
...
We'll support this with JACK, and in the dummy backend there is no audio
IO anyways.
2023-02-23 19:39:51 +01:00
Robbert van der Helm
9e2c2b776b
Add auxiliary buffers in dummy standalone backwend
2023-02-23 19:35:49 +01:00
Jussi Viiri
debb2662af
s2v_f32_panning() now strips C and R, not just L
2023-02-23 14:46:39 +01:00
Robbert van der Helm
52b6c26cc4
Use the custom port names for JACK standalones
2023-02-20 17:02:38 +01:00
Robbert van der Helm
e8fd18ab80
Completely reword the audio IO layout system
...
Instead of a VST3-style polling function to test if a plugin supports a
certain layout, the plugin now explicitly enumerates the supported
layouts. This aligns better with non-VST3 plugin formats.
2023-02-20 16:57:32 +01:00
Robbert van der Helm
36c48157db
Add a nih_warn!() macro
2023-02-19 22:56:35 +01:00
Robbert van der Helm
401bb95187
Add a todo for standalone exit codes
2023-02-19 22:09:03 +01:00
Robbert van der Helm
6fd22b3ba9
Move audio setup related structs to a new module
2023-02-19 15:43:40 +01:00
Robbert van der Helm
090b4b529f
Fix unused/dead code warnings with VST3 disabled
2023-02-19 13:19:02 +01:00
Robbert van der Helm
5ddcc3bc7d
Silence unused event loop warning without VST3
2023-02-19 13:15:09 +01:00
Viktor Lazarerv
5a08c27437
Add missing conditions related to the "vst3" feature
2023-02-12 16:30:52 +01:00
Robbert van der Helm
3e4aec4dfe
Document missing missing values in NoteEvent
2023-02-08 03:07:13 +01:00
Robbert van der Helm
d2b25f8682
Add missing debug assertions for VST3 callback
2023-02-06 18:00:33 +01:00
Robbert van der Helm
bea1a6028b
Remove unnecessary cast
2023-02-02 20:03:43 +01:00
Robbert van der Helm
9c48e7f59b
Fix assertion failures when reactivating plugins
...
`.set_slices()` makes sure all slices' lengths are equal to the first
argument, so in these functions we'll need to manually overwrite any
existing element with empty slices.
2023-02-02 16:15:43 +01:00
Robbert van der Helm
62f7f38a9e
Loosen generic bounds on NoteEvent
...
The `S: SysExMessage` isn't strictly needed. I thought it might make the
usage clearer, but it does introduce more boilerplate than strictly
necessary when working with note events.
2023-02-01 18:07:45 +01:00
Robbert van der Helm
15128edde4
Fix assertions in clamping functions
...
This was previously comparing against the buffer's length, so the `<`
made sense. But this approach always allows events at time 0 even if the
buffer is empty.
2023-02-01 17:39:08 +01:00
Robbert van der Helm
d735d23ffa
Document the use of .saturating_sub(1)
2023-02-01 17:36:25 +01:00
Robbert van der Helm
55c3701d2e
Move event timing clamping to functions
...
So this doesn't need to be repeated everywhere.
2023-02-01 17:33:14 +01:00
Robbert van der Helm
d5a8eb42ec
Clamp event timings for VST3 plugins
2023-02-01 17:24:22 +01:00
Robbert van der Helm
eac88c4477
Clamp event times for JACK standalones
2023-02-01 17:18:06 +01:00
Robbert van der Helm
8d2d293b49
Clamp event timings for CLAP plugins
2023-02-01 17:17:50 +01:00
Robbert van der Helm
5cb826725d
Fix typo in docstring
2023-02-01 17:02:34 +01:00
Robbert van der Helm
7874e1796f
Add a debug assert for the subcategory length
...
Since this will be truncated otherwise.
2023-02-01 16:50:48 +01:00
Robbert van der Helm
d6184ea06e
Replace VST3 category string with enum slice
...
I've been putting this off for a while, but now is finally the day. We
already did this for CLAP a while back. This is both simpler and less
error prone.
2023-02-01 16:09:03 +01:00
Robbert van der Helm
7fe339987a
Define an enum for VST3 subcategories
...
Because looking these up and inputting them by hand every time is both
cumbersome and error prone.
2023-02-01 15:46:28 +01:00
Robbert van der Helm
5db07090ca
Replace match with if-let
...
Clippy didn't like this.
2023-02-01 14:52:45 +01:00
Robbert van der Helm
fb29322b81
Document which CLAP features are main categories
2023-02-01 14:36:54 +01:00
Robbert van der Helm
3790a05891
Avoid sending zero velocity note ons with MIDI
2023-02-01 12:48:51 +01:00
Robbert van der Helm
69b87b7a26
Print unhandled SysEx as hexadecimal
2023-01-31 22:25:23 +01:00
Robbert van der Helm
89b81b38c3
Remove debug assertions for SysEx parse failures
2023-01-31 22:22:42 +01:00
Robbert van der Helm
6e6f327dc4
Always accept MIDI events in CLAP
...
Otherwise we may not receive SysEx events.
2023-01-31 22:20:48 +01:00
Robbert van der Helm
5dbc76ef69
Simplify conversion from SysExMessage to buffers
...
There's no need to provide this as an argument anymore.
2023-01-31 22:03:40 +01:00
Robbert van der Helm
0deb8ab1cd
Simplify VST3 ProcessEvent::NoteEvent
2023-01-31 21:55:26 +01:00
Robbert van der Helm
b35914bbbd
Add SysEx support for VST3
2023-01-31 21:52:21 +01:00
Robbert van der Helm
e7be5ef178
Simplify CLAP SysEx output
2023-01-31 21:50:49 +01:00
Robbert van der Helm
701590f1cd
Support SysEx for CLAP plugins
2023-01-31 21:35:52 +01:00
Robbert van der Helm
868228f7b7
Add tests for SysEx parsing
2023-01-31 21:18:55 +01:00
Robbert van der Helm
ee24e14829
Log unhandled SysEx message in debug mode
2023-01-31 21:11:01 +01:00
Robbert van der Helm
8d9ae19d38
Support receiving SysEx in JACK standalone
2023-01-31 20:39:15 +01:00
Robbert van der Helm
68d68c0bc3
Add NoteEvent conversions to and from MIDI SysEx
...
JACK already supports this because otherwise things wouldn't compile,
but support still needs to be added for CLAP and VST3.
2023-01-31 20:37:33 +01:00
Robbert van der Helm
1e8bdb9d8e
Document the expected buffer format for SysEx
2023-01-31 19:29:11 +01:00
Robbert van der Helm
611dc452ec
Add conversion functions on SysExMessage trait
2023-01-31 18:57:49 +01:00
Robbert van der Helm
d9cf78e72a
Document the MidiSysEx event's availability
2023-01-31 18:45:30 +01:00
Robbert van der Helm
b7849f9a7a
Add a NoteEvent::MidiSysEx variant
...
Right now this isn't used, and there is not yet any way to convert to
and from raw SysEx data.
2023-01-31 18:32:16 +01:00
Robbert van der Helm
c8ed795524
Add a SysExMessage type to Plugin
...
This is needed to enable sending and receiving SysEx #54 . Because
associated type defaults still are not stable, this requires every
plugin that doesn't need this to set this to the unit type:
```rust
type SysExMessage = ();
```
2023-01-31 18:18:41 +01:00
Robbert van der Helm
978d466019
Add trait bounds for the SysExMessage trait
2023-01-31 18:18:41 +01:00
Robbert van der Helm
c828dabb03
Add a default implementation for SysExMessage
2023-01-31 17:45:23 +01:00
Robbert van der Helm
d6b5342c53
Add boilerplate for a SysEx message trait
2023-01-31 17:43:52 +01:00
Robbert van der Helm
683c96bca0
Avoid duplicate parameter callbacks and smoothing
...
REAPER seems to spam value set events when an automation lane is active,
and it also always sends CLAP automation events twice.
2023-01-31 16:31:29 +01:00
Robbert van der Helm
efff43df21
Add an StftHelper::max_padding()
2023-01-30 02:16:03 +01:00
Robbert van der Helm
e3e2a2e7d0
Actually change padding in StftHelper::set_padding
2023-01-30 01:55:34 +01:00
Robbert van der Helm
161c97bb28
Add the CLAP note detector feature
2023-01-28 23:23:56 +01:00
Robbert van der Helm
98d44798ea
Allow changing StftHelper padding after creation
...
Adapted from #52 .
2023-01-25 18:40:09 +01:00
Robbert van der Helm
ead160497b
Fix excess padding handling in StftHelper
2023-01-25 18:35:55 +01:00
Robbert van der Helm
1e90f55019
Add a todo for invalid CLAP event parsing
...
Currently these values are never -1, but they can be.
2023-01-16 23:59:10 +01:00
Robbert van der Helm
92ce737000
Add a gain_to_db_fast() with a lower limit
...
These functions probably need some better organization at some point.
2023-01-15 18:15:52 +01:00
Robbert van der Helm
bb521fcb82
Upgrade Vizia for the cosmic-text changes
...
This brings some breaking changes, and vertical positioning of text may
have changed slightly.
2023-01-12 19:03:02 +01:00
Robbert van der Helm
e5a26ac199
Send individual parameter changes for VST3 plugins
2023-01-11 16:59:21 +01:00
Robbert van der Helm
adb49cb6d1
Simplify VST3 wrapper creation
2023-01-11 16:51:21 +01:00
Robbert van der Helm
d3d34b59ac
Send individual parameter changes for standalones
2023-01-11 16:51:21 +01:00
Robbert van der Helm
048cfd73b5
Add a TODO for merging hashmaps
2023-01-11 15:22:26 +01:00
Robbert van der Helm
951a0739d7
Send individual parameter changes for CLAP plugins
2023-01-11 15:22:26 +01:00
Robbert van der Helm
4e53d3a799
Significantly increase task queue capacity
...
This is needed to prevent parameter change events from being dropped.
2023-01-11 15:22:26 +01:00
Robbert van der Helm
08c6729ed1
Also add an Editor::param_modulation_changed()
2023-01-11 15:22:26 +01:00
Robbert van der Helm
922d2de603
Add an individual Editor::param_value_changed
2023-01-11 15:22:26 +01:00
Robbert van der Helm
838e1bfd2d
Fix note formatter octave conversion, again
2023-01-10 14:03:17 +01:00
Robbert van der Helm
2aa937e370
Fix note formatting for 0 Hz
...
This would result in an underflow, failing the test case.
2023-01-10 02:28:39 +01:00
Robbert van der Helm
a9d0e40447
Fix octave -1 edge case in v2s_f32_hz_then_khz_with_note_name
2023-01-10 02:11:45 +01:00
Robbert van der Helm
32903ac065
Test f32_hz_then_khz_with_note_name roundtrip
...
This was failing in clap-validator.
2023-01-10 01:46:34 +01:00
Robbert van der Helm
18b4403a3b
Fix roundtrip in f32_hz_then_khz_with_note_names
2023-01-10 01:46:14 +01:00
Robbert van der Helm
b647f24121
Fix rounding error in v2s_f32_hz_then_khz_with_note_name
2023-01-10 01:43:27 +01:00
Robbert van der Helm
26422ae8e3
Fix -inf parsing in s2v_f32_gain_to_db()
...
I noticed this thanks to a test I implemented myself in clap-validator
ha.
2023-01-10 00:40:50 +01:00
Robbert van der Helm
57e751d277
Remove todo about single message queues
...
Because we just did that.
2023-01-06 18:05:52 +01:00
Robbert van der Helm
47b75fd020
Fix missing generic arguments on BackgroundThread
2023-01-06 17:59:33 +01:00
Robbert van der Helm
6f7f2e30ed
Fix debug assertion failure in smoother
2023-01-06 17:58:13 +01:00
Robbert van der Helm
28cd25d501
Implement Linux event loop using BackgroundThread
...
This reduces duplication a lot.
2023-01-06 17:53:07 +01:00
Robbert van der Helm
5c9be077e7
Allow BackgroundThread sharing between instances
...
This removes the need for every instance to have its own background
thread.
2023-01-06 17:51:38 +01:00
Robbert van der Helm
8d242b45ad
Remove old overeager clippy lint silence
...
This is no longer enabled by default.
2023-01-06 16:13:01 +01:00
Robbert van der Helm
dfeb8164ca
Fix new Clippy lints
2023-01-06 16:13:01 +01:00
Robbert van der Helm
935bf6f7f3
Fix allocation failures in BackgroundThread
2023-01-06 16:03:48 +01:00
Robbert van der Helm
c0e9b29bf4
Remove macOS deprecation warning from event loop
2023-01-06 15:58:01 +01:00
Robbert van der Helm
d5006d109e
Code style cleanup for macOS event loop
2023-01-06 15:46:29 +01:00
Robbert van der Helm
700a15f528
Merge branch 'maxjvh/master' #48
...
native macOS event loop: https://github.com/robbert-vdh/nih-plug/pull/48
2023-01-06 15:14:29 +01:00
Robbert van der Helm
300e112ede
Rename Block::len() to Block::samples()
...
For the same reason mentioned in the last commit.
2023-01-05 16:13:58 +01:00
Robbert van der Helm
cb2824021b
Fix buffer adapter size hints for zero channels
...
And the SamplesIter one was simply not correct when yielded by the block
iterator.
2023-01-05 16:12:09 +01:00
Robbert van der Helm
cb827d18dd
Rename Buffer::len() to Buffer::samples()
...
To reduce ambiguity.
2023-01-05 16:04:38 +01:00
Robbert van der Helm
9e1a888b38
Store sample count in Buffer
...
This fixes the sample count not being correct for MIDI-only plugins.
2023-01-05 15:58:55 +01:00