├── README.md ├── arpegchord └── arpegchord.ino ├── arpegsingl └── arpegsingl.ino ├── bpm_to_ms_per_whole ├── furbelize ├── furbelize.ino ├── pitches.h └── time.h ├── moarmelod ├── moarmelod.ino ├── pitches.h └── time.h ├── notelistGen ├── pitches_midirange ├── pitches_subdivisions ├── pitches.h └── time.h └── ultrasonar_theremin ├── pitches.h └── ultrasonar_theremin.ino /README.md: -------------------------------------------------------------------------------- 1 | # arduinosynthfun 2 | 3 | The bleep and the bloop, is what you'll find in here. 4 | Written for arduino uno and some auxiliary code in java. 5 | -------------------------------------------------------------------------------- /arpegchord/arpegchord.ino: -------------------------------------------------------------------------------- 1 | //notes 2 | 3 | int A = 110; 4 | int Aa = 116; 5 | int B = 123; 6 | int C = 130; 7 | int Cc = 138; 8 | int D = 146; 9 | int Dd = 155; 10 | int E = 164; 11 | int F = 174; 12 | int Ff = 185; 13 | int G = 196; 14 | int Gg = 208; 15 | 16 | int A_2 = 220; 17 | int Aa_2 = 233; 18 | int B2 = 246; 19 | int C2 = 261; 20 | int Cc2 = 277; 21 | int D2 = 293; 22 | int Dd2 = 311; 23 | int E2 = 329; 24 | int F2 = 349; 25 | int Ff2 = 369; 26 | int G2 = 392; 27 | int Gg2 = 415; 28 | 29 | //pins 30 | 31 | int keyA = 2; 32 | int keyB = 3; 33 | int keyC = 4; 34 | int keyD = 5; 35 | int keyE = 6; 36 | int keyF = 7; 37 | int keyG = 8; 38 | int keyA1 = 9; 39 | int pitchOut = 13; 40 | int kick = 10; 41 | 42 | 43 | //subdivisions 44 | 45 | float t = 2; 46 | float baseSpeed = 1000; 47 | 48 | float varSpeed = baseSpeed / t; 49 | 50 | float wh = varSpeed , ha = wh/2, third = wh/3, fifth = wh/4, sixth = wh/6, eighth = wh/8, sixteenth = wh / 16, thirtysecond = wh/32; 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | void setup() { 59 | // put your setup code here, to run once: 60 | 61 | pinMode(keyA, INPUT); 62 | pinMode(keyB, INPUT); 63 | pinMode(keyC, INPUT); 64 | pinMode(keyD, INPUT); 65 | pinMode(keyE, INPUT); 66 | pinMode(keyF, INPUT); 67 | pinMode(keyG, INPUT); 68 | pinMode(keyA1, INPUT); 69 | pinMode(pitchOut, OUTPUT); 70 | pinMode(kick, OUTPUT); 71 | 72 | digitalWrite(keyA, LOW); 73 | digitalWrite(keyB, LOW); 74 | digitalWrite(keyC, LOW); 75 | digitalWrite(keyD, LOW); 76 | digitalWrite(keyE, LOW); 77 | digitalWrite(keyF, LOW); 78 | digitalWrite(keyG, LOW); 79 | digitalWrite(keyA1, LOW); 80 | 81 | } 82 | 83 | void loop() { 84 | // put your main code here, to run repeatedly: 85 | //arp direction 86 | 87 | long dicey = random (0, 100); 88 | int up = 0; 89 | if (dicey < 80){ 90 | up = 0; 91 | } 92 | 93 | if (dicey > 80){ 94 | up = 1; 95 | } 96 | 97 | if (digitalRead(keyA) == HIGH && up == 1){ 98 | 99 | 100 | digitalWrite(kick, HIGH); 101 | delay(5); 102 | digitalWrite(kick, LOW); 103 | 104 | tone(pitchOut, A); 105 | delay(third); 106 | tone(pitchOut, C); 107 | delay(third); 108 | tone(pitchOut, E); 109 | delay(third); 110 | 111 | dicey = random(0,100); 112 | if (dicey < 80){ 113 | up = 0; 114 | } 115 | 116 | if (dicey > 80){ 117 | up = 1; 118 | } 119 | 120 | } 121 | 122 | if (digitalRead(keyA) == HIGH && up == 0){ 123 | 124 | 125 | digitalWrite(kick, HIGH); 126 | delay(5); 127 | digitalWrite(kick, LOW); 128 | 129 | tone(pitchOut, E); 130 | delay(third); 131 | tone(pitchOut, C); 132 | delay(third); 133 | tone(pitchOut, A); 134 | delay(third); 135 | if (dicey < 80){ 136 | up = 0; 137 | } 138 | 139 | if (dicey > 80){ 140 | up = 1; 141 | } 142 | } 143 | 144 | if (digitalRead(keyB) == HIGH && up == 0){ 145 | 146 | 147 | 148 | tone(pitchOut, B); 149 | delay(third); 150 | tone(pitchOut, D); 151 | delay(third); 152 | tone(pitchOut, F); 153 | delay(third); 154 | if (dicey < 80){ 155 | up = 0; 156 | } 157 | 158 | if (dicey > 80){ 159 | up = 1; 160 | } 161 | } 162 | 163 | if (digitalRead(keyB) == HIGH && up == 1){ 164 | 165 | 166 | 167 | tone(pitchOut, F); 168 | delay(third); 169 | tone(pitchOut, D); 170 | delay(third); 171 | tone(pitchOut, Aa); 172 | delay(third); 173 | if (dicey < 80){ 174 | up = 0; 175 | } 176 | 177 | if (dicey > 80){ 178 | up = 1; 179 | } 180 | } 181 | 182 | if (digitalRead(keyC) == HIGH && up == 0){ 183 | 184 | digitalWrite(kick, HIGH); 185 | delay(5); 186 | digitalWrite(kick, LOW); 187 | 188 | tone(pitchOut, C); 189 | delay(third); 190 | tone(pitchOut, E); 191 | delay(third); 192 | tone(pitchOut, G); 193 | delay(third); 194 | if (dicey < 80){ 195 | up = 0; 196 | } 197 | 198 | if (dicey > 80){ 199 | up = 1; 200 | } 201 | } 202 | 203 | if (digitalRead(keyC) == HIGH && up == 1){ 204 | 205 | digitalWrite(kick, HIGH); 206 | delay(5); 207 | digitalWrite(kick, LOW); 208 | 209 | tone(pitchOut, G); 210 | delay(third); 211 | tone(pitchOut, E); 212 | delay(third); 213 | tone(pitchOut, C); 214 | delay(third); 215 | if (dicey < 80){ 216 | up = 0; 217 | } 218 | 219 | if (dicey > 80){ 220 | up = 1; 221 | } 222 | } 223 | 224 | if (digitalRead(keyD) == HIGH && up == 0){ 225 | 226 | 227 | 228 | tone(pitchOut, D); 229 | delay(third); 230 | tone(pitchOut, F); 231 | delay(third); 232 | tone(pitchOut, A_2); 233 | delay(third); 234 | if (dicey < 80){ 235 | up = 0; 236 | } 237 | 238 | if (dicey > 80){ 239 | up = 1; 240 | } 241 | 242 | }if (digitalRead(keyD) == HIGH && up == 1){ 243 | 244 | 245 | 246 | tone(pitchOut, A_2); 247 | delay(third); 248 | tone(pitchOut, F); 249 | delay(third); 250 | tone(pitchOut, D); 251 | delay(third); 252 | if (dicey < 80){ 253 | up = 0; 254 | } 255 | 256 | if (dicey > 80){ 257 | up = 1; 258 | } 259 | 260 | } 261 | 262 | 263 | if (digitalRead(keyE) == HIGH && up == 0){ 264 | 265 | digitalWrite(kick, HIGH); 266 | delay(5); 267 | digitalWrite(kick, LOW); 268 | 269 | tone(pitchOut, E); 270 | delay(third); 271 | tone(pitchOut, G); 272 | delay(third); 273 | tone(pitchOut, B2); 274 | delay(third); 275 | if (dicey < 80){ 276 | up = 0; 277 | } 278 | 279 | if (dicey > 80){ 280 | up = 1; 281 | } 282 | } 283 | 284 | if (digitalRead(keyE) == HIGH && up == 1){ 285 | 286 | digitalWrite(kick, HIGH); 287 | delay(5); 288 | digitalWrite(kick, LOW); 289 | 290 | tone(pitchOut, B2); 291 | delay(third); 292 | tone(pitchOut, G); 293 | delay(third); 294 | tone(pitchOut, E); 295 | delay(third); 296 | if (dicey < 80){ 297 | up = 0; 298 | } 299 | 300 | if (dicey > 80){ 301 | up = 1; 302 | } 303 | } 304 | 305 | if (digitalRead(keyF) == HIGH && up == 0){ 306 | digitalWrite(kick, HIGH); 307 | delay(5); 308 | digitalWrite(kick, LOW); 309 | 310 | 311 | tone(pitchOut, F); 312 | delay(third); 313 | tone(pitchOut, A_2); 314 | delay(third); 315 | tone(pitchOut, C2); 316 | delay(third); 317 | if (dicey < 80){ 318 | up = 0; 319 | } 320 | 321 | if (dicey > 80){ 322 | up = 1; 323 | } 324 | } 325 | 326 | if (digitalRead(keyF) == HIGH && up == 1){ 327 | digitalWrite(kick, HIGH); 328 | delay(5); 329 | digitalWrite(kick, LOW); 330 | 331 | 332 | tone(pitchOut, C2); 333 | delay(third); 334 | tone(pitchOut, A_2); 335 | delay(third); 336 | tone(pitchOut, F); 337 | delay(third); 338 | if (dicey < 80){ 339 | up = 0; 340 | } 341 | 342 | if (dicey > 80){ 343 | up = 1; 344 | } 345 | } 346 | 347 | if (digitalRead(keyG) == HIGH && up == 0){ 348 | digitalWrite(kick, HIGH); 349 | delay(5); 350 | digitalWrite(kick, LOW); 351 | 352 | 353 | tone(pitchOut, G); 354 | delay(third); 355 | tone(pitchOut, B2); 356 | delay(third); 357 | tone(pitchOut, D2); 358 | delay(third); 359 | if (dicey < 80){ 360 | up = 0; 361 | } 362 | 363 | if (dicey > 80){ 364 | up = 1; 365 | } 366 | } 367 | 368 | if (digitalRead(keyG) == HIGH && up == 1){ 369 | digitalWrite(kick, HIGH); 370 | delay(5); 371 | digitalWrite(kick, LOW); 372 | 373 | 374 | tone(pitchOut, D2); 375 | delay(third); 376 | tone(pitchOut, B2); 377 | delay(third); 378 | tone(pitchOut, G); 379 | delay(third); 380 | if (dicey < 80){ 381 | up = 0; 382 | } 383 | 384 | if (dicey > 80){ 385 | up = 1; 386 | } 387 | } 388 | 389 | if (digitalRead(keyA1) == HIGH && up == 0){ 390 | 391 | digitalWrite(kick, HIGH); 392 | delay(5); 393 | digitalWrite(kick, LOW); 394 | 395 | tone(pitchOut, A_2); 396 | delay(third); 397 | tone(pitchOut, C2); 398 | delay(third); 399 | tone(pitchOut, E2); 400 | delay(third); 401 | if (dicey < 80){ 402 | up = 0; 403 | } 404 | 405 | if (dicey > 80){ 406 | up = 1; 407 | } 408 | } 409 | 410 | 411 | if (digitalRead(keyA1) == HIGH && up == 1){ 412 | 413 | digitalWrite(kick, HIGH); 414 | delay(5); 415 | digitalWrite(kick, LOW); 416 | 417 | tone(pitchOut, E); 418 | delay(third); 419 | tone(pitchOut, C2); 420 | delay(third); 421 | tone(pitchOut, A_2); 422 | delay(third); 423 | if (dicey < 80){ 424 | up = 0; 425 | } 426 | 427 | if (dicey > 80){ 428 | up = 1; 429 | } 430 | } 431 | 432 | else { 433 | noTone(pitchOut); 434 | digitalWrite(kick, LOW); 435 | } 436 | } 437 | -------------------------------------------------------------------------------- /arpegsingl/arpegsingl.ino: -------------------------------------------------------------------------------- 1 | //notes 2 | 3 | int A = 110; 4 | int Aa = 116; 5 | int B = 123; 6 | int C = 130; 7 | int Cc = 138; 8 | int D = 146; 9 | int Dd = 155; 10 | int E = 164; 11 | int F = 174; 12 | int Ff = 185; 13 | int G = 196; 14 | int Gg = 208; 15 | 16 | //pins 17 | 18 | int keyA = 2; 19 | int keyB = 3; 20 | int keyC = 4; 21 | int keyD = 5; 22 | int keyE = 6; 23 | int keyF = 7; 24 | int keyG = 8; 25 | int keyA1 = 9; 26 | int pitchOut = 13; 27 | int kick = 10; 28 | 29 | 30 | //subdivisions 31 | 32 | float t = 3; 33 | float baseSpeed = 1000; 34 | 35 | float varSpeed = baseSpeed / t; 36 | 37 | float wh = varSpeed , ha = wh/2, third = wh/3, fifth = wh/4, sixth = wh/6, eighth = wh/8, sixteenth = wh / 16, thirtysecond = wh/32; 38 | 39 | 40 | 41 | void setup() { 42 | // put your setup code here, to run once: 43 | pinMode(keyA, INPUT); 44 | pinMode(keyB, INPUT); 45 | pinMode(keyC, INPUT); 46 | pinMode(keyD, INPUT); 47 | pinMode(keyE, INPUT); 48 | pinMode(keyF, INPUT); 49 | pinMode(keyG, INPUT); 50 | pinMode(keyA1, INPUT); 51 | pinMode(pitchOut, OUTPUT); 52 | pinMode(kick, OUTPUT); 53 | 54 | 55 | 56 | } 57 | 58 | void loop() { 59 | // put your main code here, to run repeatedly: 60 | 61 | 62 | 63 | 64 | 65 | if (digitalRead(keyA) == HIGH){ 66 | 67 | 68 | 69 | tone(pitchOut, A); 70 | delay(third); 71 | 72 | } 73 | 74 | if (digitalRead(keyB) == HIGH){ 75 | 76 | 77 | 78 | tone(pitchOut, B); 79 | delay(third); 80 | } 81 | 82 | if (digitalRead(keyC) == HIGH){ 83 | 84 | 85 | 86 | tone(pitchOut, C); 87 | delay(third); 88 | 89 | } 90 | 91 | if (digitalRead(keyD) == HIGH){ 92 | 93 | 94 | 95 | tone(pitchOut, D); 96 | delay(third); 97 | 98 | 99 | } 100 | 101 | 102 | if (digitalRead(keyE) == HIGH){ 103 | 104 | 105 | 106 | tone(pitchOut, E); 107 | delay(third); 108 | 109 | } 110 | 111 | 112 | if (digitalRead(keyF) == HIGH){ 113 | 114 | 115 | 116 | tone(pitchOut, F); 117 | delay(third); 118 | 119 | } 120 | 121 | 122 | if (digitalRead(keyG) == HIGH){ 123 | 124 | 125 | 126 | tone(pitchOut, G); 127 | delay(third); 128 | 129 | 130 | } 131 | 132 | 133 | if (digitalRead(keyA1) == HIGH){ 134 | 135 | 136 | tone(pitchOut, A*2); 137 | delay(third); 138 | 139 | } 140 | 141 | else { 142 | noTone(pitchOut); 143 | 144 | } 145 | 146 | } 147 | -------------------------------------------------------------------------------- /bpm_to_ms_per_whole: -------------------------------------------------------------------------------- 1 | // bpm to ms/whole note 2 | 3 | 4 | import java.lang.Math; 5 | import java.util.Scanner; 6 | 7 | public class Bpm{ 8 | 9 | public static void main(String args[]){ 10 | 11 | 12 | Scanner numb = new Scanner(System.in); 13 | System.out.println("enter bpm"); 14 | 15 | 16 | double bpm = numb.nextDouble(); 17 | double bps = bpm/60; 18 | 19 | double whole = (Math.pow((bps), -1)*1000)*4; 20 | 21 | 22 | System.out.println("at " + bpm + " bpm, a whole note is " + whole + "ms"); 23 | 24 | } 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /furbelize/furbelize.ino: -------------------------------------------------------------------------------- 1 | 2 | #include "pitches.h" 3 | #include "time.h" 4 | 5 | 6 | 7 | void setup() { 8 | // put your setup code here, to run once: 9 | pinMode(13, OUTPUT); 10 | 11 | 12 | } 13 | 14 | void loop() { 15 | // put your main code here, to run repeatedly: 16 | noTone(13); 17 | 18 | 19 | 20 | tone(13, E_3); 21 | delay(sixth); 22 | tone(13, Dd_3); 23 | delay(sixth); 24 | tone(13, E_3); 25 | delay(sixth); 26 | tone(13, Dd_3); 27 | delay(sixth); 28 | tone(13, E_3); 29 | delay(sixth); 30 | tone(13, B_3); 31 | delay(sixth); 32 | tone(13, D_3); 33 | delay(sixth); 34 | tone(13, C_3); 35 | delay(sixth); 36 | tone(13, A_3); 37 | delay(sixth); 38 | tone(13, A_2); 39 | delay(sixth); 40 | tone(13, C_3); 41 | delay(sixth); 42 | 43 | tone(13, C_2); 44 | delay(sixth); 45 | tone(13, E_2); 46 | delay(sixth); 47 | tone(13, A_2); 48 | delay(sixth); 49 | tone(13, B_2); 50 | delay(half); 51 | 52 | tone(13, E_2); 53 | delay(sixth); 54 | tone(13, A_2); 55 | delay(sixth); 56 | tone(13, B_2); 57 | delay(sixth); 58 | tone(13, C_3); 59 | delay(half); 60 | 61 | 62 | 63 | 64 | tone(13, E_2); 65 | delay(sixth); 66 | tone(13, E_3); 67 | delay(sixth); 68 | tone(13, Dd_3); 69 | delay(sixth); 70 | tone(13, E_3); 71 | delay(sixth); 72 | tone(13, Dd_3); 73 | delay(sixth); 74 | tone(13, E_3); 75 | delay(sixth); 76 | tone(13, B_3); 77 | delay(sixth); 78 | tone(13, D_3); 79 | delay(sixth); 80 | tone(13, C_3); 81 | delay(sixth); 82 | tone(13, A_3); 83 | delay(sixth); 84 | tone(13, A_2); 85 | delay(sixth); 86 | tone(13, C_3); 87 | delay(sixth); 88 | 89 | tone(13, C_2); 90 | delay(sixth); 91 | tone(13, E_2); 92 | delay(sixth); 93 | tone(13, A_2); 94 | delay(sixth); 95 | tone(13, B_2); 96 | delay(half); 97 | 98 | 99 | tone(13, C_2); 100 | delay(sixth); 101 | tone(13, C_3); 102 | delay(sixth); 103 | tone(13, B_2); 104 | delay(sixth); 105 | tone(13, A_2); 106 | delay(half); 107 | 108 | tone(13, B_2); 109 | delay(sixth); 110 | tone(13, C_3); 111 | delay(sixth); 112 | tone(13, D_3); 113 | delay(sixth); 114 | tone(13, E_3); 115 | delay(half); 116 | 117 | 118 | 119 | tone(13, C_3); 120 | delay(sixth); 121 | tone(13, F_3); 122 | delay(sixth); 123 | tone(13, E_3); 124 | delay(sixth); 125 | tone(13, D_3); 126 | delay(half); 127 | 128 | tone(13, B_2); 129 | delay(sixth); 130 | tone(13, E_3); 131 | delay(sixth); 132 | tone(13, D_3); 133 | delay(sixth); 134 | tone(13, C_3); 135 | delay(half); 136 | 137 | 138 | tone(13, A_2); 139 | delay(sixth); 140 | tone(13, D_3); 141 | delay(sixth); 142 | tone(13, C_3); 143 | delay(sixth); 144 | tone(13, B_2); 145 | delay(whole); 146 | 147 | 148 | tone(13, E_3); 149 | delay(whole + third); 150 | 151 | 152 | 153 | 154 | noTone(13); 155 | 156 | } 157 | -------------------------------------------------------------------------------- /furbelize/pitches.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | //0 5 | 6 | //Equation: 12th root of 2 is c.a. 1.059463094, Pn = Pa*pow(1.059463094, n-a) 7 | 8 | #define A_0 440*pow(1.059463094, (1-49)) 9 | #define Aa_0 440*pow(1.059463094, (2-49)) 10 | #define B_0 440*pow(1.059463094, (3-49) 11 | 12 | 13 | //1 14 | 15 | #define C_1 440*pow(1.059463094, 4-49) 16 | #define Cc_1 440*pow(1.059463094, 5-49) 17 | #define D_1 440*pow(1.059463094, 6-49) 18 | #define Dd_1 440*pow(1.059463094, 7-49) 19 | #define E_1 440*pow(1.059463094, 8-49) 20 | #define F_1 440*pow(1.059463094, 9-49) 21 | #define Ff_1 440*pow(1.059463094, 10-49) 22 | #define G_1 440*pow(1.059463094, 11-49) 23 | #define Gg_1 440*pow(1.059463094, 12-49) 24 | #define A_1 440*pow(1.059463094, 13-49) 25 | #define Aa_1 440*pow(1.059463094, 14-49) 26 | #define B_1 440*pow(1.059463094, 15-49) 27 | 28 | //2 29 | 30 | #define C_2 440*pow(1.059463094, 16-49) 31 | #define Cc_2 440*pow(1.059463094, 17-49) 32 | #define D_2 440*pow(1.059463094, 18-49) 33 | #define Dd_2 440*pow(1.059463094, 19-49) 34 | #define E_2 440*pow(1.059463094, 20-49) 35 | #define F_2 440*pow(1.059463094, 21-49) 36 | #define Ff_2 440*pow(1.059463094, 22-49) 37 | #define G_2 440*pow(1.059463094, 23-49) 38 | #define Gg_2 440*pow(1.059463094, 24-49) 39 | #define A_2 440*pow(1.059463094, 25-49) 40 | #define Aa_2 440*pow(1.059463094, 26-49) 41 | #define B_2 440*pow(1.059463094, 27-49) 42 | 43 | //3 44 | 45 | #define C_3 440*pow(1.059463094, 28-49) 46 | #define Cc_3 440*pow(1.059463094, 29-49) 47 | #define D_3 440*pow(1.059463094, 30-49) 48 | #define Dd_3 440*pow(1.059463094, 31-49) 49 | #define E_3 440*pow(1.059463094, 32-49) 50 | #define F_3 440*pow(1.059463094, 33-49) 51 | #define Ff_3 440*pow(1.059463094, 34-49) 52 | #define G_3 440*pow(1.059463094, 35-49) 53 | #define Gg_3 440*pow(1.059463094, 36-49) 54 | #define A_3 440*pow(1.059463094, 37-49) 55 | #define Aa_3 440*pow(1.059463094, 38-49) 56 | #define B_3 440*pow(1.059463094, 39-49) 57 | 58 | //4 59 | 60 | #define C_4 440*pow(1.059463094, 40-49) 61 | #define Cc_4 440*pow(1.059463094, 41-49) 62 | #define D_4 440*pow(1.059463094, 42-49) 63 | #define Dd_4 440*pow(1.059463094, 43-49) 64 | #define E_4 440*pow(1.059463094, 44-49) 65 | #define F_4 440*pow(1.059463094, 45-49) 66 | #define Ff_4 440*pow(1.059463094, 46-49) 67 | #define G_4 440*pow(1.059463094, 47-49) 68 | #define Gg_4 440*pow(1.059463094, 48-49) 69 | #define A_4 440*pow(1.059463094, 49-49) 70 | #define Aa_4 440*pow(1.059463094, 50-49) 71 | #define B_4 440*pow(1.059463094, 51-49) 72 | 73 | //5 74 | 75 | #define C_5 440*pow(1.059463094, 52-49) 76 | #define Cc_5 440*pow(1.059463094, 53-49) 77 | #define D_5 440*pow(1.059463094, 54-49) 78 | #define Dd_5 440*pow(1.059463094, 55-49) 79 | #define E_5 440*pow(1.059463094, 56-49) 80 | #define F_5 440*pow(1.059463094, 57-49) 81 | #define Ff_5 440*pow(1.059463094, 58-49) 82 | #define G_5 440*pow(1.059463094, 59-49) 83 | #define Gg_5 440*pow(1.059463094, 60-49) 84 | #define A_5 440*pow(1.059463094, 61-49) 85 | #define Aa_5 440*pow(1.059463094, 62-49) 86 | #define B_5 440*pow(1.059463094, 63-49) 87 | 88 | //6 89 | 90 | #define C_6 440*pow(1.059463094, 64-49) 91 | #define Cc_6 440*pow(1.059463094, 65-49) 92 | #define D_6 440*pow(1.059463094, 66-49) 93 | #define Dd_6 440*pow(1.059463094, 67-49) 94 | #define E_6 440*pow(1.059463094, 68-49) 95 | #define F_6 440*pow(1.059463094, 69-49) 96 | #define Ff_6 440*pow(1.059463094, 70-49) 97 | #define G_6 440*pow(1.059463094, 71-49) 98 | #define Gg_6 440*pow(1.059463094, 72-49) 99 | #define A_6 440*pow(1.059463094, 73-49) 100 | #define Aa_6 440*pow(1.059463094, 74-49) 101 | #define B_6 440*pow(1.059463094, 75-49) 102 | -------------------------------------------------------------------------------- /furbelize/time.h: -------------------------------------------------------------------------------- 1 | int bpm = 60; 2 | 3 | #define whole 1/(bpm/60)*1000 4 | #define half whole/2 5 | #define third whole/3 6 | #define quarter whole/4 7 | #define sixth whole/6 8 | #define eighth whole/8 9 | #define twelfth whole/12 10 | #define sixteenth whole/16 11 | #define thirtys whole/32 12 | #define bar whole*4 13 | -------------------------------------------------------------------------------- /moarmelod/moarmelod.ino: -------------------------------------------------------------------------------- 1 | 2 | #include "pitches.h" 3 | #include "time.h" 4 | 5 | 6 | 7 | void setup() { 8 | // put your setup code here, to run once: 9 | pinMode(13, OUTPUT); 10 | 11 | 12 | } 13 | 14 | void loop() { 15 | // put your main code here, to run repeatedly: 16 | noTone(13); 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /moarmelod/pitches.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | //0 5 | 6 | //Equation: 12th root of 2 is c.a. 1.059463094, Pn = Pa*pow(1.059463094, n-a) 7 | 8 | #define A_0 440*pow(1.059463094, (1-49)) 9 | #define Aa_0 440*pow(1.059463094, (2-49)) 10 | #define B_0 440*pow(1.059463094, (3-49) 11 | 12 | 13 | //1 14 | 15 | #define C_1 440*pow(1.059463094, 4-49) 16 | #define Cc_1 440*pow(1.059463094, 5-49) 17 | #define D_1 440*pow(1.059463094, 6-49) 18 | #define Dd_1 440*pow(1.059463094, 7-49) 19 | #define E_1 440*pow(1.059463094, 8-49) 20 | #define F_1 440*pow(1.059463094, 9-49) 21 | #define Ff_1 440*pow(1.059463094, 10-49) 22 | #define G_1 440*pow(1.059463094, 11-49) 23 | #define Gg_1 440*pow(1.059463094, 12-49) 24 | #define A_1 440*pow(1.059463094, 13-49) 25 | #define Aa_1 440*pow(1.059463094, 14-49) 26 | #define B_1 440*pow(1.059463094, 15-49) 27 | 28 | //2 29 | 30 | #define C_2 440*pow(1.059463094, 16-49) 31 | #define Cc_2 440*pow(1.059463094, 17-49) 32 | #define D_2 440*pow(1.059463094, 18-49) 33 | #define Dd_2 440*pow(1.059463094, 19-49) 34 | #define E_2 440*pow(1.059463094, 20-49) 35 | #define F_2 440*pow(1.059463094, 21-49) 36 | #define Ff_2 440*pow(1.059463094, 22-49) 37 | #define G_2 440*pow(1.059463094, 23-49) 38 | #define Gg_2 440*pow(1.059463094, 24-49) 39 | #define A_2 440*pow(1.059463094, 25-49) 40 | #define Aa_2 440*pow(1.059463094, 26-49) 41 | #define B_2 440*pow(1.059463094, 27-49) 42 | 43 | //3 44 | 45 | #define C_3 440*pow(1.059463094, 28-49) 46 | #define Cc_3 440*pow(1.059463094, 29-49) 47 | #define D_3 440*pow(1.059463094, 30-49) 48 | #define Dd_3 440*pow(1.059463094, 31-49) 49 | #define E_3 440*pow(1.059463094, 32-49) 50 | #define F_3 440*pow(1.059463094, 33-49) 51 | #define Ff_3 440*pow(1.059463094, 34-49) 52 | #define G_3 440*pow(1.059463094, 35-49) 53 | #define Gg_3 440*pow(1.059463094, 36-49) 54 | #define A_3 440*pow(1.059463094, 37-49) 55 | #define Aa_3 440*pow(1.059463094, 38-49) 56 | #define B_3 440*pow(1.059463094, 39-49) 57 | 58 | //4 59 | 60 | #define C_4 440*pow(1.059463094, 40-49) 61 | #define Cc_4 440*pow(1.059463094, 41-49) 62 | #define D_4 440*pow(1.059463094, 42-49) 63 | #define Dd_4 440*pow(1.059463094, 43-49) 64 | #define E_4 440*pow(1.059463094, 44-49) 65 | #define F_4 440*pow(1.059463094, 45-49) 66 | #define Ff_4 440*pow(1.059463094, 46-49) 67 | #define G_4 440*pow(1.059463094, 47-49) 68 | #define Gg_4 440*pow(1.059463094, 48-49) 69 | #define A_4 440*pow(1.059463094, 49-49) 70 | #define Aa_4 440*pow(1.059463094, 50-49) 71 | #define B_4 440*pow(1.059463094, 51-49) 72 | 73 | //5 74 | 75 | #define C_5 440*pow(1.059463094, 52-49) 76 | #define Cc_5 440*pow(1.059463094, 53-49) 77 | #define D_5 440*pow(1.059463094, 54-49) 78 | #define Dd_5 440*pow(1.059463094, 55-49) 79 | #define E_5 440*pow(1.059463094, 56-49) 80 | #define F_5 440*pow(1.059463094, 57-49) 81 | #define Ff_5 440*pow(1.059463094, 58-49) 82 | #define G_5 440*pow(1.059463094, 59-49) 83 | #define Gg_5 440*pow(1.059463094, 60-49) 84 | #define A_5 440*pow(1.059463094, 61-49) 85 | #define Aa_5 440*pow(1.059463094, 62-49) 86 | #define B_5 440*pow(1.059463094, 63-49) 87 | 88 | //6 89 | 90 | #define C_6 440*pow(1.059463094, 64-49) 91 | #define Cc_6 440*pow(1.059463094, 65-49) 92 | #define D_6 440*pow(1.059463094, 66-49) 93 | #define Dd_6 440*pow(1.059463094, 67-49) 94 | #define E_6 440*pow(1.059463094, 68-49) 95 | #define F_6 440*pow(1.059463094, 69-49) 96 | #define Ff_6 440*pow(1.059463094, 70-49) 97 | #define G_6 440*pow(1.059463094, 71-49) 98 | #define Gg_6 440*pow(1.059463094, 72-49) 99 | #define A_6 440*pow(1.059463094, 73-49) 100 | #define Aa_6 440*pow(1.059463094, 74-49) 101 | #define B_6 440*pow(1.059463094, 75-49) 102 | -------------------------------------------------------------------------------- /moarmelod/time.h: -------------------------------------------------------------------------------- 1 | int bpm = 60; 2 | 3 | #define whole 1/(bpm/60)*1000 4 | #define half whole/2 5 | #define third whole/3 6 | #define quarter whole/4 7 | #define sixth whole/6 8 | #define eighth whole/8 9 | #define twelfth whole/12 10 | #define sixteenth whole/16 11 | #define thirtys whole/32 12 | #define bar whole*4 13 | -------------------------------------------------------------------------------- /notelistGen: -------------------------------------------------------------------------------- 1 | // This program generates a list of all notes that are supported by midi. C-1(0) to G9(127). Sharp notes are written as "Nn". 2 | 3 | 4 | 5 | 6 | 7 | 8 | public class notelistGen{ 9 | 10 | public static void main(String args[]){ 11 | 12 | int octave = 0; 13 | int noteNr= 0; 14 | 15 | for (octave = 0 ; octave <= 10 ; octave ++ ){ 16 | 17 | System.out.println( "C_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 18 | 19 | noteNr = noteNr + 1; 20 | 21 | 22 | 23 | System.out.println( "Cc_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 24 | 25 | noteNr = noteNr + 1; 26 | 27 | System.out.println( "D_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 28 | 29 | noteNr = noteNr + 1; 30 | 31 | 32 | System.out.println( "Dd_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 33 | 34 | noteNr = noteNr + 1; 35 | 36 | 37 | System.out.println( "E_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 38 | 39 | noteNr = noteNr + 1; 40 | 41 | System.out.println( "F_" + (octave - 1) + " = " + noteNr + " Binary " + Integer.toBinaryString(noteNr)); 42 | 43 | noteNr = noteNr + 1; 44 | 45 | 46 | System.out.println( "Ff_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 47 | 48 | noteNr = noteNr + 1; 49 | 50 | 51 | System.out.println( "G_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 52 | 53 | noteNr = noteNr + 1; 54 | 55 | 56 | 57 | if (noteNr >= 127){ 58 | 59 | return; 60 | } 61 | 62 | System.out.println( "Gg_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 63 | 64 | 65 | 66 | noteNr = noteNr + 1; 67 | 68 | 69 | System.out.println( "A_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 70 | 71 | noteNr = noteNr + 1; 72 | 73 | 74 | System.out.println( "Aa_" + (octave - 1) + " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 75 | 76 | noteNr = noteNr + 1; 77 | 78 | 79 | System.out.println( "B_" + (octave - 1)+ " = " + noteNr + " Binary: " + Integer.toBinaryString(noteNr)); 80 | 81 | noteNr = noteNr + 1; 82 | 83 | } 84 | 85 | } 86 | 87 | } 88 | 89 | 90 | -------------------------------------------------------------------------------- /pitches_midirange: -------------------------------------------------------------------------------- 1 | //Equation: 12th root of 2 is c.a. 1.059463094, Pn is the desired frequency, Pa is the reference frequency, n-a is the note distance between the desired frequency 2 | // and the reference frequency. Pn = Pa*pow(1.059463094, n-a) 3 | 4 | // Reference frequency: Pa = 440 Hz 5 | //Reference note: A4, which is 69 semitones from C-1 6 | // thus: a = 69 7 | 8 | // Sharp notes are written as "Nn", 9 | 10 | 11 | //-1 12 | 13 | #define C_01 440*pow(1.059463094, -69) 14 | #define Cc_01 440*pow(1.059463094, -68) 15 | #define D_01 440*pow(1.059463094, -67) 16 | #define Dd_01 440*pow(1.059463094, -66) 17 | #define E_01 440*pow(1.059463094, -65) 18 | #define F_01 440*pow(1.059463094, -64) 19 | #define Ff_01 440*pow(1.059463094, -63) 20 | #define G_01 440*pow(1.059463094, -62) 21 | #define Gg_01 440*pow(1.059463094, -61) 22 | #define A_01 440*pow(1.059463094, -60) 23 | #define Aa_01 440*pow(1.059463094, -59) 24 | #define B_01 440*pow(1.059463094, -58) 25 | 26 | 27 | //0 28 | 29 | 30 | #define C_0 440*pow(1.059463094, -57) 31 | #define Cc_0 440*pow(1.059463094, -56) 32 | #define D_0 440*pow(1.059463094, -55) 33 | #define Dd_0 440*pow(1.059463094, -54) 34 | #define E_0 440*pow(1.059463094, -53) 35 | #define F_0 440*pow(1.059463094, -52) 36 | #define Ff_0 440*pow(1.059463094, -51) 37 | #define G_0 440*pow(1.059463094, -50) 38 | #define Gg_0 440*pow(1.059463094, -49) 39 | #define A_0 440*pow(1.059463094, -48) 40 | #define Aa_0 440*pow(1.059463094, -47) 41 | #define B_0 440*pow(1.059463094, -46) 42 | 43 | 44 | //1 45 | 46 | #define C_1 440*pow(1.059463094, -45) 47 | #define Cc_1 440*pow(1.059463094, -44) 48 | #define D_1 440*pow(1.059463094, -43) 49 | #define Dd_1 440*pow(1.059463094, -42) 50 | #define E_1 440*pow(1.059463094, -41) 51 | #define F_1 440*pow(1.059463094, -40) 52 | #define Ff_1 440*pow(1.059463094, -39) 53 | #define G_1 440*pow(1.059463094, -38) 54 | #define Gg_1 440*pow(1.059463094, -37) 55 | #define A_1 440*pow(1.059463094, -36) 56 | #define Aa_1 440*pow(1.059463094, -35) 57 | #define B_1 440*pow(1.059463094, -34) 58 | 59 | //2 60 | 61 | #define C_2 440*pow(1.059463094, -33) 62 | #define Cc_2 440*pow(1.059463094, -32) 63 | #define D_2 440*pow(1.059463094, -31) 64 | #define Dd_2 440*pow(1.059463094, -30) 65 | #define E_2 440*pow(1.059463094, -29) 66 | #define F_2 440*pow(1.059463094, -28) 67 | #define Ff_2 440*pow(1.059463094, -27) 68 | #define G_2 440*pow(1.059463094, -26) 69 | #define Gg_2 440*pow(1.059463094, -25) 70 | #define A_2 440*pow(1.059463094, -24) 71 | #define Aa_2 440*pow(1.059463094, -23) 72 | #define B_2 440*pow(1.059463094, -22) 73 | 74 | //3 75 | 76 | #define C_3 440*pow(1.059463094, -21) 77 | #define Cc_3 440*pow(1.059463094, -20) 78 | #define D_3 440*pow(1.059463094, -19) 79 | #define Dd_3 440*pow(1.059463094, -18) 80 | #define E_3 440*pow(1.059463094, -17) 81 | #define F_3 440*pow(1.059463094, -16) 82 | #define Ff_3 440*pow(1.059463094, -15) 83 | #define G_3 440*pow(1.059463094, -14) 84 | #define Gg_3 440*pow(1.059463094, -13) 85 | #define A_3 440*pow(1.059463094, -12) 86 | #define Aa_3 440*pow(1.059463094, -11) 87 | #define B_3 440*pow(1.059463094, -10) 88 | 89 | //4 90 | 91 | #define C_4 440*pow(1.059463094, -9) 92 | #define Cc_4 440*pow(1.059463094, -8) 93 | #define D_4 440*pow(1.059463094, -7) 94 | #define Dd_4 440*pow(1.059463094, -6) 95 | #define E_4 440*pow(1.059463094, -5) 96 | #define F_4 440*pow(1.059463094, -4) 97 | #define Ff_4 440*pow(1.059463094, -3) 98 | #define G_4 440*pow(1.059463094, -2) 99 | #define Gg_4 440*pow(1.059463094, -1) 100 | #define A_4 440*pow(1.059463094, 0) 101 | #define Aa_4 440*pow(1.059463094, 1) 102 | #define B_4 440*pow(1.059463094, 2) 103 | 104 | //5 105 | 106 | #define C_5 440*pow(1.059463094, 3) 107 | #define Cc_5 440*pow(1.059463094, 4) 108 | #define D_5 440*pow(1.059463094, 5) 109 | #define Dd_5 440*pow(1.059463094, 6) 110 | #define E_5 440*pow(1.059463094, 7) 111 | #define F_5 440*pow(1.059463094, 8) 112 | #define Ff_5 440*pow(1.059463094, 9) 113 | #define G_5 440*pow(1.059463094, 10) 114 | #define Gg_5 440*pow(1.059463094, 11) 115 | #define A_5 440*pow(1.059463094, 12) 116 | #define Aa_5 440*pow(1.059463094, 13) 117 | #define B_5 440*pow(1.059463094, 14) 118 | 119 | //6 120 | 121 | #define C_6 440*pow(1.059463094, 15) 122 | #define Cc_6 440*pow(1.059463094, 16) 123 | #define D_6 440*pow(1.059463094, 17) 124 | #define Dd_6 440*pow(1.059463094, 18) 125 | #define E_6 440*pow(1.059463094, 19) 126 | #define F_6 440*pow(1.059463094, 20) 127 | #define Ff_6 440*pow(1.059463094, 21) 128 | #define G_6 440*pow(1.059463094, 22) 129 | #define Gg_6 440*pow(1.059463094, 23) 130 | #define A_6 440*pow(1.059463094, 24) 131 | #define Aa_6 440*pow(1.059463094, 25) 132 | #define B_6 440*pow(1.059463094, 26) 133 | 134 | //7 135 | 136 | 137 | #define C_7 440*pow(1.059463094, 27) 138 | #define Cc_7 440*pow(1.059463094, 28) 139 | #define D_7 440*pow(1.059463094, 29) 140 | #define Dd_7 440*pow(1.059463094, 30 141 | #define E_7 440*pow(1.059463094, 31) 142 | #define F_7 440*pow(1.059463094, 32) 143 | #define Ff_7 440*pow(1.059463094, 33 144 | #define G_7 440*pow(1.059463094, 34 145 | #define Gg_7 440*pow(1.059463094, 35 146 | #define A_7 440*pow(1.059463094, 36 147 | #define Aa_7 440*pow(1.059463094, 37 148 | #define B_7 440*pow(1.059463094, 38 149 | 150 | 151 | //8 152 | 153 | #define C_8 440*pow(1.059463094, 39) 154 | #define Cc_8 440*pow(1.059463094, 40) 155 | #define D_8 440*pow(1.059463094, 41) 156 | #define Dd_8 440*pow(1.059463094, 42) 157 | #define E_8 440*pow(1.059463094, 43) 158 | #define F_8 440*pow(1.059463094, 44) 159 | #define Ff_8 440*pow(1.059463094, 45) 160 | #define G_8 440*pow(1.059463094, 46) 161 | #define Gg_8 440*pow(1.059463094, 47) 162 | #define A_8 440*pow(1.059463094, 48) 163 | #define Aa_8 440*pow(1.059463094, 49) 164 | #define B_8 440*pow(1.059463094, 50) 165 | 166 | 167 | //9 168 | 169 | #define C_9 440*pow(1.059463094, 51) 170 | #define Cc_9 440*pow(1.059463094, 52) 171 | #define D_9 440*pow(1.059463094, 53) 172 | #define Dd_9 440*pow(1.059463094, 54) 173 | #define E_9 440*pow(1.059463094, 55) 174 | #define F_9 440*pow(1.059463094, 56 175 | #define Ff_9 440*pow(1.059463094, 57) 176 | #define G_9 440*pow(1.059463094, 58) 177 | -------------------------------------------------------------------------------- /pitches_subdivisions/pitches.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | //Equation: 12th root of 2 is c.a. 1.059463094, Pn is the desired frequency, Pa is the reference frequency, n-a is the note distance between the desired frequency 4 | // and the reference frequency. Pn = Pa*pow(1.059463094, n-a) 5 | 6 | // Sharp notes are written as "Nn", 7 | 8 | #define A_0 440*pow(1.059463094, (1-49)) 9 | #define Aa_0 440*pow(1.059463094, (2-49)) 10 | #define B_0 440*pow(1.059463094, (3-49) 11 | 12 | 13 | //1 14 | 15 | #define C_1 440*pow(1.059463094, 4-49) 16 | #define Cc_1 440*pow(1.059463094, 5-49) 17 | #define D_1 440*pow(1.059463094, 6-49) 18 | #define Dd_1 440*pow(1.059463094, 7-49) 19 | #define E_1 440*pow(1.059463094, 8-49) 20 | #define F_1 440*pow(1.059463094, 9-49) 21 | #define Ff_1 440*pow(1.059463094, 10-49) 22 | #define G_1 440*pow(1.059463094, 11-49) 23 | #define Gg_1 440*pow(1.059463094, 12-49) 24 | #define A_1 440*pow(1.059463094, 13-49) 25 | #define Aa_1 440*pow(1.059463094, 14-49) 26 | #define B_1 440*pow(1.059463094, 15-49) 27 | 28 | //2 29 | 30 | #define C_2 440*pow(1.059463094, 16-49) 31 | #define Cc_2 440*pow(1.059463094, 17-49) 32 | #define D_2 440*pow(1.059463094, 18-49) 33 | #define Dd_2 440*pow(1.059463094, 19-49) 34 | #define E_2 440*pow(1.059463094, 20-49) 35 | #define F_2 440*pow(1.059463094, 21-49) 36 | #define Ff_2 440*pow(1.059463094, 22-49) 37 | #define G_2 440*pow(1.059463094, 23-49) 38 | #define Gg_2 440*pow(1.059463094, 24-49) 39 | #define A_2 440*pow(1.059463094, 25-49) 40 | #define Aa_2 440*pow(1.059463094, 26-49) 41 | #define B_2 440*pow(1.059463094, 27-49) 42 | 43 | //3 44 | 45 | #define C_3 440*pow(1.059463094, 28-49) 46 | #define Cc_3 440*pow(1.059463094, 29-49) 47 | #define D_3 440*pow(1.059463094, 30-49) 48 | #define Dd_3 440*pow(1.059463094, 31-49) 49 | #define E_3 440*pow(1.059463094, 32-49) 50 | #define F_3 440*pow(1.059463094, 33-49) 51 | #define Ff_3 440*pow(1.059463094, 34-49) 52 | #define G_3 440*pow(1.059463094, 35-49) 53 | #define Gg_3 440*pow(1.059463094, 36-49) 54 | #define A_3 440*pow(1.059463094, 37-49) 55 | #define Aa_3 440*pow(1.059463094, 38-49) 56 | #define B_3 440*pow(1.059463094, 39-49) 57 | 58 | //4 59 | 60 | #define C_4 440*pow(1.059463094, 40-49) 61 | #define Cc_4 440*pow(1.059463094, 41-49) 62 | #define D_4 440*pow(1.059463094, 42-49) 63 | #define Dd_4 440*pow(1.059463094, 43-49) 64 | #define E_4 440*pow(1.059463094, 44-49) 65 | #define F_4 440*pow(1.059463094, 45-49) 66 | #define Ff_4 440*pow(1.059463094, 46-49) 67 | #define G_4 440*pow(1.059463094, 47-49) 68 | #define Gg_4 440*pow(1.059463094, 48-49) 69 | #define A_4 440*pow(1.059463094, 49-49) 70 | #define Aa_4 440*pow(1.059463094, 50-49) 71 | #define B_4 440*pow(1.059463094, 51-49) 72 | 73 | //5 74 | 75 | #define C_5 440*pow(1.059463094, 52-49) 76 | #define Cc_5 440*pow(1.059463094, 53-49) 77 | #define D_5 440*pow(1.059463094, 54-49) 78 | #define Dd_5 440*pow(1.059463094, 55-49) 79 | #define E_5 440*pow(1.059463094, 56-49) 80 | #define F_5 440*pow(1.059463094, 57-49) 81 | #define Ff_5 440*pow(1.059463094, 58-49) 82 | #define G_5 440*pow(1.059463094, 59-49) 83 | #define Gg_5 440*pow(1.059463094, 60-49) 84 | #define A_5 440*pow(1.059463094, 61-49) 85 | #define Aa_5 440*pow(1.059463094, 62-49) 86 | #define B_5 440*pow(1.059463094, 63-49) 87 | 88 | //6 89 | 90 | #define C_6 440*pow(1.059463094, 64-49) 91 | #define Cc_6 440*pow(1.059463094, 65-49) 92 | #define D_6 440*pow(1.059463094, 66-49) 93 | #define Dd_6 440*pow(1.059463094, 67-49) 94 | #define E_6 440*pow(1.059463094, 68-49) 95 | #define F_6 440*pow(1.059463094, 69-49) 96 | #define Ff_6 440*pow(1.059463094, 70-49) 97 | #define G_6 440*pow(1.059463094, 71-49) 98 | #define Gg_6 440*pow(1.059463094, 72-49) 99 | #define A_6 440*pow(1.059463094, 73-49) 100 | #define Aa_6 440*pow(1.059463094, 74-49) 101 | #define B_6 440*pow(1.059463094, 75-49) 102 | -------------------------------------------------------------------------------- /pitches_subdivisions/time.h: -------------------------------------------------------------------------------- 1 | float bpm = 60; 2 | 3 | #define whole 1/(bpm/60)*1000 4 | #define half whole/2 5 | #define third whole/3 6 | #define quarter whole/4 7 | #define sixth whole/6 8 | #define eighth whole/8 9 | #define twelfth whole/12 10 | #define sixteenth whole/16 11 | #define thirtys whole/32 12 | #define bar whole*4 13 | -------------------------------------------------------------------------------- /ultrasonar_theremin/pitches.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | // The pitch list starts at A2 with the reference A4 being 480 Hz instead of 440, because wikipedia. 10 | 11 | 12 | 13 | 14 | #define aI 120 // A, Tonic? unison? idunno just intonation is weird 15 | #define aII 120*16/15 //A#, Semitone 16 | #define aIII 120*10/9 // Minor tone 17 | #define aIV 120*9/8 //B, Major tone 18 | #define aV 120*6/5 //C, Minor third 19 | #define aVI 120*5/4 //C#, Major third 20 | #define aVII 120*4/3 //D, Perfect fourth 21 | #define aVIII 120*45/32 //Daug, Augmented fourth 22 | #define aIX 120*64/45 //Edim, Diminished fifth 23 | #define aX 120*3/2 //E, Perfect fifth 24 | #define aXI 120*8/5 //F, Minor sixth 25 | #define aXII 120*5/3 //F#, Major sixth 26 | #define aXIII 120*7/4 //HarmG, Harmonic minor seventh 27 | #define aXIV 120*16/9 //GraveG, Grave minor seventh 28 | #define aXV 120*9/5 //G, Minor seventh 29 | #define aXVI 120*15/8 //G#, Major seventh 30 | 31 | #define bI 240 //Octave 32 | #define bII 240*16/15 //Same as the previous octave, I can't be bothered to write it again. 33 | #define bIII 240*10/9 34 | #define bIV 240*9/8 35 | #define bV 240*6/5 36 | #define bVI 240*5/4 37 | #define bVII 240*4/3 38 | #define bVIII 240*45/32 39 | #define bIX 240*64/45 40 | #define bX 240*3/2 41 | #define bXI 240*8/5 42 | #define bXII 240*5/3 43 | #define bXIII 240*7/4 44 | #define bXIV 240*16/9 45 | #define bXV 240*9/5 46 | #define bXVI 240*15/8 47 | 48 | #define cI 480 49 | #define cII 480*16/15 50 | #define cIII 480*10/9 51 | #define cIV 480*9/8 52 | #define cV 480*6/5 53 | #define cVI 480*5/4 54 | #define cVII 480*4/3 55 | #define cVIII 480*45/32 56 | #define cIX 480*64/45 57 | #define cX 480*3/2 58 | #define cXI 480*8/5 59 | #define cXII 480*5/3 60 | #define cXIII 480*7/4 61 | #define cXIV 480*16/9 62 | #define cXV 480*9/5 63 | #define cXVI 480*15/8 64 | 65 | #define dI 960 66 | -------------------------------------------------------------------------------- /ultrasonar_theremin/ultrasonar_theremin.ino: -------------------------------------------------------------------------------- 1 | //Just Intonation Ultrasonar "theremin". The pitch library is quite extensive, but the default is A minor. 2 | //based on the VMA306 ultrasonic sensor and the distance measurement code found 3 | //here: https://alselectro.wordpress.com/2013/03/08/arduinoultrasonic-sensor-for-distance-measurement/ 4 | 5 | 6 | 7 | 8 | #define ECHOPIN 3 // Pin to receive echo pulse 9 | #define TRIGPIN 2 // Pin to send trigger pulse 10 | #include "pitches.h" 11 | 12 | void setup() 13 | { 14 | Serial.begin(9600); 15 | pinMode(ECHOPIN, INPUT); 16 | pinMode(TRIGPIN, OUTPUT); 17 | pinMode(10, OUTPUT); 18 | } 19 | 20 | void loop() 21 | { 22 | // Start Ranging -Generating a trigger of 10us burst 23 | digitalWrite(TRIGPIN, LOW); 24 | delayMicroseconds(2); 25 | digitalWrite(TRIGPIN, HIGH); 26 | delayMicroseconds(10); 27 | digitalWrite(TRIGPIN, LOW); 28 | 29 | // Distance Calculation 30 | 31 | 32 | float distance = pulseIn(ECHOPIN, HIGH); 33 | distance= distance/58; 34 | 35 | /* The speed of sound is 340 m/s or 29 us per cm.The Ultrasonic burst travels out & back.So to find the distance of object we divide by 58 */ 36 | 37 | Serial.print(distance); 38 | Serial.println(" cm"); 39 | 40 | 41 | 42 | 43 | if (distance < 5){ 44 | tone(10, bI); 45 | } 46 | if (distance < 10 && distance > 5){ 47 | tone(10, bIV); 48 | } 49 | 50 | 51 | if (distance < 15 && distance > 10){ 52 | tone(10, bV); 53 | } 54 | 55 | if (distance < 20 && distance > 15){ 56 | tone(10, bVII); 57 | } 58 | if (distance < 25 && distance > 20){ 59 | tone(10, bX); 60 | 61 | } 62 | if (distance < 30 && distance > 25){ 63 | tone(10, bXI); 64 | } 65 | 66 | if (distance < 35 && distance > 30 ){ 67 | tone(10, bXV); 68 | } 69 | 70 | if (distance < 40 && distance > 35){ 71 | tone(10, cI); 72 | } 73 | 74 | if (distance < 45 && distance > 40){ 75 | tone(10, cIV); 76 | } 77 | 78 | 79 | if (distance < 50 && distance > 45){ 80 | tone(10, cV); 81 | } 82 | 83 | if (distance < 55 && distance > 50){ 84 | tone(10, cVII); 85 | } 86 | if (distance < 60 && distance > 55){ 87 | tone(10, cX); 88 | 89 | } 90 | if (distance < 65 && distance > 60){ 91 | tone(10, cXI); 92 | } 93 | 94 | if (distance < 70 && distance > 65 ){ 95 | tone(10, cXV); 96 | } 97 | 98 | if (distance < 75 && distance > 70){ 99 | tone(10, dI); 100 | } 101 | 102 | 103 | 104 | 105 | if (distance > 75){ // Tells the arduino to stay at the most recent note played. You can also put either noTone() (to make it go silent without input) or tone(10, the note of your choosing), here. 106 | delay (10); 107 | } 108 | 109 | delay (100); // Can be adjusted to taste, but needs to be >= 50 ms. 110 | 111 | 112 | } 113 | 114 | 115 | 116 | 117 | --------------------------------------------------------------------------------