// music related #define NOTE_nc 1 #define NOTE_nk 0 #define NOTE_c0 29 #define NOTE_C0 31 #define NOTE_d0 34 #define NOTE_D0 36 #define NOTE_e0 39 #define NOTE_f0 41 #define NOTE_F0 44 #define NOTE_g0 46 #define NOTE_G0 48 #define NOTE_a0 51 #define NOTE_A0 53 #define NOTE_b0 56 #define NOTE_c1 58 #define NOTE_C1 63 #define NOTE_d1 68 #define NOTE_D1 73 #define NOTE_e1 77 #define NOTE_f1 82 #define NOTE_F1 87 #define NOTE_g1 92 #define NOTE_G1 97 #define NOTE_a1 102 #define NOTE_A1 106 #define NOTE_b1 111 #define NOTE_c2 116 #define NOTE_C2 126 #define NOTE_d2 135 #define NOTE_D2 145 #define NOTE_e2 155 #define NOTE_f2 164 #define NOTE_F2 174 #define NOTE_g2 184 #define NOTE_G2 193 #define NOTE_a2 203 #define NOTE_A2 213 #define NOTE_b2 222 #define NOTE_c3 232 #define NOTE_C3 251 #define NOTE_d3 271 #define NOTE_D3 290 #define NOTE_e3 309 #define NOTE_f3 329 #define NOTE_F3 348 #define NOTE_g3 367 #define NOTE_G3 387 #define NOTE_a3 406 #define NOTE_A3 425 #define NOTE_b3 445 #define NOTE_c4 464 #define NOTE_C4 503 #define NOTE_d4 541 #define NOTE_D4 580 #define NOTE_e4 619 #define NOTE_f4 657 #define NOTE_F4 696 #define NOTE_g4 735 #define NOTE_G4 773 #define NOTE_a4 812 #define NOTE_A4 851 #define NOTE_b4 889 #define NOTE_c5 928 #define NOTE_C5 1005 #define NOTE_d5 1083 #define NOTE_D5 1160 #define NOTE_e5 1237 #define NOTE_f5 1315 #define NOTE_F5 1392 #define NOTE_g5 1469 #define NOTE_G5 1547 #define NOTE_a5 1624 #define NOTE_A5 1701 #define NOTE_b5 1779 #define NOTE_c6 1856 #define NOTE_C6 2011 #define NOTE_d6 2165 #define NOTE_D6 2320 #define NOTE_e6 2475 #define NOTE_f6 2629 #define NOTE_F6 2784 #define NOTE_g6 2939 #define NOTE_G6 3093 #define NOTE_a6 3248 #define NOTE_A6 3403 #define NOTE_b6 3557 #define NOTE_c7 3712 #define NOTE_C7 4021 #define NOTE_d7 4331 #define NOTE_D7 4640 #define NOTE_e7 4949 #define NOTE_f7 5259 #define NOTE_F7 5568 #define NOTE_g7 5877 #define NOTE_G7 6187 #define NOTE_a7 6496 #define NOTE_A7 6805 #define NOTE_b7 7115 #define NOTE_c8 7424 #define NOTE_C8 8043
void play_note(int note, int duration){
if ( note != NOTE_nc ){
Spkr_Freq=note;
}
_delay_ms(duration);
}
void play_song(int notes_duration_and_bend[]){
int i=0;
int fraction_of_bend = 0;
int ammount_bend = 0;
int tenths_of_duration = 0;
while ( notes_duration_and_bend[i] != 0 || notes_duration_and_bend[i+1] !=0){ //not sure if the note or duration should trigger end
if ( notes_duration_and_bend[i+2] == 1){
ammount_bend = notes_duration_and_bend[i + 3] - notes_duration_and_bend[i];
tenths_of_duration = notes_duration_and_bend[i+1] / 10;
fraction_of_bend = ammount_bend / tenths_of_duration;
for (int j = 0; j < tenths_of_duration; j++){
play_note( (notes_duration_and_bend[i] + (fraction_of_bend * j)), 10 );
}
} else {
play_note( notes_duration_and_bend[i], notes_duration_and_bend[i+1] );
}
i+=3;
}
play_note(0,0);
//return 0;
}
int song_ut[]= {
NOTE_e6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25,0,
NOTE_e6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25,0,
NOTE_e6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_D6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_e6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_F6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_e6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_D6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_C6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_C6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25,0,
NOTE_b5,25+25+25+25+25+25+25+25,0,
NOTE_G5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_b5,25+25+25+25+25+25+25,0,
NOTE_b5,25+25+25+25,1,
NOTE_a5,0,0,
NOTE_nk,25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_a5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_G5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_a5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_b5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_a5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_G5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_F5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_e5,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25,0,
NOTE_e6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25,0,
NOTE_e6,25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_nk,25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25,0,
NOTE_e6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_D6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_e6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_F6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_e6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_D6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_C6,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_C6,25+25+25+25,0,
NOTE_C6,25+25+25+25,1,
NOTE_b5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_b5,25+25+25+25+25+25+25+25,0,
NOTE_G5,25+25+25+25+25+25,0,
NOTE_nk,25+25,0,
NOTE_b5,25+25+25+25+25+25+25+25+25+25+25,0,
0,0,0};
play_song(song_ut);
}