Skip to main content

nord_format/formats/ns4/
fx.rs

1//! The Nord Stage 4 effects chain: one section's modulation, amp sim / EQ,
2//! compressor, delay and reverb, 52 bytes of it.
3//!
4//! Every section carries its own. A program holds six — the organ's, which its two
5//! layers share, plus one per piano and synth layer — and the preset banks carry
6//! theirs, so this one declaration is placed twelve times across the Stage 4
7//! formats.
8//!
9//! Values are raw, as everywhere in [the Stage 4 modules](super).
10
11use crate::components::{
12    CompressorResponse, DelayCharacter, EqBand, Frequency, Level, MorphTarget, Rate, Selector, Time,
13};
14#[nord_bits_derive::bitbody(52)]
15pub struct FxChain {
16    #[bits(0..=0)]
17    pub mod_1_enabled: bool,
18    #[bits(1..=1)]
19    pub mod_1_master_clock_enabled: bool,
20    #[bits(2..=8)]
21    pub mod_1_rate: Rate,
22    #[bits(9..=16)]
23    pub mod_1_rate_wheel: MorphTarget,
24    #[bits(17..=24)]
25    pub mod_1_rate_aftertouch: MorphTarget,
26    #[bits(25..=32)]
27    pub mod_1_rate_ctrl_pedal: MorphTarget,
28    #[bits(33..=39)]
29    pub mod_1_amount: Level,
30    #[bits(40..=47)]
31    pub mod_1_amount_wheel: MorphTarget,
32    #[bits(48..=55)]
33    pub mod_1_amount_aftertouch: MorphTarget,
34    #[bits(56..=63)]
35    pub mod_1_amount_ctrl_pedal: MorphTarget,
36    #[bits(64..=67)]
37    pub mod_1_mode: Selector<4>,
38    #[bits(68..=68)]
39    pub mod_2_enabled: bool,
40    #[bits(69..=75)]
41    pub mod_2_rate: Rate,
42    #[bits(76..=83)]
43    pub mod_2_rate_wheel: MorphTarget,
44    #[bits(84..=91)]
45    pub mod_2_rate_aftertouch: MorphTarget,
46    #[bits(92..=99)]
47    pub mod_2_rate_ctrl_pedal: MorphTarget,
48    #[bits(100..=106)]
49    pub mod_2_amount: Level,
50    #[bits(107..=114)]
51    pub mod_2_amount_wheel: MorphTarget,
52    #[bits(115..=122)]
53    pub mod_2_amount_aftertouch: MorphTarget,
54    #[bits(123..=130)]
55    pub mod_2_amount_ctrl_pedal: MorphTarget,
56    #[bits(131..=134)]
57    pub mod_2_mode: Selector<4>,
58    #[bits(135..=135)]
59    pub amp_sim_eq_enabled: bool,
60    #[bits(136..=142)]
61    pub amp_sim_eq_treb: EqBand,
62    #[bits(143..=149)]
63    pub amp_sim_eq_mid: EqBand,
64    #[bits(150..=156)]
65    pub amp_sim_eq_bass: EqBand,
66    #[bits(157..=163)]
67    pub amp_sim_eq_freq: Frequency,
68    #[bits(164..=171)]
69    pub amp_sim_eq_freq_wheel: MorphTarget,
70    #[bits(172..=179)]
71    pub amp_sim_eq_freq_aftertouch: MorphTarget,
72    #[bits(180..=187)]
73    pub amp_sim_eq_freq_ctrl_pedal: MorphTarget,
74    #[bits(188..=194)]
75    pub amp_sim_eq_drive: Level,
76    #[bits(195..=202)]
77    pub amp_sim_eq_drive_wheel: MorphTarget,
78    #[bits(203..=210)]
79    pub amp_sim_eq_drive_aftertouch: MorphTarget,
80    #[bits(211..=218)]
81    pub amp_sim_eq_drive_ctrl_pedal: MorphTarget,
82    #[bits(223..=223)]
83    pub comp_enabled: bool,
84    #[bits(224..=230)]
85    pub comp_amount: Level,
86    #[bits(231..=231)]
87    pub comp_response: CompressorResponse,
88    #[bits(232..=232)]
89    pub delay_enabled: bool,
90    #[bits(233..=233)]
91    pub delay_tempo_master_clock_enabled: bool,
92    #[bits(234..=240)]
93    pub delay_tempo: Time,
94    #[bits(248..=255)]
95    pub delay_tempo_wheel: MorphTarget,
96    #[bits(256..=263)]
97    pub delay_tempo_aftertouch: MorphTarget,
98    #[bits(264..=271)]
99    pub delay_tempo_ctrl_pedal: MorphTarget,
100    #[bits(293..=299)]
101    pub delay_mix: Level,
102    #[bits(300..=307)]
103    pub delay_mix_wheel: MorphTarget,
104    #[bits(308..=315)]
105    pub delay_mix_aftertouch: MorphTarget,
106    #[bits(316..=323)]
107    pub delay_mix_ctrl_pedal: MorphTarget,
108    #[bits(324..=324)]
109    pub delay_normal_analog: DelayCharacter,
110    #[bits(325..=325)]
111    pub delay_ping_pong_enabled: bool,
112    #[bits(326..=327)]
113    pub delay_filter_type: Selector<2>,
114    #[bits(328..=334)]
115    pub delay_feedback: Level,
116    #[bits(335..=342)]
117    pub delay_feedback_wheel: MorphTarget,
118    #[bits(343..=350)]
119    pub delay_feedback_aftertouch: MorphTarget,
120    #[bits(351..=358)]
121    pub delay_feedback_ctrl_pedal: MorphTarget,
122    #[bits(359..=362)]
123    pub delay_effects: Selector<4>,
124    #[bits(363..=363)]
125    pub reverb_enabled: bool,
126    #[bits(364..=370)]
127    pub reverb_amount: Level,
128    #[bits(371..=378)]
129    pub reverb_amount_wheel: MorphTarget,
130    #[bits(379..=386)]
131    pub reverb_amount_aftertouch: MorphTarget,
132    #[bits(387..=394)]
133    pub reverb_amount_ctrl_pedal: MorphTarget,
134    #[bits(395..=396)]
135    pub reverb_dark_bright: Selector<2>,
136    #[bits(397..=400)]
137    pub reverb_type: Selector<4>,
138    #[bits(405..=408)]
139    pub amp_sim_eq_mode: Selector<4>,
140}