#ifndef MAIN_H_ #define MAIN_H_ #define F_CPU 8000000UL #include #include #include #include #include #define TEMPO (120 * 4) // Tempo of song (bpm) #define REST_FRACTION 0.3 // Fraction of the beat to stay silent between notes #define BEAT_LENGTH 60000 / TEMPO // Length of each note (ms) // Song Selection #define CRAB_RAVE #define OCTAVES 2 #define NOTES_PER_OCTAVE 12 #ifdef CRAB_RAVE #define SPEAKER0_LEN 38 #define SPEAKER1_LEN 96 #endif typedef enum { a = 0, b, c, d, e, f, g, A, C, D, F, G, rest } note_t; typedef struct { note_t note; uint8_t duration:7; uint8_t octave:1; } beat_t; extern const uint8_t PROGMEM notes[OCTAVES][NOTES_PER_OCTAVE]; extern const beat_t PROGMEM song_speaker0[SPEAKER0_LEN]; extern const beat_t PROGMEM song_speaker1[SPEAKER1_LEN]; void play_note(beat_t note, uint8_t speaker); #endif