1
0
Fork 0
Commit graph

1087 commits

Author SHA1 Message Date
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
Robbert van der Helm
6c0df7ec39 Fix typo in pos_seconds documentation 2022-11-03 03:08:28 +01:00
Robbert van der Helm
456655b269 Use the clap_plugin::plugin_data field
Instead of relying on the struct layout and doing raw pointer casts. We
still need to do this for the CLAP plugin factory though.
2022-10-30 14:18:18 +01:00
Robbert van der Helm
36bf46f569 Fix setProcessing() in Ardour when setting latency 2022-10-25 17:47:36 +02:00
Robbert van der Helm
8b47f90dd7 Fix setActive() in Ardour when setting latency 2022-10-25 17:38:51 +02:00
Robbert van der Helm
435fcd8106 Fix CLAP modulation
This was a regression introduced in
c566888fa3.
2022-10-24 23:56:49 +02:00
Robbert van der Helm
ba9e9253f2 Clean up Plugin trait doc comment 2022-10-23 16:33:20 +02:00
Robbert van der Helm
f42b2d55f9 Clarify Plugin trait background task docs 2022-10-23 16:32:15 +02:00
Robbert van der Helm
3032300bcf Clarify task scheduling doc comments 2022-10-23 16:29:30 +02:00
Robbert van der Helm
0dd3bfe4e7 Allow running tasks on a dedicated thread
Independent of the GUI thread, which is also still an option. This is
useful for long running IO jobs that might otherwise block the GUI for
long enough to be noticeable.
2022-10-23 16:23:20 +02:00
Robbert van der Helm
028aeed18e Add a schedule_background() EventLoop method 2022-10-23 16:19:49 +02:00
Robbert van der Helm
520eba71ca Add a simple background thread task runner
This can be used by the Windows event loop, the future macOS event loop,
and the CLAP event loop.
2022-10-23 16:14:35 +02:00
Robbert van der Helm
dbb97f0534 Use channels for Windows event loop
Instead of an `ArrayQueue`. Since this doesn't need to both send and
receive on the same object.
2022-10-23 15:52:14 +02:00
Robbert van der Helm
31cda78201 Rename do_maybe_async() to schedule_gui() 2022-10-23 15:48:27 +02:00
Robbert van der Helm
4524719128 Add an is_gui_thread flag to MainThreadExecutor
We'll also use the EventLoop for running background tasks completely
decoupled from the GUI.
2022-10-23 15:48:27 +02:00
Robbert van der Helm
967426453a Clean up EventLoop API
By taking an `Arc<T>` instead of a `Weak<T>`. The `Weak` is only needed
for the background threads.
2022-10-23 15:48:27 +02:00
Robbert van der Helm
21bfb57023 Rename execute_async() to execute_gui()
We'll have another function that uses a dedicated background thread.
2022-10-23 13:58:33 +02:00
Robbert van der Helm
5d84800c0c Manually implement Clone for AsyncExecutor 2022-10-22 15:32:42 +02:00
Robbert van der Helm
63db56fa68 Make AsyncExecutor Send+Sync
Otherwise actually using this will be a bit difficult.
2022-10-22 15:10:34 +02:00
Robbert van der Helm
c980576102 Add an AsyncExecutor for editor GUIs
This is decoupled form `GuiContext` as that would require invasive
changes all over the place.
2022-10-22 15:05:39 +02:00