QC

Christmas carols on Arduino

A sketch that plays festive Christmas carols on Arduino using a simple speaker circuit.

Devices and components

Arduino Uno Rev3

Resistance 100 ohms

Speaker: 0.25 W, 8 ohms

Jumper wires (generic)

Software and tools

Arduino IDE

Project description

In a nutshell

We wish you a Merry Christmas

O Come all, faithful

Far away in a manger

Ding Dong happily (top)

Good King Wenceslas

The first Nowell

Holly and ivy

We, the three kings

Silent night

Jingle Bells

The material

#define speaker

The Sketch – Points to Note

play_list

// Forward references for music score functions

// which are defined at end of the sketch to avoid clutter...

void we_wish_you_a_merry_christmas();

void o_come_all_ye_faithful();

void away_in_a_manger();

void ding_dong_merrily();

void good_king_wenceslas();

void the_first_nowell();

void the_holly_and_the_ivy();

void we_three_kings();

void silent_night();

void jingle_bells();

//

// Declare pointer array and preset with addresses

// of each of the carol score functions.

// Note that the oder of the presets is not important

// as the play_list array is constantly randomised

// by the shuffle_play_list function.

void (*play_list[num_carols])() = {

we_wish_you_a_merry_christmas,

o_come_all_ye_faithful,

away_in_a_manger,

ding_dong_merrily,

good_king_wenceslas,

the_first_nowell,

the_holly_and_the_ivy,

we_three_kings,

silent_night,

jingle_bells

};

*

play_list

()

void loop() {

do {

// Process the play_list by selecting each of its preset and randomsised

// elements, and execute each respective music score funcion.

for (uint8_t carol = 0; carol < num_carols; carol++) {

play_list[carol](); // execute this ([carol]) music score function

wait(3); // wait a short time between carols

}

shuffle_play_list(); // randomise the play_list for the next play_list pass

wait(3); // wait a short time before playing the new playlist

} while (true);

}

()

Next steps?

Christmas Carols

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 Diagram

arduino and speaker.jpg




Note: Content and images are from: https://projecthub.arduino.cc/, with some modifications.
If you want it removed due to copyright reasons, please leave a comment. Thank you.
I want to share this article more widely so that everyone knows about Arduino and your project.

Easy remote control

Remotely control an LED with ease. Devices and components Arduino Nano 33 BLE with headers Box 525 Resistors precision 1% - 17 values Breadb...