diff --git a/saturn.ino b/saturn.ino index 4374260..92df91f 100644 --- a/saturn.ino +++ b/saturn.ino @@ -20,6 +20,7 @@ #include "src/sd.h" #include "src/portal.h" #include "src/applejuice.h" +#include "src/sounds.h" IRsend irsend(IR_SEND_PIN); @@ -39,6 +40,7 @@ Menu mainMenu[] = { {TXT_IR, 4}, {"WiFi", 20}, {"Bluetooth", 27}, + {TXT_SOUNDS, 31}, {"QR Codes", 2}, {TXT_SETTINGS, 3}, }; @@ -78,6 +80,7 @@ Menu wifiMenu[] = { int wifiMenuSize = sizeof(wifiMenu) / sizeof(Menu); Menu wifiAttackMenu[] = { + {TXT_SIGNAL_LEVEL, 3}, {TXT_WIFI_PORTAL, 0}, {TXT_WIFI_DEAUTH, 1}, {TXT_WIFI_COMBINED, 2}, @@ -129,6 +132,18 @@ Menu appleJuiceMenu[] = { }; int appleJuiceMenuSize = sizeof(appleJuiceMenu) / sizeof(Menu); +Menu soundMenu[] = { + {"Super Mario Bross", 1}, + {"Crazy Train", 5}, + {TXT_IMPERIAL_MARCH_SOUND, 2}, + {"Aha Take On Me", 3}, + {"Jingle Bells", 4}, + {"Star Wars", 6}, + {"Nokia Ringtone", 7}, + {TXT_BACK, 0}, +}; +int soundMenuSize = sizeof(soundMenu) / sizeof(Menu); + QrCode qrMenu[] = { {"Saturn", "https://youtu.be/dzNvk80XY9s"}, {TXT_INTERSTELLAR, "https://youtu.be/JuSsvM8B4Jc"}, @@ -758,6 +773,9 @@ void wifiAttackMenuLoop() { target_deauth=true; currentProc = 25; // Combined TODO break; + case 3: // Signal Level + currentProc = 32; + break; case 5: currentProc = 20; break; @@ -765,6 +783,77 @@ void wifiAttackMenuLoop() { } } +void wifiSignalLevelSetup() { + rstOverride = true; + + DISPLAY.fillScreen(BG_COLOR); + DISPLAY.setTextSize(MEDIUM_TEXT); + DISPLAY.drawString(TXT_SIGNAL_LEVEL, DISPLAY_CENTER_X, 50); + delay(500); +} + +void wifiSignalLevelLoop() { + // Reescan networks + int networks = WiFi.scanNetworks(); + for (int i = 0; i < networks; i++) { + if (WiFi.BSSIDstr(i) == apMac) { + cursor = i; + break; + } + } + + int signalLevel = WiFi.RSSI(cursor); + int signalFeedbackDuration = 100; + String signal = String(WiFi.RSSI(cursor)) + "dbm"; + String ssid = WiFi.SSID(cursor); + String channel = String(WiFi.channel(cursor)); + + DISPLAY.fillScreen(BG_COLOR); + + DISPLAY.setTextSize(MEDIUM_TEXT); + DISPLAY.setTextColor(BG_COLOR); + DISPLAY.fillRoundRect(5, 4, DISPLAY.width() - 10, 30, 10, MAIN_COLOR); + DISPLAY.drawRoundRect(5, 4, DISPLAY.width() - 10, 30, 10, MAIN_COLOR); + DISPLAY.drawString(TXT_SIGNAL_LEVEL, DISPLAY_CENTER_X, 20); + DISPLAY.setTextColor(MAIN_COLOR); + DISPLAY.setTextSize(1.5); + DISPLAY.drawString(ssid, DISPLAY_CENTER_X, 50); + DISPLAY.drawString(TXT_WF_CHANN + channel, DISPLAY_CENTER_X, 65); + DISPLAY.setTextSize(LARGE_TEXT); + DISPLAY.drawString(signal, DISPLAY_CENTER_X, 100); + + int frequency; + + if (signalLevel > -25) { + frequency = 5500; + } else if (signalLevel > -30) { + frequency = 5000; + } else if (signalLevel > -45) { + frequency = 4500; + } else if (signalLevel > -50) { + frequency = 4000; + } else if (signalLevel > -60) { + frequency = 3500; + } else if (signalLevel > -70) { + frequency = 3000; + } else if (signalLevel > -80) { + frequency = 2000; + } else if (signalLevel > -90) { + frequency = 1000; + } else { + frequency = 500; + } + + M5Cardputer.Speaker.tone(frequency, signalFeedbackDuration); + + // delay(200); + if (checkNextPress() || checkESCPress() || checkSelectPress()) { + rstOverride = false; + isSwitching = true; + currentProc = 23; + } +} + // -=-=-= DEAUTH =-=-=- void deauthSetup(){ @@ -1358,6 +1447,55 @@ void bluetoothMaelstromLoop(){ } } +// -=-=-= SOUNDS =-=-=- + +void soundMenuSetup() { + cursor = 0; + rstOverride = true; + drawMenu(soundMenu, soundMenuSize); + delay(500); +} + +void soundMenuLoop() { + if (checkNextPress()) { + cursor++; + cursor = cursor % soundMenuSize; + drawMenu(soundMenu, soundMenuSize); + delay(250); + } + if (checkSelectPress()) { + int option = soundMenu[cursor].command; + rstOverride = false; + isSwitching = true; + switch(option) { + case 0: + currentProc = 1; + break; + case 1: + superMarioBrossSound(); + break; + case 2: + imperialMarchSound(); + break; + case 3: + ahaTakeOnMeSound(); + break; + case 4: + jingleBellsSound(); + break; + case 5: + ozzyOsbornCrazyTrainSound(); + break; + case 6: + starWarsSound(); + break; + case 7: + nokiaSound(); + break; + } + } +} + // -=-=-= QR CODES =-=-=- void qrMenuSetup() { @@ -1716,6 +1854,12 @@ void loop() { case 30: bluetoothMaelstromSetup(); break; + case 31: + soundMenuSetup(); + break; + case 32: + wifiSignalLevelSetup(); + break; } } @@ -1771,5 +1915,11 @@ void loop() { case 30: bluetoothMaelstromLoop(); break; + case 31: + soundMenuLoop(); + break; + case 32: + wifiSignalLevelLoop(); + break; } } \ No newline at end of file diff --git a/src/language.h b/src/language.h index 4014b2a..52e1667 100644 --- a/src/language.h +++ b/src/language.h @@ -59,6 +59,9 @@ #define TXT_AD_SPAM_ADV "Android Spam Advertisement: " #define TXT_AJ_ADV "AppleJuice Advertisement: " #define TXT_DEFAULT_AP_SSID_NAME "Free WiFi" + #define TXT_SOUNDS "Sounds" + #define TXT_IMPERIAL_MARCH_SOUND "Imperial March" + #define TXT_SIGNAL_LEVEL "Signal Level" #endif #if defined(LANGUAGE_PT_BR) @@ -122,4 +125,7 @@ #define TXT_AD_SPAM_ADV "Aviso Android Spam: " #define TXT_AJ_ADV "Aviso AppleJuice: " #define TXT_DEFAULT_AP_SSID_NAME "WiFi Livre" + #define TXT_SOUNDS "Sons" + #define TXT_IMPERIAL_MARCH_SOUND "Marcha Imperial" + #define TXT_SIGNAL_LEVEL "Nivel de Sinal" #endif \ No newline at end of file diff --git a/src/pitches.h b/src/pitches.h new file mode 100644 index 0000000..4291120 --- /dev/null +++ b/src/pitches.h @@ -0,0 +1,101 @@ +// ------------------------------------------------- +// Copyright (c) 2021 HiBit +// ------------------------------------------------- + +#ifndef pitches_h +#define pitches_h + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_DB3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_EB3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 +#define REST 0 + +#endif \ No newline at end of file diff --git a/src/settings.h b/src/settings.h index 82cd840..170a33e 100644 --- a/src/settings.h +++ b/src/settings.h @@ -67,4 +67,5 @@ const byte PortalTickTimer = 1000; int brightness = 100; bool activeQR = false; wifi_ap_record_t ap_record; -String apSsidName = String(""); \ No newline at end of file +String apSsidName = String(""); +String bssidToCheck; \ No newline at end of file diff --git a/src/sounds.h b/src/sounds.h new file mode 100644 index 0000000..6ae1708 --- /dev/null +++ b/src/sounds.h @@ -0,0 +1,963 @@ +#include "pitches.h" + +void superMarioBrossSound() { + delay(150); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(510, 100); + delay(100); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(770, 100); + delay(550); + M5Cardputer.Speaker.tone(380, 100); + delay(575); + M5Cardputer.Speaker.tone(510, 100); + delay(450); + M5Cardputer.Speaker.tone(380, 100); + delay(400); + M5Cardputer.Speaker.tone(320, 100); + delay(500); + M5Cardputer.Speaker.tone(440, 100); + delay(300); + M5Cardputer.Speaker.tone(480, 80); + delay(330); + M5Cardputer.Speaker.tone(450, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(200); + M5Cardputer.Speaker.tone(660, 80); + delay(200); + M5Cardputer.Speaker.tone(760, 50); + delay(150); + M5Cardputer.Speaker.tone(860, 100); + delay(300); + M5Cardputer.Speaker.tone(700, 80); + delay(150); + M5Cardputer.Speaker.tone(760, 50); + delay(350); + M5Cardputer.Speaker.tone(660, 80); + delay(300); + M5Cardputer.Speaker.tone(520, 80); + delay(150); + M5Cardputer.Speaker.tone(580, 80); + delay(150); + M5Cardputer.Speaker.tone(480, 80); + delay(500); + M5Cardputer.Speaker.tone(510, 100); + delay(450); + M5Cardputer.Speaker.tone(380, 100); + delay(400); + M5Cardputer.Speaker.tone(320, 100); + delay(500); + M5Cardputer.Speaker.tone(440, 100); + delay(300); + M5Cardputer.Speaker.tone(480, 80); + delay(330); + M5Cardputer.Speaker.tone(450, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(200); + M5Cardputer.Speaker.tone(660, 80); + delay(200); + M5Cardputer.Speaker.tone(760, 50); + delay(150); + M5Cardputer.Speaker.tone(860, 100); + delay(300); + M5Cardputer.Speaker.tone(700, 80); + delay(150); + M5Cardputer.Speaker.tone(760, 50); + delay(350); + M5Cardputer.Speaker.tone(660, 80); + delay(300); + M5Cardputer.Speaker.tone(520, 80); + delay(150); + M5Cardputer.Speaker.tone(580, 80); + delay(150); + M5Cardputer.Speaker.tone(480, 80); + delay(500); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 150); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(100); + M5Cardputer.Speaker.tone(570, 100); + delay(220); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 200); + delay(300); + M5Cardputer.Speaker.tone(1020, 80); + delay(300); + M5Cardputer.Speaker.tone(1020, 80); + delay(150); + M5Cardputer.Speaker.tone(1020, 80); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 150); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(100); + M5Cardputer.Speaker.tone(570, 100); + delay(420); + M5Cardputer.Speaker.tone(585, 100); + delay(450); + M5Cardputer.Speaker.tone(550, 100); + delay(420); + M5Cardputer.Speaker.tone(500, 100); + delay(36); + M5Cardputer.Speaker.tone(380, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 150); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(100); + M5Cardputer.Speaker.tone(570, 100); + delay(220); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 200); + delay(300); + M5Cardputer.Speaker.tone(1020, 80); + delay(300); + M5Cardputer.Speaker.tone(1020, 80); + delay(150); + M5Cardputer.Speaker.tone(1020, 80); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(760, 100); + delay(100); + M5Cardputer.Speaker.tone(720, 100); + delay(150); + M5Cardputer.Speaker.tone(680, 100); + delay(150); + M5Cardputer.Speaker.tone(620, 150); + delay(300); + M5Cardputer.Speaker.tone(650, 150); + delay(300); + M5Cardputer.Speaker.tone(380, 100); + delay(150); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(430, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(100); + M5Cardputer.Speaker.tone(570, 100); + delay(420); + M5Cardputer.Speaker.tone(585, 100); + delay(450); + M5Cardputer.Speaker.tone(550, 100); + delay(420); + M5Cardputer.Speaker.tone(500, 100); + delay(36); + M5Cardputer.Speaker.tone(380, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 100); + delay(150); + M5Cardputer.Speaker.tone(500, 100); + delay(300); + M5Cardputer.Speaker.tone(500, 60); + delay(150); + M5Cardputer.Speaker.tone(500, 80); + delay(300); + M5Cardputer.Speaker.tone(500, 60); + delay(350); + M5Cardputer.Speaker.tone(500, 80); + delay(150); + M5Cardputer.Speaker.tone(580, 80); + delay(350); + M5Cardputer.Speaker.tone(660, 80); + delay(150); + M5Cardputer.Speaker.tone(500, 80); + delay(300); + M5Cardputer.Speaker.tone(430, 80); + delay(150); + M5Cardputer.Speaker.tone(380, 80); + delay(600); + M5Cardputer.Speaker.tone(500, 60); + delay(150); + M5Cardputer.Speaker.tone(500, 80); + delay(300); + M5Cardputer.Speaker.tone(500, 60); + delay(350); + M5Cardputer.Speaker.tone(500, 80); + delay(150); + M5Cardputer.Speaker.tone(580, 80); + delay(150); + M5Cardputer.Speaker.tone(660, 80); + delay(550); + M5Cardputer.Speaker.tone(870, 80); + delay(325); + M5Cardputer.Speaker.tone(760, 80); + delay(600); + M5Cardputer.Speaker.tone(500, 60); + delay(150); + M5Cardputer.Speaker.tone(500, 80); + delay(300); + M5Cardputer.Speaker.tone(500, 60); + delay(350); + M5Cardputer.Speaker.tone(500, 80); + delay(150); + M5Cardputer.Speaker.tone(580, 80); + delay(350); + M5Cardputer.Speaker.tone(660, 80); + delay(150); + M5Cardputer.Speaker.tone(500, 80); + delay(300); + M5Cardputer.Speaker.tone(430, 80); + delay(150); + M5Cardputer.Speaker.tone(380, 80); + delay(600); + M5Cardputer.Speaker.tone(660, 100); + delay(150); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(510, 100); + delay(100); + M5Cardputer.Speaker.tone(660, 100); + delay(300); + M5Cardputer.Speaker.tone(770, 100); + delay(550); + M5Cardputer.Speaker.tone(380, 100); + delay(575); +} + +void imperialMarchSound() { + M5Cardputer.Speaker.tone(500, 500); + delay(500); + M5Cardputer.Speaker.tone(500, 500); + delay(500); + M5Cardputer.Speaker.tone(500, 500); + delay(500); + M5Cardputer.Speaker.tone(400, 500); + delay(400); + M5Cardputer.Speaker.tone(600, 200); + delay(100); + M5Cardputer.Speaker.tone(500, 500); + delay(500); + M5Cardputer.Speaker.tone(400, 500); + delay(400); + M5Cardputer.Speaker.tone(600, 200); + delay(100); + M5Cardputer.Speaker.tone(500, 500); + delay(1000); + M5Cardputer.Speaker.tone(750, 500); + delay(500); + M5Cardputer.Speaker.tone(750, 500); + delay(500); + M5Cardputer.Speaker.tone(750, 500); + delay(500); + M5Cardputer.Speaker.tone(810, 500); + delay(400); + M5Cardputer.Speaker.tone(600, 200); + delay(100); + M5Cardputer.Speaker.tone(470, 500); + delay(500); + M5Cardputer.Speaker.tone(400, 500); + delay(400); + M5Cardputer.Speaker.tone(600, 200); + delay(100); + M5Cardputer.Speaker.tone(500, 500); + delay(1000); +} + +void ahaTakeOnMeSound() { + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(587, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(494, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(831, 188); + delay(198); + M5Cardputer.Speaker.tone(831, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(988, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(587, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(587, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(494, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(831, 188); + delay(198); + M5Cardputer.Speaker.tone(831, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(988, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(880, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(587, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + delay(188); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(198); + M5Cardputer.Speaker.tone(740, 188); + delay(198); + M5Cardputer.Speaker.tone(659, 188); + delay(19); +} + +void jingleBellsSound() { + M5Cardputer.Speaker.tone(523, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 300); + delay(500); + M5Cardputer.Speaker.tone(523, 200); + delay(250); + M5Cardputer.Speaker.tone(523, 200); + delay(250); + M5Cardputer.Speaker.tone(523, 300); + delay(500); + M5Cardputer.Speaker.tone(523, 220); + delay(250); + M5Cardputer.Speaker.tone(623, 220); + delay(250); + M5Cardputer.Speaker.tone(423, 220); + delay(250); + M5Cardputer.Speaker.tone(473, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 600); + delay(1000); + M5Cardputer.Speaker.tone(553, 220); + delay(250); + M5Cardputer.Speaker.tone(553, 220); + delay(250); + M5Cardputer.Speaker.tone(553, 300); + delay(500); + M5Cardputer.Speaker.tone(553, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 250); + delay(500); + M5Cardputer.Speaker.tone(523, 220); + delay(250); + M5Cardputer.Speaker.tone(470, 220); + delay(250); + M5Cardputer.Speaker.tone(470, 220); + delay(250); + M5Cardputer.Speaker.tone(523, 300); + delay(350); + M5Cardputer.Speaker.tone(470, 600); + delay(1000); +} + +void ozzyOsbornCrazyTrainSound() { + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + delay(1200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + delay(400); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + delay(400); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + delay(1200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + delay(400); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + delay(400); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(415, 175); + delay(200); + M5Cardputer.Speaker.tone(330, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(370, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 775); + delay(800); + M5Cardputer.Speaker.tone(330, 775); + delay(800); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(784, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(740, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(659, 575); + delay(600); + M5Cardputer.Speaker.tone(392, 75); + delay(100); + M5Cardputer.Speaker.tone(415, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(784, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(740, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(440, 75); + delay(100); + M5Cardputer.Speaker.tone(659, 575); + delay(600); + M5Cardputer.Speaker.tone(440, 375); + delay(400); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 575); + delay(600); + delay(800); + delay(600); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 375); + delay(400); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 375); + delay(400); + delay(2400); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(740, 375); + delay(400); + M5Cardputer.Speaker.tone(659, 575); + delay(600); + delay(600); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(740, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 375); + delay(400); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 775); + delay(800); + delay(1600); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 575); + delay(600); + delay(800); + delay(600); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 375); + delay(400); + M5Cardputer.Speaker.tone(440, 375); + delay(400); + M5Cardputer.Speaker.tone(494, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 375); + delay(400); + delay(800); + delay(800); + delay(600); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(880, 175); + delay(200); + M5Cardputer.Speaker.tone(740, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 375); + delay(400); + delay(800); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(740, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 375); + delay(400); + M5Cardputer.Speaker.tone(659, 175); + delay(200); + M5Cardputer.Speaker.tone(587, 175); + delay(200); + M5Cardputer.Speaker.tone(554, 175); + delay(200); + M5Cardputer.Speaker.tone(440, 775); + delay(800); +} + +void starWarsSound() { + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(932, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 167); + delay(177); + M5Cardputer.Speaker.tone(1865, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 500); + delay(510); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 167); + delay(177); + M5Cardputer.Speaker.tone(1865, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 500); + delay(510); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 667); + delay(677); + delay(333); + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(698, 167); + delay(177); + M5Cardputer.Speaker.tone(932, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 167); + delay(177); + M5Cardputer.Speaker.tone(1865, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 500); + delay(510); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 167); + delay(177); + M5Cardputer.Speaker.tone(1865, 1000); + delay(1010); + M5Cardputer.Speaker.tone(1397, 500); + delay(510); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1175, 167); + delay(177); + M5Cardputer.Speaker.tone(1245, 167); + delay(177); + M5Cardputer.Speaker.tone(1047, 667); + delay(677); +} + +int nokiaMelody[] = { + NOTE_E5, NOTE_D5, NOTE_FS4, NOTE_GS4, + NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_E4, + NOTE_B4, NOTE_A4, NOTE_CS4, NOTE_E4, + NOTE_A4 +}; + +int nokiaDurations[] = { + 8, 8, 4, 4, + 8, 8, 4, 4, + 8, 8, 4, 4, + 2 +}; +int nokiaDurationsSize = sizeof(nokiaDurations) / sizeof(int); + +void nokiaSound() { + for (int note = 0; note < nokiaDurationsSize; note++) { + //to calculate the note duration, take one second divided by the note type. + //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. + int duration = 1000 / nokiaDurations[note]; + M5Cardputer.Speaker.tone(nokiaMelody[note], duration); + + //to distinguish the notes, set a minimum time between them. + //the note's duration + 30% seems to work well: + int pauseBetweenNotes = duration * 1.30; + delay(pauseBetweenNotes); + } +} \ No newline at end of file