3636enum ByteBeatSettings {
3737 BYTEBEAT_SETTING_EQUATION ,
3838 BYTEBEAT_SETTING_SPEED ,
39+ BYTEBEAT_SETTING_PITCH ,
3940 BYTEBEAT_SETTING_P0 ,
4041 BYTEBEAT_SETTING_P1 ,
4142 BYTEBEAT_SETTING_P2 ,
@@ -69,6 +70,7 @@ enum ByteBeatCVMapping {
6970 BYTEBEAT_CV_MAPPING_LOOP_END ,
7071 BYTEBEAT_CV_MAPPING_LOOP_END_MED ,
7172 BYTEBEAT_CV_MAPPING_LOOP_END_FINE ,
73+ BYTEBEAT_CV_MAPPING_PITCH ,
7274 BYTEBEAT_CV_MAPPING_LAST ,
7375 BYTEBEAT_CV_MAPPING_FIRST =BYTEBEAT_CV_MAPPING_EQUATION
7476
@@ -78,7 +80,7 @@ class ByteBeat : public settings::SettingsBase<ByteBeat, BYTEBEAT_SETTING_LAST>
7880public:
7981
8082 static constexpr size_t kHistoryDepth = 64 ;
81- static constexpr int kMaxByteBeatParameters = 11 ;
83+ static constexpr int kMaxByteBeatParameters = 12 ;
8284
8385 void Init (OC ::DigitalInput default_trigger);
8486
@@ -114,6 +116,10 @@ public:
114116 return values_[BYTEBEAT_SETTING_SPEED ];
115117 }
116118
119+ uint8_t get_pitch () const {
120+ return values_[BYTEBEAT_SETTING_PITCH ];
121+ }
122+
117123 uint8_t get_p0 () const {
118124 return values_[BYTEBEAT_SETTING_P0 ];
119125 }
@@ -199,6 +205,7 @@ public:
199205 ByteBeatSettings *settings = enabled_settings_;
200206 *settings++ = BYTEBEAT_SETTING_EQUATION ;
201207 *settings++ = BYTEBEAT_SETTING_SPEED ;
208+ *settings++ = BYTEBEAT_SETTING_PITCH ;
202209 *settings++ = BYTEBEAT_SETTING_P0 ;
203210 *settings++ = BYTEBEAT_SETTING_P1 ;
204211 *settings++ = BYTEBEAT_SETTING_P2 ;
@@ -242,6 +249,7 @@ public:
242249 switch (mapping) {
243250 case BYTEBEAT_CV_MAPPING_EQUATION :
244251 case BYTEBEAT_CV_MAPPING_SPEED :
252+ case BYTEBEAT_CV_MAPPING_PITCH :
245253 case BYTEBEAT_CV_MAPPING_P0 :
246254 case BYTEBEAT_CV_MAPPING_P1 :
247255 case BYTEBEAT_CV_MAPPING_P2 :
@@ -275,13 +283,14 @@ public:
275283 s[8 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end ()));
276284 s[9 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end_med ()));
277285 s[10 ] = SCALE8_16 (static_cast <int32_t >(get_loop_end_fine ()));
286+ s[11 ] = SCALE8_16 (static_cast <int32_t >(get_pitch ()));
278287
279288 apply_cv_mapping (BYTEBEAT_SETTING_CV1 , cvs, s);
280289 apply_cv_mapping (BYTEBEAT_SETTING_CV2 , cvs, s);
281290 apply_cv_mapping (BYTEBEAT_SETTING_CV3 , cvs, s);
282291 apply_cv_mapping (BYTEBEAT_SETTING_CV4 , cvs, s);
283292
284- for (uint_fast8_t i = 0 ; i < 11 ; ++i) {
293+ for (uint_fast8_t i = 0 ; i < 12 ; ++i) {
285294 s[i] = USAT16 (s[i]) ;
286295 s_[i] = s[i] ;
287296 }
@@ -336,16 +345,13 @@ void ByteBeat::Init(OC::DigitalInput default_trigger) {
336345}
337346
338347const 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"
344349};
345350
346351SETTINGS_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 },
348353 { 255 , 0 , 255 , " Speed" , NULL , settings::STORAGE_TYPE_U8 },
354+ { 1 , 1 , 255 , " Pitch" , NULL , settings::STORAGE_TYPE_U8 },
349355 { 126 , 0 , 255 , " Parameter 0" , NULL , settings::STORAGE_TYPE_U8 },
350356 { 126 , 0 , 255 , " Parameter 1" , NULL , settings::STORAGE_TYPE_U8 },
351357 { 127 , 0 , 255 , " Parameter 2" , NULL , settings::STORAGE_TYPE_U8 },
0 commit comments