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.

SendData

Điều khiển trạng thái qua Firebase Trạng thái hiện tại: Đang tải... ĐỔI TRẠNG THÁI