#34 – Floppy-Musik

Erinnert sich jemand noch an das PC-Teile-Paket, welches ich gekauft hatte um ein passendes Laufwerk für meinen Doctor V64 zu ergattern? Rein zufällig (ernsthaft – das war nicht geplant) waren darin auch vier Diskettenlaufwerke:

a

Aber was macht man nun mit den Laufwerken? Ich habe bereits mehr als genug funktionierende Laufwerke um einen sinnvollen Einsatz (z.B. in einem PC oder via USB) zu rechtfertigen. Heute möchte ich mal versuchen, die Diskettenlaufwerke als kleines Orchester einzusetzen – bitte was?! 😀

Fun Fact: Wer es noch nicht gemerkt hat – das ganze Projekt steht mal wieder unter dem ultimativen „Low-Budget“-Gedanken! 😉

b

Doch fangen wir einfach an. Zuerst brauchen die Diskettenlaufwerke (FDDs) Strom. Selbstverständlich möchte ich diese aber nicht in einen PC einbauen, darum habe ich mir von einem Kollegen ein PC-Netzteil ausgeliehen. Normalerweise funktionieren diese „PC-Netzteile“ nur dann, wenn sie auch von einem PC gesteuert werden, allerdings lassen sie sich mit einem kleinen Kniff auch austricksen. Hierfür müssen einfach zwei Pins miteinander verbunden werden:

c

Doch wie schließen wir die Laufwerke jetzt daran an? Es ist ein neueres Netzteil, welches keinen „Berg-Connector“ mehr besitzt. Da dieser jedoch für Diskettenlaufwerke verwendet wurde, brauchen wir einen Adapter. Ich habe auf eBay tatsächlich einen passenden Adapter gefunden, welcher das Signal sogar auf zwei Stecker aufteilt.

Fun Fact: Gut, dass das Netzteil noch zwei Molexstecker besitzt. Somit können wir mit zwei Adaptern vier Laufwerke anschließen.

d

Es wird Zeit für einen ersten Test, ob die Laufwerke überhaupt noch theoretisch funktionieren. Hierfür habe ich alle vier an das Netzteil angeschlossen, soweit so gut! 🙂

Fun Fact: Ob mich die Aufschrift „Defekt“ auf dem dritten Laufwerk irritieren sollte? Ich bin optimistisch! 😀

e

Hm, das Netzteil scheint Strom zu liefern, doch leider passiert nichts. Wir haben einen entscheidenden Schritt vergessen. Damit die Laufwerke angehen, muss Pin 12 des IDE-Steckers mit Ground (untere Stiftleiste) verbunden werden. Das kann man mit einem Kabel…

f

… oder noch besser/einfacher mit einem Jumper machen:

g

Und siehe da, schon leuchten die LEDs der Laufwerke auf!

h

Das ist ja alles schön und gut, aber was machen wir jetzt damit? So ohne PC bekommen die Laufwerke ja keine Signale. Für solche Bastelprojekte haben schlaue Leute die Arduino-Plattform erfunden. Arduino ist eine Open-Source-Plattform bestehend aus einer Platine mit Mikrokontroller und Ein- und Ausgabeports sowie der dazugehörigen Software. Mit Arduino können simple Bastelprojekte (z.B. Eingabesignale von Sensoren lesen und andere Geräte ansteuern) realisiert werden.

Fun Fact: Nicht verwechseln – ein Arduino ist kein Raspberry Pi Ersatz! Ein Raspberry Pi (links) ist eher als „Kleinstcomputer“ mit sämtlicher Peripherie (Netzwerk, USB- und HDMI-Port, …) und Betriebssystem auf SD-Karte zu sehen. Auf einem Arduino läuft nur ein einziges – zuvor in den Flashspeicher übertragenes – Programm.

Da auch die Hardware „Open Source“ ist, sind im Lauf der Zeit sehr viele – mit der Arduino-Plattform kompatible – Klone entstanden. Die kleinste Version des Arduinos ist der „Nano“. Für mein Projekt habe ich mir einen Klon dieses Modells für 3€ besorgt.

j

Mit dabei waren zwei Stiftleisten (Pins). Damit wir später die Laufwerke anschließen können, müssen wir ein paar Pins an die digitalen Ports des Arduinos anlöten.

Fun Fact: Da wir nur die digitalen Ports benötigen, habe ich aus Gründen der Effizienz (oder der Faulheit) nur eine Stiftleiste an den Nano angelötet. 😀

k

Im Idealfall hat man ein hierfür ein Steckbrett oder ähnliches, dann kann man die Pins ohne Probleme festlöten. Ich hatte das nicht, ich hoffe das entschuldigt – die zugegeben etwas unsaubere – Lötarbeit! 😉

l

Und wie schließen wir nun die Floppy-Laufwerke an den Arduino an? Eine Stiftleiste haben wir ja bereits verlötet, fehlen eigentlich nur noch passende Kabel. Selbstverständlich könnte man mit den typischen grauen Flachbandkabeln (häufig „IDE-Kabel“ genannt) arbeiten, allerdings müssen wir ja nur ein paar einzelne Pins verbinden, darum habe ich mich für Steckbrückenkabel entschieden.

Fun Fact: Diskettenlaufwerke verwenden nicht den 40-poligen „Standard-ATA-Anschluss“ (eigentlich ATA genannt) für Festplatten oder optische Laufwerke, sondern einen speziellen 34-poligen Stecker!

m

Hier sind die Kabel bereits aufgedröselt in ihrer vollen Farbpacht – das macht eine Zuordnung später einfacher.

n

Doch bevor wir nun die Laufwerke anschließen, sollten wir erst mal testen, ob unser kleiner Freund überhaupt funktioniert. Der Arduino wird mit einem Mini-USB-Kabel an den PCs angeschlossen. Auch wenn Windows sonst bei Treibern nicht so glänzt, wird der emulierte COM-Port (USB-To-Serial) direkt mit einem passenden Treiber versehen – löblich! 🙂

o

Anschließend müssen wir uns die Arduino-Software (Arduino SDK) herunterladen. Ein erster Startversuch glückt:

p

Bevor man richtig einsteigt, sollten dringend einige Grundeinstellungen wie z.B. der Boardtyp (Arduino Nano) sowie der Port, an welchen der Arduino angeschlossen ist (COM5) vorgenommen werden. Ganz wichtig ist beim Parameter Prozessor „ATmega328P (Old Bootloader)“ auszuwählen.

Fun Fact: Auch die Kollegen von Heise sind da wohl schon mal drüber gestolpert! 🙂

q

Nun können wir den Arduino zum ersten Mal testen. Hierfür werden einige Beispielskripte bereitgestellt. Ich habe mich für das Skript „Blink“ entschieden. Dieses ermöglicht es, die Status-LED des Arduinos in kurzen Abständen blinken zu lassen.

r

Der „Sketch“ (so heißen die auf C/C++ basierenden Programme beim Arduino) muss nur noch kompiliert und auf die Platine geladen werden.

s

Und siehe da, blinken kann er schon mal! 🙂

t

Nun können wir die Laufwerke mit dem Nano verbinden. Hierfür gibt es einige Tutorials (hier, hier oder hier)  im Internet. Pin 18 des Laufwerks muss mit Pin 3 des Arduinos verbunden werden. Pin 20 des Laufwerks wird an Pin 2 des Nanos angeschlossen. Zusätzlich muss ein Masse-Pin jedes Laufwerks mit dem Ground-Pin des Nanos verbunden werden. Dank der Steckbrückenkabel ist das kein Problem:

u

So sieht die Verkabelung mit vier Laufwerken dann aus – ganz schönes Chaos! 😀

v

Und wie kommen nun die Signale zum Nano? Damit unsere Laufwerke wirklich musizieren wird ein spezielles Programm benötigt. Es gibt wie immer mehrere Möglichkeiten, aber ich verwende hierfür eine Software namens „Moppy“. Moppy bietet die Möglichkeit „Musik“ (MIDI-Files) einzulesen und deren einzelne Kanäle auf die entsprechenden angeschlossenen Laufwerke aufzuteilen. Moppy besteht aus zwei Teilen (Arduino-Programm und GUI). Damit „Moppy“ funktioniert, müssen wir zuerst eine Bibliothek („TimerOne“) herunterladen und im Arduino SDK einbinden. Anschließend können wir das Arduino-Programm „Moppy“ auf unseren Nano hochladen.

w

Um jetzt MIDI-Dateien an den Arduino senden zu können, wird eine GUI namens „MoppyControlGUI“ benötigt. Da diese auf Java basiert, benötigen wir erst eine Java-Laufzeitumgebung. Da ich den ganzen „Java-Schrott“ (man verzeih‘ mir) nicht fest auf meinem Rechner installiert haben möchte, habe ich mich für die portable Version des Java JDK entschieden. Damit Moppy auch den „Pfad zum Java“ findet, müssen wir die JAVA_HOME-Variable in den Systemumgebungsvariablen setzen.

x

Nun können wir die GUI starten. Zuerst muss der COM-Port, an welchen der Arduino angeschlossen ist ausgewählt werden:

y

Prima, dass gleich drei Beispieldateien in der GUI dabei sind. Was könnte besser passen als das ikonische Tetris-Theme für einen ersten Test? 😉

z

Tatsächlich… Die Schrittmotoren der Laufwerke bewegen sich und erzeugen die entsprechenden Geräusche! Ich bin zwar ein Fan von Bildern, aber das lässt sich wirklich nicht in Bildern darstellen, darum gibt’s diesmal ein Video! 😉

Fun Fact: Grundsätzlich kann man jedes MIDI-File an den Nano senden, allerdings sind die Resultate oft ernüchternd. Es macht deutlich mehr Sinn, extra für „Diskettenlaufwerk“ optimierte Musikstücke zu verwenden. Hier haben Leute mit zu viel Zeit (:D) die einzelnen Kanäle so bearbeitet, dass das Musikstück möglichst authentisch abgespielt werden. So müssen bestimmte Oktaven und Tempi eingehalten werden, sonst kommen die Laufwerke nicht mit. Eine gute Anlaufstelle für MIDIs dieser Art ist z.B. Github.

In diesem Sinne – let’s rock! 😉

Write a comment