song.c File Reference

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_NOTEsong_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.

Detailed Description

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}
    };
Author:
Nicolas Williamson
Date:
July 2009

Definition in file song.c.


Function Documentation

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.

Parameters:
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 }


Variable Documentation

The current note being played.

Definition at line 137 of file song.c.

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().

The current song of notes playing.

Definition at line 136 of file song.c.

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().

Generated on Tue Jun 29 16:36:15 2010 by  doxygen 1.6.3