1
0
Fork 0
Commit graph

46 commits

Author SHA1 Message Date
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 cb827d18dd Rename Buffer::len() to Buffer::samples()
To reduce ambiguity.
2023-01-05 16:04:38 +01:00
Robbert van der Helm 753ca201a6 Support #[nested] prefixes/suffixes w/ #[persist]
This makes nested fields behave the same as nested parameters, allowing
multiple copies of a persistent field to exist.
2022-11-19 00:17:13 +01:00
Robbert van der Helm 2cddd7089f Mention parameter order change in breaking changes 2022-11-17 18:17:51 +01:00
Robbert van der Helm e583b8e777 Add finer step sizes to parameters 2022-11-11 03:15:05 +01:00
Robbert van der Helm b2da26ecd7 Add prefix to plain_value() and normalized_value()
To make it clearer that these functions include monophonic modulation.
When creating GUI widgets, you should be using the unmodulated variants.
2022-11-11 03:15:05 +01:00
Robbert van der Helm c6a2be41f4 Make registering Vizia's default fonts optional 2022-11-06 14:05:13 +01:00
Robbert van der Helm 6f7780bdeb Don't register any fonts by default for vizia
These now need to be registered individually by the plugin. This saves
on binary size.
2022-11-06 14:05:12 +01:00
Robbert van der Helm 89c2b1f84e Replace create_vizia_editor_without_theme w/ enum
This involves a small breaking change. You can now also completely
disable all of Vizia's theming.
2022-11-06 14:04:55 +01:00
Robbert van der Helm 821bb90194 Update vizia, cpal, and other dependencies
Vizia wouldn't compile anymore because of mixed create versions in
femtovg, so the fork had to be updated. cpal had a similar thing with
nix and alsa.
2022-10-23 22:32:47 +02:00
Robbert van der Helm c980576102 Add an AsyncExecutor for editor GUIs
This is decoupled form `GuiContext` as that would require invasive
changes all over the place.
2022-10-22 15:05:39 +02:00
Robbert van der Helm b676353589 Split the nih_plug::context module
So that structs are more logically grouped with their traits.
2022-10-22 14:19:10 +02:00
Robbert van der Helm f6ad85de01 Make per-day breaking changes order chronological
This probably makes more sense when reading these. This isn't Twitter.
2022-10-22 12:27:59 +02:00
Robbert van der Helm 5ea2377c18 Replace AsyncExecutor with simple closure
This makes everything much simpler. The task type is now defined
directly on `Plugin`.
2022-10-22 02:01:03 +02:00
Robbert van der Helm 84f834abb6 Add AsyncExecutor support to ProcessContext 2022-10-22 02:01:03 +02:00
Robbert van der Helm 6ffa23971e Add AsyncExecutor support to InitContext 2022-10-22 00:21:08 +02:00
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 6ee3aafa91 Move Editor and ParentWindowHandle to a new module 2022-10-21 23:12:05 +02:00
Robbert van der Helm f9bdaffc62 Don't require Sync for Plugin
In hindsight there's really no reason to, because process() requires
exclusive access and the other functions won't be called during
processing.
2022-10-20 16:12:50 +02:00
Robbert van der Helm 375262aaa3 Also drop Sync requirement for editor handles 2022-10-20 14:41:53 +02:00
Robbert van der Helm a2a52e0ff1 Drop Sync requirement for Editor 2022-10-20 14:31:48 +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 bd295b7380 Move nih_plug::param to nih_plug::params 2022-10-20 12:26:12 +02:00
Robbert van der Helm fb71d0fcce Move the Params trait out of params::internals
This makes much more sense, since this trait is a cornerstone of
NIH-plug.
2022-10-20 12:10:35 +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
Robbert van der Helm 85543e1668 Update Vizia 2022-09-22 19:53:21 +02:00
Robbert van der Helm 51b8f64092 Update nih_plug_egui from egui 0.17 to egui 0.19 2022-09-22 15:35:51 +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 a21daef96b Redesign mapped block smoothing
The non-mapped version is now split off and the mapped version is much
better suited for array based modulation. Check the breaking changes
document and the new docstring for more information.
2022-09-04 20:17:06 +02:00
Robbert van der Helm a5c05b22fb Use the plugin's default channels for standalones 2022-08-19 14:52:57 +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 f007945335 Add reversed ranges 2022-07-19 20:21:52 +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 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 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 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 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 7cd7294b22 Make CLAP descriptions and special URLs optional
This closes #14.
2022-07-04 12:46:34 +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 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 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 783dc2245e Store the processing mode in BufferConfig
Instead of having a function on ProcessContext.
2022-05-22 13:33:38 +02:00
Robbert van der Helm e1d4be2a03 Change NON_AUTOMATABLE semantics and add HIDDEN
This now lets you have parameters that cannot be automated but that are
still changeable through the generic UI.
2022-05-22 12:37:30 +02:00