1
0
Fork 0
Commit graph

43 commits

Author SHA1 Message Date
Robbert van der Helm
a7e4e8b31e Add a context for defining remote control pages 2023-04-22 15:53:04 +02:00
Robbert van der Helm
2dbd835778 Also prefer importing from prelude internally
Less breakage when restructuring modules.
2023-04-22 15:13:39 +02:00
Robbert van der Helm
34b416ecb6 Move API-specific traits and structs to submodules 2023-04-22 14:52:01 +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
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
6fd22b3ba9 Move audio setup related structs to a new module 2023-02-19 15:43:40 +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
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
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
f3bb816cb5 Add an AsyncExecutor type for use with the GUI 2022-10-22 14:34:32 +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
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
25d20f1950 Add an AsyncExecutor trait for background tasks 2022-10-21 23:52:29 +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
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
Simon Leiner
0caef90b1a Fix typos in comments 2022-09-29 15:13:43 +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
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
625ad06584 Add a port names field on Plugin 2022-05-28 00:20:32 +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
596b04af0a Add preliminary support for auxiliary IO
The missing parts are allocating buffers for these busses, copying data
to those buffers, and adding methods to the ProcessContext to interact
with these inputs and outputs.
2022-05-23 17:13:49 +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
665108721a Add a way to fetch the current processing mode 2022-05-22 00:58:53 +02:00
Robbert van der Helm
1fea9f94df Deduplicate the smoother implementation
By introducing a new trait for conversion to and from floating point
numbers.
2022-05-12 13:34:02 +02:00
Robbert van der Helm
98876670f8 Re-export debug macros from the debug module
This makes it easy to import just the macros without having to use the
oldschool `#[macro_use] extern crate ...;` syntax.
2022-04-30 02:10:54 +02:00
Robbert van der Helm
abe5a12461 Add a nih_dbg!() macro analog for dbg!() 2022-04-26 15:43:24 +02:00
Robbert van der Helm
f3db4a9ed0 Add a (not yet functional) standalone exporter 2022-04-24 15:48:05 +02:00
Robbert van der Helm
54bab5ff6d Add an nih_trace!() macro 2022-04-24 15:30:38 +02:00
Robbert van der Helm
b88707769a Add a way to find out the current plugin API 2022-04-21 21:27:36 +02:00
Robbert van der Helm
8eaecb6e5c Add a way to completely exclude the vst3-sys dep
Because technically you might still include GPL'd symbols even if you
wouldn't use the `nih_export_vst3!()` macro.
2022-04-15 16:14:42 +02:00
Robbert van der Helm
24837d1552 Implement full MIDI support for CLAP 2022-04-07 23:28:31 +02:00
Robbert van der Helm
1141616466 Replace ACCEPTS_MIDI bool with new enum
So we can gate future MIDI CC support behind an additional option since
this involves more work on the VST3 side.
2022-04-07 20:27:37 +02:00
Robbert van der Helm
2af3f84416 Rename State to PluginState
Now that it is part of the public API.
2022-04-07 17:39:34 +02:00
Robbert van der Helm
7cc05fce9a Use crate instead of super for prelude reexports 2022-04-07 14:13:03 +02:00
Robbert van der Helm
54371fb488 Expose the State object
So we can later allow plugins to save and restore state from their GUI
this way.
2022-04-07 14:12:53 +02:00
Robbert van der Helm
a1be942d6d Add flags to control parameter visibility
For the host and in generic UIs. These aren't wired up to anything yet.
2022-03-23 13:04:14 +01:00
Robbert van der Helm
9e3149b931 Move ParamPtr to the prelude 2022-03-23 12:46:46 +01:00
Robbert van der Helm
6628baf47e Split up the nih_plug_derive crate into modules 2022-03-16 15:53:35 +01:00
Robbert van der Helm
d758dd652f Re-export all macros in the prelude
Now you don't need the `#[macro_use] extern crate nih_plug;` anymore
2022-03-04 12:01:47 +01:00
Robbert van der Helm
4c0b07c578 💥 Move re-exports to a prelude module
So you can import everything at once, because you're likely going to
need at least 90% of it anyways.
2022-03-03 23:23:51 +01:00