Oliver Fabel 1 год назад
Родитель
Сommit
e6ef1d6930
2 измененных файлов с 217 добавлено и 225 удалено
  1. 108 108
      mp_flipper_modflipperzero.c
  2. 109 117
      mp_flipper_modflipperzero.h

+ 108 - 108
mp_flipper_modflipperzero.c

@@ -77,117 +77,117 @@ note_names: List = ['C', 'CS', 'D', 'DS', 'E', 'F', 'FS', 'G', 'GS', 'A', 'AS',
 
 for octave in range(9):
     for name in note_names:
-        print("static const mp_obj_t flipperzero_speaker_note_%s%s_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_%s%s};" % (name.lower(),octave,name,octave))
+        print("static const mp_const_obj_t flipperzero_speaker_note_%s%s_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_%s%s};" % (name.lower(),octave,name,octave))
 */
 
 static const mp_const_obj_t flipperzero_speaker_note_c0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C0};
-static const mp_obj_t flipperzero_speaker_note_cs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS0};
-static const mp_obj_t flipperzero_speaker_note_d0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D0};
-static const mp_obj_t flipperzero_speaker_note_ds0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS0};
-static const mp_obj_t flipperzero_speaker_note_e0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E0};
-static const mp_obj_t flipperzero_speaker_note_f0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F0};
-static const mp_obj_t flipperzero_speaker_note_fs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS0};
-static const mp_obj_t flipperzero_speaker_note_g0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G0};
-static const mp_obj_t flipperzero_speaker_note_gs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS0};
-static const mp_obj_t flipperzero_speaker_note_a0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A0};
-static const mp_obj_t flipperzero_speaker_note_as0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS0};
-static const mp_obj_t flipperzero_speaker_note_b0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B0};
-static const mp_obj_t flipperzero_speaker_note_c1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C1};
-static const mp_obj_t flipperzero_speaker_note_cs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS1};
-static const mp_obj_t flipperzero_speaker_note_d1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D1};
-static const mp_obj_t flipperzero_speaker_note_ds1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS1};
-static const mp_obj_t flipperzero_speaker_note_e1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E1};
-static const mp_obj_t flipperzero_speaker_note_f1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F1};
-static const mp_obj_t flipperzero_speaker_note_fs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS1};
-static const mp_obj_t flipperzero_speaker_note_g1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G1};
-static const mp_obj_t flipperzero_speaker_note_gs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS1};
-static const mp_obj_t flipperzero_speaker_note_a1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A1};
-static const mp_obj_t flipperzero_speaker_note_as1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS1};
-static const mp_obj_t flipperzero_speaker_note_b1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B1};
-static const mp_obj_t flipperzero_speaker_note_c2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C2};
-static const mp_obj_t flipperzero_speaker_note_cs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS2};
-static const mp_obj_t flipperzero_speaker_note_d2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D2};
-static const mp_obj_t flipperzero_speaker_note_ds2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS2};
-static const mp_obj_t flipperzero_speaker_note_e2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E2};
-static const mp_obj_t flipperzero_speaker_note_f2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F2};
-static const mp_obj_t flipperzero_speaker_note_fs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS2};
-static const mp_obj_t flipperzero_speaker_note_g2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G2};
-static const mp_obj_t flipperzero_speaker_note_gs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS2};
-static const mp_obj_t flipperzero_speaker_note_a2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A2};
-static const mp_obj_t flipperzero_speaker_note_as2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS2};
-static const mp_obj_t flipperzero_speaker_note_b2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B2};
-static const mp_obj_t flipperzero_speaker_note_c3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C3};
-static const mp_obj_t flipperzero_speaker_note_cs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS3};
-static const mp_obj_t flipperzero_speaker_note_d3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D3};
-static const mp_obj_t flipperzero_speaker_note_ds3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS3};
-static const mp_obj_t flipperzero_speaker_note_e3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E3};
-static const mp_obj_t flipperzero_speaker_note_f3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F3};
-static const mp_obj_t flipperzero_speaker_note_fs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS3};
-static const mp_obj_t flipperzero_speaker_note_g3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G3};
-static const mp_obj_t flipperzero_speaker_note_gs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS3};
-static const mp_obj_t flipperzero_speaker_note_a3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A3};
-static const mp_obj_t flipperzero_speaker_note_as3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS3};
-static const mp_obj_t flipperzero_speaker_note_b3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B3};
-static const mp_obj_t flipperzero_speaker_note_c4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C4};
-static const mp_obj_t flipperzero_speaker_note_cs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS4};
-static const mp_obj_t flipperzero_speaker_note_d4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D4};
-static const mp_obj_t flipperzero_speaker_note_ds4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS4};
-static const mp_obj_t flipperzero_speaker_note_e4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E4};
-static const mp_obj_t flipperzero_speaker_note_f4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F4};
-static const mp_obj_t flipperzero_speaker_note_fs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS4};
-static const mp_obj_t flipperzero_speaker_note_g4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G4};
-static const mp_obj_t flipperzero_speaker_note_gs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS4};
-static const mp_obj_t flipperzero_speaker_note_a4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A4};
-static const mp_obj_t flipperzero_speaker_note_as4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS4};
-static const mp_obj_t flipperzero_speaker_note_b4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B4};
-static const mp_obj_t flipperzero_speaker_note_c5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C5};
-static const mp_obj_t flipperzero_speaker_note_cs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS5};
-static const mp_obj_t flipperzero_speaker_note_d5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D5};
-static const mp_obj_t flipperzero_speaker_note_ds5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS5};
-static const mp_obj_t flipperzero_speaker_note_e5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E5};
-static const mp_obj_t flipperzero_speaker_note_f5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F5};
-static const mp_obj_t flipperzero_speaker_note_fs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS5};
-static const mp_obj_t flipperzero_speaker_note_g5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G5};
-static const mp_obj_t flipperzero_speaker_note_gs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS5};
-static const mp_obj_t flipperzero_speaker_note_a5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A5};
-static const mp_obj_t flipperzero_speaker_note_as5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS5};
-static const mp_obj_t flipperzero_speaker_note_b5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B5};
-static const mp_obj_t flipperzero_speaker_note_c6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C6};
-static const mp_obj_t flipperzero_speaker_note_cs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS6};
-static const mp_obj_t flipperzero_speaker_note_d6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D6};
-static const mp_obj_t flipperzero_speaker_note_ds6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS6};
-static const mp_obj_t flipperzero_speaker_note_e6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E6};
-static const mp_obj_t flipperzero_speaker_note_f6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F6};
-static const mp_obj_t flipperzero_speaker_note_fs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS6};
-static const mp_obj_t flipperzero_speaker_note_g6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G6};
-static const mp_obj_t flipperzero_speaker_note_gs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS6};
-static const mp_obj_t flipperzero_speaker_note_a6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A6};
-static const mp_obj_t flipperzero_speaker_note_as6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS6};
-static const mp_obj_t flipperzero_speaker_note_b6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B6};
-static const mp_obj_t flipperzero_speaker_note_c7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C7};
-static const mp_obj_t flipperzero_speaker_note_cs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS7};
-static const mp_obj_t flipperzero_speaker_note_d7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D7};
-static const mp_obj_t flipperzero_speaker_note_ds7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS7};
-static const mp_obj_t flipperzero_speaker_note_e7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E7};
-static const mp_obj_t flipperzero_speaker_note_f7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F7};
-static const mp_obj_t flipperzero_speaker_note_fs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS7};
-static const mp_obj_t flipperzero_speaker_note_g7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G7};
-static const mp_obj_t flipperzero_speaker_note_gs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS7};
-static const mp_obj_t flipperzero_speaker_note_a7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A7};
-static const mp_obj_t flipperzero_speaker_note_as7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS7};
-static const mp_obj_t flipperzero_speaker_note_b7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B7};
-static const mp_obj_t flipperzero_speaker_note_c8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C8};
-static const mp_obj_t flipperzero_speaker_note_cs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS8};
-static const mp_obj_t flipperzero_speaker_note_d8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D8};
-static const mp_obj_t flipperzero_speaker_note_ds8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS8};
-static const mp_obj_t flipperzero_speaker_note_e8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E8};
-static const mp_obj_t flipperzero_speaker_note_f8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F8};
-static const mp_obj_t flipperzero_speaker_note_fs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS8};
-static const mp_obj_t flipperzero_speaker_note_g8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G8};
-static const mp_obj_t flipperzero_speaker_note_gs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS8};
-static const mp_obj_t flipperzero_speaker_note_a8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A8};
-static const mp_obj_t flipperzero_speaker_note_as8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS8};
-static const mp_obj_t flipperzero_speaker_note_b8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B8};
+static const mp_const_obj_t flipperzero_speaker_note_cs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS0};
+static const mp_const_obj_t flipperzero_speaker_note_d0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D0};
+static const mp_const_obj_t flipperzero_speaker_note_ds0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS0};
+static const mp_const_obj_t flipperzero_speaker_note_e0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E0};
+static const mp_const_obj_t flipperzero_speaker_note_f0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F0};
+static const mp_const_obj_t flipperzero_speaker_note_fs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS0};
+static const mp_const_obj_t flipperzero_speaker_note_g0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G0};
+static const mp_const_obj_t flipperzero_speaker_note_gs0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS0};
+static const mp_const_obj_t flipperzero_speaker_note_a0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A0};
+static const mp_const_obj_t flipperzero_speaker_note_as0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS0};
+static const mp_const_obj_t flipperzero_speaker_note_b0_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B0};
+static const mp_const_obj_t flipperzero_speaker_note_c1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C1};
+static const mp_const_obj_t flipperzero_speaker_note_cs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS1};
+static const mp_const_obj_t flipperzero_speaker_note_d1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D1};
+static const mp_const_obj_t flipperzero_speaker_note_ds1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS1};
+static const mp_const_obj_t flipperzero_speaker_note_e1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E1};
+static const mp_const_obj_t flipperzero_speaker_note_f1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F1};
+static const mp_const_obj_t flipperzero_speaker_note_fs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS1};
+static const mp_const_obj_t flipperzero_speaker_note_g1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G1};
+static const mp_const_obj_t flipperzero_speaker_note_gs1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS1};
+static const mp_const_obj_t flipperzero_speaker_note_a1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A1};
+static const mp_const_obj_t flipperzero_speaker_note_as1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS1};
+static const mp_const_obj_t flipperzero_speaker_note_b1_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B1};
+static const mp_const_obj_t flipperzero_speaker_note_c2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C2};
+static const mp_const_obj_t flipperzero_speaker_note_cs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS2};
+static const mp_const_obj_t flipperzero_speaker_note_d2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D2};
+static const mp_const_obj_t flipperzero_speaker_note_ds2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS2};
+static const mp_const_obj_t flipperzero_speaker_note_e2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E2};
+static const mp_const_obj_t flipperzero_speaker_note_f2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F2};
+static const mp_const_obj_t flipperzero_speaker_note_fs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS2};
+static const mp_const_obj_t flipperzero_speaker_note_g2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G2};
+static const mp_const_obj_t flipperzero_speaker_note_gs2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS2};
+static const mp_const_obj_t flipperzero_speaker_note_a2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A2};
+static const mp_const_obj_t flipperzero_speaker_note_as2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS2};
+static const mp_const_obj_t flipperzero_speaker_note_b2_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B2};
+static const mp_const_obj_t flipperzero_speaker_note_c3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C3};
+static const mp_const_obj_t flipperzero_speaker_note_cs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS3};
+static const mp_const_obj_t flipperzero_speaker_note_d3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D3};
+static const mp_const_obj_t flipperzero_speaker_note_ds3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS3};
+static const mp_const_obj_t flipperzero_speaker_note_e3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E3};
+static const mp_const_obj_t flipperzero_speaker_note_f3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F3};
+static const mp_const_obj_t flipperzero_speaker_note_fs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS3};
+static const mp_const_obj_t flipperzero_speaker_note_g3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G3};
+static const mp_const_obj_t flipperzero_speaker_note_gs3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS3};
+static const mp_const_obj_t flipperzero_speaker_note_a3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A3};
+static const mp_const_obj_t flipperzero_speaker_note_as3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS3};
+static const mp_const_obj_t flipperzero_speaker_note_b3_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B3};
+static const mp_const_obj_t flipperzero_speaker_note_c4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C4};
+static const mp_const_obj_t flipperzero_speaker_note_cs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS4};
+static const mp_const_obj_t flipperzero_speaker_note_d4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D4};
+static const mp_const_obj_t flipperzero_speaker_note_ds4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS4};
+static const mp_const_obj_t flipperzero_speaker_note_e4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E4};
+static const mp_const_obj_t flipperzero_speaker_note_f4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F4};
+static const mp_const_obj_t flipperzero_speaker_note_fs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS4};
+static const mp_const_obj_t flipperzero_speaker_note_g4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G4};
+static const mp_const_obj_t flipperzero_speaker_note_gs4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS4};
+static const mp_const_obj_t flipperzero_speaker_note_a4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A4};
+static const mp_const_obj_t flipperzero_speaker_note_as4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS4};
+static const mp_const_obj_t flipperzero_speaker_note_b4_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B4};
+static const mp_const_obj_t flipperzero_speaker_note_c5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C5};
+static const mp_const_obj_t flipperzero_speaker_note_cs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS5};
+static const mp_const_obj_t flipperzero_speaker_note_d5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D5};
+static const mp_const_obj_t flipperzero_speaker_note_ds5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS5};
+static const mp_const_obj_t flipperzero_speaker_note_e5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E5};
+static const mp_const_obj_t flipperzero_speaker_note_f5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F5};
+static const mp_const_obj_t flipperzero_speaker_note_fs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS5};
+static const mp_const_obj_t flipperzero_speaker_note_g5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G5};
+static const mp_const_obj_t flipperzero_speaker_note_gs5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS5};
+static const mp_const_obj_t flipperzero_speaker_note_a5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A5};
+static const mp_const_obj_t flipperzero_speaker_note_as5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS5};
+static const mp_const_obj_t flipperzero_speaker_note_b5_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B5};
+static const mp_const_obj_t flipperzero_speaker_note_c6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C6};
+static const mp_const_obj_t flipperzero_speaker_note_cs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS6};
+static const mp_const_obj_t flipperzero_speaker_note_d6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D6};
+static const mp_const_obj_t flipperzero_speaker_note_ds6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS6};
+static const mp_const_obj_t flipperzero_speaker_note_e6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E6};
+static const mp_const_obj_t flipperzero_speaker_note_f6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F6};
+static const mp_const_obj_t flipperzero_speaker_note_fs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS6};
+static const mp_const_obj_t flipperzero_speaker_note_g6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G6};
+static const mp_const_obj_t flipperzero_speaker_note_gs6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS6};
+static const mp_const_obj_t flipperzero_speaker_note_a6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A6};
+static const mp_const_obj_t flipperzero_speaker_note_as6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS6};
+static const mp_const_obj_t flipperzero_speaker_note_b6_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B6};
+static const mp_const_obj_t flipperzero_speaker_note_c7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C7};
+static const mp_const_obj_t flipperzero_speaker_note_cs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS7};
+static const mp_const_obj_t flipperzero_speaker_note_d7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D7};
+static const mp_const_obj_t flipperzero_speaker_note_ds7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS7};
+static const mp_const_obj_t flipperzero_speaker_note_e7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E7};
+static const mp_const_obj_t flipperzero_speaker_note_f7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F7};
+static const mp_const_obj_t flipperzero_speaker_note_fs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS7};
+static const mp_const_obj_t flipperzero_speaker_note_g7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G7};
+static const mp_const_obj_t flipperzero_speaker_note_gs7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS7};
+static const mp_const_obj_t flipperzero_speaker_note_a7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A7};
+static const mp_const_obj_t flipperzero_speaker_note_as7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS7};
+static const mp_const_obj_t flipperzero_speaker_note_b7_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B7};
+static const mp_const_obj_t flipperzero_speaker_note_c8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_C8};
+static const mp_const_obj_t flipperzero_speaker_note_cs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_CS8};
+static const mp_const_obj_t flipperzero_speaker_note_d8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_D8};
+static const mp_const_obj_t flipperzero_speaker_note_ds8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_DS8};
+static const mp_const_obj_t flipperzero_speaker_note_e8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_E8};
+static const mp_const_obj_t flipperzero_speaker_note_f8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_F8};
+static const mp_const_obj_t flipperzero_speaker_note_fs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_FS8};
+static const mp_const_obj_t flipperzero_speaker_note_g8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_G8};
+static const mp_const_obj_t flipperzero_speaker_note_gs8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_GS8};
+static const mp_const_obj_t flipperzero_speaker_note_a8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_A8};
+static const mp_const_obj_t flipperzero_speaker_note_as8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_AS8};
+static const mp_const_obj_t flipperzero_speaker_note_b8_obj = {{&mp_type_float}, (mp_float_t)MP_FLIPPER_SPEAKER_NOTE_B8};
 
 static mp_obj_t flipperzero_speaker_start(mp_obj_t frequency_obj, mp_obj_t volume_obj) {
     mp_float_t frequency = mp_obj_get_float(frequency_obj);

+ 109 - 117
mp_flipper_modflipperzero.h

@@ -55,126 +55,118 @@ cf: float = 2 ** (1.0 / 12)
 note: float = base_note
 for octave in range(9):
     for name in note_names:
-        print(f"#define MP_FLIPPER_SPEAKER_NOTE_{name}{octave} {round(note, 2)}f")
+        print(f"#define MP_FLIPPER_SPEAKER_NOTE_{name}{octave} {round(note, 2)}")
         note = note * cf
 */
 
-#define MP_FLIPPER_SPEAKER_NOTE_C0 16.35f
-#define MP_FLIPPER_SPEAKER_NOTE_CS0 17.32f
-#define MP_FLIPPER_SPEAKER_NOTE_D0 18.35f
-#define MP_FLIPPER_SPEAKER_NOTE_DS0 19.45f
-#define MP_FLIPPER_SPEAKER_NOTE_E0 20.6f
-#define MP_FLIPPER_SPEAKER_NOTE_F0 21.83f
-#define MP_FLIPPER_SPEAKER_NOTE_FS0 23.12f
-#define MP_FLIPPER_SPEAKER_NOTE_G0 24.5f
-#define MP_FLIPPER_SPEAKER_NOTE_GS0 25.96f
-#define MP_FLIPPER_SPEAKER_NOTE_A0 27.5f
-#define MP_FLIPPER_SPEAKER_NOTE_AS0 29.14f
-#define MP_FLIPPER_SPEAKER_NOTE_B0 30.87f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C1 32.7f
-#define MP_FLIPPER_SPEAKER_NOTE_CS1 34.65f
-#define MP_FLIPPER_SPEAKER_NOTE_D1 36.71f
-#define MP_FLIPPER_SPEAKER_NOTE_DS1 38.89f
-#define MP_FLIPPER_SPEAKER_NOTE_E1 41.2f
-#define MP_FLIPPER_SPEAKER_NOTE_F1 43.65f
-#define MP_FLIPPER_SPEAKER_NOTE_FS1 46.25f
-#define MP_FLIPPER_SPEAKER_NOTE_G1 49.0f
-#define MP_FLIPPER_SPEAKER_NOTE_GS1 51.91f
-#define MP_FLIPPER_SPEAKER_NOTE_A1 55.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS1 58.27f
-#define MP_FLIPPER_SPEAKER_NOTE_B1 61.74f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C2 65.41f
-#define MP_FLIPPER_SPEAKER_NOTE_CS2 69.3f
-#define MP_FLIPPER_SPEAKER_NOTE_D2 73.42f
-#define MP_FLIPPER_SPEAKER_NOTE_DS2 77.78f
-#define MP_FLIPPER_SPEAKER_NOTE_E2 82.41f
-#define MP_FLIPPER_SPEAKER_NOTE_F2 87.31f
-#define MP_FLIPPER_SPEAKER_NOTE_FS2 92.5f
-#define MP_FLIPPER_SPEAKER_NOTE_G2 98.0f
-#define MP_FLIPPER_SPEAKER_NOTE_GS2 103.83f
-#define MP_FLIPPER_SPEAKER_NOTE_A2 110.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS2 116.54f
-#define MP_FLIPPER_SPEAKER_NOTE_B2 123.47f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C3 130.81f
-#define MP_FLIPPER_SPEAKER_NOTE_CS3 138.59f
-#define MP_FLIPPER_SPEAKER_NOTE_D3 146.83f
-#define MP_FLIPPER_SPEAKER_NOTE_DS3 155.56f
-#define MP_FLIPPER_SPEAKER_NOTE_E3 164.81f
-#define MP_FLIPPER_SPEAKER_NOTE_F3 174.61f
-#define MP_FLIPPER_SPEAKER_NOTE_FS3 185.0f
-#define MP_FLIPPER_SPEAKER_NOTE_G3 196.0f
-#define MP_FLIPPER_SPEAKER_NOTE_GS3 207.65f
-#define MP_FLIPPER_SPEAKER_NOTE_A3 220.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS3 233.08f
-#define MP_FLIPPER_SPEAKER_NOTE_B3 246.94f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C4 261.63f
-#define MP_FLIPPER_SPEAKER_NOTE_CS4 277.18f
-#define MP_FLIPPER_SPEAKER_NOTE_D4 293.66f
-#define MP_FLIPPER_SPEAKER_NOTE_DS4 311.13f
-#define MP_FLIPPER_SPEAKER_NOTE_E4 329.63f
-#define MP_FLIPPER_SPEAKER_NOTE_F4 349.23f
-#define MP_FLIPPER_SPEAKER_NOTE_FS4 369.99f
-#define MP_FLIPPER_SPEAKER_NOTE_G4 392.0f
-#define MP_FLIPPER_SPEAKER_NOTE_GS4 415.3f
-#define MP_FLIPPER_SPEAKER_NOTE_A4 440.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS4 466.16f
-#define MP_FLIPPER_SPEAKER_NOTE_B4 493.88f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C5 523.25f
-#define MP_FLIPPER_SPEAKER_NOTE_CS5 554.37f
-#define MP_FLIPPER_SPEAKER_NOTE_D5 587.33f
-#define MP_FLIPPER_SPEAKER_NOTE_DS5 622.25f
-#define MP_FLIPPER_SPEAKER_NOTE_E5 659.26f
-#define MP_FLIPPER_SPEAKER_NOTE_F5 698.46f
-#define MP_FLIPPER_SPEAKER_NOTE_FS5 739.99f
-#define MP_FLIPPER_SPEAKER_NOTE_G5 783.99f
-#define MP_FLIPPER_SPEAKER_NOTE_GS5 830.61f
-#define MP_FLIPPER_SPEAKER_NOTE_A5 880.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS5 932.33f
-#define MP_FLIPPER_SPEAKER_NOTE_B5 987.77f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C6 1046.5f
-#define MP_FLIPPER_SPEAKER_NOTE_CS6 1108.73f
-#define MP_FLIPPER_SPEAKER_NOTE_D6 1174.66f
-#define MP_FLIPPER_SPEAKER_NOTE_DS6 1244.51f
-#define MP_FLIPPER_SPEAKER_NOTE_E6 1318.51f
-#define MP_FLIPPER_SPEAKER_NOTE_F6 1396.91f
-#define MP_FLIPPER_SPEAKER_NOTE_FS6 1479.98f
-#define MP_FLIPPER_SPEAKER_NOTE_G6 1567.98f
-#define MP_FLIPPER_SPEAKER_NOTE_GS6 1661.22f
-#define MP_FLIPPER_SPEAKER_NOTE_A6 1760.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS6 1864.66f
-#define MP_FLIPPER_SPEAKER_NOTE_B6 1975.53f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C7 2093.0f
-#define MP_FLIPPER_SPEAKER_NOTE_CS7 2217.46f
-#define MP_FLIPPER_SPEAKER_NOTE_D7 2349.32f
-#define MP_FLIPPER_SPEAKER_NOTE_DS7 2489.02f
-#define MP_FLIPPER_SPEAKER_NOTE_E7 2637.02f
-#define MP_FLIPPER_SPEAKER_NOTE_F7 2793.83f
-#define MP_FLIPPER_SPEAKER_NOTE_FS7 2959.96f
-#define MP_FLIPPER_SPEAKER_NOTE_G7 3135.96f
-#define MP_FLIPPER_SPEAKER_NOTE_GS7 3322.44f
-#define MP_FLIPPER_SPEAKER_NOTE_A7 3520.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS7 3729.31f
-#define MP_FLIPPER_SPEAKER_NOTE_B7 3951.07f
-
-#define MP_FLIPPER_SPEAKER_NOTE_C8 4186.01f
-#define MP_FLIPPER_SPEAKER_NOTE_CS8 4434.92f
-#define MP_FLIPPER_SPEAKER_NOTE_D8 4698.64f
-#define MP_FLIPPER_SPEAKER_NOTE_DS8 4978.03f
-#define MP_FLIPPER_SPEAKER_NOTE_E8 5274.04f
-#define MP_FLIPPER_SPEAKER_NOTE_F8 5587.65f
-#define MP_FLIPPER_SPEAKER_NOTE_FS8 5919.91f
-#define MP_FLIPPER_SPEAKER_NOTE_G8 6271.93f
-#define MP_FLIPPER_SPEAKER_NOTE_GS8 6644.88f
-#define MP_FLIPPER_SPEAKER_NOTE_A8 7040.0f
-#define MP_FLIPPER_SPEAKER_NOTE_AS8 7458.62f
-#define MP_FLIPPER_SPEAKER_NOTE_B8 7902.13f
+#define MP_FLIPPER_SPEAKER_NOTE_C0 16.35
+#define MP_FLIPPER_SPEAKER_NOTE_CS0 17.32
+#define MP_FLIPPER_SPEAKER_NOTE_D0 18.35
+#define MP_FLIPPER_SPEAKER_NOTE_DS0 19.45
+#define MP_FLIPPER_SPEAKER_NOTE_E0 20.6
+#define MP_FLIPPER_SPEAKER_NOTE_F0 21.83
+#define MP_FLIPPER_SPEAKER_NOTE_FS0 23.12
+#define MP_FLIPPER_SPEAKER_NOTE_G0 24.5
+#define MP_FLIPPER_SPEAKER_NOTE_GS0 25.96
+#define MP_FLIPPER_SPEAKER_NOTE_A0 27.5
+#define MP_FLIPPER_SPEAKER_NOTE_AS0 29.14
+#define MP_FLIPPER_SPEAKER_NOTE_B0 30.87
+#define MP_FLIPPER_SPEAKER_NOTE_C1 32.7
+#define MP_FLIPPER_SPEAKER_NOTE_CS1 34.65
+#define MP_FLIPPER_SPEAKER_NOTE_D1 36.71
+#define MP_FLIPPER_SPEAKER_NOTE_DS1 38.89
+#define MP_FLIPPER_SPEAKER_NOTE_E1 41.2
+#define MP_FLIPPER_SPEAKER_NOTE_F1 43.65
+#define MP_FLIPPER_SPEAKER_NOTE_FS1 46.25
+#define MP_FLIPPER_SPEAKER_NOTE_G1 49.0
+#define MP_FLIPPER_SPEAKER_NOTE_GS1 51.91
+#define MP_FLIPPER_SPEAKER_NOTE_A1 55.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS1 58.27
+#define MP_FLIPPER_SPEAKER_NOTE_B1 61.74
+#define MP_FLIPPER_SPEAKER_NOTE_C2 65.41
+#define MP_FLIPPER_SPEAKER_NOTE_CS2 69.3
+#define MP_FLIPPER_SPEAKER_NOTE_D2 73.42
+#define MP_FLIPPER_SPEAKER_NOTE_DS2 77.78
+#define MP_FLIPPER_SPEAKER_NOTE_E2 82.41
+#define MP_FLIPPER_SPEAKER_NOTE_F2 87.31
+#define MP_FLIPPER_SPEAKER_NOTE_FS2 92.5
+#define MP_FLIPPER_SPEAKER_NOTE_G2 98.0
+#define MP_FLIPPER_SPEAKER_NOTE_GS2 103.83
+#define MP_FLIPPER_SPEAKER_NOTE_A2 110.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS2 116.54
+#define MP_FLIPPER_SPEAKER_NOTE_B2 123.47
+#define MP_FLIPPER_SPEAKER_NOTE_C3 130.81
+#define MP_FLIPPER_SPEAKER_NOTE_CS3 138.59
+#define MP_FLIPPER_SPEAKER_NOTE_D3 146.83
+#define MP_FLIPPER_SPEAKER_NOTE_DS3 155.56
+#define MP_FLIPPER_SPEAKER_NOTE_E3 164.81
+#define MP_FLIPPER_SPEAKER_NOTE_F3 174.61
+#define MP_FLIPPER_SPEAKER_NOTE_FS3 185.0
+#define MP_FLIPPER_SPEAKER_NOTE_G3 196.0
+#define MP_FLIPPER_SPEAKER_NOTE_GS3 207.65
+#define MP_FLIPPER_SPEAKER_NOTE_A3 220.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS3 233.08
+#define MP_FLIPPER_SPEAKER_NOTE_B3 246.94
+#define MP_FLIPPER_SPEAKER_NOTE_C4 261.63
+#define MP_FLIPPER_SPEAKER_NOTE_CS4 277.18
+#define MP_FLIPPER_SPEAKER_NOTE_D4 293.66
+#define MP_FLIPPER_SPEAKER_NOTE_DS4 311.13
+#define MP_FLIPPER_SPEAKER_NOTE_E4 329.63
+#define MP_FLIPPER_SPEAKER_NOTE_F4 349.23
+#define MP_FLIPPER_SPEAKER_NOTE_FS4 369.99
+#define MP_FLIPPER_SPEAKER_NOTE_G4 392.0
+#define MP_FLIPPER_SPEAKER_NOTE_GS4 415.3
+#define MP_FLIPPER_SPEAKER_NOTE_A4 440.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS4 466.16
+#define MP_FLIPPER_SPEAKER_NOTE_B4 493.88
+#define MP_FLIPPER_SPEAKER_NOTE_C5 523.25
+#define MP_FLIPPER_SPEAKER_NOTE_CS5 554.37
+#define MP_FLIPPER_SPEAKER_NOTE_D5 587.33
+#define MP_FLIPPER_SPEAKER_NOTE_DS5 622.25
+#define MP_FLIPPER_SPEAKER_NOTE_E5 659.26
+#define MP_FLIPPER_SPEAKER_NOTE_F5 698.46
+#define MP_FLIPPER_SPEAKER_NOTE_FS5 739.99
+#define MP_FLIPPER_SPEAKER_NOTE_G5 783.99
+#define MP_FLIPPER_SPEAKER_NOTE_GS5 830.61
+#define MP_FLIPPER_SPEAKER_NOTE_A5 880.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS5 932.33
+#define MP_FLIPPER_SPEAKER_NOTE_B5 987.77
+#define MP_FLIPPER_SPEAKER_NOTE_C6 1046.5
+#define MP_FLIPPER_SPEAKER_NOTE_CS6 1108.73
+#define MP_FLIPPER_SPEAKER_NOTE_D6 1174.66
+#define MP_FLIPPER_SPEAKER_NOTE_DS6 1244.51
+#define MP_FLIPPER_SPEAKER_NOTE_E6 1318.51
+#define MP_FLIPPER_SPEAKER_NOTE_F6 1396.91
+#define MP_FLIPPER_SPEAKER_NOTE_FS6 1479.98
+#define MP_FLIPPER_SPEAKER_NOTE_G6 1567.98
+#define MP_FLIPPER_SPEAKER_NOTE_GS6 1661.22
+#define MP_FLIPPER_SPEAKER_NOTE_A6 1760.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS6 1864.66
+#define MP_FLIPPER_SPEAKER_NOTE_B6 1975.53
+#define MP_FLIPPER_SPEAKER_NOTE_C7 2093.0
+#define MP_FLIPPER_SPEAKER_NOTE_CS7 2217.46
+#define MP_FLIPPER_SPEAKER_NOTE_D7 2349.32
+#define MP_FLIPPER_SPEAKER_NOTE_DS7 2489.02
+#define MP_FLIPPER_SPEAKER_NOTE_E7 2637.02
+#define MP_FLIPPER_SPEAKER_NOTE_F7 2793.83
+#define MP_FLIPPER_SPEAKER_NOTE_FS7 2959.96
+#define MP_FLIPPER_SPEAKER_NOTE_G7 3135.96
+#define MP_FLIPPER_SPEAKER_NOTE_GS7 3322.44
+#define MP_FLIPPER_SPEAKER_NOTE_A7 3520.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS7 3729.31
+#define MP_FLIPPER_SPEAKER_NOTE_B7 3951.07
+#define MP_FLIPPER_SPEAKER_NOTE_C8 4186.01
+#define MP_FLIPPER_SPEAKER_NOTE_CS8 4434.92
+#define MP_FLIPPER_SPEAKER_NOTE_D8 4698.64
+#define MP_FLIPPER_SPEAKER_NOTE_DS8 4978.03
+#define MP_FLIPPER_SPEAKER_NOTE_E8 5274.04
+#define MP_FLIPPER_SPEAKER_NOTE_F8 5587.65
+#define MP_FLIPPER_SPEAKER_NOTE_FS8 5919.91
+#define MP_FLIPPER_SPEAKER_NOTE_G8 6271.93
+#define MP_FLIPPER_SPEAKER_NOTE_GS8 6644.88
+#define MP_FLIPPER_SPEAKER_NOTE_A8 7040.0
+#define MP_FLIPPER_SPEAKER_NOTE_AS8 7458.62
+#define MP_FLIPPER_SPEAKER_NOTE_B8 7902.13
 
 bool mp_flipper_speaker_start(float frequency, float volume);
 bool mp_flipper_speaker_set_volume(float volume);