Robbert van der Helm
4502eaec3a
Change wrapped smoothing style to be a static ref
...
Instead of having to wrap this in an `Arc`. This makes the interface a
bit nicer to use.
2023-04-05 18:16:58 +02:00
Robbert van der Helm
8a7100ac3e
Add an OversamplingAware smoothing style
...
This can be used to have an ergonomic way to do multi-rate smoothing
with variable oversampling amounts that only the `Arc<AtomicF32>` to be
updated from a parameter callback.
2023-04-05 18:08:22 +02:00
Robbert van der Helm
3aa3f08f82
Upgrade nih_debug_assert!() to panic in tests
2023-04-05 16:13:16 +02:00
Robbert van der Helm
58174c1af0
Add a miri test for the buffer management's safety
2023-04-01 16:12:37 +02:00
Robbert van der Helm
112c801bc4
Use the new buffer management for the CPAL backend
...
Now everything uses `BufferManager`. That should hopefully reduce the
chances that different backends behave differently or trigger different
debug assertions.
2023-04-01 15:43:58 +02:00
Robbert van der Helm
cc5980e215
Zero out auxiliary output buffers
...
We used to do this, but this got lost in the migration to the new buffer
management system.
2023-04-01 15:21:12 +02:00
Robbert van der Helm
9d45cbf1d9
Use new buffer management for the dummy backend
2023-03-31 19:22:30 +02:00
Robbert van der Helm
ca4569e03a
Use new buffer management in JACK standalones
2023-03-31 18:17:48 +02:00
Robbert van der Helm
8196641d65
Update VST3 wrapper to use new buffer manager
...
This also fixes output events not being sent during a parameter flush.
2023-03-31 17:01:41 +02:00
Robbert van der Helm
30a26e0d9a
Update CLAP wrapper to use the new buffer manager
2023-03-31 16:03:49 +02:00
Robbert van der Helm
83dd585c40
Add a standalone buffer management abstraction
...
The idea is that all backends are refactored to use this. This greatly
reduces the need for backend-specific code when it comes to buffer
management, and thus also bugs. It also overwrites main output channels
that don't have a corresponding input channel with zeroes, which the
current backends don't do.
2023-03-31 16:02:00 +02:00
Robbert van der Helm
2de1fd563b
Tweak cosmic text and module logging settings
...
In release builds the cosmic text messages are now suppressed, and in
debug builds the module is always shown even for error, warning, and
info messages.
2023-03-21 20:31:58 +01:00
Stephane Albanese
77ea503de0
Add a channel getter to the NoteEvent implementation
2023-03-17 13:58:44 +01:00
Robbert van der Helm
15c859a8e6
Add CLAP 1.1.8 features
2023-03-13 15:36:04 +01:00
Robbert van der Helm
7c14010656
Keep track of the current latency in standalones
...
Even though it's not actually used, this avoids spamming the debug
assertion failure when the value doesn't change.
2023-03-12 17:12:59 +01:00
Robbert van der Helm
6ee4dbcf67
Fix doc comment wording
2023-03-12 17:08:36 +01:00
Robbert van der Helm
d380c15f8b
Only expose context_checks module in debug builds
...
This gets rid of some unused warnings.
2023-03-08 15:37:34 +01:00
Robbert van der Helm
17a95e703f
Detect incorrect GuiContext method usage
...
In debug builds.
2023-03-07 18:02:56 +01:00
Robbert van der Helm
d3cb5f2bee
Explicitly mark parameter range conversions inline
...
The compiler already does this, but these should be inlineable.
2023-03-03 22:55:35 +01:00
Robbert van der Helm
ae3356dca8
Request resizes after loading state
...
If the editor is open.
2023-03-03 18:52:57 +01:00
Robbert van der Helm
c294afbf62
Centralize state loading logic
2023-03-03 17:21:09 +01:00
Robbert van der Helm
2ee3b7c2fa
Fix InitContext drop order for standalone presets
2023-03-03 13:21:10 +01:00
Robbert van der Helm
a202c3801a
Account for Params::deserialize_fields allocating
...
When state through `GuiContext`.
2023-03-03 13:12:47 +01:00
Robbert van der Helm
a97c8ea554
Allow querying other interfaces for VST3 plugins
...
Not checking `iid` was an oversight, so if the host would create
anything other than `IComponent` this would do the wrong thing. With
this change the host can create an object for any interface we support.
Fixes #58 .
2023-03-03 00:08:12 +01:00
Robbert van der Helm
6fe5c7c471
Silence missing docs warnings for entry points
2023-03-02 12:58:51 +01:00
Robbert van der Helm
b840113caf
Fix typo in comment
2023-03-01 23:49:35 +01:00
Robbert van der Helm
b1b3ee6e21
Update the clap dependency
...
No not that clap.
2023-03-01 23:15:02 +01:00
Robbert van der Helm
ed4054b0cf
Update CPAL
...
This update mostly made things more complicated.
2023-03-01 23:11:52 +01:00
Robbert van der Helm
164e8bd402
Update the windows dependency version
2023-03-01 22:34:46 +01:00
Robbert van der Helm
199e836f80
Remove unnecessary must_use attribute
2023-03-01 19:11:35 +01:00
Robbert van der Helm
9dad9fe1a4
Remove now unused imports
2023-03-01 19:11:24 +01:00
Robbert van der Helm
c381744b47
Switch to using NIH-log for the logger
...
This greatly simplifies the setup, provides more deterministic and
performant behavior, and allows for better WinDbg integration by
detecting its presence at runtime and by using the regular pretty log
format there as well.
2023-03-01 19:01:15 +01:00
Robbert van der Helm
e621ec9b59
Print zstandard compression ratios
2023-02-28 18:12:58 +01:00
Robbert van der Helm
72f57b358f
Remove leftover debug prints
2023-02-28 17:58:34 +01:00
Robbert van der Helm
6ef0092dca
Allow the windbg logger to be overridden
2023-02-28 14:04:53 +01:00
Robbert van der Helm
5566dd7fbb
Add PersistentField implementation for AtomicCell
...
This API really needs to change.
2023-02-26 17:49:33 +01:00
Robbert van der Helm
86adca2e5a
Reexport nih_export_standalone in crate root
...
To keep the symmetry with the `nih_export_clap!()` and
`nih_export_vst3!()` macros.
2023-02-26 16:18:05 +01:00
Robbert van der Helm
7f8c1d955d
Catch VST3 parameter flushes for aux-only plugins
...
This probably shouldn't happen, but you technically can have a plugin
with no main output but with an auxiliary output. Without this check we
would not detect the parameter flush.
2023-02-26 01:27:03 +01:00
Robbert van der Helm
5ed84e5ea4
Add checks for auxiliary output channel counts
...
Apparently this was missing.
2023-02-26 01:21:31 +01:00
Robbert van der Helm
9eaf375f6b
Relax VST3 aux input debug assertions for flushes
2023-02-26 01:17:44 +01:00
Robbert van der Helm
767cff6294
Prevent incorrect pointer derefs in debug asserts
2023-02-26 01:14:06 +01:00
Robbert van der Helm
878d0e5330
Fix comment
2023-02-26 01:06:42 +01:00
Robbert van der Helm
d2b7970991
Remove the mandatory VST3 output bus
...
This doesn't seem to be necessary anymore. Perhaps this was just an
incorrect check for parameter flushes.
2023-02-26 01:05:50 +01:00
Robbert van der Helm
e41a1b94b5
Silence warning about now unused argument
...
Amends 3a9b3281e8
.
2023-02-26 01:05:46 +01:00
Robbert van der Helm
20ad19fdc5
Fix main IO for plugins with aux but no main IO
...
This would otherwise check and interact with the wrong buffers.
2023-02-26 01:05:46 +01:00
Robbert van der Helm
2580953b87
Clarify buffer_is_valid check
2023-02-26 00:56:39 +01:00
Robbert van der Helm
3a9b3281e8
Don't return kResultFalse when deactivating busses
...
Validator-sama will get very upset with us if we do.
2023-02-25 19:40:20 +01:00
Robbert van der Helm
72d2ed4151
Add MIDI IO support to the CPAL backends
...
Using Midir. This has been on the todo list for way too long.
2023-02-25 19:22:08 +01:00
Robbert van der Helm
2ed95bb52d
Add basic MIDI device selection using midir
2023-02-25 17:19:06 +01:00
Robbert van der Helm
98b8571dc9
Bundle CPAL device data into a struct
2023-02-25 17:11:59 +01:00