Der musikalische Mikrocontroller
Um Töne zu erzeugen, Noten zu erstellen und sogar ganze Lieder zu komponieren, nutzen wir den wir einen Piezo-Summer. Noten lesen (können) musst du hier nicht, programmieren hingegen schon.
Piezo-Summer
Im Inneren des Piezos befindet sich eine Drahtspule (mittig im Bild), außen ist ein runder Magnet und im oberen Teil ist ein Metallgewicht auf einer dünnen Metallfolie angebracht. Wird eine Spannung an den Pins zu angelegt, beginnt das Gewicht durch die magnetische Induktion zu schwingen, wodurch Schallwellen (Töne) erzeugt werden.
Wir unterscheiden zwischen 2 verschiedenen Arten von Piezo-Summern
Der passive Sommer kann alle Töne innerhalb des Dynamikbereichs (>31Hz) erzeugen. Angesteuert wird er über den Befehl tone(), der ein Rechtecksignal erzeugt. Für unser Projekt verwenden wir den passiven Piezo.
Der aktive Summer kann nur einen Ton/eine Frequenz erzeugen. Angesteuert wird er (wie LEDs) über den Befehl digitalWrite(). Diesen wollen wir hier nicht weiter betrachten.
Der passive Piezo
Wir brauchen 3 Befehle: tone() + delay(), um den Ton zu erzeugen und noTone(), um den Ton zu beenden.
Anschluss
Der Piezo wird mit einem I/O-Pin (hier Pin 9) und dem GND am Arduino verbunden. Um die Lautstärke zu reduzieren, kann ein Widerstand verwendet werden, empfohlen werden 220Ω.
Aufgabe: Tonleiter
Wissenswert: Zusammenhang Frequenz & Note
1 Hz = 1 Schwingung pro Sekunde
Vergleicht man das Prinzip mit einer Gitarre, kann man sich die Funktionsweise gut vorstellen: Zupft man an der A-Seite der Gitarre, schwingt diese mit 440Hz, also 440 mal pro Sekunde.
Die Legende der doppelten Bezeichnung (Note H)
Für die Note existieren 2 verschiedene Bezeichnungen: H und B. Die zugeordnete Frequenz ist dieselbe – wieso also?
Die unterschiedliche Bezeichnung soll durch einen Abschreibfehler entstanden sein. Ein Mönch im Mittelalter schrieb viele Stücke mit einer nicht sehr leserlichen Schrift nieder. Durch das viele Abschreiben wurde des Öfteren aus der Note B die Note H. Im Laufe der Zeit habe sich die falsche Note in einigen Regionen ungewollt etabliert haben und das Phänomen der doppelten Notenbezeichnung ist entstanden.
Aufgabe
Jedem Ton ist eine bestimmte Frequenz zugeordnet. Frequenzen werden in Schwingungen pro Sekunde oder in Herz (HZ) angegeben. Programmiere die Tonleiter, nutze die Tabelle und den (passiven) Piezo.
Tipp: Fehlermeldung redefinition
Ein Problem bekommen wir mit den 2 unterschiedlichen C-Noten, denen 2 unterschiedliche Frequenzen zugeordnet sind.
Es handelt sich um 2 unterschiedliche Variablen, die also unterschiedlich benannt werden müssen. Hier können wir entweder die vollständige Notentabelle nutzen (siehe unten) und ändern die beiden C-Noten in C4 (Viergestrichenes C) und C5 (Fünfgestrichenes C) oder verwenden einen Groß- und einen Kleinbuchstaben.
Lösung
#define Piezo 9
// Tonleiter
#define C4 262
#define D4 294
#define E4 330
#define F4 349
#define G4 392
#define A4 440
#define H4 494
#define C5 523
void setup() {
tone(Piezo, C4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, D4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, E4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, F4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, G4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, A4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, H4); delay(200);
noTone(Piezo); delay(25);
tone(Piezo, C5); delay(200);
noTone(Piezo); delay(25);
}
void loop() {
}
Schnellauswahl: Lieder komponieren
Wir haben mehrere Titel für dich vorbereitet. Hier geht es nicht und Noten lesen, sondern ums Programmieren! Damit du die Lieder programmieren kannst, haben wir für dich die Noten den einzelnen Frequenzen zugeordnet und die Pausen mit Strichen die gekennzeichnet.
Die Tonnenhänge und Pausen werden bei jedem Lied individuell vorgegeben.
Alle Noten mit Frequenzen
C1
33 Hz
C#1
35 Hz
D1
37 Hz
D#1
39 Hz
E1
41 Hz
F1
44 Hz
F#1
46 Hz
G1
49 Hz
G#1
52 Hz
A1
55 Hz
A#1
58 Hz
H1
62 Hz
C2
65 Hz
C#2
69 Hz
D2
73 Hz
D#2
78 Hz
E2
82 Hz
F2
87 Hz
F#2
93 Hz
G2
98 Hz
G#2
104 Hz
A2
110 Hz
A#2
117 Hz
H2
123 Hz
C3
131 Hz
C#3
139 Hz
D3
147 Hz
D#3
156 Hz
E3
165 Hz
F3
175 Hz
F#3
185 Hz
G3
196 Hz
G#3
208 Hz
A3
220 Hz
A#3
233 Hz
H3
247 Hz
C4
262 Hz
C#4
277 Hz
D4
294 Hz
D#4
311 Hz
E4
330 Hz
F4
349 Hz
F#4
370 Hz
G4
392 Hz
G#4
315 Hz
A4
440 Hz
A#4
466 Hz
H4
494 Hz
C5
523 Hz
C#5
554 Hz
D5
587 Hz
D#5
622 Hz
E5
659 Hz
F5
698 Hz
F#5
740 Hz
G5
784 Hz
G#5
831 Hz
A5
880 Hz
A#5
932 Hz
H5
988 Hz
C6
1047 Hz
C#6
1109 Hz
D6
1175 Hz
D#6
1245 Hz
E6
1319 Hz
F6
1397 Hz
F#6
1480 Hz
G6
1568 Hz
G#6
1661 Hz
A6
1760 Hz
A#6
1865 Hz
H6
1976 Hz
C7
2093 Hz
C#7
2217 Hz
D7
2349 Hz
D#7
2489 Hz
E7
2637 Hz
F7
2794 Hz
F#7
2960 Hz
G7
3136 Hz
G#7
3322 Hz
A7
3520 Hz
A#7
3729 Hz
H7
3951 Hz
Little Lamb
Frequenzen zuordnen
Möchtest du die vollständige Notentabelle zur Zuordnung Note-Frequenz nutzen, verwende die Spalte mit C4-H4, diese entspricht den Tonleitern weiter oben.
Lösung: Noten zuweisen
Lösung: Lied komponieren
Alle meine Entchen
Mehrfache Noten
Stehen mehrere Noten direkt beieinander, beispielsweise GG oder GGG, wird die Tonlänge verdoppelt bzw. verdreifacht.
Lösung: Noten zuweisen
Lösung: Lied komponieren
Row Your Boat
Zahlen an Noten
C ist nicht gleich C, das haben wir schon bei der Tonleiter gelernt. Wir unterschreiben verschiedene C-Noten, beispielsweise C4 und C5. Diesen werden unterschiedliche Frequenzen zugeordnet, nutze hierzu die ausklappbare Liste unter dem grauen Kasten (oben bei Schnellauswahl).
Lösung: Noten zuweisen
Lösung: Lied komponieren
Happy Birthday in F-Dur
Die Raute #
Manche Noten sind mit einer Raute versehen, auf der Klaviertastatur sind das die schwarzen Tasten. Hier kannst du auch einfach die entsprechende Frequenz zuweisen.
Tipp: #define AS4 466
Achte darauf, dass du die Raute nicht im Namen der Variable verwendet, das führt nur zur Fehlermeldung (A#4 geht nicht)!
Lösung: Noten zuweisen
Lösung: Lied komponieren
Popcorn von Gershon Kingsley (1969)
Lösung: Noten zuweisen
Lösung: Lied komponieren
Die Jukebox-Erweiterung
Hinterlege all deine Melodien in einem Sketch. Wähle mit 2 Tastern aus, welches Stück gespielt werden soll und lass deine Auswahl auf einem LCD Display ausgeben.
Die Mischpult-Erweiterung
Variiere die Tonlänge und die Pausen, während die Melodie abgespielt wird. Hierzu verwenden wir ein Variablen Widerstand, das Potentiometer (oder kurz Poti).