Deluge Firmware 1.3.0
Build date: 2025.09.27
Loading...
Searching...
No Matches
g_menus.inc
1// clang-format off
2filter::FilterModeSelection lpfModeMenu{STRING_FOR_MODE, STRING_FOR_LPF_MODE, filter::FilterSlot::LPF};
3filter::FilterParam lpfFreqMenu{STRING_FOR_FREQUENCY, STRING_FOR_LPF_FREQUENCY, params::LOCAL_LPF_FREQ, filter::FilterSlot::LPF, filter::FilterParamType::FREQUENCY};
4filter::FilterParam lpfResMenu{STRING_FOR_RESONANCE, STRING_FOR_LPF_RESONANCE, params::LOCAL_LPF_RESONANCE, filter::FilterSlot::LPF, filter::FilterParamType::RESONANCE};
5filter::FilterParam lpfMorphMenu{STRING_FOR_LPF_MORPH, params::LOCAL_LPF_MORPH, filter::FilterSlot::LPF, filter::FilterParamType::MORPH};
6std::array<MenuItem*, 4> child0 = {
7 &lpfModeMenu,
8 &lpfFreqMenu,
9 &lpfResMenu,
10 &lpfMorphMenu,
11};
12HorizontalMenu lpfMenu{STRING_FOR_LPF, child0};
13filter::FilterModeSelection hpfModeMenu{STRING_FOR_MODE, STRING_FOR_HPF_MODE, filter::FilterSlot::HPF};
14filter::FilterParam hpfFreqMenu{STRING_FOR_FREQUENCY, STRING_FOR_HPF_FREQUENCY, params::LOCAL_HPF_FREQ, filter::FilterSlot::HPF, filter::FilterParamType::FREQUENCY};
15filter::FilterParam hpfResMenu{STRING_FOR_RESONANCE, STRING_FOR_HPF_RESONANCE, params::LOCAL_HPF_RESONANCE, filter::FilterSlot::HPF, filter::FilterParamType::RESONANCE};
16filter::FilterParam hpfMorphMenu{STRING_FOR_HPF_MORPH, params::LOCAL_HPF_MORPH, filter::FilterSlot::HPF, filter::FilterParamType::MORPH};
17std::array<MenuItem*, 4> child1 = {
18 &hpfModeMenu,
19 &hpfFreqMenu,
20 &hpfResMenu,
21 &hpfMorphMenu,
22};
23HorizontalMenu hpfMenu{STRING_FOR_HPF, child1};
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};
149std::array<MenuItem*, 5> child10 = {
150 &source0VolumeMenu,
151 &source1VolumeMenu,
152 &modulator0Volume,
153 &modulator1Volume,
154 &noiseMenu,
155};
156HorizontalMenu oscMixerMenu{STRING_FOR_OSCILLATOR_MIXER, child10};
157osc::Sync oscSyncMenu{STRING_FOR_OSCILLATOR_SYNC};
158osc::Tracking osc0TrackingMenu{STRING_FOR_OSC_TRACKING_MENU_TITLE, 0};
159osc::Tracking osc1TrackingMenu{STRING_FOR_OSC_TRACKING_MENU_TITLE, 1};
160std::array<MenuItem*, 3> child11 = {
161 &oscSyncMenu,
162 &osc0TrackingMenu,
163 &osc1TrackingMenu,
164};
165HorizontalMenu oscTrackingMenu{STRING_FOR_OSCILLATOR_TRACKING, child11};
166envelope::Segment env1AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 0};
167envelope::Segment env1DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 0};
168envelope::Segment env1SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 0};
169envelope::Segment env1ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 0};
170std::array<MenuItem*, 4> child12 = {
171 &env1AttackMenu,
172 &env1DecayMenu,
173 &env1SustainMenu,
174 &env1ReleaseMenu,
175};
176envelope::EnvelopeMenu env1Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child12, 0};
177envelope::Segment env2AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 1};
178envelope::Segment env2DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 1};
179envelope::Segment env2SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 1};
180envelope::Segment env2ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 1};
181std::array<MenuItem*, 4> child13 = {
182 &env2AttackMenu,
183 &env2DecayMenu,
184 &env2SustainMenu,
185 &env2ReleaseMenu,
186};
187envelope::EnvelopeMenu env2Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child13, 1};
188envelope::Segment env3AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 2};
189envelope::Segment env3DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 2};
190envelope::Segment env3SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 2};
191envelope::Segment env3ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 2};
192std::array<MenuItem*, 4> child14 = {
193 &env3AttackMenu,
194 &env3DecayMenu,
195 &env3SustainMenu,
196 &env3ReleaseMenu,
197};
198envelope::EnvelopeMenu env3Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child14, 2};
199envelope::Segment env4AttackMenu{STRING_FOR_ATTACK, STRING_FOR_ENV_ATTACK_MENU_TITLE, params::LOCAL_ENV_0_ATTACK, 3};
200envelope::Segment env4DecayMenu{STRING_FOR_DECAY, STRING_FOR_ENV_DECAY_MENU_TITLE, params::LOCAL_ENV_0_DECAY, 3};
201envelope::Segment env4SustainMenu{STRING_FOR_SUSTAIN, STRING_FOR_ENV_SUSTAIN_MENU_TITLE, params::LOCAL_ENV_0_SUSTAIN, 3};
202envelope::Segment env4ReleaseMenu{STRING_FOR_RELEASE, STRING_FOR_ENV_RELEASE_MENU_TITLE, params::LOCAL_ENV_0_RELEASE, 3};
203std::array<MenuItem*, 4> child15 = {
204 &env4AttackMenu,
205 &env4DecayMenu,
206 &env4SustainMenu,
207 &env4ReleaseMenu,
208};
209envelope::EnvelopeMenu env4Menu{STRING_FOR_ENVELOPE_MENU_TITLE, child15, 3};
210lfo::Type lfo1TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO1_ID};
211lfo::Sync lfo1SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO1_ID};
212patched_param::Integer lfo1RateMenu{STRING_FOR_RATE, STRING_FOR_LFO1_RATE, params::GLOBAL_LFO_FREQ_1};
213std::array<MenuItem*, 3> child16 = {
214 &lfo1TypeMenu,
215 &lfo1SyncMenu,
216 &lfo1RateMenu,
217};
218HorizontalMenu lfo1Menu{STRING_FOR_LFO1, child16};
219lfo::Type lfo2TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO2_ID};
220lfo::Sync lfo2SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO2_ID};
221patched_param::Integer lfo2RateMenu{STRING_FOR_RATE, STRING_FOR_LFO2_RATE, params::LOCAL_LFO_LOCAL_FREQ_1};
222std::array<MenuItem*, 3> child17 = {
223 &lfo2TypeMenu,
224 &lfo2SyncMenu,
225 &lfo2RateMenu,
226};
227HorizontalMenu lfo2Menu{STRING_FOR_LFO2, child17};
228lfo::Type lfo3TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO3_ID};
229lfo::Sync lfo3SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO3_ID};
230patched_param::Integer lfo3RateMenu{STRING_FOR_RATE, STRING_FOR_LFO3_RATE, params::GLOBAL_LFO_FREQ_2};
231std::array<MenuItem*, 3> child18 = {
232 &lfo3TypeMenu,
233 &lfo3SyncMenu,
234 &lfo3RateMenu,
235};
236HorizontalMenu lfo3Menu{STRING_FOR_LFO3, child18};
237lfo::Type lfo4TypeMenu{STRING_FOR_SHAPE, STRING_FOR_LFO_TYPE, LFO4_ID};
238lfo::Sync lfo4SyncMenu{STRING_FOR_SYNC, STRING_FOR_LFO_SYNC, LFO4_ID};
239patched_param::Integer lfo4RateMenu{STRING_FOR_RATE, STRING_FOR_LFO4_RATE, params::LOCAL_LFO_LOCAL_FREQ_2};
240std::array<MenuItem*, 3> child19 = {
241 &lfo4TypeMenu,
242 &lfo4SyncMenu,
243 &lfo4RateMenu,
244};
245HorizontalMenu lfo4Menu{STRING_FOR_LFO4, child19};
246// clang-format on