1
0
Fork 0
Commit graph

54 commits

Author SHA1 Message Date
Robbert van der Helm 6f1f7e66ab Rename CLAP main control page name 2023-04-22 17:00:49 +02:00
Robbert van der Helm 56c0a21989 Define remote controls for Crossover 2023-04-22 16:59:18 +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 952bb8c129 Mark Crossover struct as pub
For testing with standalones
2023-02-23 22:15:35 +01: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 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 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 dfeb8164ca Fix new Clippy lints 2023-01-06 16:13:01 +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 ab9adaf13e Update copyright notices for 2023
Happy new year!
2023-01-01 18:52:44 +01:00
Robbert van der Helm aa7d5195ce Grab plugin URLs from the Cargo.toml file 2022-11-11 20:26:39 +01:00
Robbert van der Helm a7e425581f Use CARGO_PKG_VERSION for plugin versions
Instead of duplicating this. Means that plugin versions only need to be
updated in the Cargo.toml file.
2022-11-11 03:15:05 +01:00
Robbert van der Helm e8002730a0 Fix clippy lints 2022-11-05 14:19:47 +01: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 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 1a706ea1c7 Rename DEFAULT_NUM_INPUTS and DEFAULT_NUM_OUTPUTS 2022-08-19 14:34:21 +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 e0fde8b891 Fix very important typo 2022-06-10 01:26:14 +02:00
Robbert van der Helm 014c183eab Allocate FirCrossover data on the heap
Windows has tiny stack sizes and it doesn't seem to like this.
2022-06-08 02:09:11 +02:00
Robbert van der Helm 5a6ec5595b Remove duplicate biquad module
This was moved elsewhere, but I guess another copy got saved and I
didn't notice.
2022-06-08 00:11:46 +02:00
Robbert van der Helm b389268168 Fix FFT FIR crossover latency calculation 2022-06-07 20:46:23 +02:00
Robbert van der Helm c23cf8e7ee Announce zero latency when switching back to IIR 2022-06-07 20:36:02 +02:00
Robbert van der Helm 469e47e8bf Drop experimental label on FIR crossover 2022-06-07 20:32:55 +02:00
Robbert van der Helm 5a51dce00d Rework FIR crossover to use FFT convolution 2022-06-07 20:32:27 +02:00
Robbert van der Helm 2c48ceb392 Refactor IIR crossover process loop, disable FIR
The FIR crossover will need to use FFT convolution, so it can't use the
same loop. Because of that we'll need to rework the FIR crossover to not
use channel SIMD and to work on channel slices instead.
2022-06-07 16:13:39 +02:00
Robbert van der Helm 7e3dfe904d Parameterize FirCoefficients over the kernel size 2022-06-07 15:32:29 +02:00
Robbert van der Helm b32cd27e8c Move FIR filters to their own module 2022-06-07 15:19:18 +02:00
Robbert van der Helm ac5796ee59 Move the Crossover biquad definition 2022-06-07 15:10:55 +02:00
Robbert van der Helm 4fad759d06 Mark the linear-phase LR24 crossover experimental
The low frequency performance is too poor at this filter size and the
DSP load impact is too high. This needs to be implemented using FFT
convolution instead.
2022-06-07 14:19:29 +02:00
Robbert van der Helm 50317baba2 Fix normalization in biquad->LP FIR conversion 2022-06-07 14:19:29 +02:00
Robbert van der Helm dd18c7a08a Fix classic off by one error 2022-06-07 14:19:29 +02:00
Robbert van der Helm 8d70f172c3 Add a linear-phase FIR LR24 crossover option 2022-06-07 14:19:29 +02:00
Robbert van der Helm 73919b6805 Add a process function for the FIR crossover 2022-06-07 14:19:29 +02:00
Robbert van der Helm 43980ec459 Add the function to design the FIR band filters
Using the previously added biquad->linear phase FIR conversion function.
2022-06-07 14:19:29 +02:00
Robbert van der Helm f4b3999916 Rename linear-phase low-pass FIR design function 2022-06-07 14:19:29 +02:00
Robbert van der Helm a1fe3b157b Simplify biquad -> linear-phase FIR conversion 2022-06-07 14:19:29 +02:00
Robbert van der Helm de13f8c42a Add part of an FIR crossover
This includes an algorithm that efficiently converts biquad coefficients
to a linear-phase FIR filter kernel.
2022-06-07 14:19:29 +02:00
Robbert van der Helm 78caa0f78d Move Q constant to the biquad module 2022-06-07 14:19:29 +02:00
Robbert van der Helm 06f5048b0b Add a crossover type parameter 2022-06-07 14:19:29 +02:00
Robbert van der Helm 694996dcf4 Move Crossover biquads to their own module 2022-06-07 14:19:29 +02:00
Robbert van der Helm 96fe176d53 Remove Crossover filter monotonicity check 2022-06-02 14:40:12 +02:00
Robbert van der Helm 330d6d1359 Fix phase response in the Crossover plugin
Didn't have time to do this, now I do. This nudges the phases from the
lower bands to match the higher bands, making the frequency response
magnitudes sum to unity again.
2022-06-02 14:30:48 +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 6996fdaed1 Update features names for CLAP 0.26 2022-06-02 00:52:13 +02:00
Robbert van der Helm c9332d332b Somewhat mitigate phasing in crossovers 2022-05-29 16:57:39 +02:00
Robbert van der Helm ebe2b24146 Add the actual crossovers to the Crossover plugin
That feeling when you write a whole bunch of garbage in one without
testing it go and it actually works.
2022-05-29 16:21:36 +02:00
Robbert van der Helm 33120ecfe7 Add biquad low- and high pass filters
We'll use these for LR24 crossovers.
2022-05-29 14:54:40 +02:00