├── README.md ├── keywords.txt ├── library.properties ├── src ├── Geekble_Note2Freq.cpp └── Geekble_Note2Freq.h └── examples └── Mary_had_a_little_lamb └── Mary_had_a_little_lamb.ino /README.md: -------------------------------------------------------------------------------- 1 | # Geekble_Note2Freq 2 | 음정 입력으로 쉽게 주파수값을 입력할 수 있는 라이브러리입니다. 3 | -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | Geekble_Note2Freq KEYWORD1 2 | NoteLength KEYWORD2 3 | Set_BPM_QuarterNote KEYWORD3 -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=Geekble_Note2Freq 2 | version=1.0.0 3 | author=SooDragon 4 | maintainer=SooDragon@geekble.kr 5 | sentence=Library for easy convertion of musical note to frequency. 6 | paragraph=Library for easy convertion of musical note to frequency. 7 | category=Other 8 | url=https://github.com/geekblemaker/Geekble_Note2Freq 9 | architectures=avr -------------------------------------------------------------------------------- /src/Geekble_Note2Freq.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Geekble_Note2Freq.h - Library for Note to Frequency Table. 3 | Created by SooDragon @ Geekble Circuit Maker, Aug 8, 2023. 4 | */ 5 | 6 | #include 7 | #include "Arduino.h" 8 | 9 | 10 | uint16_t bpm_QuarterNote = 120; 11 | 12 | Geekble_Note2Freq::Geekble_Note2Freq() 13 | { 14 | ; 15 | } 16 | 17 | unsigned long Geekble_Note2Freq::NoteLength(float _duration) 18 | { 19 | return ((60000.0 * _duration) / bpm_QuarterNote); 20 | } 21 | 22 | void Geekble_Note2Freq::Set_BPM_QuarterNote(uint16_t _BPM) 23 | { 24 | bpm_QuarterNote = _BPM; 25 | } -------------------------------------------------------------------------------- /examples/Mary_had_a_little_lamb/Mary_had_a_little_lamb.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | Geekble_Note2Freq Sing; 4 | 5 | #define tonePin 7 6 | void setup() 7 | { 8 | pinMode(7, OUTPUT); 9 | Sing.Set_BPM_QuarterNote(120); 10 | } 11 | 12 | void loop() 13 | { 14 | tone(tonePin, n_E5); delay(Sing.NoteLength(_dottedquarter)); 15 | tone(tonePin, n_D5); delay(Sing.NoteLength(_eighth)); 16 | tone(tonePin, n_C5); delay(Sing.NoteLength(_quarter)); 17 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 18 | tone(tonePin, n_E5); delay(Sing.NoteLength(_quarter)); 19 | tone(tonePin, n_E5); delay(Sing.NoteLength(_quarter)); 20 | tone(tonePin, n_E5); delay(Sing.NoteLength(_half)); 21 | 22 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 23 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 24 | tone(tonePin, n_D5); delay(Sing.NoteLength(_half)); 25 | tone(tonePin, n_E5); delay(Sing.NoteLength(_quarter)); 26 | tone(tonePin, n_G5); delay(Sing.NoteLength(_quarter)); 27 | tone(tonePin, n_G5); delay(Sing.NoteLength(_half)); 28 | 29 | tone(tonePin, n_E5); delay(Sing.NoteLength(_dottedquarter)); 30 | tone(tonePin, n_D5); delay(Sing.NoteLength(_eighth)); 31 | tone(tonePin, n_C5); delay(Sing.NoteLength(_quarter)); 32 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 33 | tone(tonePin, n_E5); delay(Sing.NoteLength(_quarter)); 34 | tone(tonePin, n_E5); delay(Sing.NoteLength(_quarter)); 35 | tone(tonePin, n_E5); delay(Sing.NoteLength(_half)); 36 | 37 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 38 | tone(tonePin, n_D5); delay(Sing.NoteLength(_quarter)); 39 | tone(tonePin, n_E5); delay(Sing.NoteLength(_dottedquarter)); 40 | tone(tonePin, n_D5); delay(Sing.NoteLength(_eighth)); 41 | 42 | tone(tonePin, n_C5); delay(Sing.NoteLength(_half)); 43 | 44 | noTone(tonePin); delay(5000); 45 | } 46 | -------------------------------------------------------------------------------- /src/Geekble_Note2Freq.h: -------------------------------------------------------------------------------- 1 | /* 2 | Geekble_Note2Freq.h - Library for Note to Frequency Table. 3 | Created by SooDragon @ Geekble Circuit Maker, Aug 8, 2023. 4 | */ 5 | #include "Arduino.h" 6 | 7 | 8 | #ifndef Geekble_Note2Freq_h 9 | #define Geekble_Note2Freq_h 10 | 11 | class Geekble_Note2Freq 12 | { 13 | public: 14 | Geekble_Note2Freq(); // Construct Class, Initialize function. 15 | unsigned long Geekble_Note2Freq::NoteLength(float _duration); 16 | void Geekble_Note2Freq::Set_BPM_QuarterNote(uint16_t _BPM); 17 | private: 18 | ; 19 | }; 20 | 21 | #endif 22 | 23 | #define _dottedbreve 12.0 24 | #define _dotteddoubleWhole 12.0 25 | #define _breve 8.0 26 | #define _doubleWhole 8.0 27 | #define _dottedsemibreve 6.0 28 | #define _dottedwhole 6.0 29 | #define _semibreve 4.0 30 | #define _whole 4.0 31 | #define _dottedminim 3.0 32 | #define _dottedhalf 3.0 33 | #define _minim 2.0 34 | #define _half 2.0 35 | #define _dottedcrotchet 1.5 36 | #define _dottedquarter 1.5 37 | #define _crotchet 1.0 38 | #define _quarter 1.0 39 | #define _dottedquaver 0.75 40 | #define _dottedeighth 0.75 41 | #define _quaver 0.5 42 | #define _eighth 0.5 43 | #define _dottedsemiquaver 12 44 | #define _dottedsixteenth 12 45 | #define _semiquaver 0.25 46 | #define _sixteenth 0.25 47 | #define _dotteddemisemiquaver 0.1875 48 | #define _dottedthirtysecond 0.1875 49 | #define _demisemiquaver 0.125 50 | #define _thirtysecond 0.125 51 | #define _dottedhemidemisemiquaver 0.09375 52 | #define _dottedsixtyfourth 0.09375 53 | #define _hemidemisemiquaver 0.0625 54 | #define _sixtyfourth 0.0625 55 | 56 | #define n_C0 16.35 57 | #define n_Cs0 17.32 58 | #define n_Db0 17.32 59 | #define n_D0 18.35 60 | #define n_Ds0 19.45 61 | #define n_Eb0 19.45 62 | #define n_E0 20.60 63 | #define n_F0 21.83 64 | #define n_Fs0 23.12 65 | #define n_Gb0 23.12 66 | #define n_G0 24.50 67 | #define n_Gs0 25.96 68 | #define n_Ab0 25.96 69 | #define n_A0 27.50 70 | #define n_As0 29.14 71 | #define n_Bb0 29.14 72 | #define n_B0 30.87 73 | #define n_C1 32.7 74 | #define n_Cs1 34.65 75 | #define n_Db1 34.65 76 | #define n_D1 36.71 77 | #define n_Ds1 38.89 78 | #define n_Eb1 38.89 79 | #define n_E1 41.20 80 | #define n_F1 43.65 81 | #define n_Fs1 46.25 82 | #define n_Gb1 46.25 83 | #define n_G1 49.00 84 | #define n_Gs1 51.91 85 | #define n_Ab1 51.91 86 | #define n_A1 55.00 87 | #define n_As1 58.27 88 | #define n_Bb1 58.27 89 | #define n_B1 61.74 90 | #define n_C2 65.41 91 | #define n_Cs2 69.30 92 | #define n_Db2 69.30 93 | #define n_D2 73.42 94 | #define n_Ds2 77.78 95 | #define n_Eb2 77.78 96 | #define n_E2 82.41 97 | #define n_F2 87.31 98 | #define n_Fs2 92.50 99 | #define n_Gb2 92.50 100 | #define n_G2 98.00 101 | #define n_Gs2 103.83 102 | #define n_Ab2 103.83 103 | #define n_A2 110.00 104 | #define n_As2 116.54 105 | #define n_Bb2 116.54 106 | #define n_B2 123.47 107 | #define n_C3 130.81 108 | #define n_Cs3 138.59 109 | #define n_Db3 138.59 110 | #define n_D3 146.83 111 | #define n_Ds3 155.56 112 | #define n_Eb3 155.56 113 | #define n_E3 164.81 114 | #define n_F3 174.61 115 | #define n_Fs3 185.00 116 | #define n_Gb3 185.00 117 | #define n_G3 196.00 118 | #define n_Gs3 207.65 119 | #define n_Ab3 207.65 120 | #define n_A3 220.00 121 | #define n_As3 233.08 122 | #define n_Bb3 233.08 123 | #define n_B3 246.94 124 | #define n_C4 261.63 125 | #define n_Cs4 277.18 126 | #define n_Db4 277.18 127 | #define n_D4 293.66 128 | #define n_Ds4 311.13 129 | #define n_Eb4 311.13 130 | #define n_E4 329.63 131 | #define n_F4 349.23 132 | #define n_Fs4 369.99 133 | #define n_Gb4 369.99 134 | #define n_G4 392.00 135 | #define n_Gs4 415.30 136 | #define n_Ab4 415.30 137 | #define n_A4 440.00 138 | #define n_As4 466.16 139 | #define n_Bb4 466.16 140 | #define n_B4 493.88 141 | #define n_C5 523.25 142 | #define n_Gs5 554.37 143 | #define n_Db5 554.37 144 | #define n_D5 587.33 145 | #define n_Ds5 622.25 146 | #define n_Eb5 622.25 147 | #define n_E5 659.25 148 | #define n_F5 698.46 149 | #define n_Fs5 739.99 150 | #define n_Gb5 739.99 151 | #define n_G5 783.99 152 | #define n_Gs5 830.61 153 | #define n_Ab5 830.61 154 | #define n_A5 880.00 155 | #define n_As5 932.33 156 | #define n_Bb5 932.33 157 | #define n_B5 987.77 158 | #define n_C6 1046.50 159 | #define n_Cs6 1108.73 160 | #define n_Db6 1108.73 161 | #define n_D6 1174.66 162 | #define n_Ds6 1244.51 163 | #define n_Eb6 1244.51 164 | #define n_E6 1318.51 165 | #define n_F6 1394.91 166 | #define n_Fs6 1479.98 167 | #define n_Gb6 1479.98 168 | #define n_G6 1567.98 169 | #define n_Gs6 1661.22 170 | #define n_Ab6 1661.22 171 | #define n_A6 1760.00 172 | #define n_As6 1864.66 173 | #define n_Bb6 1864.66 174 | #define n_B6 1975.53 175 | #define n_C7 2093.00 176 | #define n_Cs7 2217.46 177 | #define n_Db7 2217.46 178 | #define n_D7 2349.32 179 | #define n_Ds7 2489.02 180 | #define n_Eb7 2489.02 181 | #define n_E7 2637.02 182 | #define n_F7 2793.83 183 | #define n_Fs7 2959.96 184 | #define n_Gb7 2959.96 185 | #define n_G7 3135.96 186 | #define n_Gs7 3322.44 187 | #define n_Ab7 3322.44 188 | #define n_A7 3520.00 189 | #define n_As7 3729.31 190 | #define n_Bb7 3729.31 191 | #define n_B7 3951.07 192 | #define n_C8 4186.01 193 | #define n_Cs8 4434.92 194 | #define n_Db8 4434.92 195 | #define n_D8 4698.63 196 | #define n_Ds8 4978.03 197 | #define n_Eb8 4978.03 198 | #define n_E8 5274.04 199 | #define n_F8 5587.65 200 | #define n_Fs8 5919.91 201 | #define n_Gb8 5919.91 202 | #define n_G8 6271.93 203 | #define n_Gs8 6644.88 204 | #define n_Ab8 6644.88 205 | #define n_A8 7040.00 206 | #define n_As8 7458.62 207 | #define n_Bb8 7458.62 208 | #define n_B8 7902.13 --------------------------------------------------------------------------------