Deluge Firmware 1.3.0
Build date: 2025.08.14
Loading...
Searching...
No Matches
g_menus.inc
1// clang-format off
2filter::FilterParam lpfFreqMenu{STRING_FOR_FREQUENCY, STRING_FOR_LPF_FREQUENCY, params::LOCAL_LPF_FREQ, filter::FilterSlot::LPF, filter::FilterParamType::FREQUENCY};
3filter::FilterParam lpfResMenu{STRING_FOR_RESONANCE, STRING_FOR_LPF_RESONANCE, params::LOCAL_LPF_RESONANCE, filter::FilterSlot::LPF, filter::FilterParamType::RESONANCE};
4filter::FilterParam lpfMorphMenu{STRING_FOR_LPF_MORPH, params::LOCAL_LPF_MORPH, filter::FilterSlot::LPF, filter::FilterParamType::MORPH};
5filter::FilterModeSelection lpfModeMenu{STRING_FOR_MODE, STRING_FOR_LPF_MODE, filter::FilterSlot::LPF};
6std::array<MenuItem*, 4> child0 = {
7 &lpfFreqMenu,
8 &lpfResMenu,
9 &lpfMorphMenu,
10 &lpfModeMenu,
11};
12HorizontalMenu lpfMenu{STRING_FOR_LPF, child0, HorizontalMenu::Layout::FIXED};
13filter::FilterParam hpfFreqMenu{STRING_FOR_FREQUENCY, STRING_FOR_HPF_FREQUENCY, params::LOCAL_HPF_FREQ, filter::FilterSlot::HPF, filter::FilterParamType::FREQUENCY};
14filter::FilterParam hpfResMenu{STRING_FOR_RESONANCE, STRING_FOR_HPF_RESONANCE, params::LOCAL_HPF_RESONANCE, filter::FilterSlot::HPF, filter::FilterParamType::RESONANCE};
15filter::FilterParam hpfMorphMenu{STRING_FOR_HPF_MORPH, params::LOCAL_HPF_MORPH, filter::FilterSlot::HPF, filter::FilterParamType::MORPH};
16filter::FilterModeSelection hpfModeMenu{STRING_FOR_MODE, STRING_FOR_HPF_MODE, filter::FilterSlot::HPF};
17std::array<MenuItem*, 4> child1 = {
18 &hpfFreqMenu,
19 &hpfResMenu,
20 &hpfMorphMenu,
21 &hpfModeMenu,
22};
23HorizontalMenu hpfMenu{STRING_FOR_HPF, child1, HorizontalMenu::Layout::FIXED};
24FilterRouting filterRoutingMenu{STRING_FOR_FILTER_ROUTE};
25std::array<MenuItem*, 3> child2 = {
26 &lpfMenu,
27 &hpfMenu,
28 &filterRoutingMenu,
29};
30Submenu soundFiltersMenu{STRING_FOR_FILTERS, child2};
31audio_compressor::CompParam threshold{STRING_FOR_THRESHOLD, STRING_FOR_COMP_THRESHOLD_MENU_TITLE, params::UNPATCHED_COMPRESSOR_THRESHOLD};
32audio_compressor::Ratio compRatio{STRING_FOR_RATIO, STRING_FOR_RATIO};
33audio_compressor::Blend compBlend{STRING_FOR_BLEND, STRING_FOR_BLEND};
34audio_compressor::Attack compAttack{STRING_FOR_ATTACK, STRING_FOR_ATTACK};
35audio_compressor::Release compRelease{STRING_FOR_RELEASE, STRING_FOR_RELEASE};
36audio_compressor::SideHPF compHPF{STRING_FOR_HPF, STRING_FOR_HPF};
37std::array<MenuItem*, 6> child3 = {
38 &threshold,
39 &compRatio,
40 &compBlend,
41 &compAttack,
42 &compRelease,
43 &compHPF,
44};
45HorizontalMenu audioCompMenu{STRING_FOR_COMMUNITY_FEATURE_MASTER_COMPRESSOR, child3};
46unison::CountToStereoSpread numUnisonMenu{STRING_FOR_UNISON_NUMBER, STRING_FOR_UNISON_NUMBER_MENU_TITLE};
47unison::Detune unisonDetuneMenu{STRING_FOR_UNISON_DETUNE, STRING_FOR_UNISON_DETUNE_MENU_TITLE};
48unison::StereoSpread unison::stereoSpreadMenu{STRING_FOR_UNISON_STEREO_SPREAD, STRING_FOR_UNISON_STEREO_SPREAD_MENU_TITLE};
49std::array<MenuItem*, 3> child4 = {
50 &numUnisonMenu,
51 &unisonDetuneMenu,
52 &unison::stereoSpreadMenu,
53};
54HorizontalMenu unisonMenu{STRING_FOR_UNISON, child4, HorizontalMenu::Layout::FIXED};
55osc::AudioRecorder sample0RecorderMenu{STRING_FOR_RECORD_TO_SAMPLE, 0};
56osc::AudioRecorder sample1RecorderMenu{STRING_FOR_RECORD_TO_SAMPLE, 1};
57std::array<MenuItem*, 2> child5 = {
58 &sample0RecorderMenu,
59 &sample1RecorderMenu,
60};
61HorizontalMenu recorderMenu{STRING_FOR_SAMPLE_RECORDER, child5};
62osc::Type osc0TypeMenu{STRING_FOR_TYPE, STRING_FOR_OSC_TYPE_MENU_TITLE, 0};
63FileSelector deluge::gui::menu_item::file0SelectorMenu{STRING_FOR_FILE_BROWSER, 0};
64sample::Transpose source0TransposeMenu{STRING_FOR_TRANSPOSE, STRING_FOR_OSC_TRANSPOSE_MENU_TITLE, params::LOCAL_OSC_A_PITCH_ADJUST, 0};
65osc::source::WaveIndex source0WaveIndexMenu{STRING_FOR_WAVE_INDEX, STRING_FOR_OSC_WAVE_IND_MENU_TITLE, params::LOCAL_OSC_A_WAVE_INDEX, 0};
66osc::PulseWidth osc0PulseWidthMenu{STRING_FOR_PULSE_WIDTH, STRING_FOR_OSC_P_WIDTH_MENU_TITLE, params::LOCAL_OSC_A_PHASE_WIDTH, 0};
67osc::source::Feedback source0FeedbackMenu{STRING_FOR_FEEDBACK, STRING_FOR_CARRIER_FEED_MENU_TITLE, params::LOCAL_CARRIER_0_FEEDBACK, 0};
68osc::RetriggerPhase osc0PhaseMenu{STRING_FOR_RETRIGGER_PHASE, STRING_FOR_OSC_R_PHASE_MENU_TITLE, 0, false};
69sample::Reverse sample0ReverseMenu{STRING_FOR_REVERSE, STRING_FOR_SAMP_REVERSE_MENU_TITLE, 0};
70sample::Repeat sample0RepeatMenu{STRING_FOR_REPEAT_MODE, STRING_FOR_SAMP_REPEAT_MENU_TITLE, 0};
71sample::TimeStretch sample0TimeStretchMenu{STRING_FOR_SPEED, STRING_FOR_SAMP_SPEED_MENU_TITLE, 0};
72sample::PitchSpeed sample0PitchSpeedMenu{STRING_FOR_PITCH_SPEED, 0};
73sample::Interpolation sample0InterpolationMenu{STRING_FOR_INTERPOLATION, STRING_FOR_SAMP_INTERP_MENU_TITLE, 0};
74sample::Start sample0StartMenu{STRING_FOR_START_POINT, 0};
75sample::End sample0EndMenu{STRING_FOR_END_POINT, 0};
76std::array<MenuItem*, 14> child6 = {
77 &osc0TypeMenu,
78 &deluge::gui::menu_item::file0SelectorMenu,
79 &source0TransposeMenu,
80 &source0WaveIndexMenu,
81 &osc0PulseWidthMenu,
82 &source0FeedbackMenu,
83 &osc0PhaseMenu,
84 &sample0ReverseMenu,
85 &sample0RepeatMenu,
86 &sample0TimeStretchMenu,
87 &sample0PitchSpeedMenu,
88 &sample0InterpolationMenu,
89 &sample0StartMenu,
90 &sample0EndMenu,
91};
92submenu::ActualSource source0Menu{STRING_FOR_OSCILLATOR_1, child6, 0};
93osc::Type osc1TypeMenu{STRING_FOR_TYPE, STRING_FOR_OSC_TYPE_MENU_TITLE, 1};
94FileSelector deluge::gui::menu_item::file1SelectorMenu{STRING_FOR_FILE_BROWSER, 1};
95sample::Transpose source1TransposeMenu{STRING_FOR_TRANSPOSE, STRING_FOR_OSC_TRANSPOSE_MENU_TITLE, params::LOCAL_OSC_A_PITCH_ADJUST, 1};
96osc::source::WaveIndex source1WaveIndexMenu{STRING_FOR_WAVE_INDEX, STRING_FOR_OSC_WAVE_IND_MENU_TITLE, params::LOCAL_OSC_A_WAVE_INDEX, 1};
97osc::PulseWidth osc1PulseWidthMenu{STRING_FOR_PULSE_WIDTH, STRING_FOR_OSC_P_WIDTH_MENU_TITLE, params::LOCAL_OSC_A_PHASE_WIDTH, 1};
98osc::source::Feedback source1FeedbackMenu{STRING_FOR_FEEDBACK, STRING_FOR_CARRIER_FEED_MENU_TITLE, params::LOCAL_CARRIER_0_FEEDBACK, 1};
99osc::RetriggerPhase osc1PhaseMenu{STRING_FOR_RETRIGGER_PHASE, STRING_FOR_OSC_R_PHASE_MENU_TITLE, 1, false};
100sample::Reverse sample1ReverseMenu{STRING_FOR_REVERSE, STRING_FOR_SAMP_REVERSE_MENU_TITLE, 1};
101sample::Repeat sample1RepeatMenu{STRING_FOR_REPEAT_MODE, STRING_FOR_SAMP_REPEAT_MENU_TITLE, 1};
102sample::TimeStretch sample1TimeStretchMenu{STRING_FOR_SPEED, STRING_FOR_SAMP_SPEED_MENU_TITLE, 1};
103sample::PitchSpeed sample1PitchSpeedMenu{STRING_FOR_PITCH_SPEED, 1};
104sample::Interpolation sample1InterpolationMenu{STRING_FOR_INTERPOLATION, STRING_FOR_SAMP_INTERP_MENU_TITLE, 1};
105sample::Start sample1StartMenu{STRING_FOR_START_POINT, 1};
106sample::End sample1EndMenu{STRING_FOR_END_POINT, 1};
107std::array<MenuItem*, 14> child7 = {
108 &osc1TypeMenu,
109 &deluge::gui::menu_item::file1SelectorMenu,
110 &source1TransposeMenu,
111 &source1WaveIndexMenu,
112 &osc1PulseWidthMenu,
113 &source1FeedbackMenu,
114 &osc1PhaseMenu,
115 &sample1ReverseMenu,
116 &sample1RepeatMenu,
117 &sample1TimeStretchMenu,
118 &sample1PitchSpeedMenu,
119 &sample1InterpolationMenu,
120 &sample1StartMenu,
121 &sample1EndMenu,
122};
123submenu::ActualSource source1Menu{STRING_FOR_OSCILLATOR_2, child7, 1};
124modulator::Transpose modulator0TransposeMenu{STRING_FOR_TRANSPOSE, STRING_FOR_FM_MOD_TRAN_MENU_TITLE, params::LOCAL_MODULATOR_0_PITCH_ADJUST, 0};
125source::patched_param::ModulatorFeedback modulator0FeedbackMenu{STRING_FOR_FEEDBACK, STRING_FOR_FM_MOD_FBACK_MENU_TITLE, params::LOCAL_MODULATOR_0_FEEDBACK, 0};
126osc::RetriggerPhase modulator0PhaseMenu{STRING_FOR_RETRIGGER_PHASE, STRING_FOR_FM_MOD_RETRIG_MENU_TITLE, 0, true};
127std::array<MenuItem*, 3> child8 = {
128 &modulator0TransposeMenu,
129 &modulator0FeedbackMenu,
130 &modulator0PhaseMenu,
131};
132submenu::Modulator modulator0Menu{STRING_FOR_FM_MODULATOR_1, child8};
133modulator::Transpose modulator1TransposeMenu{STRING_FOR_TRANSPOSE, STRING_FOR_FM_MOD_TRAN_MENU_TITLE, params::LOCAL_MODULATOR_0_PITCH_ADJUST, 1};
134source::patched_param::ModulatorFeedback modulator1FeedbackMenu{STRING_FOR_FEEDBACK, STRING_FOR_FM_MOD_FBACK_MENU_TITLE, params::LOCAL_MODULATOR_0_FEEDBACK, 1};
135osc::RetriggerPhase modulator1PhaseMenu{STRING_FOR_RETRIGGER_PHASE, STRING_FOR_FM_MOD_RETRIG_MENU_TITLE, 1, true};
136modulator::Destination modulatorDestMenu{STRING_FOR_DESTINATION, STRING_FOR_FM_MOD2_DEST_MENU_TITLE};
137std::array<MenuItem*, 4> child9 = {
138 &modulator1TransposeMenu,
139 &modulator1FeedbackMenu,
140 &modulator1PhaseMenu,
141 &modulatorDestMenu,
142};
143submenu::Modulator modulator1Menu{STRING_FOR_FM_MODULATOR_2, child9};
144osc::source::Volume source0VolumeMenu{STRING_FOR_OSC_LEVEL_MENU_TITLE, params::LOCAL_OSC_A_VOLUME, 0};
145osc::source::Volume source1VolumeMenu{STRING_FOR_OSC_LEVEL_MENU_TITLE, params::LOCAL_OSC_A_VOLUME, 1};
146source::patched_param::ModulatorLevel modulator0Volume{STRING_FOR_FM_MOD_LEVEL_MENU_TITLE, params::LOCAL_MODULATOR_0_VOLUME, 0};
147source::patched_param::ModulatorLevel modulator1Volume{STRING_FOR_FM_MOD_LEVEL_MENU_TITLE, params::LOCAL_MODULATOR_0_VOLUME, 1};
148patched_param::IntegerNonFM noiseMenu{STRING_FOR_NOISE_LEVEL, params::LOCAL_NOISE_VOLUME};
149osc::Sync oscSyncMenu{STRING_FOR_OSCILLATOR_SYNC};
150std::array<MenuItem*, 6> child10 = {
151 &source0VolumeMenu,
152 &source1VolumeMenu,
153 &modulator0Volume,
154 &modulator1Volume,
155 &noiseMenu,
156 &oscSyncMenu,
157};
158HorizontalMenu oscMixerMenu{STRING_FOR_OSCILLATOR_MIXER, child10};
159envelope::Segment env1AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 0};
160envelope::Segment env1DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 0};
161envelope::Segment env1SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 0};
162envelope::Segment env1ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 0};
163std::array<MenuItem*, 4> child11 = {
164 &env1AttackMenu,
165 &env1DecayMenu,
166 &env1SustainMenu,
167 &env1ReleaseMenu,
168};
169envelope::EnvelopeMenu env1Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child11, 0};
170envelope::Segment env2AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 1};
171envelope::Segment env2DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 1};
172envelope::Segment env2SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 1};
173envelope::Segment env2ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 1};
174std::array<MenuItem*, 4> child12 = {
175 &env2AttackMenu,
176 &env2DecayMenu,
177 &env2SustainMenu,
178 &env2ReleaseMenu,
179};
180envelope::EnvelopeMenu env2Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child12, 1};
181envelope::Segment env3AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 2};
182envelope::Segment env3DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 2};
183envelope::Segment env3SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 2};
184envelope::Segment env3ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 2};
185std::array<MenuItem*, 4> child13 = {
186 &env3AttackMenu,
187 &env3DecayMenu,
188 &env3SustainMenu,
189 &env3ReleaseMenu,
190};
191envelope::EnvelopeMenu env3Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child13, 2};
192envelope::Segment env4AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 3};
193envelope::Segment env4DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 3};
194envelope::Segment env4SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 3};
195envelope::Segment env4ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 3};
196std::array<MenuItem*, 4> child14 = {
197 &env4AttackMenu,
198 &env4DecayMenu,
199 &env4SustainMenu,
200 &env4ReleaseMenu,
201};
202envelope::EnvelopeMenu env4Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child14, 3};
203lfo::Type lfo1TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO1_ID};
204lfo::Sync lfo1SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO1_ID};
205patched_param::Integer lfo1RateMenu{STRING_FOR_RATE, STRING_FOR_LFO1_RATE, params::GLOBAL_LFO_FREQ_1};
206std::array<MenuItem*, 3> child15 = {
207 &lfo1TypeMenu,
208 &lfo1SyncMenu,
209 &lfo1RateMenu,
210};
211HorizontalMenu lfo1Menu{STRING_FOR_LFO1, child15};
212lfo::Type lfo2TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO2_ID};
213lfo::Sync lfo2SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO2_ID};
214patched_param::Integer lfo2RateMenu{STRING_FOR_RATE, STRING_FOR_LFO2_RATE, params::LOCAL_LFO_LOCAL_FREQ_1};
215std::array<MenuItem*, 3> child16 = {
216 &lfo2TypeMenu,
217 &lfo2SyncMenu,
218 &lfo2RateMenu,
219};
220HorizontalMenu lfo2Menu{STRING_FOR_LFO2, child16};
221lfo::Type lfo3TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO3_ID};
222lfo::Sync lfo3SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO3_ID};
223patched_param::Integer lfo3RateMenu{STRING_FOR_RATE, STRING_FOR_LFO3_RATE, params::GLOBAL_LFO_FREQ_2};
224std::array<MenuItem*, 3> child17 = {
225 &lfo3TypeMenu,
226 &lfo3SyncMenu,
227 &lfo3RateMenu,
228};
229HorizontalMenu lfo3Menu{STRING_FOR_LFO3, child17};
230lfo::Type lfo4TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO4_ID};
231lfo::Sync lfo4SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO4_ID};
232patched_param::Integer lfo4RateMenu{STRING_FOR_RATE, STRING_FOR_LFO4_RATE, params::LOCAL_LFO_LOCAL_FREQ_2};
233std::array<MenuItem*, 3> child18 = {
234 &lfo4TypeMenu,
235 &lfo4SyncMenu,
236 &lfo4RateMenu,
237};
238HorizontalMenu lfo4Menu{STRING_FOR_LFO4, child18};
239// clang-format on