nord_format/formats/ns4/
synth_voice.rs1use crate::components::{Frequency, Interval, Level, Level6, MorphTarget, Rate, Selector, Time};
4#[nord_bits_derive::bitbody(44)]
5pub struct SynthVoice {
6 #[bits(2..=3)]
7 pub analog_type_knob_1: Selector<2>,
8 #[bits(7..=9)]
9 pub analog_cat_knob_2: Selector<3>,
10 #[bits(11..=16)]
11 pub analog_wave_partial_knob_3: Selector<6>,
12 #[bits(17..=23)]
13 pub osc_ctrl: Level,
14 #[bits(24..=31)]
15 pub osc_ctrl_wheel: MorphTarget,
16 #[bits(32..=39)]
17 pub osc_ctrl_aftertouch: MorphTarget,
18 #[bits(40..=47)]
19 pub osc_ctrl_ctrl_pedal: MorphTarget,
20 #[bits(48..=54)]
21 pub pitch_fine: Level,
22 #[bits(55..=60)]
23 pub pitch_coarse: Interval,
24 #[bits(63..=69)]
25 pub osc_env_attack: Time,
26 #[bits(70..=76)]
27 pub osc_env_decay: Time,
28 #[bits(77..=83)]
29 pub osc_env_release: Time,
30 #[bits(84..=90)]
31 pub osc_env_amount: Level,
32 #[bits(91..=98)]
33 pub osc_env_amount_wheel: MorphTarget,
34 #[bits(99..=106)]
35 pub osc_env_amount_aftertouch: MorphTarget,
36 #[bits(107..=114)]
37 pub osc_env_amount_ctrl_pedal: MorphTarget,
38 #[bits(115..=115)]
39 pub osc_env_to_pitch_enabled: bool,
40 #[bits(116..=116)]
41 pub osc_env_velocity_enabled: bool,
42 #[bits(117..=118)]
43 pub sample_options: Selector<2>,
44 #[bits(119..=120)]
45 pub lfo_target: Selector<2>,
46 #[bits(121..=123)]
47 pub lfo_shape: Selector<3>,
48 #[bits(124..=124)]
49 pub lfo_master_clock_enabled: bool,
50 #[bits(125..=131)]
51 pub lfo_rate_time: Rate,
52 #[bits(132..=139)]
53 pub lfo_rate_time_wheel: MorphTarget,
54 #[bits(140..=147)]
55 pub lfo_rate_time_aftertouch: MorphTarget,
56 #[bits(148..=155)]
57 pub lfo_rate_time_ctrl_pedal: MorphTarget,
58 #[bits(156..=162)]
59 pub lfo_mod_amount: Level,
60 #[bits(163..=170)]
61 pub lfo_mod_amount_wheel: MorphTarget,
62 #[bits(171..=178)]
63 pub lfo_mod_amount_aftertouch: MorphTarget,
64 #[bits(179..=186)]
65 pub lfo_mod_amount_ctrl_pedal: MorphTarget,
66 #[bits(187..=193)]
67 pub amp_env_attack: Time,
68 #[bits(194..=200)]
69 pub amp_env_decay: Time,
70 #[bits(201..=207)]
71 pub amp_env_release: Time,
72 #[bits(208..=209)]
73 pub amp_env_velocity: Selector<2>,
74 #[bits(210..=212)]
75 pub filter_type: Selector<3>,
76 #[bits(213..=219)]
77 pub filter_freq: Frequency,
78 #[bits(220..=227)]
79 pub filter_freq_wheel: MorphTarget,
80 #[bits(228..=235)]
81 pub filter_freq_aftertouch: MorphTarget,
82 #[bits(236..=243)]
83 pub filter_freq_ctrl_pedal: MorphTarget,
84 #[bits(244..=250)]
87 pub filter_resonance_freq_hp: Level,
88 #[bits(251..=258)]
89 #[morphs(filter_resonance_freq_hp)]
90 pub filter_resonance_wheel: MorphTarget,
91 #[bits(259..=266)]
92 #[morphs(filter_resonance_freq_hp)]
93 pub filter_resonance_aftertouch: MorphTarget,
94 #[bits(267..=274)]
95 #[morphs(filter_resonance_freq_hp)]
96 pub filter_resonance_ctrl_pedal: MorphTarget,
97 #[bits(275..=276)]
98 pub filter_track: Selector<2>,
99 #[bits(277..=278)]
100 pub filter_drive: Selector<2>,
101 #[bits(279..=285)]
102 pub filter_env_amount: Level,
103 #[bits(286..=293)]
104 pub filter_env_amount_wheel: MorphTarget,
105 #[bits(294..=301)]
106 pub filter_env_amount_aftertouch: MorphTarget,
107 #[bits(302..=309)]
108 pub filter_env_amount_ctrl_pedal: MorphTarget,
109 #[bits(310..=316)]
110 pub filter_env_attack: Time,
111 #[bits(317..=323)]
112 pub filter_env_decay: Time,
113 #[bits(324..=330)]
114 pub filter_env_release: Time,
115 #[bits(331..=331)]
116 pub filter_velocity_enabled: bool,
117 #[bits(332..=332)]
118 pub filter_enabled: bool,
119 #[bits(333..=339)]
120 pub vibrato_rate: Rate,
121 #[bits(340..=345)]
122 pub vibrato_amount: Level6,
123 #[bits(346..=346)]
124 pub sample_bright_enabled: bool,
125}