1
0
Fork 0
Commit graph

459 commits

Author SHA1 Message Date
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
ee38566d74 Remove unused DPI scale function in standalone 2022-10-20 12:14:26 +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
71c7e00f2b Prevent assert_process_allocs on x86_64-pc-windows-gnu
This will result in plugins that hang during their first allocation.
2022-10-05 17:22:29 +02:00
Robbert van der Helm
417a810936 Always use a hyphen in realtime-safe 2022-09-29 16:50:53 +02:00
Simon Leiner
0bb5662770 Remove dead code 2022-09-29 15:13:43 +02:00
Simon Leiner
2402eada05 Fix typos in productive cod 2022-09-29 15:13:43 +02:00
Simon Leiner
0caef90b1a Fix typos in comments 2022-09-29 15:13:43 +02:00
Simon Leiner
f4995abf88 Fix typos in documentation 2022-09-29 15:13:43 +02:00
Simon Leiner
958767acf2 Fix off-by-1 error in VST3 parameter range
Running the VST3 SDK Validator [1] for the midi_inverter plugin shows
one failing test:

    [Scan Parameters]
    Info:  ===Scan Parameters ====================================
    Info:  This component exports 2080 parameter(s)
    Info:     Parameter 000 (id=2147481569): [title="MIDI Ch. 1 CC 0"] [unit=""] [type = F, default = 0.000000, unit = 0]
    Info:     Parameter 001 (id=2147481570): [title="MIDI Ch. 1 CC 1"] [unit=""] [type = F, default = 0.000000, unit = 0]
    Info:     Parameter 002 (id=2147481571): [title="MIDI Ch. 1 CC 2"] [unit=""] [type = F, default = 0.000000, unit = 0]

[...]

    Info:     Parameter 2077 (id=2147483646): [title="MIDI Ch. 16 CC 127"] [unit=""] [type = F, default = 0.000000, unit = 0]
    Info:     Parameter 2078 (id=2147483647): [title="MIDI Ch. 16 Channel Pressure"] [unit=""] [type = F, default = 0.000000, unit = 0]
    ERROR: =>Parameter 2079 (id=-2147483648): Invalid Id!!!
    [XXXXXXX Failed]

The relevant part of the test code [2] looks like this:

    int32 paramId = paramInfo.id;
    if (paramId < 0)
    {
        // Error
    }

This shows that the parameter ID must be INT32_MAX = (1 << 31) - 1 at
most. As far as I see, even Steinberg's own documentation [3] gets
this wrong.

[1]: 55d7ed3c6a/samples/vst-hosting/validator
[2]: 55d7ed3c6a/source/vst/testsuite/general/scanparameters.cpp (L100)
[3]: https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Parameters+Automation/Index.html
2022-09-29 00:24:41 +02:00
Robbert van der Helm
fff713d066 Fix resizing with HiDPI standalones 2022-09-22 19:36:43 +02:00
Robbert van der Helm
b883a611ab Fix resizing aux input storage on buffer size
This nested `resize_with()` of course wouldn't resize the inner vectors
of the outer ones were already the correct size.
2022-09-11 16:41:31 +02:00
Robbert van der Helm
cf72a796f4 Fix GUI context state loading in standalones 2022-09-07 18:38:07 +02:00
Robbert van der Helm
910a90d47a Respect assert_process_allocs in standalones
This fixes #29.
2022-09-07 18:29:58 +02:00
Robbert van der Helm
591f3710bd Add missing reset call to standalone init
The plugin versions also do this, and the docs mention that this always
happens.
2022-09-07 18:23:36 +02:00
Robbert van der Helm
997249a293 Notify about unsupported aux IO in standalones
None of the backends support this at the moment.
2022-09-07 15:58:09 +02:00
Robbert van der Helm
9536842a15 Only show CPAL MIDI support warning if applicable 2022-09-07 15:55:36 +02:00
Robbert van der Helm
3761f9f5ee Remove unnecessary use of MaybeUninit 2022-08-22 12:41:12 +02:00
Robbert van der Helm
26e0d17833 Fix VST3 event loop leaking
This should have never used MaybeUninit in the first place.
2022-08-22 12:31:09 +02:00
Robbert van der Helm
5110e5b059 Log trace messages when loading and saving state 2022-08-22 12:09:25 +02:00
Robbert van der Helm
72d3b61a42 Mention standalone inputs not auto connecting 2022-08-21 17:59:44 +02:00
Robbert van der Helm
9cd440231e Print message about MIDI IO not being implemented 2022-08-21 17:59:44 +02:00
Robbert van der Helm
1bee7f5333 Add audio input to the CPAL standalone backend 2022-08-21 17:55:09 +02:00
Robbert van der Helm
c46a044cb4 Add audio output for the CPAL backend 2022-08-21 17:07:02 +02:00
Robbert van der Helm
c47f2139a3 Use a Parker instead of a channel in JACK backend 2022-08-21 15:26:49 +02:00
Robbert van der Helm
559d835878 Print system backend init errors in auto mode
Since this may fail due to incompatible default sample rates or period
sizes.
2022-08-21 15:26:48 +02:00
Robbert van der Helm
1fc437068a Compute device configs for cpal 2022-08-21 15:26:48 +02:00
Robbert van der Helm
a011eaa07c Add most of a CPAL standalone backend
For ALSA, CoreAudio, and WASAPI.
2022-08-21 15:26:48 +02:00
Robbert van der Helm
ca2e318551 Clean up JACK MIDI handling #23 2022-08-20 23:56:18 +02:00
Sean Bolton
7a10d58a58 Fix program change and channel pressure receipt in standalone jack backend 2022-08-20 23:48:55 +02:00
Robbert van der Helm
8a9c98943e Store plugin version in the state
This may later be used to allow migrations between breaking plugin
versions.
2022-08-20 15:10:34 +02:00
Robbert van der Helm
ee62a45d0d Remove now unused argument 2022-08-19 14:54:48 +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
b19e6afa6c Remove unused import 2022-08-18 16:41:51 +02:00
Robbert van der Helm
56a12db1e6 Reuse MIDI conversion function for CLAP events 2022-08-18 16:39:07 +02:00
Robbert van der Helm
17a90cca9b Rearrange note events 2022-08-18 16:38:44 +02:00
Sean Bolton
2447344dab Add program change events 2022-08-18 16:26:32 +02:00
Robbert van der Helm
1bb1cde913 Add optional Zstandard compression for state
This can be particularly useful when using the persistent fields feature
to store JSON or other large textual documents.
2022-08-18 13:55:48 +02:00
Robbert van der Helm
7f12c9f362 Fix group->unit conversion with missing parents
This caused Spectral Compressor's VST3 version to not work because the
compressor group didn't contain any parameters.
2022-07-24 23:37:45 +02:00
Robbert van der Helm
9844d9c490 Change match &self to match self
This is equivalent when taking a reference to self, and you can't do the
same thing with &mut self.
2022-07-19 20:21:52 +02:00
Robbert van der Helm
0395fd91b1 Only connect JACK ports after activating client
Otherwise JACK2 will hate us. Forever!

The AtomicRefCell now needs to be a mutex because the process call may
be called while this connection function is still running.
2022-07-13 19:19:17 +02:00
Robbert van der Helm
1f3d2f9a66 Fix typo in standalone documentation example 2022-07-13 17:06:22 +02:00
Robbert van der Helm
d828e697a3 Actually expose the CLAP render extension
Oops.
2022-07-11 15:00:10 +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
4ad4f8f76d Add more basic fields for PolyModSynth 2022-07-06 17:16:19 +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
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