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.
This commit is contained in:
parent
40d99a5cb3
commit
30b913e159
|
@ -1,20 +1,23 @@
|
||||||
use nih_plug::prelude::*;
|
use nih_plug::prelude::*;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
struct Gain {
|
struct Gain {
|
||||||
params: Pin<Box<GainParams>>,
|
params: Pin<Box<GainParams>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The [`Params`] derive macro gathers all of the information needed for the wrapepr to know about
|
||||||
|
/// the plugin's parameters, persistent serializable fields, and nested parameter groups. You can
|
||||||
|
/// aslo easily implement [`Params`] by hand if you want to, for instance, have multiple instances
|
||||||
|
/// of a parmaeters struct for multiple identical oscillators/filters/envelopes.
|
||||||
#[derive(Params)]
|
#[derive(Params)]
|
||||||
struct GainParams {
|
struct GainParams {
|
||||||
|
/// The parameter's ID is used to identify the parameter in the wrappred plugin API. As long as
|
||||||
|
/// these IDs remain constant, you can rename and reorder these fields as you wish. The
|
||||||
|
/// parameters are exposed to the host in the same order thye were defined in.
|
||||||
#[id = "gain"]
|
#[id = "gain"]
|
||||||
pub gain: FloatParam,
|
pub gain: FloatParam,
|
||||||
|
|
||||||
#[id = "stable"]
|
|
||||||
pub but_field_names_can_change: BoolParam,
|
|
||||||
|
|
||||||
/// This field isn't used in this exampleq, but anything written to the vector would be restored
|
/// This field isn't used in this exampleq, but anything written to the vector would be restored
|
||||||
/// together with a preset/state file saved for this plugin. This can be useful for storign
|
/// together with a preset/state file saved for this plugin. This can be useful for storign
|
||||||
/// things like sample data.
|
/// things like sample data.
|
||||||
|
@ -53,37 +56,20 @@ impl Default for Gain {
|
||||||
impl Default for GainParams {
|
impl Default for GainParams {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
// There are three ways to specify parameters:
|
gain: FloatParam::new(
|
||||||
//
|
"Gain",
|
||||||
// ...either manually specify all fields:
|
0.0,
|
||||||
gain: FloatParam {
|
FloatRange::Linear {
|
||||||
value: 0.0,
|
|
||||||
default: 0.0,
|
|
||||||
smoothed: Smoother::new(SmoothingStyle::Linear(50.0)),
|
|
||||||
value_changed: None,
|
|
||||||
range: FloatRange::Linear {
|
|
||||||
min: -30.0,
|
min: -30.0,
|
||||||
max: 30.0,
|
max: 30.0,
|
||||||
},
|
},
|
||||||
step_size: Some(0.01),
|
)
|
||||||
name: "Gain",
|
.with_smoother(SmoothingStyle::Linear(50.0))
|
||||||
unit: " dB",
|
.with_step_size(0.01)
|
||||||
|
.with_unit(" dB")
|
||||||
// This is actually redundant, because a step size of two decimal places already
|
// This is actually redundant, because a step size of two decimal places already
|
||||||
// causes the parameter to shown rounded
|
// causes the parameter to shown rounded
|
||||||
value_to_string: Some(formatters::f32_rounded(2)),
|
.with_value_to_string(formatters::f32_rounded(2)),
|
||||||
string_to_value: None,
|
|
||||||
// ...or specify the fields you want to initialize directly and leave the other
|
|
||||||
// fields at their defaults:
|
|
||||||
// // ..Default::default(),
|
|
||||||
},
|
|
||||||
// ...or use the builder interface:
|
|
||||||
but_field_names_can_change: BoolParam::new("Important value", false).with_callback(
|
|
||||||
Arc::new(|_new_value: bool| {
|
|
||||||
// If, for instance, updating this parameter would require other parts of the
|
|
||||||
// plugin's internal state to be updated other values to also be updated, then
|
|
||||||
// you can use this callback to for instance modify an atomic in the plugin.
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
// Persisted fields can be intialized like any other fields, and they'll keep their when
|
// Persisted fields can be intialized like any other fields, and they'll keep their when
|
||||||
// restoring the plugin's state.
|
// restoring the plugin's state.
|
||||||
random_data: RwLock::new(Vec::new()),
|
random_data: RwLock::new(Vec::new()),
|
||||||
|
|
|
@ -10,9 +10,6 @@ use super::Param;
|
||||||
|
|
||||||
/// A floating point parameter that's stored unnormalized. The range is used for the normalization
|
/// A floating point parameter that's stored unnormalized. The range is used for the normalization
|
||||||
/// process.
|
/// process.
|
||||||
///
|
|
||||||
/// You can either initialize the struct directly, using `..Default::default()` to fill in the
|
|
||||||
/// unused fields, or you can use the builder interface with [`FloatParam::new()`].
|
|
||||||
//
|
//
|
||||||
// XXX: To keep the API simple and to allow the optimizer to do its thing, the values are stored as
|
// XXX: To keep the API simple and to allow the optimizer to do its thing, the values are stored as
|
||||||
// plain primitive values that are modified through the `*mut` pointers from the plugin's
|
// plain primitive values that are modified through the `*mut` pointers from the plugin's
|
||||||
|
|
|
@ -10,9 +10,6 @@ use super::Param;
|
||||||
|
|
||||||
/// A discrete integer parameter that's stored unnormalized. The range is used for the normalization
|
/// A discrete integer parameter that's stored unnormalized. The range is used for the normalization
|
||||||
/// process.
|
/// process.
|
||||||
///
|
|
||||||
/// You can either initialize the struct directly, using `..Default::default()` to fill in the
|
|
||||||
/// unused fields, or you can use the builder interface with [`IntParam::new()`].
|
|
||||||
//
|
//
|
||||||
// XXX: To keep the API simple and to allow the optimizer to do its thing, the values are stored as
|
// XXX: To keep the API simple and to allow the optimizer to do its thing, the values are stored as
|
||||||
// plain primitive values that are modified through the `*mut` pointers from the plugin's
|
// plain primitive values that are modified through the `*mut` pointers from the plugin's
|
||||||
|
|
Loading…
Reference in a new issue