23 |
#define _(String) gettext(String) |
#define _(String) gettext(String) |
24 |
|
|
25 |
DimRegionEdit::DimRegionEdit() : |
DimRegionEdit::DimRegionEdit() : |
26 |
eEG1PreAttack("PreAttack", 0, 100, 2), |
eEG1PreAttack("Pre-attack", 0, 100, 2), |
27 |
eEG1Attack("Attack", 0, 60, 3), |
eEG1Attack("Attack", 0, 60, 3), |
28 |
eEG1Decay1("Decay1", 0.005, 60, 3), |
eEG1Decay1("Decay 1", 0.005, 60, 3), |
29 |
eEG1Decay2("Decay2", 0, 60, 3), |
eEG1Decay2("Decay 2", 0, 60, 3), |
30 |
eEG1InfiniteSustain("InfiniteSustain"), |
eEG1InfiniteSustain("Infinite sustain"), |
31 |
eEG1Sustain("Sustain", 0, 100, 2), |
eEG1Sustain("Sustain", 0, 100, 2), |
32 |
eEG1Release("Release", 0, 60, 3), |
eEG1Release("Release", 0, 60, 3), |
33 |
eEG1Hold("Hold"), |
eEG1Hold("Hold"), |
34 |
eEG1Controller("Controller"), |
eEG1Controller("Controller"), |
35 |
eEG1ControllerInvert("ControllerInvert"), |
eEG1ControllerInvert("Controller invert"), |
36 |
eEG1ControllerAttackInfluence("ControllerAttackInfluence", 0, 3), |
eEG1ControllerAttackInfluence("Controller attack influence", 0, 3), |
37 |
eEG1ControllerDecayInfluence("ControllerDecayInfluence", 0, 3), |
eEG1ControllerDecayInfluence("Controller decay influence", 0, 3), |
38 |
eEG1ControllerReleaseInfluence("ControllerReleaseInfluence", 0, 3), |
eEG1ControllerReleaseInfluence("Controller release influence", 0, 3), |
39 |
eLFO1Frequency("Frequency", 0.1, 10, 2), |
eLFO1Frequency("Frequency", 0.1, 10, 2), |
40 |
eLFO1InternalDepth("InternalDepth", 0, 1200), |
eLFO1InternalDepth("Internal depth", 0, 1200), |
41 |
eLFO1ControlDepth("ControlDepth", 0, 1200), |
eLFO1ControlDepth("Control depth", 0, 1200), |
42 |
eLFO1Controller("Controller"), |
eLFO1Controller("Controller"), |
43 |
eLFO1FlipPhase("FlipPhase"), |
eLFO1FlipPhase("Flip phase"), |
44 |
eLFO1Sync("Sync"), |
eLFO1Sync("Sync"), |
45 |
eEG2PreAttack("PreAttack", 0, 100, 2), |
eEG2PreAttack("Pre-attack", 0, 100, 2), |
46 |
eEG2Attack("Attack", 0, 60, 3), |
eEG2Attack("Attack", 0, 60, 3), |
47 |
eEG2Decay1("Decay1", 0.005, 60, 3), |
eEG2Decay1("Decay 1", 0.005, 60, 3), |
48 |
eEG2Decay2("Decay2", 0, 60, 3), |
eEG2Decay2("Decay 2", 0, 60, 3), |
49 |
eEG2InfiniteSustain("InfiniteSustain"), |
eEG2InfiniteSustain("Infinite sustain"), |
50 |
eEG2Sustain("Sustain", 0, 100, 2), |
eEG2Sustain("Sustain", 0, 100, 2), |
51 |
eEG2Release("Release", 0, 60, 3), |
eEG2Release("Release", 0, 60, 3), |
52 |
eEG2Controller("Controller"), |
eEG2Controller("Controller"), |
53 |
eEG2ControllerInvert("ControllerInvert"), |
eEG2ControllerInvert("Controller invert"), |
54 |
eEG2ControllerAttackInfluence("ControllerAttackInfluence", 0, 3), |
eEG2ControllerAttackInfluence("Controller attack influence", 0, 3), |
55 |
eEG2ControllerDecayInfluence("ControllerDecayInfluence", 0, 3), |
eEG2ControllerDecayInfluence("Controller decay influence", 0, 3), |
56 |
eEG2ControllerReleaseInfluence("ControllerReleaseInfluence", 0, 3), |
eEG2ControllerReleaseInfluence("Controller release influence", 0, 3), |
57 |
eLFO2Frequency("Frequency", 0.1, 10, 2), |
eLFO2Frequency("Frequency", 0.1, 10, 2), |
58 |
eLFO2InternalDepth("InternalDepth", 0, 1200), |
eLFO2InternalDepth("Internal depth", 0, 1200), |
59 |
eLFO2ControlDepth("ControlDepth", 0, 1200), |
eLFO2ControlDepth("Control depth", 0, 1200), |
60 |
eLFO2Controller("Controller"), |
eLFO2Controller("Controller"), |
61 |
eLFO2FlipPhase("FlipPhase"), |
eLFO2FlipPhase("Flip phase"), |
62 |
eLFO2Sync("Sync"), |
eLFO2Sync("Sync"), |
63 |
eEG3Attack("Attack", 0, 10, 3), |
eEG3Attack("Attack", 0, 10, 3), |
64 |
eEG3Depth("Depth", -1200, 1200), |
eEG3Depth("Depth", -1200, 1200), |
65 |
eLFO3Frequency("Frequency", 0.1, 10, 2), |
eLFO3Frequency("Frequency", 0.1, 10, 2), |
66 |
eLFO3InternalDepth("InternalDepth", 0, 1200), |
eLFO3InternalDepth("Internal depth", 0, 1200), |
67 |
eLFO3ControlDepth("ControlDepth", 0, 1200), |
eLFO3ControlDepth("Control depth", 0, 1200), |
68 |
eLFO3Controller("Controller"), |
eLFO3Controller("Controller"), |
69 |
eLFO3Sync("Sync"), |
eLFO3Sync("Sync"), |
70 |
eVCFEnabled("Enabled"), |
eVCFEnabled("Enabled"), |
71 |
eVCFType("Type"), |
eVCFType("Type"), |
72 |
eVCFCutoffController("CutoffController"), |
eVCFCutoffController("Cutoff controller"), |
73 |
eVCFCutoffControllerInvert("CutoffControllerInvert"), |
eVCFCutoffControllerInvert("Cutoff controller invert"), |
74 |
eVCFCutoff("Cutoff"), |
eVCFCutoff("Cutoff"), |
75 |
eVCFVelocityCurve("VelocityCurve"), |
eVCFVelocityCurve("Velocity curve"), |
76 |
eVCFVelocityScale("VelocityScale"), |
eVCFVelocityScale("Velocity scale"), |
77 |
eVCFVelocityDynamicRange("VelocityDynamicRange", 0, 4), |
eVCFVelocityDynamicRange("Velocity dynamic range", 0, 4), |
78 |
eVCFResonance("Resonance"), |
eVCFResonance("Resonance"), |
79 |
eVCFResonanceDynamic("ResonanceDynamic"), |
eVCFResonanceDynamic("Resonance dynamic"), |
80 |
eVCFResonanceController("ResonanceController"), |
eVCFResonanceController("Resonance controller"), |
81 |
eVCFKeyboardTracking("KeyboardTracking"), |
eVCFKeyboardTracking("Keyboard tracking"), |
82 |
eVCFKeyboardTrackingBreakpoint("KeyboardTrackingBreakpoint"), |
eVCFKeyboardTrackingBreakpoint("Keyboard tracking breakpoint"), |
83 |
eVelocityResponseCurve("VelocityResponseCurve"), |
eVelocityResponseCurve("Velocity response curve"), |
84 |
eVelocityResponseDepth("VelocityResponseDepth", 0, 4), |
eVelocityResponseDepth("Velocity response depth", 0, 4), |
85 |
eVelocityResponseCurveScaling("VelocityResponseCurveScaling"), |
eVelocityResponseCurveScaling("Velocity response curve scaling"), |
86 |
eReleaseVelocityResponseCurve("ReleaseVelocityResponseCurve"), |
eReleaseVelocityResponseCurve("Release velocity response curve"), |
87 |
eReleaseVelocityResponseDepth("ReleaseVelocityResponseDepth", 0, 4), |
eReleaseVelocityResponseDepth("Release velocity response depth", 0, 4), |
88 |
eReleaseTriggerDecay("ReleaseTriggerDecay", 0, 8), |
eReleaseTriggerDecay("Release trigger decay", 0, 8), |
89 |
eCrossfade_in_start("Crossfade.in_start"), |
eCrossfade_in_start("Crossfade-in start"), |
90 |
eCrossfade_in_end("Crossfade.in_end"), |
eCrossfade_in_end("Crossfade-in end"), |
91 |
eCrossfade_out_start("Crossfade.out_start"), |
eCrossfade_out_start("Crossfade-out start"), |
92 |
eCrossfade_out_end("Crossfade.out_end"), |
eCrossfade_out_end("Crossfade-out end"), |
93 |
ePitchTrack("PitchTrack"), |
ePitchTrack("Pitch track"), |
94 |
eDimensionBypass("DimensionBypass"), |
eDimensionBypass("Dimension bypass"), |
95 |
ePan("Pan", -64, 63), |
ePan("Pan", -64, 63), |
96 |
eSelfMask("SelfMask"), |
eSelfMask("Self mask"), |
97 |
eAttenuationController("AttenuationController"), |
eAttenuationController("Attenuation controller"), |
98 |
eInvertAttenuationController("InvertAttenuationController"), |
eInvertAttenuationController("Invert attenuation controller"), |
99 |
eAttenuationControllerThreshold("AttenuationControllerThreshold"), |
eAttenuationControllerThreshold("Attenuation controller threshold"), |
100 |
eChannelOffset("ChannelOffset", 0, 9), |
eChannelOffset("Channel offset", 0, 9), |
101 |
eSustainDefeat("SustainDefeat"), |
eSustainDefeat("Sustain defeat"), |
102 |
eMSDecode("MSDecode"), |
eMSDecode("MS decode"), |
103 |
eSampleStartOffset("SampleStartOffset", 0, 2000), |
eSampleStartOffset("Sample start offset", 0, 2000), |
104 |
eUnityNote("UnityNote"), |
eUnityNote("Unity note"), |
105 |
eFineTune("FineTune", -49, 50), |
eFineTune("Fine tune", -49, 50), |
106 |
eGain("Gain", -96, 0, 2, -655360), |
eGain("Gain", -96, 0, 2, -655360), |
107 |
eGainPlus6("Gain +6dB", eGain, 6 * -655360), |
eGainPlus6("Gain +6dB", eGain, 6 * -655360), |
108 |
eSampleLoopEnabled("Enabled"), |
eSampleLoopEnabled("Enabled"), |
109 |
eSampleLoopStart("Loop Start Positon"), |
eSampleLoopStart("Loop start positon"), |
110 |
eSampleLoopLength("Loop Size"), |
eSampleLoopLength("Loop size"), |
111 |
eSampleLoopType("Loop Type"), |
eSampleLoopType("Loop type"), |
112 |
eSampleLoopInfinite("Infinite Loop"), |
eSampleLoopInfinite("Infinite loop"), |
113 |
eSampleLoopPlayCount("Playback Count") |
eSampleLoopPlayCount("Playback count") |
114 |
{ |
{ |
115 |
for (int i = 0 ; i < 7 ; i++) { |
for (int i = 0 ; i < 7 ; i++) { |
116 |
table[i] = new Gtk::Table(3, 1); |
table[i] = new Gtk::Table(3, 1); |
119 |
|
|
120 |
// set tooltips |
// set tooltips |
121 |
eUnityNote.set_tip( |
eUnityNote.set_tip( |
122 |
_("note this sample is associated with (a.k.a. 'root note')") |
_("Note this sample is associated with (a.k.a. 'root note')") |
123 |
); |
); |
124 |
eSampleStartOffset.set_tip(_("sample position at which playback should be started")); |
eSampleStartOffset.set_tip(_("Sample position at which playback should be started")); |
125 |
ePan.set_tip(_("stereo balance (left/right)")); |
ePan.set_tip(_("Stereo balance (left/right)")); |
126 |
eChannelOffset.set_tip( |
eChannelOffset.set_tip( |
127 |
_("output channel where the audio signal should be routed to (0 - 9)") |
_("Output channel where the audio signal should be routed to (0 - 9)") |
128 |
); |
); |
129 |
ePitchTrack.set_tip( |
ePitchTrack.set_tip( |
130 |
_("if true: sample will be pitched according to the key position " |
_("If true: sample will be pitched according to the key position " |
131 |
"(this would be disabled for drums for example)") |
"(this would be disabled for drums for example)") |
132 |
); |
); |
133 |
eSampleLoopEnabled.set_tip(_("if enabled: repeats to playback the sample")); |
eSampleLoopEnabled.set_tip(_("If enabled: repeats to playback the sample")); |
134 |
eSampleLoopStart.set_tip( |
eSampleLoopStart.set_tip( |
135 |
_("start position within the sample (in sample points) of the area to " |
_("Start position within the sample (in sample points) of the area to " |
136 |
"be looped") |
"be looped") |
137 |
); |
); |
138 |
eSampleLoopLength.set_tip( |
eSampleLoopLength.set_tip( |
139 |
_("duration (in sample points) of the area to be looped") |
_("Duration (in sample points) of the area to be looped") |
140 |
); |
); |
141 |
eSampleLoopType.set_tip( |
eSampleLoopType.set_tip( |
142 |
_("direction in which the loop area in the sample should be played back") |
_("Direction in which the loop area in the sample should be played back") |
143 |
); |
); |
144 |
eSampleLoopInfinite.set_tip( |
eSampleLoopInfinite.set_tip( |
145 |
_("whether the loop area should be played back forever\n" |
_("Whether the loop area should be played back forever\n" |
146 |
"Caution: this setting is stored on Sample side, thus is shared " |
"Caution: this setting is stored on Sample side, thus is shared " |
147 |
"among all dimension regions that use this sample!") |
"among all dimension regions that use this sample!") |
148 |
); |
); |
149 |
eSampleLoopPlayCount.set_tip( |
eSampleLoopPlayCount.set_tip( |
150 |
_("how many times the loop area should be played back\n" |
_("How many times the loop area should be played back\n" |
151 |
"Caution: this setting is stored on Sample side, thus is shared " |
"Caution: this setting is stored on Sample side, thus is shared " |
152 |
"among all dimension regions that use this sample!") |
"among all dimension regions that use this sample!") |
153 |
); |
); |
156 |
rowno = 0; |
rowno = 0; |
157 |
firstRowInBlock = 0; |
firstRowInBlock = 0; |
158 |
|
|
159 |
addHeader(_("Mandatory Settings:")); |
addHeader(_("Mandatory Settings")); |
160 |
addString("Sample", lSample, wSample); |
addString("Sample", lSample, wSample); |
161 |
//TODO: the following would break drag&drop: wSample->property_editable().set_value(false); or this: wSample->set_editable(false); |
//TODO: the following would break drag&drop: wSample->property_editable().set_value(false); or this: wSample->set_editable(false); |
162 |
tooltips.set_tip(*wSample, _("drop a sample here")); |
tooltips.set_tip(*wSample, _("Drop a sample here")); |
163 |
addProp(eUnityNote); |
addProp(eUnityNote); |
164 |
addHeader(_("Optional Settings:")); |
addHeader(_("Optional Settings")); |
165 |
addProp(eSampleStartOffset); |
addProp(eSampleStartOffset); |
166 |
addProp(ePan); |
addProp(ePan); |
167 |
addProp(eChannelOffset); |
addProp(eChannelOffset); |
168 |
addHeader("Loops:"); |
addHeader("Loops"); |
169 |
addProp(eSampleLoopEnabled); |
addProp(eSampleLoopEnabled); |
170 |
addProp(eSampleLoopStart); |
addProp(eSampleLoopStart); |
171 |
addProp(eSampleLoopLength); |
addProp(eSampleLoopLength); |
181 |
addProp(eSampleLoopType); |
addProp(eSampleLoopType); |
182 |
addProp(eSampleLoopInfinite); |
addProp(eSampleLoopInfinite); |
183 |
addProp(eSampleLoopPlayCount); |
addProp(eSampleLoopPlayCount); |
184 |
addHeader("Crossfade:"); |
addHeader("Crossfade"); |
185 |
addProp(eCrossfade_in_start); |
addProp(eCrossfade_in_start); |
186 |
addProp(eCrossfade_in_end); |
addProp(eCrossfade_in_end); |
187 |
addProp(eCrossfade_out_start); |
addProp(eCrossfade_out_start); |
189 |
|
|
190 |
nextPage(); |
nextPage(); |
191 |
|
|
192 |
addHeader(_("General Amplitude Settings:")); |
addHeader(_("General Amplitude Settings")); |
193 |
addProp(eGain); |
addProp(eGain); |
194 |
addProp(eGainPlus6); |
addProp(eGainPlus6); |
195 |
addProp(eAttenuationController); |
addProp(eAttenuationController); |
196 |
addProp(eInvertAttenuationController); |
addProp(eInvertAttenuationController); |
197 |
addProp(eAttenuationControllerThreshold); |
addProp(eAttenuationControllerThreshold); |
198 |
addHeader(_("Amplitude Envelope (EG1):")); |
addHeader(_("Amplitude Envelope (EG1)")); |
199 |
addProp(eEG1PreAttack); |
addProp(eEG1PreAttack); |
200 |
addProp(eEG1Attack); |
addProp(eEG1Attack); |
201 |
addProp(eEG1Decay1); |
addProp(eEG1Decay1); |
212 |
|
|
213 |
nextPage(); |
nextPage(); |
214 |
|
|
215 |
addHeader(_("Amplitude Oscillator (LFO1):")); |
addHeader(_("Amplitude Oscillator (LFO1)")); |
216 |
addProp(eLFO1Frequency); |
addProp(eLFO1Frequency); |
217 |
addProp(eLFO1InternalDepth); |
addProp(eLFO1InternalDepth); |
218 |
addProp(eLFO1ControlDepth); |
addProp(eLFO1ControlDepth); |
234 |
|
|
235 |
nextPage(); |
nextPage(); |
236 |
|
|
237 |
addHeader(_("General Filter Settings:")); |
addHeader(_("General Filter Settings")); |
238 |
addProp(eVCFEnabled); |
addProp(eVCFEnabled); |
239 |
{ |
{ |
240 |
char* choices[] = { "lowpass", "lowpassturbo", "bandpass", |
char* choices[] = { "lowpass", "lowpassturbo", "bandpass", |
302 |
|
|
303 |
nextPage(); |
nextPage(); |
304 |
|
|
305 |
addHeader(_("Filter Cutoff Envelope (EG2):")); |
addHeader(_("Filter Cutoff Envelope (EG2)")); |
306 |
addProp(eEG2PreAttack); |
addProp(eEG2PreAttack); |
307 |
addProp(eEG2Attack); |
addProp(eEG2Attack); |
308 |
addProp(eEG2Decay1); |
addProp(eEG2Decay1); |
315 |
addProp(eEG2ControllerAttackInfluence); |
addProp(eEG2ControllerAttackInfluence); |
316 |
addProp(eEG2ControllerDecayInfluence); |
addProp(eEG2ControllerDecayInfluence); |
317 |
addProp(eEG2ControllerReleaseInfluence); |
addProp(eEG2ControllerReleaseInfluence); |
318 |
addHeader(_("Filter Cutoff Oscillator (LFO2):")); |
addHeader(_("Filter Cutoff Oscillator (LFO2)")); |
319 |
addProp(eLFO2Frequency); |
addProp(eLFO2Frequency); |
320 |
addProp(eLFO2InternalDepth); |
addProp(eLFO2InternalDepth); |
321 |
addProp(eLFO2ControlDepth); |
addProp(eLFO2ControlDepth); |
337 |
|
|
338 |
nextPage(); |
nextPage(); |
339 |
|
|
340 |
addHeader(_("General Pitch Settings:")); |
addHeader(_("General Pitch Settings")); |
341 |
addProp(eFineTune); |
addProp(eFineTune); |
342 |
addProp(ePitchTrack); |
addProp(ePitchTrack); |
343 |
addHeader(_("Pitch Envelope (EG3):")); |
addHeader(_("Pitch Envelope (EG3)")); |
344 |
addProp(eEG3Attack); |
addProp(eEG3Attack); |
345 |
addProp(eEG3Depth); |
addProp(eEG3Depth); |
346 |
addHeader(_("Pitch Oscillator (LFO3):")); |
addHeader(_("Pitch Oscillator (LFO3)")); |
347 |
addProp(eLFO3Frequency); |
addProp(eLFO3Frequency); |
348 |
addProp(eLFO3InternalDepth); |
addProp(eLFO3InternalDepth); |
349 |
addProp(eLFO3ControlDepth); |
addProp(eLFO3ControlDepth); |
494 |
firstRowInBlock = 0; |
firstRowInBlock = 0; |
495 |
} |
} |
496 |
|
|
497 |
|
void DimRegionEdit::addProp(BoolEntry& boolentry) |
498 |
|
{ |
499 |
|
table[pageno]->attach(boolentry.widget, 1, 3, rowno, rowno + 1, |
500 |
|
Gtk::FILL, Gtk::SHRINK); |
501 |
|
rowno++; |
502 |
|
} |
503 |
|
|
504 |
void DimRegionEdit::addProp(LabelWidget& prop) |
void DimRegionEdit::addProp(LabelWidget& prop) |
505 |
{ |
{ |
506 |
table[pageno]->attach(prop.label, 1, 2, rowno, rowno + 1, |
table[pageno]->attach(prop.label, 1, 2, rowno, rowno + 1, |
665 |
eVCFCutoffControllerInvert.set_sensitive(hasController); |
eVCFCutoffControllerInvert.set_sensitive(hasController); |
666 |
eVCFCutoff.set_sensitive(!hasController); |
eVCFCutoff.set_sensitive(!hasController); |
667 |
eVCFResonanceDynamic.set_sensitive(!hasController); |
eVCFResonanceDynamic.set_sensitive(!hasController); |
668 |
eVCFVelocityScale.label.set_text(hasController ? "MinimumCutoff:" : |
eVCFVelocityScale.label.set_text(hasController ? "Minimum cutoff:" : |
669 |
"VelocityScale:"); |
"Velocity scale:"); |
670 |
} |
} |
671 |
|
|
672 |
void DimRegionEdit::VCFResonanceController_changed() |
void DimRegionEdit::VCFResonanceController_changed() |