1
0
Fork 0
Commit graph

522 commits

Author SHA1 Message Date
Robbert van der Helm a1cb362dda Fix subtract with overflow in Hz->kHz formatter
When supplying a short input value without a unit.
2022-03-21 15:00:03 +01:00
Robbert van der Helm 2911efaa79 Don't treat invalid inputs as center panning 2022-03-21 14:56:50 +01:00
Robbert van der Helm b516e5341e Fix the f32_hz_then_khz formatter 2022-03-21 14:47:30 +01:00
Robbert van der Helm 0f60ce9609 Clean up i32 note formatters 2022-03-21 14:40:17 +01:00
Robbert van der Helm e90bfecc0b Add a matching from_f32_hz_then_khz function 2022-03-21 14:28:28 +01:00
Robbert van der Helm 44aa3dd564 Clean up the f32_hz_then_khz formatter 2022-03-21 14:17:16 +01:00
Robbert van der Helm 2af93436a6 Clean up panning formatters 2022-03-21 14:14:24 +01:00
Robbert van der Helm 8344645523 Rename lin_to_db formatter to gain_to_db
And use the existing functions from the util module.
2022-03-21 13:59:31 +01:00
Robbert van der Helm 71dba0fbed
Merge pull request #5 from Fredemus/feature/more-formatters
a few more formatters
2022-03-21 13:54:32 +01:00
Robbert van der Helm 30b913e159 Don't use direct Param initialization in exmaples
Since you now also need to specify the default field you probably
shouldn't use this anymore.
2022-03-21 13:29:03 +01:00
Robbert van der Helm 40d99a5cb3 Automatically implement Param::set_normalized_value() 2022-03-21 13:28:59 +01:00
Robbert van der Helm 021d175264 Use a default implementation for Param::normalized_value() 2022-03-21 13:28:59 +01:00
Robbert van der Helm f084f14095 Refactor GUIs to use param's own default value
This removes the need to pass a lot of these `ParamSetter`s and
`GuiContext`s around. We also don't need explicit events to reset a
parameter anymore since you can get this information from the parameter
itself.
2022-03-21 13:11:36 +01:00
Robbert van der Helm a844051054 Store defaults on Param objects
And add methods for querying them.
2022-03-21 12:49:59 +01:00
Fredemus 8bbcb1a093 add panning formatter 2022-03-20 21:37:50 +01:00
Fredemus 41db682c20 i32_note_formatter + from_f32_lin_to_db 2022-03-20 21:15:17 +01:00
Fredemus f0ee2739f1 a few more formatters 2022-03-20 16:08:43 +01:00
Robbert van der Helm c22e522629 Greatly simplify Params trait
This now is a single vector with all of the information in the correct
order instead of the hashmaps and a vector. This avoids deduplication,
and it especially makes manual `Params` implementations a lot more
convenient since you can't mess up with mismatching IDs between the
methods.

To accommodate exactly this, the persistent fields methods also have a
default implementation and the trait has been marked as `unsafe` since
it's the programmer's responsibility to make sure these `ParamPtr`s will
remain valid.
2022-03-20 13:05:02 +01:00
Robbert van der Helm 8371f767ce Fix typo in debug assert macros 2022-03-20 12:44:29 +01:00
Robbert van der Helm a6f4202ac5 Add a todo for combining the Params methods 2022-03-20 02:44:13 +01:00
Robbert van der Helm b9d79771cc Use String instead of &'static str in Params
This may hurt performance in generic UIs a bit, but it will allow you to
programatically generate custom Params implementations for repeated
Parameters structs.
2022-03-20 02:14:18 +01:00
Robbert van der Helm 4c5d61057e Fix typos 2022-03-19 19:24:08 +01:00
Robbert van der Helm a6e35cfaa9 Add methods for normalized parameter stepping
This is mostly useful for GUIs.
2022-03-19 16:12:56 +01:00
Robbert van der Helm 95370667d7 Rearrange the Param methods 2022-03-19 16:09:31 +01:00
Robbert van der Helm d9330628c0 Add stepping functions to Param
This can be useful for GUI widgets.
2022-03-19 16:06:20 +01:00
Robbert van der Helm 64950055ea Implement most of the iced ParamSlider for Vizia 2022-03-19 01:17:13 +01:00
Robbert van der Helm f43d209a60 Add a .plain_value() to ParamPtr
Useful for snapping when you don't have access to the concrete parameter
type.
2022-03-18 18:10:22 +01:00
Robbert van der Helm fb60f3a28b Remove unused Param::set_from_string
This method is a bit more efficient than converting the string to a
normalized value and then setting the parameter using that but it's not
used right now and it adds a form of redundancy.
2022-03-18 17:53:38 +01:00
Robbert van der Helm 8077f10c27 Replace index based for loop
This initially did a linear search within the loop so iterating over the
collection wasn't possible. Now we need to use a hashmap anyways, so
this can be simplified again.
2022-03-17 23:00:15 +01:00
Robbert van der Helm edb492932f Fix parent finding in VST3 unit transformation
Oops.
2022-03-16 22:01:47 +01:00
Robbert van der Helm d9e943a88d Filter out the root group 2022-03-16 22:00:31 +01:00
Robbert van der Helm 8d6a7ae861 Add Debug implementations for ParamUnits 2022-03-16 21:55:59 +01:00
Robbert van der Helm 6e31e18b88 Add parameter groups to VST3 wrapper using units
This was such a mess to implement, and none of the hosts I have
installed even support it.
2022-03-16 20:40:11 +01:00
Robbert van der Helm 2bf32aa771 Add the ParamUnits to the VST3 wrapper 2022-03-16 20:26:02 +01:00
Robbert van der Helm ea30ba7ffb Initialize parameter fields earlier
This seems a bit nicer than initializing them on the struct as empty and
then mutating the struct.
2022-03-16 20:26:02 +01:00
Robbert van der Helm 63a7aadb75 Add an abstraction around VST3's unit shenanigans
And the ability to convert group paths to them.
2022-03-16 20:26:02 +01:00
Robbert van der Helm bbf6e009d1 Add a todo for VST3 parameter units
Implementing this is going to be a pain.
2022-03-16 17:18:25 +01:00
Robbert van der Helm f18c92b3b4 Support parameter groups for CLAP 2022-03-16 17:15:33 +01:00
Robbert van der Helm 581e5911fc Add parameter groups with #[nested = "Group Name"] 2022-03-16 17:04:38 +01:00
Robbert van der Helm 6628baf47e Split up the nih_plug_derive crate into modules 2022-03-16 15:53:35 +01:00
Robbert van der Helm ce85874340 Implement the CLAP tail extension 2022-03-15 22:28:26 +01:00
Robbert van der Helm 1e9fdeddfb Don't report supporting MIDI and expression events
Since currently these would just get thrown out anyways.
2022-03-15 22:18:37 +01:00
Robbert van der Helm 69e4bc9156 Implement the CLAP note ports extension 2022-03-15 22:16:50 +01:00
Robbert van der Helm f53f6829f0 Implement the CLAP event filter extension 2022-03-15 22:08:29 +01:00
Robbert van der Helm b95c833352 Don't handle CLAP modulation events
This would require special handling. Modulation acts as an absolute
offset for the current parameter value, not as a relative adjustment to
that value.
2022-03-15 21:26:11 +01:00
Robbert van der Helm 9232f8a51e Derive Debug and Clone for CLAP output events 2022-03-15 18:53:35 +01:00
Robbert van der Helm ccc8088218 Update for CLAP 0.23 2022-03-15 18:47:29 +01:00
Robbert van der Helm 6fe967f65e Implement parameter change notifications for CLAP 2022-03-13 18:30:21 +01:00
Robbert van der Helm e1f0f619ed Implement parameter change notifications for VST3 2022-03-13 18:28:56 +01:00
Robbert van der Helm 1fa2b5f74f Add an Editor callback to notify parameter changes
This will be needed to allow iced to be reactive in our model.
2022-03-13 18:03:23 +01:00
Andrew Palm 4fbf7e0ed3 Fix compilation errors when SSE not available
Looks like these were missed in 7d3beb174e and d878fd692a.
2022-03-11 09:04:57 -05:00
Robbert van der Helm 87e447ab25 Mention potential race condition in CLAP events 2022-03-11 14:33:43 +01:00
Robbert van der Helm f98ba70764 Comment on the CLAP gesture handling 2022-03-11 13:27:23 +01:00
Robbert van der Helm 7339e8e956 Include CLAP_EVENT_SHOULD_RECORD for gestures
Apparently this is what you're supposed to do.
2022-03-11 13:03:26 +01:00
Robbert van der Helm c1ca97c78c Fix false positive warning in CLAP GUI parameters 2022-03-11 00:49:34 +01:00
Robbert van der Helm 246c319bbf Implement automation gestures for CLAP 2022-03-11 00:14:39 +01:00
Robbert van der Helm 5d3527c5c2 Also implement sample accurate automation for VST3 2022-03-10 23:39:58 +01:00
Robbert van der Helm b41b4ef725 Implement sample accurate automation for CLAP 2022-03-10 20:14:42 +01:00
Robbert van der Helm 26c503d862 Remove accidentally copied tests 2022-03-10 19:38:39 +01:00
Robbert van der Helm 36d54edae7 Add a constant for sample accurate automation 2022-03-10 18:57:17 +01:00
Robbert van der Helm 02622e6e4f Split up the buffer module 2022-03-10 18:15:55 +01:00
Robbert van der Helm 3c5aff1ec6 Rename Buffer::iter_mut() to iter_samples()
Since there's also an iter_blocks(). This is consistent with the new
Block method.
2022-03-09 20:11:37 +01:00
Robbert van der Helm fcd0522a33 Mark the remaining buffer iterators as inline 2022-03-09 19:45:42 +01:00
Robbert van der Helm 5041f959b7 Add a per-sample per-channel iterator for blocks 2022-03-09 19:27:21 +01:00
Robbert van der Helm dfb2407698 Rename the Channels struct to ChannelSamples
To make it slightly more obvious what it's iterating over.
2022-03-09 19:19:32 +01:00
Robbert van der Helm 2811ab2996 Mark more of the buffer functions as inline 2022-03-09 15:02:38 +01:00
Robbert van der Helm 1a7ad0a7a0 Trim whitespace and units when parsing parameters 2022-03-08 18:53:35 +01:00
Robbert van der Helm c3767831cd Mention unit handing in value to string 2022-03-08 18:47:28 +01:00
Robbert van der Helm 2c6f65a342 Add formatters for percentages 2022-03-08 18:45:18 +01:00
Robbert van der Helm 24f3593de0 Move order conversion to formatters module 2022-03-08 18:31:20 +01:00
Robbert van der Helm b9412657c1 Fix allocation error from thread locals 2022-03-08 14:07:29 +01:00
Robbert van der Helm 37e1b9523b Optionally disallow allocations in reset function 2022-03-08 00:46:17 +01:00
Robbert van der Helm 70d3b5d557 Add a reset function to the plugin trait
This is used as part of CLAP 0.19/0.20, and we can just always call it
after the initialize function to stay consistent for VST3 plugins.
2022-03-08 00:35:55 +01:00
Robbert van der Helm 10ced981bd Remove todos about fixing skewed discrete ranges
Because those have been removed.
2022-03-08 00:27:25 +01:00
Robbert van der Helm 8ee380864c Update for CLAP 0.20 2022-03-08 00:21:51 +01:00
Robbert van der Helm 329da782b5 Fix with_string_to_value() after param refactor 2022-03-07 21:00:39 +01:00
Robbert van der Helm 17f3c6cc6c Add an in-place version of the Hann function 2022-03-07 20:52:37 +01:00
Robbert van der Helm f05d209169 Add an analysis-only function to StftHelper 2022-03-07 01:14:36 +01:00
Robbert van der Helm b06e67bde7 Supper non-buffer and non-sidechain inputs in STFT 2022-03-06 22:26:37 +01:00
Robbert van der Helm e61a42e96f Revert windowing change from 93ab08e
This is actually needed to prevent spectral leakage from IDTFs with
small window sizes.
2022-03-06 19:17:42 +01:00
Robbert van der Helm 93ab08e5d5 Remove post-IDFT windowing in STFT helper
There's no reason to.
2022-03-06 19:08:04 +01:00
Robbert van der Helm 7c8da39159 Fix position increment in STFT helper
This was what was causing the spectral leakage. It already sounded like
parts of the buffer were being cleared too early or old parts were being
reused, but I guess that makes sense now...
2022-03-06 18:45:34 +01:00
Robbert van der Helm 82e74a7c53 Redefine the Hann window as a cosine
This fixes some of the spectral leakage.
2022-03-06 18:38:50 +01:00
Robbert van der Helm 295e5493ec Add post-IDFT windowing to StftHelper 2022-03-06 17:50:58 +01:00
Robbert van der Helm c81ec15228 Fix comment on window scale remapping 2022-03-06 15:46:59 +01:00
Robbert van der Helm 07cf10e81d Add more todos to the STFT helper 2022-03-06 15:45:19 +01:00
Robbert van der Helm af4db7be53 Fix fallback permit_alloc() implementation 2022-03-06 15:42:32 +01:00
Robbert van der Helm 8e2fd66573 Process sidechain inputs in STFT helper 2022-03-06 15:36:50 +01:00
Robbert van der Helm 2343485c1c Don't do gain compensation in STFT helper
You'll likely want to add some scaling yourself anyways, so this would
just be a wasted operation since the scaling also depends on your window
function.
2022-03-06 15:36:24 +01:00
Robbert van der Helm f7b3bd9198 Add gain compensation to the STFT helper 2022-03-06 15:28:35 +01:00
Robbert van der Helm 0fa394247f Add a permit_alloc function
Since assert_no_alloc also hides panic messages which can make debugging
more difficult:
https://github.com/Windfisch/rust-assert-no-alloc/issues/4
2022-03-06 15:11:42 +01:00
Robbert van der Helm 592a908132 Fix samples until next window calculation 2022-03-06 15:11:42 +01:00
Robbert van der Helm bf215ef88e Add a Hann function for the STFT helper 2022-03-06 14:41:40 +01:00
Robbert van der Helm 3c62670164 Add proper overlap-add to the StftHelper
Doesn't make much sense without it.
2022-03-06 14:33:30 +01:00
Robbert van der Helm 963696cbff Warn on invalid ranges with logarithmic smoothing 2022-03-06 12:27:52 +01:00
Robbert van der Helm 8355c38b9a Add some TODOs to the STFT helper 2022-03-06 02:15:14 +01:00
Robbert van der Helm 4ff2e65b5c Add a note regarding the Buffer lifetime 2022-03-06 02:10:33 +01:00
Robbert van der Helm b2600f4b93 Add a helper for buffering audio for STFTs 2022-03-06 02:07:44 +01:00
Robbert van der Helm e5bac1e220 Add a channel count function to Buffer 2022-03-06 01:21:00 +01:00
Robbert van der Helm 54881dfa15 Add a len() function to Buffer 2022-03-06 01:12:28 +01:00