Metronom

Ziel dieses Projektes ist es, dass dich die senseBox beim Musikmachen unterstützt und dir den Takt vorgibt, wie du es von einem klassichen Metronom kennst.

Aufbau

Für den Aufbau benötigst du lediglich den Piezo, der auf dem Breadboard der senseBox angeschlossen werden muss. Dazu verwendest du das JST-Adapterkabel, welches du an einem der digitalen Ports anschließt. Nun verbindest du den kürzeren Pin des Piezos (Minuspol) mit dem schwarzen Kabel (Ground GND) und den Pluspol mit dem grünen oder gelben Kabel (Ein-/ Ausgang). Die Nummer, die bei dem verwendeten Kabel auf der senseBox zu finden ist, solltest du für die anschließende Programmierung als Pin im Blick behalten.

/images/projects/Metronom/Aufbau.png - Logo

Programmierung

Schritt 1: Töne ausgeben

Unter der Kategorie ‘Audio’ findest du den Block ‘Spiele Ton’. Diesen benötigst du mehrmals in der Endlosschleife. Wie bei einem klassichen Metronom soll auch hier der erste Ton im Takt lauter bzw. höher sein, als die restlichen Töne. Daher kannst du für den ersten Ton beispielsweise 528 Hz (c’’) verwenden und für die restlichen Töne im Takt 264 Hz (c’). Je nachdem, welchen Takt du dir vorgeben lassen möchtest, brauchst du unterschiedlich viele ‘Spiele Ton’-Blöcke. Abgesehen vom ersten Ton im Takt, kannst du die anderen Töne in eine Schleife integrieren und die Anzahl an Wiederholungen angeben. Möchtest du beispielsweise einen 4/4-Takt produzieren, so brauchts du 3 Wiederholungen, bei einem 3/4-Takt nur 2 Wiederholugen, usw.

/images/projects/Metronom/Bild0.png - Logo

Schritt 2: Abstand zwischen den Tönen berechnen

Ein Metronom ist dafür bekannt, dass es eine vorgegebene Geschwindigkeit einhält. Diese ist meistens zu Beginn eines Stückes in Schlägen pro Minute (bpm) angegeben. Damit kannst du berechnen, wie groß der Abstand zwischen jedem neuen Schlag im Takt sein muss und diesen mithilfe des ‘Warte’-Blocks aus der Kategorie ‘Zeit’ in deine Programmierung integrieren. Dieser Block arbeitet mit der Einheit Millisekunden. Du solltest also wissen, dass 1000 Millisekunden umgerechnet eine Sekunde ergeben. Zudem muss beachtet werden, dass 60 Sekunden einer Minute entsprechen. Sind also beispielsweise 80 bpm vorgegeben, so rechnest du 60/80 = 0,75. Dies multiplizierst du dann mit 1000, um die richtige Einheit (ms) zu erhalten.

Die Wartezeit x wird mit folgender Formel berechnet: (bpm/60)*1000 = x

/images/projects/Metronom/Bild1.png - Logo

Schritt 3: Töne voneinander trennen

Da die Töne nicht ineinander übergehen, sondern durch eine kurze Pause in der Länge der zuvor berechneten Wartezeit voneinader getrennt werden sollen, muss der Ton wieder ausgeschaltet werden. Dies machst du mit dem passenden Block aus der Kategorie ‘Audio’. Würdest du den Block allerdings ohne Wartezeit direkt hinter den ‘Spiele Ton’-Block einfügen, so würde kein Ton zustande kommen. Es muss also zuerst der Ton für ein bestimmtes Zeitintervall ausgegeben werden, dann gestoppt und anschließend gewartet werden, bis der neue Schlag in Form eines Tons gespielt wird. Die Zeit für diesen Vorgang sollte jedoch die zuvor berechnete Wartezeit x nicht überschreiten, da das Metronom sonst zu langsam wäre. Du teilst die Zeit x also auf, indem du beispielsweise ein Drittel der Zeit verwendest, um den Ton abzuspielen und zwei Drittel der Zeit, um auf den nächsten Schlag zu warten.

/images/projects/Metronom/Bild2.png - Logo

Gesamter Code

Den gesamten Blockly-Sketch findest du hier.

Diese Lösung stellt nun ein Metronom für einen 4/4-Takt mit 80 Schlägen pro Minute dar. Du kannst dies aber in der Schnelligkeit beliebig variieren, indem du die Wartezeit neu berechnest. Einen anderen Takt gibst du vor, indem du die Wiederholgen in der Schleife änderst.