Oliver Fabel 1 год назад
Родитель
Сommit
d7a9d5313d
1 измененных файлов с 4 добавлено и 3 удалено
  1. 4 3
      mp_flipper_modflipperzero.c

+ 4 - 3
mp_flipper_modflipperzero.c

@@ -633,10 +633,10 @@ void flipperzero_module_attr(mp_obj_t self_in, qstr attr, mp_obj_t* dest) {
 
 
         if(strstr(attribute, "SPEAKER_NOTE_") == &attribute[0]) {
         if(strstr(attribute, "SPEAKER_NOTE_") == &attribute[0]) {
             size_t len = strlen(attribute);
             size_t len = strlen(attribute);
-            float octave = attribute[len - 1] - '0';
+            double octave = attribute[len - 1] - '0';
             bool is_sharp = attribute[len - 2] == 'S';
             bool is_sharp = attribute[len - 2] == 'S';
             size_t note_index = len - (is_sharp ? 3 : 2);
             size_t note_index = len - (is_sharp ? 3 : 2);
-            float note = -1.0;
+            double note = -1.0;
 
 
             for(size_t i = 0; i < strlen(notes); i++) {
             for(size_t i = 0; i < strlen(notes); i++) {
                 if(notes[i] == attribute[note_index]) {
                 if(notes[i] == attribute[note_index]) {
@@ -649,8 +649,9 @@ void flipperzero_module_attr(mp_obj_t self_in, qstr attr, mp_obj_t* dest) {
             if(octave < 0.0 || octave > 8.0 || note < 0.0 || note > 12.0) {
             if(octave < 0.0 || octave > 8.0 || note < 0.0 || note > 12.0) {
                 dest[0] = mp_const_none;
                 dest[0] = mp_const_none;
             } else {
             } else {
+                double exponent = (octave * 12.0 + note - 57.0) / 12.0;
                 // dest[0] = mp_obj_new_float(440.0 * pow(2.0, (octave * 12.0 + note - 57.0) / 12.0));
                 // dest[0] = mp_obj_new_float(440.0 * pow(2.0, (octave * 12.0 + note - 57.0) / 12.0));
-                dest[0] = mp_obj_new_float(440.0 * pow(2.0, -4.75));
+                dest[0] = mp_obj_new_float(440.0 * pow(2.0, exponent));
             }
             }
 
 
             return;
             return;