QC

Let's make music

Create and play musical scores using musical notations

Devices and components

Arduino Uno Rev3

Jumper wires (generic)

Resistance 100 ohms

Speaker: 0.25 W, 8 ohms

Half Size Seamless Breadboard

Software and tools

Arduino IDE

Project description

Let's make music in a few words

Abilities

The material

#define speaker

Let's make music

set_tempo(allegro)

set_tempo(144)

default_tempo

animato

play(note_C4,

minim)

play(note_FS2,

crot + quav)

rest(quav)

rest(0.5)

trill(note_C4, note_CS4, minim)

trill(note_F3, note_E3, crot)

#define

trills_per_crotchet

wait(5.5)

wait(minim)

// Happy_Birthday

set_tempo(default_tempo);

// bar 1

play(note_G3, quav);

play(note_G3, quav);

play(note_A3, crot);

play(note_G3, crot);

// bar 2

play(note_C4, crot);

play(note_B3, minim);

// bar 3

play(note_G3, quav);

play(note_G3, quav);

play(note_A3, crot);

play(note_G3, crot);

// bar 4

play(note_D4, crot);

play(note_C4, minim);

// bar 5

play(note_G3, quav);

play(note_G3, quav);

play(note_G4, crot);

play(note_E4, crot);

// bar 6

play(note_C4, crot);

play(note_B3, crot);

play(note_A3, crot);

// bar 7

play(note_F4, quav);

play(note_F4, quav);

play(note_E4, crot);

play(note_C4, crot);

// bar 8

play(note_D4, crot);

play(note_C4, minim);

the score tempo has been set to default_tempo (120 beats per minute)

default_tempo

the score was structured in measures. In this example, there are three beats per measure (3/4 beat). This is a useful approach when entering your own sheet music as it allows you to follow the music and easily spot incorrect notes and/or durations that you will no doubt enter by mistake!

notes are played one after the other (single channel design) by referencing the note values of the sketch's note definitions (see the $Crib Sheet $for an easily accessible list of these and other useful items)

each note is played for a specified duration/time using standard musical notation, e.g. crot (chet), minim, quav (er), etc. Again, use the $Crib Sheet$ for easy access.

crot

minim

quav

set_tempo(default_tempo * 2); // lively pace

// 3/4 time

// bar 1

play(note_C4, minim);

play(note_G3, crot);

// bar 2

play(note_G3, crot);

play(note_GS3, minim);

// bar 3

play(note_G3, minim);

rest(note_crot);

// bar 4

play(note_B3, minim);

play(note_C4, crot);

set_tempo(default_tempo); // reset tempo

we increase the tempo to twice the default - 240 beats per minute

we introduce a short silence in the middle of the piece at measure 3 worth a crot (chet)

rest

crot

we reset the default tempo at the end of the song.

//_Happy_trill_Birthday

set_tempo(default_tempo);

// 3/4 time

// bar 1

trill(note_G3, note_GS3, quav);

play(note_G3, quav);

play(note_A3, crot);

play(note_G3, crot);

// bar 2

play(note_C4, crot);

play(note_B3, minim);

// bar 3

trill(note_G3, note_GS3, quav);

play(note_note_G3, quav);

play(note_A3, crot);

play(note_G3, crot);

// bar 4

play(note_D4, crot);

play(note_C4, minim);

// bar 5

trill(note_G3,

play(note_G3, quav);

play(note_G4, crot);

play(note_E4, crot);

// bar 6

play(note_C4, crot);

play(note_B3, crot);

play(note_A3, crot);

// bar 7

trill(note_F4, note_FS4, quav);

play(note_F4, quav);

play(note_E4, crot);

play(note_C4, crot);

// bar 8

play(note_D4, crot);

play(note_C4, minim);

Some useful tips and techniques...

// crotchet triplet

play(note_A3, crot/3);

play(note_AS3, crot/3);

play(note_B3, crot/3);

note_AF3

play(note_AF3, crot + crot)

play(note_AF3, minim)

note_F4

play(note_F4, crot + quav)

rest

trill

play(note_D5, minim + crot + quav)

rest(crot + quav)

trill(note_G2, note_GS2, dot_minim + quav/2)

set_tempo

set_tempo(95)

maestroso

moderato

goto

false

true

...

bool repeated = false;

...

repeat_1:

play(note_B3, crot);

rest(quav);

play(note_C4, quav);

play(note_D4, crot+quav); // dotted crotchet

play(note_C4, quav);

...

If (repeated == false){

repeated = true;

play(note_A3, crot);

rest(crot);

play(note_C4, crot);

play(note_D4, crot);

goto repeat;

}

// continue with the rest of the score...

goto

Out of the box

wait(..)

wait(3)

middle_C

middle_C

twinkle_twinkle (little star)

twinkle_twinkle

silent_night

silent_night

jingle_bells

jingle_bells

Happy birthday

happy_birthday

ditty_1

ditty_1

door_bell_1

door_bell_1

door_bell_2

door_bell_2

ode_to_joy (Beethoven)

ode_to_joy

canon_in_D (Pachelbel)

canon_in_D

scarborough_fair

scarborough_fair

Finally

Further reading

$Use unlimited timers - a simple method to create any number of non-blocking timers in your sketches

Add a heartbeat to your sketches - include a visible way to see that your code is running on your microcontroller without any additional components or wiring!

$A Music & Lights Workbench$- designed to introduce the topic to computer programming beginners, using simple commands with cool effects. The approach is that of the tutor and the student

$A flexible and scalable library (ez_SIPO8_lib) $- supporting implementation of multiple serial input/output ICs, 74HC595, individually or in cascaded banks, up to 255 ICs (2040 output pins)

$A general switch library (ez_switch_lib) - suitable for most switch types and wiring schemes, incorporating new features

$Understanding and using button switches, the basics Button switches $, a simple but often delicate kit. The tutorial covers the ins and outs of implementing a simple button switch, with the flexibility to explore differences in circuit design, different reading methods, and debounce.

Interrupt-Driven Button Switches - An approach and example of linking a button switch to an external interrupt.

$Toggle Switches$ - how to reliably read a toggle switch.

$Button and Light Set$ - a little fun using button switches and LEDs.

External Interrupts - a generic framework supporting multiple simultaneous asynchronous interrupts. Configure multiple external interrupts with different characteristics and add code to provide post-interrupt asynchronous processing.

$REM_SYS, a programmatically scheduled reminder alert $- a programming framework for asynchronous elapsed and real-time timed alerts. Set any number of timer (reminder) alerts (below a second or in hours) and process them asynchronously.

Let's make a musical sketch

Everything you need to make music with Arduino and a simply connected speaker

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

Downloadable files

Arduino with 8 ohm 0.25 W speaker

Arduino with 8 ohm 0.25 W speaker

Arduino with 8 ohm 0.25 W speaker

Arduino with 8 ohm 0.25 W speaker




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