Move standalone WrapperConfig to its own module
This commit is contained in:
parent
49e683e396
commit
d97831649e
4 changed files with 43 additions and 40 deletions
|
@ -3,11 +3,13 @@
|
||||||
|
|
||||||
use clap::{FromArgMatches, IntoApp};
|
use clap::{FromArgMatches, IntoApp};
|
||||||
|
|
||||||
use self::wrapper::{Wrapper, WrapperConfig, WrapperError};
|
use self::config::WrapperConfig;
|
||||||
|
use self::wrapper::{Wrapper, WrapperError};
|
||||||
use super::util::setup_logger;
|
use super::util::setup_logger;
|
||||||
use crate::plugin::Plugin;
|
use crate::plugin::Plugin;
|
||||||
|
|
||||||
mod backend;
|
mod backend;
|
||||||
|
mod config;
|
||||||
mod context;
|
mod context;
|
||||||
mod wrapper;
|
mod wrapper;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ use std::time::{Duration, Instant};
|
||||||
|
|
||||||
use crate::buffer::Buffer;
|
use crate::buffer::Buffer;
|
||||||
|
|
||||||
use super::wrapper::WrapperConfig;
|
use super::config::WrapperConfig;
|
||||||
|
|
||||||
/// An audio+MIDI backend for the standalone wrapper.
|
/// An audio+MIDI backend for the standalone wrapper.
|
||||||
pub trait Backend: 'static + Send + Sync {
|
pub trait Backend: 'static + Send + Sync {
|
||||||
|
|
38
src/wrapper/standalone/config.rs
Normal file
38
src/wrapper/standalone/config.rs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
use clap::Parser;
|
||||||
|
|
||||||
|
/// Configuration for a standalone plugin that would normally be provided by the DAW.
|
||||||
|
#[derive(Debug, Clone, Parser)]
|
||||||
|
#[clap(about = None, long_about = None)]
|
||||||
|
pub struct WrapperConfig {
|
||||||
|
/// The number of input channels.
|
||||||
|
#[clap(value_parser, short = 'i', long, default_value = "2")]
|
||||||
|
pub input_channels: u32,
|
||||||
|
/// The number of output channels.
|
||||||
|
#[clap(value_parser, short = 'o', long, default_value = "2")]
|
||||||
|
pub output_channels: u32,
|
||||||
|
/// The audio backend's sample rate.
|
||||||
|
#[clap(value_parser, short = 'r', long, default_value = "44100")]
|
||||||
|
pub sample_rate: f32,
|
||||||
|
/// The audio backend's period size.
|
||||||
|
#[clap(value_parser, short = 'p', long, default_value = "512")]
|
||||||
|
pub period_size: u32,
|
||||||
|
|
||||||
|
/// The editor's DPI scaling factor.
|
||||||
|
///
|
||||||
|
/// This option is ignored on macOS.
|
||||||
|
//
|
||||||
|
// Currently baseview has no way to report this to us, so we'll expose it as a command line
|
||||||
|
// option instead.
|
||||||
|
#[clap(value_parser, long, default_value = "1.0")]
|
||||||
|
pub dpi_scale: f32,
|
||||||
|
|
||||||
|
/// The transport's tempo.
|
||||||
|
#[clap(value_parser, long, default_value = "120")]
|
||||||
|
pub tempo: f32,
|
||||||
|
/// The time signature's numerator.
|
||||||
|
#[clap(value_parser, long, default_value = "4")]
|
||||||
|
pub timesig_num: u32,
|
||||||
|
/// The time signature's denominator.
|
||||||
|
#[clap(value_parser, long, default_value = "4")]
|
||||||
|
pub timesig_denom: u32,
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
use atomic_refcell::AtomicRefCell;
|
use atomic_refcell::AtomicRefCell;
|
||||||
use baseview::{EventStatus, Window, WindowHandler, WindowOpenOptions};
|
use baseview::{EventStatus, Window, WindowHandler, WindowOpenOptions};
|
||||||
use clap::Parser;
|
|
||||||
use crossbeam::channel;
|
use crossbeam::channel;
|
||||||
use crossbeam::queue::ArrayQueue;
|
use crossbeam::queue::ArrayQueue;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
|
@ -12,6 +11,7 @@ use std::sync::Arc;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
use super::backend::Backend;
|
use super::backend::Backend;
|
||||||
|
use super::config::WrapperConfig;
|
||||||
use super::context::{WrapperGuiContext, WrapperInitContext, WrapperProcessContext};
|
use super::context::{WrapperGuiContext, WrapperInitContext, WrapperProcessContext};
|
||||||
use crate::context::Transport;
|
use crate::context::Transport;
|
||||||
use crate::param::internals::{ParamPtr, Params};
|
use crate::param::internals::{ParamPtr, Params};
|
||||||
|
@ -27,43 +27,6 @@ use crate::wrapper::state::{self, PluginState};
|
||||||
/// than this many parameters at a time will cause changes to get lost.
|
/// than this many parameters at a time will cause changes to get lost.
|
||||||
const EVENT_QUEUE_CAPACITY: usize = 2048;
|
const EVENT_QUEUE_CAPACITY: usize = 2048;
|
||||||
|
|
||||||
/// Configuration for a standalone plugin that would normally be provided by the DAW.
|
|
||||||
#[derive(Debug, Clone, Parser)]
|
|
||||||
#[clap(about = None, long_about = None)]
|
|
||||||
pub struct WrapperConfig {
|
|
||||||
/// The number of input channels.
|
|
||||||
#[clap(value_parser, short = 'i', long, default_value = "2")]
|
|
||||||
pub input_channels: u32,
|
|
||||||
/// The number of output channels.
|
|
||||||
#[clap(value_parser, short = 'o', long, default_value = "2")]
|
|
||||||
pub output_channels: u32,
|
|
||||||
/// The audio backend's sample rate.
|
|
||||||
#[clap(value_parser, short = 'r', long, default_value = "44100")]
|
|
||||||
pub sample_rate: f32,
|
|
||||||
/// The audio backend's period size.
|
|
||||||
#[clap(value_parser, short = 'p', long, default_value = "512")]
|
|
||||||
pub period_size: u32,
|
|
||||||
|
|
||||||
/// The editor's DPI scaling factor.
|
|
||||||
///
|
|
||||||
/// This option is ignored on macOS.
|
|
||||||
//
|
|
||||||
// Currently baseview has no way to report this to us, so we'll expose it as a command line
|
|
||||||
// option instead.
|
|
||||||
#[clap(value_parser, long, default_value = "1.0")]
|
|
||||||
pub dpi_scale: f32,
|
|
||||||
|
|
||||||
/// The transport's tempo.
|
|
||||||
#[clap(value_parser, long, default_value = "120")]
|
|
||||||
pub tempo: f32,
|
|
||||||
/// The time signature's numerator.
|
|
||||||
#[clap(value_parser, long, default_value = "4")]
|
|
||||||
pub timesig_num: u32,
|
|
||||||
/// The time signature's denominator.
|
|
||||||
#[clap(value_parser, long, default_value = "4")]
|
|
||||||
pub timesig_denom: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Wrapper<P: Plugin, B: Backend> {
|
pub struct Wrapper<P: Plugin, B: Backend> {
|
||||||
backend: AtomicRefCell<B>,
|
backend: AtomicRefCell<B>,
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue