A song playing module. More...
Go to the source code of this file.
Functions | |
void | song_fast_forward (void) |
Fast Forwards the song player. | |
void | song_pause (void) |
Pauses the song player. | |
void | song_play (void) |
Starts the song player. | |
void | song_set (SONG_NOTE *song, unsigned int length) |
Sets the song to play. | |
void | song_stop (void) |
Stops the song player. | |
void | song_update (void) |
Runs the state machine which controls the song playing. | |
Variables | |
SONG_NOTE | song_current_note |
The current note being played. | |
unsigned int | song_index |
Where in the song we are. | |
unsigned int | song_length |
The total number of notes in the song. | |
SONG_NOTE * | song_notes |
The current song of notes playing. | |
SONG_STATE | song_state = SONG_STOP |
The current state of the song module. | |
unsigned int | song_wait |
How long to wait before the next note. |
A song playing module.
Plays sets of notes made of freq and duration.
Mario Song:
SONG_NOTE buzzer_mario[74] = { {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_E5},//intro {NOTE_QUARTER,NOTE_EIGHTH,NOTE_E5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_E5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_E5}, {NOTE_HALF,NOTE_QUARTER,NOTE_G5}, {NOTE_HALF,NOTE_QUARTER,NOTE_G4},//end intro {NOTE_DOTTED,NOTE_DOTTED,NOTE_C5}, {NOTE_DOTTED,NOTE_EIGHTH,NOTE_G4}, {NOTE_DOTTED,NOTE_DOTTED,NOTE_E4}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_B5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Bb5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_G4}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_E5}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_G5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_F5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_G5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_E5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_D5}, {NOTE_DOTTED,NOTE_DOTTED,NOTE_B5},//repeat {NOTE_DOTTED,NOTE_DOTTED,NOTE_C5}, {NOTE_DOTTED,NOTE_EIGHTH,NOTE_G4}, {NOTE_DOTTED,NOTE_DOTTED,NOTE_E4}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_B5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Bb5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_G4}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_E5}, {NOTE_SIXTH,NOTE_SIXTH,NOTE_G5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_A5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_F5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_G5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_E5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_D5}, {5*NOTE_EIGHTH,NOTE_DOTTED,NOTE_B5},//repeat {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_G5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Fs5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_F5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_Ds5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_E5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Gs4}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_A5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_C5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_A5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C5}, {NOTE_DOTTED,NOTE_EIGHTH,NOTE_D5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_G5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Fs5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_F5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_Ds5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_E5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_C6}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C6}, {3*NOTE_QUARTER,NOTE_HALF,NOTE_C6}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_G5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Fs5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_F5}, {NOTE_QUARTER,NOTE_QUARTER,NOTE_Ds5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_E5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_Gs4}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_A5}, {NOTE_QUARTER,NOTE_EIGHTH,NOTE_C5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_A5}, {NOTE_EIGHTH,NOTE_EIGHTH,NOTE_C5}, {NOTE_DOTTED,NOTE_EIGHTH,NOTE_D5}, {NOTE_DOTTED,NOTE_QUARTER,NOTE_Eb5}, {NOTE_DOTTED,NOTE_DOTTED,NOTE_D5}, {NOTE_HALF,NOTE_HALF,NOTE_C5} };
Cornell Alma Mater:
SONG_NOTE alma_mater[26] = { {NOTE_DOTTED, NOTE_DOTTED, NOTE_Ab5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_Bb5}, {NOTE_DOTTED, NOTE_DOTTED, NOTE_C5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_Bb5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Ab5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_F4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_F4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Eb4}, {NOTE_DOTTED, NOTE_DOTTED, NOTE_Bb5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_Ab5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_G4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Ab5}, {NOTE_WHOLE, 3*NOTE_QUARTER, NOTE_Bb5}, {NOTE_DOTTED, NOTE_DOTTED, NOTE_Ab5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_Bb5}, {NOTE_DOTTED, NOTE_DOTTED, NOTE_C5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_Bb5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Ab5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_F4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_F4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Eb4}, {NOTE_DOTTED, NOTE_DOTTED, NOTE_Bb5}, {NOTE_EIGHTH, NOTE_EIGHTH, NOTE_C5}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_Db4}, {NOTE_QUARTER, NOTE_QUARTER, NOTE_G5}, {NOTE_WHOLE, 3*NOTE_QUARTER, NOTE_Ab5} };
Definition in file song.c.
void song_fast_forward | ( | void | ) |
Fast Forwards the song player.
Doesn't stop it playing.
Definition at line 206 of file song.c.
References song_state.
00206 { 00207 song_state = SONG_FAST_FORWARD; 00208 }
void song_set | ( | SONG_NOTE * | song, | |
unsigned int | length | |||
) |
Sets the song to play.
song | The array of notes in the song. | |
length | The number of notes in the song (the length of the array). |
Definition at line 145 of file song.c.
References song_index, song_length, and song_wait.
00145 { 00146 song_notes = song; 00147 song_length = length; 00148 song_wait = 0; 00149 song_index = 0; 00150 song_current_note = song_notes[song_index]; 00151 }
unsigned int song_index |
Where in the song we are.
Definition at line 134 of file song.c.
Referenced by song_set(), song_stop(), and song_update().
unsigned int song_length |
The total number of notes in the song.
Definition at line 138 of file song.c.
Referenced by song_set(), and song_update().
SONG_STATE song_state = SONG_STOP |
The current state of the song module.
Definition at line 132 of file song.c.
Referenced by song_fast_forward(), song_pause(), song_play(), song_stop(), and song_update().
unsigned int song_wait |
How long to wait before the next note.
Definition at line 135 of file song.c.
Referenced by song_set(), song_stop(), and song_update().