36
36
enum ByteBeatSettings {
37
37
BYTEBEAT_SETTING_EQUATION,
38
38
BYTEBEAT_SETTING_SPEED,
39
+ BYTEBEAT_SETTING_PITCH,
39
40
BYTEBEAT_SETTING_P0,
40
41
BYTEBEAT_SETTING_P1,
41
42
BYTEBEAT_SETTING_P2,
@@ -69,6 +70,7 @@ enum ByteBeatCVMapping {
69
70
BYTEBEAT_CV_MAPPING_LOOP_END,
70
71
BYTEBEAT_CV_MAPPING_LOOP_END_MED,
71
72
BYTEBEAT_CV_MAPPING_LOOP_END_FINE,
73
+ BYTEBEAT_CV_MAPPING_PITCH,
72
74
BYTEBEAT_CV_MAPPING_LAST,
73
75
BYTEBEAT_CV_MAPPING_FIRST=BYTEBEAT_CV_MAPPING_EQUATION
74
76
@@ -78,7 +80,7 @@ class ByteBeat : public settings::SettingsBase<ByteBeat, BYTEBEAT_SETTING_LAST>
78
80
public:
79
81
80
82
static constexpr size_t kHistoryDepth = 64 ;
81
- static constexpr int kMaxByteBeatParameters = 11 ;
83
+ static constexpr int kMaxByteBeatParameters = 12 ;
82
84
83
85
void Init (OC::DigitalInput default_trigger);
84
86
@@ -114,6 +116,10 @@ public:
114
116
return values_[BYTEBEAT_SETTING_SPEED];
115
117
}
116
118
119
+ uint8_t get_pitch () const {
120
+ return values_[BYTEBEAT_SETTING_PITCH];
121
+ }
122
+
117
123
uint8_t get_p0 () const {
118
124
return values_[BYTEBEAT_SETTING_P0];
119
125
}
@@ -199,6 +205,7 @@ public:
199
205
ByteBeatSettings *settings = enabled_settings_;
200
206
*settings++ = BYTEBEAT_SETTING_EQUATION;
201
207
*settings++ = BYTEBEAT_SETTING_SPEED;
208
+ *settings++ = BYTEBEAT_SETTING_PITCH;
202
209
*settings++ = BYTEBEAT_SETTING_P0;
203
210
*settings++ = BYTEBEAT_SETTING_P1;
204
211
*settings++ = BYTEBEAT_SETTING_P2;
@@ -242,6 +249,7 @@ public:
242
249
switch (mapping) {
243
250
case BYTEBEAT_CV_MAPPING_EQUATION:
244
251
case BYTEBEAT_CV_MAPPING_SPEED:
252
+ case BYTEBEAT_CV_MAPPING_PITCH:
245
253
case BYTEBEAT_CV_MAPPING_P0:
246
254
case BYTEBEAT_CV_MAPPING_P1:
247
255
case BYTEBEAT_CV_MAPPING_P2:
@@ -275,13 +283,14 @@ public:
275
283
s[8 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end ()));
276
284
s[9 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end_med ()));
277
285
s[10 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end_fine ()));
286
+ s[11 ] = SCALE8_16 (static_cast <int32_t >(get_pitch ()));
278
287
279
288
apply_cv_mapping (BYTEBEAT_SETTING_CV1, cvs, s);
280
289
apply_cv_mapping (BYTEBEAT_SETTING_CV2, cvs, s);
281
290
apply_cv_mapping (BYTEBEAT_SETTING_CV3, cvs, s);
282
291
apply_cv_mapping (BYTEBEAT_SETTING_CV4, cvs, s);
283
292
284
- for (uint_fast8_t i = 0 ; i < 11 ; ++i) {
293
+ for (uint_fast8_t i = 0 ; i < 12 ; ++i) {
285
294
s[i] = USAT16 (s[i]) ;
286
295
s_[i] = s[i] ;
287
296
}
@@ -336,16 +345,13 @@ void ByteBeat::Init(OC::DigitalInput default_trigger) {
336
345
}
337
346
338
347
const char * const bytebeat_cv_mapping_names[BYTEBEAT_CV_MAPPING_LAST] = {
339
- " off" , " equ" , " spd" , " p0" , " p1" , " p2" , " beg++" , " beg+" , " beg" , " end++" , " end+" , " end"
340
- };
341
-
342
- const char * const bytebeat_equation_names[] = {
343
- " hope" , " love" , " life" , " age" , " clysm" , " monk" , " NERV" , " Trurl" , " Pirx" , " Snaut" , " Hari" , " Kris" , " Tichy" , " Bregg" , " Avon" , " Orac"
348
+ " off" , " equ" , " spd" , " p0" , " p1" , " p2" , " beg++" , " beg+" , " beg" , " end++" , " end+" , " end" ," pitch"
344
349
};
345
350
346
351
SETTINGS_DECLARE (ByteBeat, BYTEBEAT_SETTING_LAST) {
347
- { 0 , 0 , 15 , " Equation" , bytebeat_equation_names, settings::STORAGE_TYPE_U8 },
352
+ { 0 , 0 , 15 , " Equation" , OC::Strings:: bytebeat_equation_names, settings::STORAGE_TYPE_U8 },
348
353
{ 255 , 0 , 255 , " Speed" , NULL , settings::STORAGE_TYPE_U8 },
354
+ { 1 , 1 , 255 , " Pitch" , NULL , settings::STORAGE_TYPE_U8 },
349
355
{ 126 , 0 , 255 , " Parameter 0" , NULL , settings::STORAGE_TYPE_U8 },
350
356
{ 126 , 0 , 255 , " Parameter 1" , NULL , settings::STORAGE_TYPE_U8 },
351
357
{ 127 , 0 , 255 , " Parameter 2" , NULL , settings::STORAGE_TYPE_U8 },
0 commit comments