// Sketch for testing the ArduboyTones library #include #include Arduboy2 arduboy; ArduboyTones sound(arduboy.audio.enabled); #define BUTTON_DELAY 200 byte circlePos = 7; #define NDUR 100 const uint16_t allNotes[] PROGMEM = { NOTE_C0H,NDUR, NOTE_CS0,NDUR, NOTE_D0,NDUR, NOTE_DS0,NDUR, NOTE_E0,NDUR, NOTE_F0,NDUR, NOTE_FS0,NDUR, NOTE_G0,NDUR, NOTE_GS0,NDUR, NOTE_A0,NDUR, NOTE_AS0,NDUR, NOTE_B0,NDUR, NOTE_C1H,NDUR, NOTE_CS1,NDUR, NOTE_D1,NDUR, NOTE_DS1,NDUR, NOTE_E1,NDUR, NOTE_F1,NDUR, NOTE_FS1,NDUR, NOTE_G1,NDUR, NOTE_GS1,NDUR, NOTE_A1,NDUR, NOTE_AS1,NDUR, NOTE_B1,NDUR, NOTE_C2H,NDUR, NOTE_CS2,NDUR, NOTE_D2,NDUR, NOTE_DS2,NDUR, NOTE_E2,NDUR, NOTE_F2,NDUR, NOTE_FS2,NDUR, NOTE_G2,NDUR, NOTE_GS2,NDUR, NOTE_A2,NDUR, NOTE_AS2,NDUR, NOTE_B2,NDUR, NOTE_C3H,NDUR, NOTE_CS3,NDUR, NOTE_D3,NDUR, NOTE_DS3,NDUR, NOTE_E3,NDUR, NOTE_F3,NDUR, NOTE_FS3,NDUR, NOTE_G3,NDUR, NOTE_GS3,NDUR, NOTE_A3,NDUR, NOTE_AS3,NDUR, NOTE_B3,NDUR, NOTE_C4H,NDUR, NOTE_CS4,NDUR, NOTE_D4,NDUR, NOTE_DS4,NDUR, NOTE_E4,NDUR, NOTE_F4,NDUR, NOTE_FS4,NDUR, NOTE_G4,NDUR, NOTE_GS4,NDUR, NOTE_A4,NDUR, NOTE_AS4,NDUR, NOTE_B4,NDUR, NOTE_C5H,NDUR, NOTE_CS5,NDUR, NOTE_D5,NDUR, NOTE_DS5,NDUR, NOTE_E5,NDUR, NOTE_F5,NDUR, NOTE_FS5,NDUR, NOTE_G5,NDUR, NOTE_GS5,NDUR, NOTE_A5,NDUR, NOTE_AS5,NDUR, NOTE_B5,NDUR, NOTE_C6H,NDUR, NOTE_CS6,NDUR, NOTE_D6,NDUR, NOTE_DS6,NDUR, NOTE_E6,NDUR, NOTE_F6,NDUR, NOTE_FS6,NDUR, NOTE_G6,NDUR, NOTE_GS6,NDUR, NOTE_A6,NDUR, NOTE_AS6,NDUR, NOTE_B6,NDUR, NOTE_C7H,NDUR, NOTE_CS7,NDUR, NOTE_D7,NDUR, NOTE_DS7,NDUR, NOTE_E7,NDUR, NOTE_F7,NDUR, NOTE_FS7,NDUR, NOTE_G7,NDUR, NOTE_GS7,NDUR, NOTE_A7,NDUR, NOTE_AS7,NDUR, NOTE_B7,NDUR, NOTE_C8H,NDUR, NOTE_CS8,NDUR, NOTE_D8,NDUR, NOTE_DS8,NDUR, NOTE_E8,NDUR, NOTE_F8,NDUR, NOTE_FS8,NDUR, NOTE_G8,NDUR, NOTE_GS8,NDUR, NOTE_A8,NDUR, NOTE_AS8,NDUR, NOTE_B8,NDUR, NOTE_C9H,NDUR, NOTE_CS9,NDUR, NOTE_D9,NDUR, NOTE_DS9,NDUR, NOTE_E9,NDUR, NOTE_F9,NDUR, NOTE_FS9,NDUR, NOTE_G9,NDUR, NOTE_GS9,NDUR, NOTE_A9,NDUR, NOTE_AS9,NDUR, NOTE_B9,NDUR, TONES_REPEAT }; const uint16_t sound1[] PROGMEM = { NOTE_C1,500, NOTE_C1H,500, NOTE_G1,500, NOTE_G1H,500, NOTE_C2,500, NOTE_C2H,500, NOTE_G2,500, NOTE_G2H,500, NOTE_C3,500, NOTE_C3H,500, NOTE_G3,500, NOTE_G3H,500, NOTE_C4,500, NOTE_C4H,500, NOTE_G4,500, NOTE_G4H,500, NOTE_C5,500, NOTE_C5H,500, NOTE_G5,500, NOTE_G5H,500, NOTE_C6,500, NOTE_C6H,500, NOTE_G6,500, NOTE_G6H,500, NOTE_C7,500, NOTE_C7H,500, NOTE_G7,500, NOTE_G7H,500, NOTE_C8,500, NOTE_C8H,500, NOTE_G8,500, NOTE_G8H,500, NOTE_C9,500, NOTE_C9H,500, NOTE_G9,500, NOTE_G9H,500, TONES_END }; uint16_t inRAM[] = { NOTE_E4,400, NOTE_D4,200, NOTE_C4,400, NOTE_REST,200, NOTE_D4,200, NOTE_C4,300, NOTE_REST,100, NOTE_C4,300, NOTE_REST,100, NOTE_E4,300, NOTE_REST,100, NOTE_G4,300, NOTE_REST,100, NOTE_F4,300, NOTE_REST,100, NOTE_A4,300, NOTE_REST,100, NOTE_D5H,200, NOTE_REST,200, NOTE_D5H,200, NOTE_REST,1500, TONES_REPEAT }; void setup() { arduboy.begin(); } void loop() { boolean newNotes; displayAudio(); while(true) { moveCircle(); if (arduboy.pressed(UP_BUTTON)) { arduboy.audio.on(); displayAudio(); } if (arduboy.pressed(DOWN_BUTTON)) { arduboy.audio.off(); displayAudio(); } if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } sound.tone(1000); arduboy.clear(); arduboy.print("tone(1000)\n\nB: noTone()\n delay(1000)\n break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { sound.noTone(); delay(1000); break; } } sound.tone(500, 4000); arduboy.clear(); arduboy.print("tone(500, 4000)\n\nB: break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } sound.tone(NOTE_C4,500, NOTE_C5H,5000); arduboy.clear(); arduboy.print("tone(C4,500,C5H,5000)\n\nB: noTone(), break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { sound.noTone(); delay(BUTTON_DELAY); break; } } sound.tone(NOTE_C7H,500, NOTE_REST,1000, NOTE_C6,5000); arduboy.clear(); arduboy.print("tone(C7H,500,\n REST,1000,\n C6,6000)\n\nB: noTone(), break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { sound.noTone(); delay(BUTTON_DELAY); break; } } sound.tones(allNotes); arduboy.clear(); arduboy.print("tones(allNotes)\n\nA: noTone(), again\nUP: again\nB: break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(A_BUTTON)) { sound.noTone(); sound.tones(allNotes); } if (arduboy.pressed(UP_BUTTON)) { sound.tones(allNotes); } if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } newNotes = false; inRAM[34] = inRAM[38] = NOTE_D5H; sound.tonesInRAM(inRAM); arduboy.clear(); arduboy.print("tonesInRAM(inRAM)\n\nA: change notes\nB: break"); while (sound.playing()) { moveCircle(); if (arduboy.pressed(A_BUTTON)) { newNotes = !newNotes; if (newNotes) { inRAM[34] = inRAM[38] = NOTE_C5H; } else { inRAM[34] = inRAM[38] = NOTE_D5H; } delay(BUTTON_DELAY); } if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } sound.tones(sound1); arduboy.clear(); arduboy.print("volumeMode(IN_TONES)\ntones(sound1)\n\nB: break"); while(sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } sound.volumeMode(VOLUME_ALWAYS_NORMAL); sound.tones(sound1); arduboy.clear(); arduboy.print("volumeMode(NORMAL)\ntones(sound1)\n\nB: noTone(), break"); while(sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { sound.noTone(); delay(BUTTON_DELAY); break; } } sound.volumeMode(VOLUME_ALWAYS_HIGH); sound.tones(sound1); arduboy.clear(); arduboy.print("volumeMode(HIGH)\ntones(sound1)\n\nB: break"); while(sound.playing()) { moveCircle(); if (arduboy.pressed(B_BUTTON)) { delay(BUTTON_DELAY); break; } } sound.volumeMode(VOLUME_IN_TONE); } void moveCircle() { arduboy.fillCircle(circlePos, 54, 7, BLACK); circlePos += 8; if (circlePos > 119) { circlePos = 7; } arduboy.fillCircle(circlePos, 54, 7, WHITE); arduboy.display(); delay(100); } void displayAudio() { arduboy.clear(); arduboy.print("Audio enabled: "); arduboy.print(arduboy.audio.enabled() ? "YES" : "NO"); arduboy.print("\n\nUP: enable\nDOWN: disable\nB: break"); arduboy.invert(!arduboy.audio.enabled()); }