1
0
Fork 0
Commit graph

1062 commits

Author SHA1 Message Date
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
Robbert van der Helm
b8593b03f4 Inline the nih_plug::debug macro docstrings
This makes it easier to browse the module in rustdoc.
2022-09-29 16:50:13 +02:00
Robbert van der Helm
cba0bdc21d Document the logging module 2022-09-29 16:46:33 +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
67808fd9ae Fix typos in test names 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
fae7050113 Add helper to compensate smoother for oversampling 2022-09-25 17:37:25 +02:00
Robbert van der Helm
fff713d066 Fix resizing with HiDPI standalones 2022-09-22 19:36:43 +02:00
Robbert van der Helm
963d1bd14f Fix bar start position calculation 2022-09-12 14:17:06 +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
4c9a2726f3 Fix s2v_bool_bypass() 2022-09-07 20:43:47 +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
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
5966e353da Use only interior mutability for smoothers
This is needed in preparation for removing the need to have `*mut`
pointers to parameters.
2022-09-06 21:21:46 +02:00
Robbert van der Helm
7f33f172cb Clean up optimized block smoothing
This is easier to follow and avoids computing and subsequently
overwriting the last smoothed value.
2022-09-05 14:00:56 +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
99437c6011 Optimize block smoothing 2022-09-04 19:52:17 +02:00
Robbert van der Helm
3a9d56e956 Rename step_size() current parameter to start 2022-09-04 18:40:18 +02:00
Robbert van der Helm
8e17972da5 Also move num steps computation to SmoothingStyle 2022-09-04 18:26:36 +02:00
Robbert van der Helm
bb6e9c237f Add equivalence tests for next() and next_step() 2022-09-04 18:20:51 +02:00
Robbert van der Helm
9f990cc3b9 Rename step_size() parameter for SmoothingStyle 2022-09-04 18:20:28 +02:00
Robbert van der Helm
17a928647e Optimize single step Smoother::next()
By not having to take multiple steps into account.
2022-09-04 18:08:31 +02:00
Robbert van der Helm
dd320c4c1f Add dedicated single step next() to SmoothingStyle
This avoids some computations for single stepping. And we can use this
for block smoothing later.
2022-09-04 18:08:19 +02:00
Robbert van der Helm
e47899d421 Move calculation in next_step() to SmoothingStyle 2022-09-04 18:04:31 +02:00
Robbert van der Helm
a6d9972924 Move the smoothing step size to a function 2022-09-04 17:57:21 +02:00
Robbert van der Helm
2f87a79d3e Wait for the Windows event loop to shut down
This fixes crashes when removing the instance and immediately unloading
the module. `DestroyWindow()` is synchronous while `CloseWindow()`
merely posts a message to close the window.
2022-08-29 13:59:28 +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
5010ce5e1a Allow parsing compression ratios without a colon 2022-08-20 15:54:09 +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