Components and supplies
1
Arduino UNO
1
Resistor 100 ohm
1
Speaker: 0.25W, 8 ohms
2
Jumper wires (generic)
Apps and platforms
1
Arduino IDE
Project description
Code
Christmas Carols
cpp
1// 2// Ron D Bentley, Stafford, UK, September 2021 3// Modified: 4// Oct 2022 to remove compliler warning re redfinition 5// of macros for some macro locally defined notes, eg B0, B1, etc. 6// Local naming convention for notes now prefixed with "note_". 7// 8// Christmas Carols with Arduino - based on 'let's make music' Arduino sketch 9// by same author, see 10// https://create.arduino.cc/projecthub/ronbentley1/let-s-make-music-1620d7?ref=user&ref_id=1455180&offset=14 11// 12// Uses a simple circuit connecting an 8 ohm speaker on digital pin 11...that's all! 13// Merry Christmas!! 14// 15// This example and code is in the public domain and 16// may be used without restriction and without warranty. 17// 18// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 19// % Music/tone data and functions... % 20// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 22// 23// Tempos, by common musical names 24// 25#define grave 40 26#define largo 46 27#define lento 52 28#define adagio 56 29#define larghetto 60 30#define adagietto 66 31#define andante 72 32#define andantino 80 33#define maestroso 88 34#define moderato 100 35#define allegretto 104 36#define animato 120 37#define allegro 132 38#define allegro_assai 144 39#define vivace 160 40#define presto 184 41#define prestissimo 208 42 43// 44// Public constants - reflects the 'pitches.h' file, 45// but with a different (shortened) note naming convention. 46// The values are the frequencies (hz) of the notes. 47// 48#define note_B0 31 49#define note_C1 33 50#define note_CS1 35 51#define note_DF1 35 52#define note_D1 37 53#define note_DS1 39 54#define note_EF1 39 55#define note_E1 41 56#define note_F1 44 57#define note_FS1 46 58#define note_GF1 46 59#define note_G1 49 60#define note_GS1 52 61#define note_AF1 52 62#define note_A1 55 63#define note_AS1 58 64#define note_BF1 58 65#define note_b1 62 66#define note_C2 65 67#define note_CS2 69 68#define note_DF2 69 69#define note_D2 73 70#define note_DS2 78 71#define note_EF2 78 72#define note_E2 82 73#define note_F2 87 74#define note_FS2 93 75#define note_GF2 93 76#define note_G2 98 77#define note_GS2 104 78#define note_AF2 104 79#define note_A2 110 80#define note_as2 117 81#define note_BF2 117 82#define note_B2 123 83#define note_C3 131 84#define note_CS3 139 85#define note_DF3 139 86#define note_D3 147 87#define note_DS3 156 88#define note_EF3 156 89#define note_E3 165 90#define note_F3 175 91#define note_FS3 185 92#define note_GF3 185 93#define note_G3 196 94#define note_GS3 208 95#define note_AF3 208 96#define note_A3 220 97#define note_AS3 233 98#define note_BF3 233 99#define note_B3 247 100#define note_C4 262 // <--------- middle C 101#define note_CS4 277 102#define note_DF4 277 103#define note_D4 294 104#define note_DS4 311 105#define note_EF4 311 106#define note_E4 330 107#define note_F4 349 108#define note_FS4 370 109#define note_GF4 370 110#define note_G4 392 111#define note_GS4 415 112#define note_AF4 415 113#define note_A4 440 114#define note_AS4 466 115#define note_BF4 466 116#define note_B4 494 117#define note_C5 523 118#define note_CS5 554 119#define note_DF5 554 120#define note_D5 587 121#define note_DS5 622 122#define note_EF5 622 123#define note_E5 659 124#define note_F5 698 125#define note_FS5 740 126#define note_GF5 740 127#define note_G5 784 128#define note_GS5 831 129#define note_AF5 831 130#define note_A5 880 131#define note_AS5 932 132#define note_BF5 932 133#define note_B5 988 134#define note_C6 1047 135#define note_CS6 1109 136#define note_DF6 1109 137#define note_D6 1175 138#define note_DS6 1245 139#define note_EF6 1245 140#define note_E6 1319 141#define note_F6 1397 142#define note_FS6 1480 143#define note_GF6 1480 144#define note_G6 1568 145#define note_GS6 1661 146#define note_AF6 1661 147#define note_A6 1760 148#define note_AS6 1865 149#define note_BF6 1865 150#define note_B6 1976 151#define note_C7 2093 152#define note_CS7 2217 153#define note_DF7 2217 154#define note_D7 2349 155#define note_DS7 2489 156#define note_EF7 2489 157#define note_E7 2637 158#define note_F7 2794 159#define note_FS7 2960 160#define note_GF7 2960 161#define note_G7 3136 162#define note_GS7 3322 163#define note_AF7 3322 164#define note_A7 3520 165#define note_AS7 3729 166#define note_BF7 3729 167#define note_B7 3951 168#define note_C8 4186 169#define note_CS8 4435 170#define note_DF8 4435 171#define note_D8 4699 172#define note_DS8 4978 173#define note_EF8 4978 174 175#define speaker 11 // digital pin number for speaker/buzzer 176 177float default_tempo = float(animato); // default tempo - beats per minute 178float current_tempo = default_tempo; 179float timings[7]; // holds timings for each defined note/rest time value 180 181// 182// Standard note/rest duration definitions, set by the set_tempo function 183// 184#define semib timings[0] // semi briev - 4 beats 185#define dot_minim timings[1] // dotted mini - 3 beats 186#define minim timings[2] // minim - 2 beats 187#define crot timings[3] // crotchet - 1 beat 188#define quav timings[4] // quaver - 1/2 beat 189#define semiq timings[5] // semi quaver - 1/4 beat 190#define demi_semiq timings[6] // demi semi quaver - 1/8 beat 191 192// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 193// Carols data... 194// Setup play list data 195// 196 197#define num_carols 10 198 199// Forward references for music score functions 200// which are defined at end of the sketch to avoid clutter... 201void we_wish_you_a_merry_christmas(); 202void o_come_all_ye_faithful(); 203void away_in_a_manger(); 204void ding_dong_merrily(); 205void good_king_wenceslas(); 206void the_first_nowell(); 207void the_holly_and_the_ivy(); 208void we_three_kings(); 209void silent_night(); 210void jingle_bells(); 211 212// 213// Declare pointer array and preset with addresses 214// of each of the carol score functions. 215// Note that the oder of the presets is not important 216// as the play_list array is constantly randomised 217// by the shuffle_play_list function. 218 219void (*play_list[num_carols])() = { 220 we_wish_you_a_merry_christmas, 221 o_come_all_ye_faithful, 222 away_in_a_manger, 223 ding_dong_merrily, 224 good_king_wenceslas, 225 the_first_nowell, 226 the_holly_and_the_ivy, 227 we_three_kings, 228 silent_night, 229 jingle_bells 230}; 231// End of carols data 232// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 233 234// 235// Shuffle the play_list randomly 236// 237void shuffle_play_list() { 238 uint8_t swap_with; 239 void (* swap)(); // same data type as the play_list 240 // Keep changing the random seed for shuffling the play_list. 241 // If the reads of A0 and A5 yield 0 then we will have a prime 242 // number as the base for the random seeding 243 randomSeed(analogRead(A0) + analogRead(A5) + 1031); 244 for (uint8_t carol = 0; carol < num_carols; carol++) { 245 // play_list entry to be swapped out with that in entry '[carol]' 246 swap_with = random(num_carols); // 0 to (num_carols - 1) 247 swap = play_list[carol]; 248 play_list[carol] = play_list[swap_with]; 249 play_list[swap_with] = swap; 250 } 251} 252 253// 254// Function waits for the given time in seconds, or part thereof. 255// 256void wait(float duration) { 257 uint32_t start; 258 start = millis(); 259 duration = duration * 1000; // convert to milliseconds 260 do { 261 } while (millis() - start <= duration); 262} 263 264// 265// Set tempo by adjusting durations of note/rest timings 266// 267void set_tempo(float new_tempo) { 268 float crotchet_duration; 269 current_tempo = new_tempo; // keep current tempo up to date in case it needs to be queried 270 crotchet_duration = 60 / new_tempo; // timing in seconds for 1 beat 271 semib = crotchet_duration * 4; // semibrieve, 4 beats 272 dot_minim = crotchet_duration * 3; // dotted mimin, 3 beats 273 minim = crotchet_duration * 2; // minim, 2 beats 274 crot = crotchet_duration; // crotchet, 1 beat 275 quav = crotchet_duration / 2; // quaver, 1/2 beat 276 semiq = crotchet_duration / 4; // semiquaver, 1/4 beat 277 demi_semiq = crotchet_duration / 8; // demi-semi-quaver, 1/8 beat 278} 279 280// 281// Play given note for given duration in seconds, or part thereof. 282// Observe that this function is 'blocking', although the tone 283// function is 'non-blocking', ie control stays with the function 284// until note has completed. 285// 286void play(int note, float note_duration) { 287 tone(speaker, note, note_duration * 1000); // play the given note for the given duration 288 wait(note_duration); // wait for note to complete 289} 290 291// 292// Rest for given duration in seconds, or part thereof. 293// 294void rest(float rest_duration) { 295 noTone(speaker); // ensure no tone is currently playing 296 wait(rest_duration); // wait for given rest to complete 297} 298 299void setup() { 300 // Set up speaker 301 pinMode(speaker, OUTPUT); 302 // Set up note/rest timings, based on the default unit beat time (default_tempo) 303 set_tempo(default_tempo); 304 shuffle_play_list(); // start with a randomised play_list 305} 306 307void loop() { 308 do { 309 // Process the play_list by selecting each of its preset and randomsised 310 // elements, and execute each respective music score funcion. 311 for (uint8_t carol = 0; carol < num_carols; carol++) { 312 play_list[carol](); // execute this ([carol]) music score function 313 wait(3); // wait a short time between carols 314 } 315 shuffle_play_list(); // randomise the play_list for the next play_list pass 316 wait(3); // wait a short time before playing the new playlist 317 } while (true); 318} 319 320// 321// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 322// % Out-of-the-box 'shrink-wrapped' Christmas Carol music scores % 323// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 324// 325 326void we_wish_you_a_merry_christmas() { 327 set_tempo(default_tempo); 328 // 3/4time 329 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 330 // intro bar 331 play(note_D4, crot); 332 // bar 1 333 play(note_G4, crot); 334 play(note_G4, quav); 335 play(note_A4, quav); 336 play(note_G4, quav); 337 play(note_FS4, quav); 338 // bar 2 339 play(note_E4, crot); 340 play(note_E4, crot); 341 play(note_E4, crot); 342 // bar 3 343 play(note_A4, crot); 344 play(note_A4, quav); 345 play(note_B4, quav); 346 play(note_A4, quav); 347 play(note_G4, quav); 348 // bar 4 349 play(note_FS4, crot); 350 play(note_D4, crot); 351 play(note_D4, crot); 352 // bar 5 353 play(note_B4, crot); 354 play(note_B4, quav); 355 play(note_C5, quav); 356 play(note_B4, quav); 357 play(note_A4, quav); 358 // bar 6 359 play(note_G4, crot); 360 play(note_E4, crot); 361 play(note_D4, quav); 362 play(note_D4, quav); 363 // bar 7 364 play(note_E4, crot); 365 play(note_A4, crot); 366 play(note_FS4, crot); 367 // bar 8 368 play(note_G4, minim); 369 play(note_D4, crot); 370 // bar 9 371 play(note_G4, crot); 372 play(note_G4, crot); 373 play(note_G4, crot); 374 // bar 10 375 play(note_FS4, minim); 376 play(note_FS4, crot); 377 // bar 11 378 play(note_G4, crot); 379 play(note_FS4, crot); 380 play(note_E4, crot); 381 // bar 12 382 play(note_D4, minim); 383 play(note_A4, crot); 384 // bar 13 385 play(note_B4, crot); 386 play(note_A4, crot); 387 play(note_G4, crot); 388 // bar 14 389 play(note_D5, crot); 390 play(note_D4, crot); 391 play(note_D4, quav); 392 play(note_D4, quav); 393 // bar 15 394 play(note_E4, crot); 395 play(note_A4, crot); 396 play(note_FS4, crot); 397 // bar 16 398 play(note_G4, minim); 399 rest(crot); 400 } 401} 402 403void o_come_all_ye_faithful() { 404 set_tempo(default_tempo); 405 // 4/4 time 406 // intro bar 407 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 408 play(note_G4, crot); 409 // bar 1 410 play(note_G4, minim); 411 play(note_D4, crot); 412 play(note_G4, crot); 413 // bar 2 414 play(note_A4, minim); 415 play(note_D4, minim); 416 // bar 3 417 play(note_B4, crot); 418 play(note_A4, crot); 419 play(note_B4, crot); 420 play(note_C5, crot); 421 // bar 4 422 play(note_B4, minim); 423 play(note_A4, crot); 424 play(note_G4, crot); 425 // bar 5 426 play(note_G4, minim); 427 play(note_FS4, crot); 428 play(note_E4, crot); 429 // bar 6 430 play(note_FS4, crot); 431 play(note_G4, crot); 432 play(note_A4, crot); 433 play(note_B4, crot); 434 // bar 7 435 play(note_FS4, minim); 436 play(note_E4, crot + quav); 437 play(note_D4, quav); 438 // bar 8 439 play(note_D4, dot_minim); 440 rest(crot); 441 // bar 9 442 play(note_D5, minim); 443 play(note_C5, crot); 444 play(note_B4, crot); 445 // bar 10 446 play(note_C5, minim); 447 play(note_B4, minim); 448 // bar 11 449 play(note_A4, crot); 450 play(note_B4, crot); 451 play(note_G4, crot); 452 play(note_A4, crot); 453 // bar 12 454 play(note_FS4, crot + quav); 455 play(note_E4, quav); 456 play(note_D4, crot); 457 play(note_G4, crot); 458 // bar 13 459 play(note_G4, crot); 460 play(note_FS4, crot); 461 play(note_G4, crot); 462 play(note_A4, crot); 463 // bar 15 464 play(note_G4, minim); 465 play(note_D4, crot); 466 play(note_B4, crot); 467 // bar 16 468 play(note_B4, crot); 469 play(note_A4, crot); 470 play(note_B4, crot); 471 play(note_C5, crot); 472 // bar 17 473 play(note_B4, minim); 474 play(note_A4, crot); 475 play(note_B4, crot); 476 // bar 18 477 play(note_C5, crot); 478 play(note_B4, crot); 479 play(note_A4, crot); 480 play(note_G4, crot); 481 // bar 19 482 play(note_FS4, minim); 483 play(note_G4, crot); 484 play(note_C5, crot); 485 // bar 20 486 play(note_B4, minim); 487 play(note_A4, crot + quav); 488 play(note_G4, quav); 489 // bar 21 490 play(note_G4, dot_minim); 491 rest(crot); 492 } 493} 494 495void away_in_a_manger() { 496 set_tempo(moderato); 497 // 3/4 time 498 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 499 // intro bar 500 play(note_C4, crot); 501 // bar 1 502 play(note_F4, crot); 503 play(note_F4, crot); 504 play(note_G4, quav); 505 play(note_A4, quav); 506 // bar 2 507 play(note_F4, crot); 508 play(note_F4, crot); 509 play(note_A4, quav); 510 play(note_BF4, quav); 511 // bar 3 512 play(note_C5, crot); 513 play(note_C5, crot); 514 play(note_D5, crot); 515 // bar 4 516 play(note_BF4, minim); 517 play(note_G4, quav); 518 play(note_A4, quav); 519 // bar 5 520 play(note_BF4, crot); 521 play(note_BF4, crot); 522 play(note_C5, crot); 523 // bar 6 524 play(note_A4, crot); 525 play(note_A4, crot); 526 play(note_F4, quav); 527 play(note_A4, quav); 528 // bar 7 529 play(note_G4, crot); 530 play(note_D4, crot); 531 play(note_F4, crot); 532 // bar 8 533 play(note_E4, minim); 534 play(note_C4, crot); 535 // bar 9 536 play(note_F4, crot); 537 play(note_F4, crot); 538 play(note_G4, quav); 539 play(note_A4, quav); 540 // bar 10 541 play(note_F4, crot); 542 play(note_F4, crot); 543 play(note_A4, quav); 544 play(note_BF4, quav); 545 // bar 11 546 play(note_C5, crot); 547 play(note_C5, crot); 548 play(note_D5, crot); 549 // bar 12 550 play(note_BF4, minim); 551 play(note_G4, quav); 552 play(note_A4, quav); 553 // bar 13 554 play(note_BF4, crot); 555 play(note_BF4, crot); 556 play(note_C5, crot); 557 // bar 14 558 play(note_A4, crot); 559 play(note_A4, crot); 560 play(note_F4, quav); 561 play(note_A4, quav); 562 // bar 15 563 play(note_G4, crot); 564 play(note_D4, crot); 565 play(note_E4, crot); 566 // bar 16 567 play(note_F4, minim); 568 rest(crot); 569 } 570} 571 572void ding_dong_merrily() { 573 set_tempo(default_tempo); 574 // 4/4 time 575 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 576 // bar 1 577 play(note_G4, crot); 578 play(note_G4, crot); 579 play(note_A4, quav); 580 play(note_G4, quav); 581 play(note_FS4, quav); 582 play(note_E4, quav); 583 // bar 2 584 play(note_D4, minim); 585 rest(crot); 586 play(note_D4, crot); 587 // bar 3 588 play(note_E4, crot); 589 play(note_G4, crot); 590 play(note_G4, crot); 591 play(note_FS4, crot); 592 // bar 4 593 play(note_G4, minim); 594 play(note_G4, crot); 595 rest(crot); 596 // bar 5 597 play(note_G4, crot); 598 play(note_G4, crot); 599 play(note_A4, quav); 600 play(note_G4, quav); 601 play(note_FS4, quav); 602 play(note_E4, quav); 603 // bar 6 604 play(note_D4, minim); 605 rest(crot); 606 play(note_D4, crot); 607 // bar 7 608 play(note_E4, crot); 609 play(note_G4, crot); 610 play(note_G4, crot); 611 play(note_FS4, crot); 612 // bar 8 613 play(note_G4, minim); 614 play(note_G4, crot); 615 rest(crot); 616 // bar 9 617 play(note_D5, crot + quav); 618 play(note_C5, quav); 619 play(note_B4, quav); 620 play(note_C5, quav); 621 play(note_D5, quav); 622 play(note_B4, quav); 623 // bar 10 624 play(note_C5, crot + quav); 625 play(note_B4, quav); 626 play(note_A4, quav); 627 play(note_B4, quav); 628 play(note_C5, quav); 629 play(note_A4, quav); 630 // bar 11 631 play(note_B4, crot + quav); 632 play(note_A4, quav); 633 play(note_G4, quav); 634 play(note_A4, quav); 635 play(note_B4, quav); 636 play(note_G4, quav); 637 // bar 12 638 play(note_A4, crot + quav); 639 play(note_G4, quav); 640 play(note_FS4, quav); 641 play(note_G4, quav); 642 play(note_A4, quav); 643 play(note_FS4, quav); 644 // bar 13 645 play(note_G4, crot + quav); 646 play(note_FS4, quav); 647 play(note_E4, quav); 648 play(note_FS4, quav); 649 play(note_G4, quav); 650 play(note_E4, quav); 651 // bar 14 652 play(note_FS4, crot + quav); 653 play(note_E4, quav); 654 play(note_D4, crot); 655 play(note_D4, crot); 656 // bar 15 657 play(note_E4, crot); 658 play(note_G4, crot); 659 play(note_G4, crot); 660 play(note_FS4, crot); 661 // bar 16 662 play(note_G4, minim); 663 play(note_G4, crot); 664 rest(crot); 665 } 666} 667 668void good_king_wenceslas() { 669 set_tempo(vivace); 670 // 4/4 time 671 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 672 // intro bar 673 rest(minim); 674 // bar 1 675 play(note_G4, crot); 676 play(note_G4, crot); 677 play(note_G4, crot); 678 play(note_A4, crot); 679 // bar 2 680 play(note_G4, crot); 681 play(note_G4, crot); 682 play(note_D4, minim); 683 // bar 3 684 play(note_E4, crot); 685 play(note_D4, crot); 686 play(note_E4, crot); 687 play(note_FS4, crot); 688 // bar 4 689 play(note_G4, minim); 690 play(note_G4, minim); 691 // bar 5 692 play(note_G4, crot); 693 play(note_G4, crot); 694 play(note_G4, crot); 695 play(note_A4, crot); 696 // bar 6 697 play(note_G4, crot); 698 play(note_G4, crot); 699 play(note_D4, minim); 700 // bar 7 701 play(note_E4, crot); 702 play(note_D4, crot); 703 play(note_E4, crot); 704 play(note_FS4, crot); 705 // bar 8 706 play(note_G4, minim); 707 play(note_G4, minim); 708 // bar 9 709 play(note_D5, crot); 710 play(note_C5, crot); 711 play(note_B4, crot); 712 play(note_A4, crot); 713 // bar 10 714 play(note_B4, crot); 715 play(note_A4, crot); 716 play(note_G4, minim); 717 // bar 11 718 play(note_E4, crot); 719 play(note_D4, crot); 720 play(note_E4, crot); 721 play(note_FS4, crot); 722 // bar 12 723 play(note_G4, minim); 724 play(note_G4, minim); 725 // bar 13 726 play(note_D4, crot); 727 play(note_D4, crot); 728 play(note_E4, crot); 729 play(note_FS4, crot); 730 // bar 14 731 play(note_G4, crot); 732 play(note_G4, crot); 733 play(note_A4, minim); 734 // bar 15 735 play(note_D5, crot); 736 play(note_C5, crot); 737 play(note_B4, crot); 738 play(note_A4, crot); 739 // bar 16 740 play(note_G4, minim); 741 play(note_C5, minim); 742 // bar 17 743 play(note_G4, semib); 744 } 745} 746 747void the_first_nowell() { 748 set_tempo(default_tempo); 749 // 3/4 time 750 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 751 // intro bar 752 rest(minim); 753 play(note_FS4, quav); 754 play(note_E4, quav); 755 // bar 1 756 play(note_D4, crot + quav); 757 play(note_E4, quav); 758 play(note_FS4, quav); 759 play(note_G4, quav); 760 // bar 2 761 play(note_A4, minim); 762 play(note_B4, quav); 763 play(note_CS5, quav); 764 // bar 3 765 play(note_D5, crot); 766 play(note_CS5, crot); 767 play(note_B4, crot); 768 // bar 4 769 play(note_A4, minim); 770 play(note_B4, quav); 771 play(note_CS5, quav); 772 // bar 5 773 play(note_D5, crot); 774 play(note_CS5, crot); 775 play(note_B4, crot); 776 // bar 6 777 play(note_A4, crot); 778 play(note_B4, crot); 779 play(note_CS5, crot); 780 // bar 7 781 play(note_D5, crot); 782 play(note_A4, crot); 783 play(note_G4, crot); 784 // bar 8 785 play(note_FS4, minim); 786 play(note_FS4, quav); 787 play(note_E4, quav); 788 // bar 9 789 play(note_D4, crot + quav); 790 play(note_E4, quav); 791 play(note_FS4, quav); 792 play(note_G4, quav); 793 // bar 10 794 play(note_A4, minim); 795 play(note_B4, quav); 796 play(note_CS5, quav); 797 // bar 11 798 play(note_D5, crot); 799 play(note_CS5, crot); 800 play(note_B4, crot); 801 // bar 12 802 play(note_A4, minim); 803 play(note_B4, quav); 804 play(note_CS5, quav); 805 // bar 13 806 play(note_D5, crot); 807 play(note_CS5, crot); 808 play(note_B4, crot); 809 // bar 14 810 play(note_A4, crot); 811 play(note_B4, crot); 812 play(note_CS5, crot); 813 // bar 15 814 play(note_D5, crot); 815 play(note_A4, crot); 816 play(note_G4, crot); 817 // bar 16 818 play(note_FS4, minim); 819 play(note_FS4, quav); 820 play(note_E4, quav); 821 // bar 17 822 play(note_D4, crot + quav); 823 play(note_E4, quav); 824 play(note_FS4, quav); 825 play(note_G4, quav); 826 // bar 18 827 play(note_A4, minim); 828 play(note_D5, quav); 829 play(note_CS5, quav); 830 // bar 19 831 play(note_B4, minim); 832 play(note_B4, crot); 833 // bar 20 834 play(note_A4, dot_minim); 835 // bar 21 836 play(note_D5, crot); 837 play(note_CS5, crot); 838 play(note_B4, crot); 839 // bar 22 840 play(note_A4, crot); 841 play(note_B4, crot); 842 play(note_CS5, crot); 843 // bar 23 844 play(note_D5, crot); 845 play(note_A4, crot); 846 play(note_G4, crot); 847 // bar 24 848 play(note_FS4, dot_minim); 849 } 850 851 852} 853 854void the_holly_and_the_ivy() { 855 set_tempo(default_tempo); 856 // 3/4 time 857 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 858 // intro bar 859 rest(minim); 860 play(note_G4, crot); 861 // bar 1 862 play(note_G4, quav); 863 play(note_G4, quav); 864 play(note_G4, crot); 865 play(note_E5, crot); 866 // bar 2 867 play(note_D5, crot); 868 play(note_B4, crot + quav); 869 play(note_G4, quav); 870 // bar 3 871 play(note_G4, quav); 872 play(note_G4, quav); 873 play(note_G4, crot); 874 play(note_E5, crot); 875 // bar 4 876 play(note_D5, minim); 877 play(note_D5, quav); 878 play(note_C5, quav); 879 // bar 5 880 play(note_B4, quav); 881 play(note_A4, quav); 882 play(note_G4, crot); 883 play(note_B4, quav); 884 play(note_B4, quav); 885 // bar 6 886 play(note_E4, quav); 887 play(note_E4, quav); 888 play(note_D4, crot); 889 play(note_G4, quav); 890 play(note_A4, quav); 891 // bar 7 892 play(note_B4, quav); 893 play(note_C5, quav); 894 play(note_B4, crot); 895 play(note_A4, quav); 896 play(note_A4, quav); 897 // bar 8 898 play(note_G4, minim); 899 play(note_G4, quav); 900 play(note_G4, quav); 901 // bar 9 902 play(note_G4, quav); 903 play(note_G4, quav); 904 play(note_G4, crot); 905 play(note_E5, crot); 906 // bar 10 907 play(note_D5, crot); 908 play(note_B4, crot); 909 play(note_G4, quav); 910 play(note_G4, quav); 911 // bar 11 912 play(note_G4, quav); 913 play(note_G4, quav); 914 play(note_G4, crot); 915 play(note_E5, crot); 916 // bar 12 917 play(note_D5, minim); 918 play(note_D5, quav); 919 play(note_C5, quav); 920 // bar 13 921 play(note_B4, quav); 922 play(note_A4, quav); 923 play(note_G4, crot); 924 play(note_B4, crot); 925 // bar 14 926 play(note_E4, quav); 927 play(note_E4, quav); 928 play(note_D4, crot); 929 play(note_G4, quav); 930 play(note_A4, quav); 931 // bar 15 932 play(note_B4, quav); 933 play(note_C5, quav); 934 play(note_B4, crot); 935 play(note_A4, crot); 936 // bar 16 937 play(note_G4, minim); 938 rest(crot); 939 } 940} 941 942void we_three_kings() { 943 set_tempo(default_tempo); 944 // 3/8 time 945 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 946 // bar 1 947 play(note_B4, crot); 948 play(note_A4, quav); 949 // bar 2 950 play(note_G4, crot); 951 play(note_E4, quav); 952 // bar 3 953 play(note_FS4, quav); 954 play(note_G4, quav); 955 play(note_FS4, quav); 956 // bar 4 957 play(note_E4, crot + quav); 958 // bar 5 959 play(note_B4, crot); 960 play(note_A4, quav); 961 // bar 6 962 play(note_G4, crot); 963 play(note_E4, quav); 964 // bar 7 965 play(note_FS4, quav); 966 play(note_G4, quav); 967 play(note_FS4, quav); 968 // bar 8 969 play(note_E4, crot + quav); 970 // bar 9 971 play(note_G4, quav + quav); 972 play(note_G4, quav); 973 // bar 10 974 play(note_A4, crot); 975 play(note_A4, quav); 976 // bar 11 977 play(note_B4, crot); 978 play(note_B4, quav); 979 // bar 12 980 play(note_D5, quav); 981 play(note_C5, quav); 982 play(note_B4, quav); 983 // bar 13 984 play(note_A4, quav); 985 play(note_B4, quav); 986 play(note_A4, quav); 987 // bar 14 988 play(note_G4, crot); 989 play(note_FS4, quav); 990 // bar 15 991 play(note_E4, crot + quav); 992 // bar 16 993 play(note_FS4, crot + quav); 994 // bar 17 995 play(note_A4, crot + quav); 996 // bar 18 997 play(note_G4, crot); 998 play(note_G4, quav); 999 // bar 19 1000 play(note_G4, crot); 1001 play(note_D4, quav); 1002 // bar 20 1003 play(note_G4, crot); 1004 play(note_E4, quav); 1005 // bar 21 1006 play(note_G4, crot + quav); 1007 // bar 22 1008 play(note_G4, crot); 1009 play(note_G4, quav); 1010 // bar 23 1011 play(note_G4, crot); 1012 play(note_D4, quav); 1013 // bar 24 1014 play(note_G4, crot); 1015 play(note_E4, quav); 1016 // bar 25 1017 play(note_G4, crot + quav); 1018 // bar 26 1019 play(note_G4, crot); 1020 play(note_G4, quav); 1021 // bar 27 1022 play(note_A4, crot); 1023 play(note_B4, quav); 1024 // bar 28 1025 play(note_C5, crot); 1026 play(note_B4, quav); 1027 // bar 29 1028 play(note_A4, crot); 1029 play(note_B4, quav); 1030 // bar 30 1031 play(note_G4, crot); 1032 play(note_G4, quav); 1033 // bar 31 1034 play(note_G4, crot); 1035 play(note_D4, quav); 1036 // bar 32 1037 play(note_G4, crot); 1038 play(note_E4, quav); 1039 // bar 33 1040 play(note_G4, crot + quav); 1041 // bar 34 1042 rest(crot + quav); 1043 } 1044} 1045 1046void silent_night() { 1047 set_tempo(default_tempo); 1048 // 3/4 time 1049 // intro bar 1050 rest(crot); 1051 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 1052 // bar 1 1053 play(note_G4, crot + quav); 1054 play(note_A4, quav); 1055 play(note_G4, crot); 1056 // bar 2 1057 play(note_E4, dot_minim); 1058 // bar 3 1059 play(note_G4, crot + quav); 1060 play(note_A4, quav); 1061 play(note_G4, crot); 1062 // bar 4 1063 play(note_E4, dot_minim); 1064 // bar 5 1065 play(note_D5, minim); 1066 play(note_D5, crot); 1067 // bar 6 1068 play(note_B4, dot_minim); 1069 // bar 7 1070 play(note_C5, minim); 1071 play(note_C5, crot); 1072 // bar 8 1073 play(note_G4, dot_minim); 1074 // bars 9-12 and 13-16 are identical so repeat twice 1075 for (uint8_t pass = 1; pass <= 2; pass++) { 1076 // bar 9, bar 13 1077 play(note_A4, minim); 1078 play(note_A4, crot); 1079 // bar 10, bar 14 1080 play(note_C5, crot + quav); 1081 play(note_B4, quav); 1082 play(note_A4, crot); 1083 // bar 11, bar 15 1084 play(note_G4, crot + quav); 1085 play(note_A4, quav); 1086 play(note_G4, crot); 1087 // bar 12, bar 16 1088 play(note_E4, dot_minim); 1089 } 1090 // bar 17 1091 play(note_D5, minim); 1092 play(note_D5, crot); 1093 // bar 18 1094 play(note_F5, crot + quav); 1095 play(note_D5, quav); 1096 play(note_B4, crot); 1097 // bar 19 1098 play(note_C5, dot_minim); 1099 // bar 20 1100 play(note_E5, dot_minim); 1101 // bar 21 1102 play(note_C5, crot); 1103 play(note_G4, crot); 1104 play(note_E4, crot); 1105 // bar 22 1106 play(note_G4, crot + quav); 1107 play(note_F4, quav); 1108 play(note_D4, crot); 1109 // bars 23 & 24 1110 play(note_C4, dot_minim + dot_minim); 1111 } 1112} 1113 1114void jingle_bells() { 1115 set_tempo(default_tempo * 2); // very lively 1116 // 4/4 time 1117 // intro bar 1118 rest(minim); 1119 for (uint8_t repeat = 1; repeat <= 2; repeat++) { 1120 // bar 1 1121 play(note_B3, crot); 1122 play(note_B3, crot); 1123 play(note_B3, minim); 1124 // bar 2 1125 play(note_B3, crot); 1126 play(note_B3, crot); 1127 play(note_B3, minim); 1128 // bar 3 1129 play(note_B3, crot); 1130 play(note_D4, crot); 1131 play(note_G3, crot); 1132 play(note_A3, crot); 1133 // bar 4 1134 play(note_B3, semib); 1135 // bar 5 1136 play(note_C4, crot); 1137 play(note_C4, crot); 1138 play(note_C4, crot); 1139 play(note_C4, crot); 1140 // bar 6 1141 play(note_C4, crot); 1142 play(note_B3, crot); 1143 play(note_B3, crot); 1144 play(note_B3, crot); 1145 // bar 7 1146 play(note_B3, crot); 1147 play(note_A3, crot); 1148 play(note_A3, crot); 1149 play(note_B3, crot); 1150 // bar 8 1151 play(note_A3, minim); 1152 play(note_D4, minim); 1153 // bar 9 1154 play(note_B3, crot); 1155 play(note_B3, crot); 1156 play(note_B3, minim); 1157 // bar 10 1158 play(note_B3, crot); 1159 play(note_B3, crot); 1160 play(note_B3, minim); 1161 // bar 11 1162 play(note_B3, crot); 1163 play(note_D4, crot); 1164 play(note_G3, crot); 1165 play(note_A3, crot); 1166 // bar 12 1167 play(note_B3, semib); 1168 // bar 13 1169 play(note_C4, crot); 1170 play(note_C4, crot); 1171 play(note_C4, crot); 1172 play(note_C4, crot); 1173 // bar 14 1174 play(note_C4, crot); 1175 play(note_B3, crot); 1176 play(note_B3, crot); 1177 play(note_B3, crot); 1178 // bar 15 1179 play(note_D4, crot); 1180 play(note_D4, crot); 1181 play(note_C4, crot); 1182 play(note_A3, crot); 1183 // bar 16 1184 play(note_G3, semib); 1185 } 1186}
Downloadable files
Christmas Carols Wiring Schematic
arduino and speaker.jpg

Comments
Only logged in users can leave comments