Przeglądaj źródła

feat: add more tunings

Ihar Biaspalau 10 miesięcy temu
rodzic
commit
195cac14d8

+ 28 - 30
README.md

@@ -1,35 +1,33 @@
 # Tuning Fork
 # Tuning Fork
 
 
-A tuning fork for the [Flipper Zero](https://flipperzero.one/) device.
-Allows to play different notes in different pitches.
-
-![screenshot_1](img/screenshot_1.png)
-![screenshot_2](img/screenshot_2.png)
-![screenshot_3](img/screenshot_3.png)
-![screenshot_4](img/screenshot_4.png)
-
-## Features
-- Tuning forks (440Hz, 432Hz, etc.)
-- Scientific pitch (..., 256Hz, 512Hz, 1024Hz, ...)
-- Guitar Standard (6 strings)
-- Guitar Drop D (6 strings)
-- Guitar D (6 strings)
-- Guitar Drop C (6 strings)
-- Guitar Standard (7 strings)
-- Guitar Drop A (7 strings)
-- Bass Standard (4 strings)
-- Bass Tenor (4 strings)
-- Bass Drop D (4 strings)
-- Bass D (4 strings)
-- Bass Standard (5 strings)
-- Bass Tenor (5 strings)
-- Bass Drop A (5 strings)
-- Ukulele Standard (4 strings)
-- Banjo Standard (5 strings)
-- Cigar Box Open G (3 string)
-- Cigar Box Open D (3 string)
-- Cigar Box Open A (3 string)
-- Cigar Box Open G (4 string)
+Tuning fork for tuning musical instruments and more
+
+![tuning_fork](img/tuning_fork.gif)
+
+## Usage
+
+Use Left/Right, Select, Back for navigation
+
+Use Up/Down for volume control
+
+Use Play/Stop for playing a note
+
+## Tunings
+ - Guitar
+    - 6 strings: Standard, Drop D, DADGAD (Dsus4), Standard D, C#G#C#F#G#C# (C#sus4), Drop C, CGCFGC
+    - 7 strings: Standard, Drop A, Standard A
+ - Bass
+    - 4 strings: Standard, Tenor, Drop D, Standard D, Drop C#, Drop C
+    - 5 strings: Standard, Tenor, Drop A
+ - Ukulele
+    - 4 strings: Standard
+ - Banjo
+    - 5 strings: Standard
+ - Cigar Box
+    - 3 strings: Open G, Open D, Open A
+    - 4 strings: Open G
+ - Tuning Forks: Common A4 (440Hz), Sarti's A4 (436Hz), 1858 A4 (435Hz), 1750-1820 A4 (423.5Hz), Verdi's C4 (256Hz)
+  - Scientific Pitch: C0 (16Hz), C1 (32Hz), C2 (64Hz), C3 (128Hz), C4 (256Hz), C5 (512Hz), C6 (1024Hz), C7 (2048Hz), C8 (4096Hz), C9 (8192Hz), C10 (16384Hz), C11 (32768Hz)
 
 
 ## Development
 ## Development
 
 

+ 1 - 1
application.fam

@@ -13,6 +13,6 @@ App(
     order=20,
     order=20,
     fap_author="@besya",
     fap_author="@besya",
     fap_weburl="https://github.com/besya/flipperzero-tuning-fork",
     fap_weburl="https://github.com/besya/flipperzero-tuning-fork",
-    fap_version="2.0",
+    fap_version="2.1",
     fap_description="Tuning fork for tuning musical instruments",
     fap_description="Tuning fork for tuning musical instruments",
 )
 )

BIN
img/Screenshot-1.png


BIN
img/Screenshot-2.png


BIN
img/Screenshot-3.png


BIN
img/Screenshot-4.png


BIN
img/screenshot_1.png


BIN
img/screenshot_2.png


BIN
img/screenshot_3.png


BIN
img/screenshot_4.png


BIN
img/tuning_fork.gif


+ 16 - 7
instruments.h

@@ -1,15 +1,24 @@
 #include "tunings.h"
 #include "tunings.h"
 
 
-const TUNING Guitar6Tunings[] = {Guitar6Standard, Guitar6DropD, Guitar6D, Guitar6DropC};
-const TUNING Guitar7Tunings[] = {Guitar7Standard, Guitar7DropA};
+const TUNING Guitar6Tunings[] = {
+    Guitar6Standard,
+    Guitar6DropD,
+    Guitar6DADGAD,
+    Guitar6D,
+    Guitar6CGCFGCSharp,
+    Guitar6DropC,
+    Guitar6CGCFGC};
+
+const TUNING Guitar7Tunings[] = {Guitar7Standard, Guitar7DropA, Guitar7A};
 const VARIATION GuitarVariations[] = {
 const VARIATION GuitarVariations[] = {
-    {"6 strings", (TUNING*)Guitar6Tunings, 4},
-    {"7 strings", (TUNING*)Guitar7Tunings, 2}};
+    {"6 strings", (TUNING*)Guitar6Tunings, 7},
+    {"7 strings", (TUNING*)Guitar7Tunings, 3}};
 
 
-const TUNING Bass4Tunings[] = {Bass4Standard, Bass4Tenor, Bass4DropD, Bass4D};
+const TUNING Bass4Tunings[] =
+    {Bass4Standard, Bass4Tenor, Bass4DropD, Bass4D, Bass4DropCSharp, Bass4DropC};
 const TUNING Bass5Tunings[] = {Bass5Standard, Bass5Tenor, Bass5DropA};
 const TUNING Bass5Tunings[] = {Bass5Standard, Bass5Tenor, Bass5DropA};
 const VARIATION BassVariations[] = {
 const VARIATION BassVariations[] = {
-    {"4 strings", (TUNING*)Bass4Tunings, 4},
+    {"4 strings", (TUNING*)Bass4Tunings, 6},
     {"5 strings", (TUNING*)Bass5Tunings, 3}};
     {"5 strings", (TUNING*)Bass5Tunings, 3}};
 
 
 const TUNING Ukulele4Tunings[] = {Ukulele4Standard};
 const TUNING Ukulele4Tunings[] = {Ukulele4Standard};
@@ -35,7 +44,7 @@ const INSTRUMENT Instruments[] = {
     {"Bass", (VARIATION*)BassVariations, 2},
     {"Bass", (VARIATION*)BassVariations, 2},
     {"Ukulele", (VARIATION*)UkuleleVariations, 1},
     {"Ukulele", (VARIATION*)UkuleleVariations, 1},
     {"Banjo", (VARIATION*)BanjoVariations, 1},
     {"Banjo", (VARIATION*)BanjoVariations, 1},
-    {"CigarBox", (VARIATION*)CigarBoxVariations, 2},
+    {"Cigar Box", (VARIATION*)CigarBoxVariations, 2},
     {"Miscellaneous", (VARIATION*)MiscellaneousVariations, 2}};
     {"Miscellaneous", (VARIATION*)MiscellaneousVariations, 2}};
 
 
 #define INSTRUMENTS_COUNT 6
 #define INSTRUMENTS_COUNT 6

+ 155 - 78
tunings.h

@@ -6,162 +6,239 @@
 #include "types.h"
 #include "types.h"
 #include "notes.h"
 #include "notes.h"
 
 
-// MISCELLANEOUS
-// Fork Tunings
-const TUNING ForkCommon = {"Common", {{"A4 (440)", 440.00f}}, 1};
-const TUNING ForkSarti = {"Sarti's", {{"A4 (436)", 436.00f}}, 1};
-const TUNING ForkMid19Century = {"1858", {{"A4 (435)", 435.00f}}, 1};
-const TUNING Fork18Century = {"1750-1820", {{"A4 (423.5)", 423.50f}}, 1};
-const TUNING ForkVerdi = {"Verdi's ", {{"C4 (256.00)", 256.00f}}, 1};
-
-// Other Tunings
-const TUNING ScientificPitch = {
-    "Scientific Pitch",
-    {{"C0 (16Hz)", 16.0f},
-     {"C1 (32Hz)", 32.0f},
-     {"C2 (64Hz)", 64.0f},
-     {"C3 (128Hz)", 128.0f},
-     {"C4 (256Hz)", 256.0f},
-     {"C5 (512Hz)", 512.0f},
-     {"C6 (1024Hz)", 1024.0f},
-     {"C7 (2048Hz)", 2048.0f},
-     {"C8 (4096Hz)", 4096.0f},
-     {"C9 (8192Hz)", 8192.0f},
-     {"C10 (16384Hz)", 16384.0f},
-     {"C11 (32768Hz)", 32768.0f}},
-    12};
-
 // GUITAR
 // GUITAR
 // 6 strings
 // 6 strings
 const TUNING Guitar6Standard = {
 const TUNING Guitar6Standard = {
     "Standard",
     "Standard",
-    {{"String 1", E4},
-     {"String 2", B3},
-     {"String 3", G3},
-     {"String 4", D3},
-     {"String 5", A2},
-     {"String 6", E2}},
+    {{"String 1 (E4)", E4},
+     {"String 2 (B3)", B3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (A2)", A2},
+     {"String 6 (E2)", E2}},
     6};
     6};
 
 
 const TUNING Guitar6DropD = {
 const TUNING Guitar6DropD = {
     "Drop D",
     "Drop D",
-    {{"String 1", E4},
-     {"String 2", B3},
-     {"String 3", G3},
-     {"String 4", D3},
-     {"String 5", A2},
-     {"String 6", D2}},
+    {{"String 1 (E4)", E4},
+     {"String 2 (B3)", B3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (A2)", A2},
+     {"String 6 (D2)", D2}},
+    6};
+
+const TUNING Guitar6DADGAD = {
+    "DADGAD (Dsus4)",
+    {{"String 1 (D4)", D4},
+     {"String 2 (A3)", A3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (A2)", A2},
+     {"String 6 (D2)", D2}},
     6};
     6};
 
 
 const TUNING Guitar6D = {
 const TUNING Guitar6D = {
     "Standard D",
     "Standard D",
-    {{"String 1", D4},
-     {"String 2", A3},
-     {"String 3", F3},
-     {"String 4", C3},
-     {"String 5", G2},
-     {"String 6", D2}},
+    {{"String 1 (D4)", D4},
+     {"String 2 (A3)", A3},
+     {"String 3 (F3)", F3},
+     {"String 4 (C3)", C3},
+     {"String 5 (G2)", G2},
+     {"String 6 (D2)", D2}},
+    6};
+
+const TUNING Guitar6CGCFGCSharp = {
+    "C#G#C#F#G#C#(C#sus4)",
+    {{"String 1 (C#4)", Cs4},
+     {"String 2 (G#3)", Gs3},
+     {"String 3 (F#3)", Fs3},
+     {"String 4 (C#3)", Cs3},
+     {"String 5 (G#2)", Gs2},
+     {"String 6 (C#2)", Cs2}},
     6};
     6};
 
 
 const TUNING Guitar6DropC = {
 const TUNING Guitar6DropC = {
     "Drop C",
     "Drop C",
-    {{"String 1", D4},
-     {"String 2", A3},
-     {"String 3", F3},
-     {"String 4", C3},
-     {"String 5", G2},
-     {"String 6", C2}},
+    {{"String 1 (D4)", D4},
+     {"String 2 (A3)", A3},
+     {"String 3 (F3)", F3},
+     {"String 4 (C3)", C3},
+     {"String 5 (G2)", G2},
+     {"String 6 (C2)", C2}},
+    6};
+
+const TUNING Guitar6CGCFGC = {
+    "CGCFGC (Csus4)",
+    {{"String 1 (C4)", C4},
+     {"String 2 (G3)", G3},
+     {"String 3 (F3)", F3},
+     {"String 4 (C3)", C3},
+     {"String 5 (G2)", G2},
+     {"String 6 (C2)", C2}},
     6};
     6};
 
 
 // 7 strings
 // 7 strings
 const TUNING Guitar7Standard = {
 const TUNING Guitar7Standard = {
     "Standard",
     "Standard",
-    {{"String 1", E4},
-     {"String 2", B3},
-     {"String 3", G3},
-     {"String 4", D3},
-     {"String 5", A2},
-     {"String 6", E2},
-     {"String 7", B1}},
+    {{"String 1 (E4)", E4},
+     {"String 2 (B3)", B3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (A2)", A2},
+     {"String 6 (E2)", E2},
+     {"String 7 (B1)", B1}},
     7};
     7};
 
 
 const TUNING Guitar7DropA = {
 const TUNING Guitar7DropA = {
-    "Standard",
-    {{"String 1", E4},
-     {"String 2", B3},
-     {"String 3", G3},
-     {"String 4", D3},
-     {"String 5", A2},
-     {"String 6", E2},
-     {"String 7", A1}},
+    "Drop A",
+    {{"String 1 (E4)", E4},
+     {"String 2 (B3)", B3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (A2)", A2},
+     {"String 6 (E2)", E2},
+     {"String 7 (A1)", A1}},
+    7};
+
+const TUNING Guitar7A = {
+    "Standard A",
+    {{"String 1 (D4)", D4},
+     {"String 2 (A3)", A3},
+     {"String 3 (F3)", F3},
+     {"String 4 (C3)", C3},
+     {"String 5 (G2)", G2},
+     {"String 6 (D2)", D2},
+     {"String 7 (A1)", A1}},
     7};
     7};
 
 
 // BASS
 // BASS
 // 4 strings
 // 4 strings
 const TUNING Bass4Standard = {
 const TUNING Bass4Standard = {
     "Standard",
     "Standard",
-    {{"String 1", G2}, {"String 2", D2}, {"String 3", A1}, {"String 4", E1}},
+    {{"String 1 (G2)", G2}, {"String 2 (D2)", D2}, {"String 3 (A1)", A1}, {"String 4 (E1)", E1}},
     4};
     4};
 
 
 const TUNING Bass4Tenor = {
 const TUNING Bass4Tenor = {
     "Tenor",
     "Tenor",
-    {{"String 1", C3}, {"String 2", G2}, {"String 3", D2}, {"String 4", A1}},
+    {{"String 1 (C3)", C3}, {"String 2 (G2)", G2}, {"String 3 (D2)", D2}, {"String 4 (A1)", A1}},
     4};
     4};
 
 
 const TUNING Bass4DropD = {
 const TUNING Bass4DropD = {
     "Drop D",
     "Drop D",
-    {{"String 1", G2}, {"String 2", D2}, {"String 3", A1}, {"String 4", D1}},
+    {{"String 1 (G2)", G2}, {"String 2 (D2)", D2}, {"String 3 (A1)", A1}, {"String 4 (D1)", D1}},
     4};
     4};
 
 
 const TUNING Bass4D = {
 const TUNING Bass4D = {
-    "D",
-    {{"String 1", F2}, {"String 2", C2}, {"String 3", G1}, {"String 4", D1}},
+    "Standard D",
+    {{"String 1 (F2)", F2}, {"String 2 (C2)", C2}, {"String 3 (G1)", G1}, {"String 4 (D1)", D1}},
+    4};
+
+const TUNING Bass4DropCSharp = {
+    "Drop C#",
+    {{"String 1 (F#2)", Fs2},
+     {"String 2 (C#2)", Cs2},
+     {"String 3 (G#1)", Gs1},
+     {"String 4 (C#1)", Cs1}},
+    4};
+
+const TUNING Bass4DropC = {
+    "Drop C",
+    {{"String 1 (F2)", F2}, {"String 2 (C2)", C2}, {"String 3 (G1)", G1}, {"String 4 (C1)", C1}},
     4};
     4};
 
 
 // 5 strings
 // 5 strings
 const TUNING Bass5Standard = {
 const TUNING Bass5Standard = {
     "Standard",
     "Standard",
-    {{"String 1", G2}, {"String 2", D2}, {"String 3", A1}, {"String 4", E1}, {"String 5", B0}},
+    {{"String 1 (G2)", G2},
+     {"String 2 (D2)", D2},
+     {"String 3 (A1)", A1},
+     {"String 4 (E1)", E1},
+     {"String 5 (B0)", B0}},
     5};
     5};
 
 
 const TUNING Bass5Tenor = {
 const TUNING Bass5Tenor = {
     "Tenor",
     "Tenor",
-    {{"String 1", C3}, {"String 2", G2}, {"String 3", D2}, {"String 4", A1}, {"String 5", E1}},
+    {{"String 1 (C3)", C3},
+     {"String 2 (G2)", G2},
+     {"String 3 (D2)", D2},
+     {"String 4 (A1)", A1},
+     {"String 5 (E1)", E1}},
     5};
     5};
+
 const TUNING Bass5DropA = {
 const TUNING Bass5DropA = {
     "Drop A",
     "Drop A",
-    {{"String 1", G2}, {"String 2", D2}, {"String 3", A1}, {"String 4", E1}, {"String 5", A0}},
+    {{"String 1 (G2)", G2},
+     {"String 2 (D2)", D2},
+     {"String 3 (A1)", A1},
+     {"String 4 (E1)", E1},
+     {"String 5 (A0)", A0}},
     5};
     5};
 
 
 // UKULELE
 // UKULELE
 // 4 strings
 // 4 strings
 const TUNING Ukulele4Standard = {
 const TUNING Ukulele4Standard = {
     "Standard",
     "Standard",
-    {{"String 1", A4}, {"String 2", E4}, {"String 3", C4}, {"String 4", G4}},
+    {{"String 1 (A4)", A4}, {"String 2 (E4)", E4}, {"String 3 (C4)", C4}, {"String 4 (G4)", G4}},
     4};
     4};
 
 
 // BANJO
 // BANJO
 // 5 strings
 // 5 strings
 const TUNING Banjo5Standard = {
 const TUNING Banjo5Standard = {
     "Standard",
     "Standard",
-    {{"String 1", D4}, {"String 2", B3}, {"String 3", G3}, {"String 4", D3}, {"String 5", G4}},
+    {{"String 1 (D4)", D4},
+     {"String 2 (B3)", B3},
+     {"String 3 (G3)", G3},
+     {"String 4 (D3)", D3},
+     {"String 5 (G4)", G4}},
     5};
     5};
 
 
 // CIGAR BOX
 // CIGAR BOX
 // 3 strings
 // 3 strings
-const TUNING CigarBox3OpenG = {"Open G", {{"String 1", G3}, {"String 2", D3}, {"String 3", G2}}, 3};
+const TUNING CigarBox3OpenG = {
+    "Open G",
+    {{"String 1 (G3)", G3}, {"String 2 (D3)", D3}, {"String 3 (G2)", G2}},
+    3};
 
 
 const TUNING CigarBox3OpenD = {
 const TUNING CigarBox3OpenD = {
     "Open D",
     "Open D",
-    {{"String 1", Fs4}, {"String 2", A3}, {"String 3", D3}},
+    {{"String 1 (Fs4)", Fs4}, {"String 2 (A3)", A3}, {"String 3 (D3)", D3}},
     3};
     3};
 
 
-const TUNING CigarBox3OpenA = {"Open A", {{"String 1", A4}, {"String 2", E4}, {"String 3", A3}}, 3};
+const TUNING CigarBox3OpenA = {
+    "Open A",
+    {{"String 1 (A4)", A4}, {"String 2 (E4)", E4}, {"String 3 (A3)", A3}},
+    3};
 
 
 // 4 strings
 // 4 strings
 const TUNING CigarBox4OpenG = {
 const TUNING CigarBox4OpenG = {
     "Open G",
     "Open G",
-    {{"String 1", D4}, {"String 2", B3}, {"String 3", G3}, {"String 4", D3}},
+    {{"String 1 (D4)", D4}, {"String 2 (B3)", B3}, {"String 3 (G3)", G3}, {"String 4 (D3)", D3}},
     4};
     4};
 
 
+// MISCELLANEOUS
+// Fork Tunings
+const TUNING ForkCommon = {"Common", {{"A4 (440Hz)", 440.00f}}, 1};
+const TUNING ForkSarti = {"Sarti's", {{"A4 (436Hz)", 436.00f}}, 1};
+const TUNING ForkMid19Century = {"1858", {{"A4 (435Hz)", 435.00f}}, 1};
+const TUNING Fork18Century = {"1750-1820", {{"A4 (423.5Hz)", 423.50f}}, 1};
+const TUNING ForkVerdi = {"Verdi's", {{"C4 (256Hz)", 256.00f}}, 1};
+
+// Other Tunings
+const TUNING ScientificPitch = {
+    "Scientific Pitch",
+    {{"C0 (16Hz)", 16.0f},
+     {"C1 (32Hz)", 32.0f},
+     {"C2 (64Hz)", 64.0f},
+     {"C3 (128Hz)", 128.0f},
+     {"C4 (256Hz)", 256.0f},
+     {"C5 (512Hz)", 512.0f},
+     {"C6 (1024Hz)", 1024.0f},
+     {"C7 (2048Hz)", 2048.0f},
+     {"C8 (4096Hz)", 4096.0f},
+     {"C9 (8192Hz)", 8192.0f},
+     {"C10 (16384Hz)", 16384.0f},
+     {"C11 (32768Hz)", 32768.0f}},
+    12};
+
 #endif //TUNINGS_H
 #endif //TUNINGS_H