Sonntag, 26. Mai 2013

Musik - Schritt für Schritt (Teil 4): Erste Gehversuche mit Koffer



Das Encoder Board ist fertig, das SPI Board schon länger. Eine MIDI Anbindung ist vorhanden, ein Teilregister verkabelt. Zeit, die Teile zu verbinden und ein wenig zu programmieren.


Um das Ergebnis vorweg zu nehmen:



Die Funktion beschränkt sich auf den Sequenzablauf. Über die Encoder kann die Tonhöhe (Pitch) gesteuert werden. Velocity bleibt dabei konstant. 

GO-Taste (START/STOP):
Die Sequenz wird durch Druck auf den GO-Taster gestartet. Eine rote LED zeigt dann den jeweiligen Step an. Im Video scheint es, als leuchten 2-3 LEDs gleichzeitig. Dem ist real nicht so und liegt nur an der langen Öffnungszeit der Webcam.
Durch erneuten Druck auf GO wird die Sequenz nach Beendigung des aktuellen Steps gestoppt. Der nächste noch nicht ausgeführte Step wird dann durch eine grüne LED angezeigt. Die Status-LED neben dem GO-Taster zeigt durch Leuchten den STOP-Zustand an.

RESET-Taste:
Bei laufender Sequenz bewirkt ein Druck auf die RESET-Taste, dass nach dem Ende des aktuelle Steps die Sequenz unterbrochen wird und bei Step 1 wieder startet.



Zum Aufbau des Ganzen:

Ich habe alle Komponenten vorerst in einem kleinen Koffer (25 x 35 cm) untergebracht. Da die Komponenten noch locker zusammengesteckt sind, erspare ich mir so das Auf- und Abbauen, wenn ich den Code testen möchte.


Einfach den Koffer öffnen, MIDI Anschlüsse und USB-Anschluss mit dem Computer verbinden - fertig. Zum Auswerten und "Vertonen" der MIDI Kommandos verwende ich MIDI-OX.





Das SPI Board und Encoder Board sind noch nicht voll ausgelastet. Derzeit ist nur ein Teilregister (Encoder + LEDs) angeschlossen. Als Sequence Engine dient derzeit der Arduino Uno, hier mit dem MIDI Shield bestückt. Die Anschlüsse an die Sequence Engine laufen derzeit über ein Steckbrett, damit ich die Verkabelung bei Bedarf ändern kann. Auch die Sequence Control Taster  (START/STOP, STEP und RESET) und eine Status-LED sind auf dem Steckbrett untergebracht.



Rechts unten befindet sich noch ein Potentiometer zum Einstellen der Geschwindigkeit. Unten mittig - noch nicht integriert, aber schon mal getestet - ein Micro-SD Card Slot. Er wird später auf dem Configuration Board zu finden sein, dass auch das Display enthält. Mit diesem Board sollen u.a. Einstellungen gespeichert und geladen werden können.



Der geplante Systemaufbau:






Wie geht es weiter?

Die Pin-Belegung der Sequence Engine sieht im Moment so aus:



*328 ist die Pin-Belegung des ATmega328P-PU, die man berücksichtigen muss, wenn man das Arduino-Board durch "selbstgegossene" Hardware ersetzen möchte.

Zusätzlich ist das BPM-Poti am Pin A0 (23). Es wird später nicht mehr benötigt, da die Funktion vom Configuration Board geliefert wird.

Bei Verwendung des ATmega328P-PU ist nur eine serielle Schnittstelle vorhanden, die für MIDI genutzt werden kann. Evtl. ersetze ich ihn durch einen ATmega2560, der 4 Schnittstellen bietet. Eine davon könnte ich dann exklusiv für Software-Updates nutzen. 

Weitere Tests müssen noch zeigen, ob die Sequence Control Taster wie aktuell abgefragt werden, oder durch eine Interrupt-Schaltung angenehmer funktionieren. Der Nachteil der Tasterabfrage per Polling ist, dass der Taster so lange gedrückt bleiben muss, bis der aktuelle Step beendet ist. Bei schnellem Tempo kein Problem, bei langsamen Schrittfolgen etwas nervig, weil es öfter vorkommt, dass ich den Taster zu früh los lasse und der Tastendruck somit keine Wirkung hat.

[... wird fortgesetzt]