Der musikalische Mikrocontroller

Projekt-Space
Beschreibung

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

Funktionsweise

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.

Das Bauteil

Wir unterscheiden zwischen 2 verschiedenen Arten von Piezo-Summern

Passiver Piezo

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.

Aktiver 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.

Um einzelne Töne sauber voneinander zu trennen, verwenden wir nach jeder Note den Befehl noTone(), gefolgt von einer kurzen Pause (empfohlen werden 25ms).

Den Befehl tone() gibt es nur 2 und 3 Argumente. Die Alternative Syntax zum Befehl tone(), mit den 3 Argumenten (Pin, Frequenz, Dauer) schauen wir uns später noch einmal genauer an.

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

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.

Hintergrund

Für die Note existieren 2 verschiedene Bezeichnungen: H und B. Die zugeordnete Frequenz ist dieselbe – wieso also?

Die Legende

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.

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.

Pins definieren

#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

Noten abspielen

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

Noten lesen

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.

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

Tonlänge: 200ms, Pausen: 200ms
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.

Jingle Bells

Tonlänge: 200ms, Pausen: 200ms

Alle meine Entchen

Tonlänge: 200ms, Pausen: 50ms
Mehrfache Noten

Stehen mehrere Noten direkt beieinander, beispielsweise GG oder GGG, wird die Tonlänge verdoppelt bzw. verdreifacht.

Row Your Boat

Tonlänge: 150ms, Pausen: 100ms
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).

Happy Birthday in F-Dur

Tonlänge: 125ms, Pausen: 250ms
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)!

Popcorn von Gershon Kingsley (1969)

Tonlänge: 190ms, Pausen: 190ms
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).

Newsletter
Mit dem Newsletter keinen Kurs verpassen und exklusive Rabatte sichern: