1
0
Fork 0
Commit graph

1067 commits

Author SHA1 Message Date
Robbert van der Helm
d0fcc9878e Add a Blackman window function 2022-05-08 00:47:20 +02:00
Robbert van der Helm
77b9dd3404 Reuse hann_in_place() for hann() window function 2022-05-08 00:31:55 +02:00
Robbert van der Helm
ffe4642aa5 Implement IProcessContextRequirements
This is needed for VST 3.7. We claim to be a VST 3.6.14 plugin, but
implementing this anyways seems like the safe bet. I doubt many hosts
would, but under VST 3.7 hosts are allowed to not send any transport
information unless this interface is implemented.
2022-05-07 13:24:17 +02:00
Robbert van der Helm
f05e31d9e3 Sort additional VST3 interace implementations
The sensible order would be IComponent, IEditController,
IAudioProcessor, and then everything else.
2022-05-07 13:18:20 +02:00
Robbert van der Helm
a74d8264fb Support CLAP transport information events
This will cause the buffer to be split when the transport information
changes.
2022-05-05 17:23:46 +02:00
Robbert van der Helm
7cb671319e Properly define all predefined note expressions
This is apparently how you're supposed to do it in VST3. How would you
know? You'd ask Steinberg.
2022-05-05 15:35:14 +02:00
Robbert van der Helm
06c5e4b04a Make parameter modulation stick after automation
This is how it's supposed to be implemented in CLAP.
2022-05-02 15:46:57 +02:00
Robbert van der Helm
10ae8e1d05 Enable modulation for CLAP parameters
Everything else has already been implemented, but this is kind of
important.
2022-05-02 11:51:56 +02:00
Robbert van der Helm
a4b251e5ef Support monophonic modulation for CLAP plugins
This avoids the potential for state corruption caused by modulation and
modulation can be displayed differently on the GUI.
2022-05-01 19:05:51 +02:00
Robbert van der Helm
ddbaffc0bb Add ParamMut method for setting modulation offset
This will be used in the CLAP wrapper to handle `CLAP_EVENT_PARAM_MOD`.
2022-05-01 19:03:04 +02:00
Robbert van der Helm
1d3ac1b2af Move param setting functions to new ParamMut trait
This makes things slightly less confusing because these functions should
never be called from user code.
2022-05-01 18:45:35 +02:00
Robbert van der Helm
a17c63bf71 Add parameter getters for unmodulated values
This is needed to be able to support modulation events in CLAP. There an
offset gets applied to the parameter's actual current value. That way
GUIs don't have to move around when parameters are being modulated and
save states cannot get influenced by modulation.
2022-05-01 18:30:30 +02:00
Robbert van der Helm
6451555f85 Add missing #[inline] attribute 2022-05-01 17:56:20 +02:00
Robbert van der Helm
2026257561 Get rid of Default implementations on ranges
These also don't make any sense anymore and will likely lead to more
problems than they solve.
2022-05-01 17:40:53 +02:00
Robbert van der Helm
d6bdfd7391 Get rid of Default implementations for params
These don't make any sense anymore with the builder API.
2022-05-01 17:40:26 +02:00
Robbert van der Helm
cd628e80ee Store normalized values on the param structs
This will be necessary to implement CLAP modulation later.
2022-05-01 17:34:59 +02:00
Robbert van der Helm
54d2a4cd2c Hide param fields other than value and smoothed
Direct initialization was no longer recommended anyways since now you
need to keep the default value in sync. The next couple of commits will
add a normalized value field and two more fields to help with
modulation.
2022-05-01 17:08:08 +02:00
Robbert van der Helm
40b555bfbd Document how values work in the Param trait 2022-05-01 16:40:18 +02:00
Robbert van der Helm
48d0f87e4c Mark param value getters as inline 2022-05-01 16:40:16 +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
3d454bfc9c Don't process audio at all with invalid buffers
If the host does some kind of flush this way with num_samples > 0 but
without any outputs or with zero output channels then we should not try
to read from the now invalid pointers from the previous cycle.
2022-04-30 02:00:09 +02:00
Robbert van der Helm
ddc28eef5e Clarify the VST3 output .take(num_outputs) 2022-04-30 01:52:53 +02:00
Robbert van der Helm
e35886c216 Move window function handling out of StftHelper
And apply the window function only once at the end of the process
function for the plugins that used it.
2022-04-28 17:20:39 +02:00
Robbert van der Helm
4fb67a720b Add a todo for fallback DPI scale detection 2022-04-27 19:26:39 +02:00
Robbert van der Helm
b89b4dfbb2 Add a .previous_value() method to the smoothers 2022-04-27 17:43:40 +02:00
Robbert van der Helm
6185909ddf Also safeguard against zero channel counts in CLAP 2022-04-27 17:06:19 +02:00
Robbert van der Helm
21e28fdca2 Handle hosts providing zero output channels 2022-04-27 16:52:30 +02:00
Robbert van der Helm
afde489bbf Add a fixme for REAPER's broken bypass handling 2022-04-27 16:45:34 +02:00
Robbert van der Helm
76e7f67f3a Add missing backtick 2022-04-27 15:16:52 +02:00
Robbert van der Helm
bb3175f68e Return -> Returns at the start of a docstring
The imperative tense doesn't make any sense when the function is a mere
getter and doesn't actually perform a nontrivial task.
2022-04-26 19:39:51 +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
dedbfebb71 Add todos about potential duplicate reset calls 2022-04-26 14:15:57 +02:00
Robbert van der Helm
4779991edf Also move reset() call to process start for CLAP
So the behavior is consistent for CLAP and VST3.
2022-04-26 14:14:12 +02:00
Robbert van der Helm
4ac0c40812 Reset last processing status for CLAP on start
Just like we're doing in the VST3 wrapper.
2022-04-26 14:10:00 +02:00
Robbert van der Helm
582ab50e58 Move VST3 Plugin::reset() call to set_processing()
This lets the host reset buffers the intended way.
2022-04-26 13:42:32 +02:00
Robbert van der Helm
f855a60c57 Fix rustdoc link in Plugin::reset() 2022-04-26 13:37:53 +02:00
Robbert van der Helm
7c5aa9069b Simplify lifetime bounds 2022-04-24 20:03:30 +02:00
Robbert van der Helm
04c5780e4a Implement state saving/loading for standalone 2022-04-24 19:46:51 +02:00
Robbert van der Helm
566095802c Decouple state functions from CLAP/VST3 wrapper
This should also be usable with a plain `params` object, since we don't
need hashes in the standalone wrapper.
2022-04-24 19:46:07 +02:00
Robbert van der Helm
9acd312768 Parmaeters are not real, they can't hurt you 2022-04-24 19:46:07 +02:00
Robbert van der Helm
8714310468 Silence dead code warnings in standalone wrapper
These were kept in as a reminder, but since standalone has been merged
into master these should be silenced as there are relevant TODOs for the
missing features in place already.
2022-04-24 18:18:11 +02:00
Robbert van der Helm
084d34fe5c Set up the logger for the standalone target 2022-04-24 15:50:17 +02:00
Robbert van der Helm
60593e7cc3 Close standalone when process returns an error
For this to work the resize mutex has been replaced with a channel for
sending tasks.
2022-04-24 15:48:42 +02:00
Robbert van der Helm
5d481e59f1 Call the process function in the standalone target
Although there's no functional backend yet.
2022-04-24 15:48:42 +02:00
Robbert van der Helm
ae24ed4c4d Move standalone audio thread to a function 2022-04-24 15:48:42 +02:00
Robbert van der Helm
19d4b73039 Implement parameter changes for standalone target
Changing parameters from an editor now works just like in the other
targets.
2022-04-24 15:48:42 +02:00
Robbert van der Helm
9e40ec11fe Print a message about IO being unimplemented 2022-04-24 15:48:42 +02:00
Robbert van der Helm
8cb763246b Add an audio thread for the standalone target 2022-04-24 15:48:42 +02:00
Robbert van der Helm
81e56dd018 Abstract the IO backend for the standalone wrapper 2022-04-24 15:48:42 +02:00
Robbert van der Helm
8ba60eeab9 Implement resizing for standalone editor window 2022-04-24 15:48:42 +02:00