Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: SuperMbedBall Tono
Notes.cpp
00001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * 00002 * This is a definitions class for music notes and * 00003 * their frequencies. * 00004 * * 00005 * Created by: Michael Dushkoff (mad1841@rit.edu) * 00006 * * * * * * * * * * * * * * * * * * * * * * * * * * */ 00007 00008 #include "mbed.h" 00009 #include "Notes.h" 00010 00011 // Initialize local note arrays for indexing 00012 double _A[] = {NOTE_A0, NOTE_A1, NOTE_A2, NOTE_A3, NOTE_A4, 00013 NOTE_A5, NOTE_A6, NOTE_A7}; 00014 double _AS[] = {NOTE_AS0, NOTE_AS1, NOTE_AS2, NOTE_AS3, NOTE_AS4, 00015 NOTE_AS5, NOTE_AS6, NOTE_AS7}; 00016 double _B[] = {NOTE_B0, NOTE_B1, NOTE_B2, NOTE_B3, NOTE_B4, 00017 NOTE_B5, NOTE_B6, NOTE_B7}; 00018 double _BS[] = {NOTE_C0, NOTE_C1, NOTE_C2, NOTE_C3, NOTE_C4, 00019 NOTE_C5, NOTE_C6, NOTE_C7, NOTE_C8}; 00020 double _C[] = {NOTE_C0, NOTE_C1, NOTE_C2, NOTE_C3, NOTE_C4, 00021 NOTE_C5, NOTE_C6, NOTE_C7, NOTE_C8}; 00022 double _CS[] = {NOTE_CS0, NOTE_CS1, NOTE_CS2, NOTE_CS3, NOTE_CS4, 00023 NOTE_CS5, NOTE_CS6, NOTE_CS7, NOTE_CS8}; 00024 double _D[] = {NOTE_D0, NOTE_D1, NOTE_D2, NOTE_D3, NOTE_D4, 00025 NOTE_D5, NOTE_D6, NOTE_D7, NOTE_D8}; 00026 double _DS[] = {NOTE_DS0, NOTE_DS1, NOTE_DS2, NOTE_DS3, NOTE_DS4, 00027 NOTE_DS5, NOTE_DS6, NOTE_DS7, NOTE_DS8}; 00028 double _E[] = {NOTE_E0, NOTE_E1, NOTE_E2, NOTE_E3, NOTE_E4, 00029 NOTE_E5, NOTE_E6, NOTE_E7}; 00030 double _ES[] = {NOTE_F0, NOTE_F1, NOTE_F2, NOTE_F3, NOTE_F4, 00031 NOTE_F5, NOTE_F6, NOTE_F7}; 00032 double _F[] = {NOTE_F0, NOTE_F1, NOTE_F2, NOTE_F3, NOTE_F4, 00033 NOTE_F5, NOTE_F6, NOTE_F7}; 00034 double _FS[] = {NOTE_FS0, NOTE_FS1, NOTE_FS2, NOTE_FS3, NOTE_FS4, 00035 NOTE_FS5, NOTE_FS6, NOTE_FS7}; 00036 double _G[] = {NOTE_G0, NOTE_G1, NOTE_G2, NOTE_G3, NOTE_G4, 00037 NOTE_G5, NOTE_G6, NOTE_G7}; 00038 double _GS[] = {NOTE_GS0, NOTE_GS1, NOTE_GS2, NOTE_GS3, NOTE_GS4, 00039 NOTE_GS5, NOTE_GS6, NOTE_GS7}; 00040 00041 /* 00042 * This is a lookup function to provide the correct 00043 * frequency given a note and an octave 00044 * 00045 * note - The given note character [A - G] 00046 * sharp - Whether the note is sharp (1) or not (0) 00047 * octave - The given octave [0 - 8] 00048 */ 00049 double notes::get_freq(char note, int sharp, int octave) { 00050 switch(note){ 00051 case 'A': 00052 //A Note 00053 if (octave>=0 && octave <=7){ 00054 if (sharp == 0){ 00055 return _A[octave]; 00056 } 00057 else{ 00058 return _AS[octave]; 00059 } 00060 } 00061 break; 00062 case 'B': 00063 //B Note 00064 if (octave>=0 && octave <=7){ 00065 if (sharp == 0){ 00066 return _B[octave]; 00067 } 00068 else{ 00069 return _BS[octave]; 00070 } 00071 } 00072 break; 00073 case 'C': 00074 //C Note 00075 if (octave>=0 && octave <=8){ 00076 if (sharp == 0){ 00077 return _C[octave]; 00078 } 00079 else{ 00080 return _CS[octave]; 00081 } 00082 } 00083 break; 00084 case 'D': 00085 //D Note 00086 if (octave>=0 && octave <=8){ 00087 if (sharp == 0){ 00088 return _D[octave]; 00089 } 00090 else{ 00091 return _DS[octave]; 00092 } 00093 } 00094 break; 00095 case 'E': 00096 //E Note 00097 if (octave>=0 && octave <=7){ 00098 if (sharp == 0){ 00099 return _E[octave]; 00100 } 00101 else{ 00102 return _ES[octave]; 00103 } 00104 } 00105 break; 00106 case 'F': 00107 //F Note 00108 if (octave>=0 && octave <=7){ 00109 if (sharp == 0){ 00110 return _F[octave]; 00111 } 00112 else{ 00113 return _FS[octave]; 00114 } 00115 } 00116 break; 00117 case 'G': 00118 //G Note 00119 if (octave>=0 && octave <=7){ 00120 if (sharp == 0){ 00121 return _G[octave]; 00122 } 00123 else{ 00124 return _GS[octave]; 00125 } 00126 } 00127 break; 00128 } 00129 return 0; 00130 }
Generated on Tue Jul 12 2022 18:38:04 by
1.7.2