1
0
Fork 0
Commit graph

906 commits

Author SHA1 Message Date
Robbert van der Helm 300e112ede Rename Block::len() to Block::samples()
For the same reason mentioned in the last commit.
2023-01-05 16:13:58 +01:00
Robbert van der Helm cb2824021b Fix buffer adapter size hints for zero channels
And the SamplesIter one was simply not correct when yielded by the block
iterator.
2023-01-05 16:12:09 +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 9e1a888b38 Store sample count in Buffer
This fixes the sample count not being correct for MIDI-only plugins.
2023-01-05 15:58:55 +01:00
Robbert van der Helm 19be530ba3 Rename Buffer::with_raw_vec to set_slices 2023-01-05 15:36:04 +01:00
Robbert van der Helm 11d9476a5f Use db_to_gain_fast() in plugins 2023-01-04 17:05:13 +01:00
Robbert van der Helm 3b57ebe895 Add test for fast decibel<->gain functions 2023-01-04 17:01:25 +01:00
Robbert van der Helm c55fb02982 Add faster decibel<->gain conversion functions 2023-01-04 16:58:28 +01:00
Robbert van der Helm 74a9e294b1 Make gain_to_db() branchless 2023-01-04 16:45:11 +01:00
Robbert van der Helm 069053ca50 Also defer latency change for CLAP plugins
In case a future host does the same thing Ardour does right now for VST3
plugins.
2022-12-28 01:34:42 +01:00
Robbert van der Helm 5cbef6ec03 Fix alloc failures in VST3 with many events
Or well, work around. We should use a different non-allocating sorting
implementation here. This only crept up in Ardour because they for some
reason send all parameter values after loading a VST3 plugin.
2022-12-28 01:30:26 +01:00
Robbert van der Helm fd28a95231 Defer set_latency_samples() in VST3 plugin init
The host might otherwise restart the plugin while the `Plugin::init()`
call is still active, resulting in a deadlock because the plugin mutex
is still locked. This was causing issues when loading state in Ardour7.
The new approach also removes the need for a previous hack added for
Ardour6.
2022-12-28 01:28:33 +01:00
Robbert van der Helm 46752fc7f0 Make the definition of buffer length more explicit
This is the standard definition, but apparently it's still confusing.
Resolves #47.
2022-12-23 20:34:57 +01:00
Robbert van der Helm 2747714640 Silence warning for standalone config on macOS 2022-12-02 19:42:51 +01:00
Robbert van der Helm ec34e54bfe Update dependencies, allow resizing on Win/macOS
This was implemented for Linux in March, but it should now also work on
Windows and macOS.
2022-12-01 20:21:56 +01:00
Robbert van der Helm 50fa1008c0 Allow assert_process_allocs+mingw-w64 in release
This causes the application to halt in debug builds, but it shouldn't be
an issue in release builds.
2022-12-01 20:18:30 +01:00
Robbert van der Helm 1d9e7e6256 Implement Debug for parameters 2022-11-26 12:58:32 +01:00
Robbert van der Helm 9a77bd2918 Remove old comment 2022-11-22 21:29:06 +01:00
Robbert van der Helm d9284ef0b7 Add debug assertion for custom feature namespaces 2022-11-22 21:19:17 +01:00
Robbert van der Helm 7c732e594c Document that custom features must be namespaced 2022-11-22 21:09:35 +01:00
Robbert van der Helm 26535a099d Seal the Params trait
This avoids situations like #41 where people try to implement the trait
only to find out that you simply can't.
2022-11-22 17:43:26 +01:00
Robbert van der Helm 753ca201a6 Support #[nested] prefixes/suffixes w/ #[persist]
This makes nested fields behave the same as nested parameters, allowing
multiple copies of a persistent field to exist.
2022-11-19 00:17:13 +01:00
Robbert van der Helm c947d6c232 Handle shaprs in s2v_i32_note_formatter() 2022-11-18 17:26:42 +01:00
Robbert van der Helm 230ed90745 Parse XXX Hz, C4 as XXX Hz
This can happen if the user edits the output of
`v2s_f32_hz_then_khz_with_note_name()`.
2022-11-18 17:12:52 +01:00
Robbert van der Helm 4dbc0c1a87 Mark the utils functions as inlnie
So the compiler can decide what to do with them.
2022-11-18 16:09:32 +01:00
Robbert van der Helm 6d0c1eebbe Move frequency to note number conversion to utils 2022-11-18 16:09:18 +01:00
Robbert van der Helm 6966d00dd7 Fix cents in s2v_f32_hz_then_khz()
The trimming was not done correctly, and cents were treated as partial
octaves.
2022-11-12 01:32:09 +01:00
Robbert van der Helm 79f5bd8659 Add a formatter for frequencies with note name
This is the same as the 'Hz then kHz' formatter but it also appends the
note name and optionally the number of cents.
2022-11-12 01:26:27 +01:00
Robbert van der Helm c3cd2fb0dd Fix v2s_i32_note_formatter() for negative numbers
Otherwise this would wrap around or panic in debug builds.
2022-11-12 01:25:33 +01:00
Robbert van der Helm 59456a2973 Remove 128 note MIDI limit in frequency parser
This is useful when the value->string function can go outside of the
standard 128 note range.
2022-11-12 01:25:33 +01:00
Robbert van der Helm 5330a7d938 Add a version of util::midi_note_to_freq for f32 2022-11-12 01:25:33 +01:00
Robbert van der Helm 761f0b0a80 Add cents support to s2v_f32_hz_then_khz() 2022-11-12 01:25:33 +01:00
Robbert van der Helm b93cd08dfa Default cpal backend to 48 kHz sample rate
This is probably a safer default for most regular computers.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 5b3c327e29 Handle -inf dB in gain<->decibel formatters 2022-11-11 03:15:05 +01:00
Robbert van der Helm e583b8e777 Add finer step sizes to parameters 2022-11-11 03:15:05 +01:00
Robbert van der Helm 8885713ea1 Take largest step out of 100 steps and step_size
For floating point ranges. This otherwise feels very janky.
2022-11-11 03:15:05 +01:00
Robbert van der Helm b2da26ecd7 Add prefix to plain_value() and normalized_value()
To make it clearer that these functions include monophonic modulation.
When creating GUI widgets, you should be using the unmodulated variants.
2022-11-11 03:15:05 +01:00
Robbert van der Helm 841ec96d2d Use Rust range notation for NoteEvent docs #42
Apparently `from x to y` is ambiguous, so we now use the Rust `x..y`
syntax instead.
2022-11-08 19:36:07 +01:00
Robbert van der Helm 4f16fa3998 Fix typos in NoteEvent documentation 2022-11-08 19:33:40 +01:00
Robbert van der Helm 4893479485 Clarify integer range conventions in docs
This resolves #42.
2022-11-07 22:47:17 +01:00
Robbert van der Helm 69f9880fe5 Use consistent real interval syntax in docs 2022-11-07 22:45:36 +01:00
Robbert van der Helm 5851bc5a27 Add missing ranges in note enum documentation 2022-11-07 22:45:22 +01:00
Robbert van der Helm 542b3052f2 Support running status MIDI events 2022-11-05 14:19:47 +01:00
Robbert van der Helm e8002730a0 Fix clippy lints 2022-11-05 14:19:47 +01:00
Robbert van der Helm 8f91ecf247 Silence bool_to_int_with_if clippy lint 2022-11-05 14:19:47 +01:00
Robbert van der Helm 6eccabb701 Allow basic CLAP MIDI msgs with MidiConfig::Basic
This is needed for Qtractor compatibility. Even though it always sends
notes as CLAP events, it requires the plugin to support both the CLAP
and the MIDI note event dialects. Otherwise it won't send any notes at
all. Feature, not a bug.
2022-11-05 14:19:47 +01:00
Robbert van der Helm f48b36f2a7 Add Persist implementations for Arc wrapped types 2022-11-05 14:19:32 +01:00
Robbert van der Helm a0ca80297b Add Persistent implementations for atomics 2022-11-05 14:19:32 +01:00
Robbert van der Helm 23f4fd6fc5 Rearrange persist module 2022-11-05 14:19:32 +01:00
Robbert van der Helm fc9e521a85 Fix potential VST3 parking_lot allocation failure
This can happen when the process function is called from a new thread or
when a new thread has been spawned.
2022-11-04 15:00:45 +01:00