#121 – Welcome to Kansas City

Kansas City? Da war ich ja noch nie… Generell habe ich mir bisher die Reise über den großen Teich erspart und kann dementsprechend wenig darüber berichten. Keine Angst – entgegen dem irreführenden Titel geht es heute nicht um einen Reisebericht über eine amerikanische Großstadt in Missouri, sondern vielmehr um „KCS“, den „Kansas City Standard“! 😉

Der Kansas City Standard ist ein digitales Datenformat für Audiokassetten, das mit einem einfachen Kassettenrekorder geschrieben und gelesen werden kann. Einfach gesagt werden die digitalen 0 und 1 in Töne umgewandelt, um diese auf Musikkassetten zu speichern! 🙂

Fun Fact: Der Standard entstand im November 1975 auf einem Symposium in Kansas City, daher der Name! 🙂

Ich denke viel mehr muss ich eigentlich nicht sagen, oder? Spätestens jetzt ist die Challenge des heutigen Artikels klar: Wir werden versuchen ein paar digitale Daten auf einer gewöhnlichen Musikkassette zu speichern („Data on Tape“). Ob uns das gelingt? 😉

Einige Hersteller (z.B. Acorn, Heathkit oder Triumph-Adler) haben den Kansas City Standard in ihren Computersystemen implementiert. Das alles bringt uns aber leider nichts, weil wir so einen alten Computer (samt Betriebssystem) nicht zur Verfügung haben. Stattdessen möchte ich auf ein (auch schon in die Jahre gekommenes) Tool namens „KCS“ zurückgreifen:

KCS bietet die Möglichkeit Daten in ein Audioformat umzuwandeln (und umgekehrt). Dabei wird eine „0“ durch vier vollständige Wellen einer 1200 Hz Sinus Kurve und eine „1“ durch acht vollständige Wellen mit 2400 Hz abgebildet. Leider ist die Software nicht mit 64-Bit-Betriebssystem kompatibel, da sie aus DOS-Zeiten stammt. Aus diesem Grund verwende ich DosBox für die Emulation! 🙂

Um nicht jedes Mal händisch beim Starten der DosBox die entsprechenden Verzeichnisse mounten zu müssen habe ich die dosbox.conf mit entsprechenden Autostart-Befehlen angepasst. So wird mit dem Start der Software automatisch das KCS-Programm geladen:

Und da läuft es auch schon. Darf ich vorstellen? KCS! Ach ja, eine gute alte Konsolenanwendung. Keine grafische Oberfläche oder ähnlicher Schnickschnack – sehr schön! 😉

Jetzt bräuchten wir eigentlich nur noch eine Datei, die wir mal testweise in ein Audiosignal umwandeln. Ich glaube ich hätte da was Geeignetes! 😉

Fun Fact: Um die Datenmenge möglichst gering zu halten, habe ich das Bild etwas verkleinert auf 500×500 Pixel bei 96dpi (JPG-Format). Somit belegt das Bild nur noch 69kB auf der Festplatte! 🙂

Über den etwas kryptischen Befehl „KCS –M –Y –U –L5 re_img.jpg re_img.wav“ lässt sich unser retrololo-Album-Cover in eine WAVE-Datei umwandeln. Das Programm bestätigt den erfolgreichen Konvertierungsvorgang mit einem recht kargen „done“! 😀

Fun Fact: Der Konvertierungsvorgang dauert insgesamt zwei Minuten und vierzig Sekunden. Nicht gerade schnell für ein paar Kilobyte, aber erklärbar, wenn man bedenkt, dass das Programm in einer emulierten (und was die Ressourcen angeht recht eingeschränkten) DOS-Umgebung läuft! 😉

Das Ergebnis ist eine knapp 14MB große WAV-Datei (Mono, 22050 Hz, PCM U8).

Fun Fact: Wusstet ihr, dass .WAV-Files um ein hundertfaches ihrer eigenen Größe komprimiert werden können? Ich habe z.B. die Datei mit „7zip“ auf 130kB schrumpfen können. Das hat zwar überhaupt nichts mit unserem Versuch zu tun, aber ich wollte es trotzdem erwähnen. Ein klassischer Fun Fact eben! 😉

Betrachtet man die Datei mit einem Audioeditor (ich verwende „Audacity“) stellt man fest, dass sie knapp 11 Minuten lang ist und eigentlich nur aus einem Rauschen, versetzt mit ein paar piepsigen/schrillen Tönen besteht.

Fun Fact: Am Anfang und am Ende der Datei befindet sich ein langer Piepton, welcher für die KCS-Software als Erkennungshilfe dient.

Jetzt müssen wir es eigentlich nur noch schaffen, die Audiodatei auf eine Kassette zu überspielen. Dafür brauchen wir zum einen eine (im Idealfall neue) Musikkassette…

…und zum anderen natürlich ein Laufwerk.

Fun Fact: Dem aufmerksamen Leser wird vielleicht das Tapedeck noch aus Artikel 85 bekannt sein! 😉

Als Ausgabegerät habe ich eine USB-Soundkarte mit Kopfhöreranschluss gewählt und diese mit dem Kassettenrekorder verbunden. Natürlich könnte man das auch über den normalen Kopfhörer-Ausgang machen, aber ich wollte die Aufnahme von den Windows-Systemsounds entkoppeln! 😉

Jetzt muss eigentlich nur noch die Aufnahme am Tapedeck gestartet…

…und die Datei über Audacity abgespielt werden:

Es macht Sinn, den Input-Level vorab zu prüfen und ggf. anzupassen. Es ist kein Problem, wenn die Aufnahme etwas zu laut ist und leicht übersteuert, solange die Anzeige nicht voll am Anschlag ist. Das Recording läuft…! 😉

Der Kansas City Standard arbeitet üblicherweise mit einer Datenrate von 300 Baud. Rechnet man das hoch, bedeutet das, dass auf einer Seite einer Kassette (45 Minuten) weniger als 100kB an Daten gesichert werden können – nicht gerade die Welt! 😀

In unserem Fall sind es aber ca. 300kB pro Seite. Woran das liegt? Ganz einfach – anstatt dem „normalen“ KCS verwenden wir CUTS (Computer Users Tape Standard), eine Weiterentwicklung des Standards, welcher mit 1.200 Baud arbeitet. Dabei wird eine „0“ durch eine halbe Welle einer 600 Hz Sinus Kurve und eine „1“ durch eine vollständige Welle mit 1200 Hz abgebildet. Der CUTS-Standard wird mit dem Kommandozeilenparameter „–U“ aktiviert.

Soweit so gut, jetzt müssen wir die Datei nur wieder irgendwie auf den PC bringen…

Also, erst mal die Kassette zurückspulen und den Stecker am Tapedeck von „Eingang“ auf „Ausgang“ umstöpseln. Ist das geschafft, müssen wir das Laufwerk mit einem Eingangskanal des PCs verbinden (z.B. Line-In oder Mikrofoneingang).

Anschließend müssen wir ein neues Projekt in Audacity anlegen, die entsprechende Eingangsquelle wählen und die Aufzeichnung starten. Ich sag nur „Press Play on Tape“!

Fun Fact: Ganz wichtig: Die „Project Rate“ muss exakt auf 22050Hz eingestellt werden, ansonsten kann KCS später nichts mit der Datei anfangen!

Noch ein Hinweis: Es ist sehr wichtig auf den Eingangslevel zu achten. Ich hatte das Tapedeck zuerst am Mikrofon-Eingang der USB-Soundkarte angeschlossen, aber da konnte ich das Signal nicht leise genug regeln, sodass es nicht völlig übersteuert. Letztendlich habe ich mich dann für den Line-In-Eingang meiner PC-Soundkarte entschieden um ein besseres Ergebnis zu bekommen:

Abschließend müssen wir noch die leeren Stellen am Anfang und Ende der Aufnahme entfernen.

Fun Fact: Was mich gleich etwas irritiert hat – die aufgenommene WAV-Datei ist nach Sicherung auf der Festplatte ca. 54MB groß. Das erscheint mir doch recht viel…

Jetzt kommt der spannende Moment: Ob KCS die Aufnahme erkennt und wieder dekodieren kann? Mit einem „KCS –Y –U record.wav record.jpg“-Befehl wollen wir es herausfinden…

Erschreckende 20 (!) Minuten später sieht das Ergebnis nicht gerade erfreulich aus. 651 Fehler – das klingt nicht gut! 😀 Auch die Datei ist mit 56,5kB deutlich kleiner als vorher und lässt sich nicht öffnen! 🙁 Was läuft falsch?

Ich habe noch etwas herumprobiert und die Datei mit Audacity mal in einem anderen Format (WAV signed 16-bit PCM) anstatt „32-bit float PCM“ abgespeichert. Schon ist die Datei nur noch halb so groß…

Neuer Versuch – ob es damit jetzt funktioniert? Nicht wirklich aber immerhin sind es ein paar Dekodierungsfehler weniger und die Datei hat mit 63kB auch „nur noch“ 6kB weniger als im Original, lässt sich aber leider trotzdem nicht öffnen…

Fun Fact: Bitte ignoriert den merkwürdigen „file-not-found“-Fehler am Anfang des Outputs. Ich hatte mal wieder vergessen, dass sich DOS mit mehr als achtstelligen Dateinamen schwer tut… 😀

Schon besser als beim ersten Versuch, aber immer noch nicht gut. Irgendetwas stimmt noch nicht, aber was? Tatsächlich habe ich noch einige weitere Anläufe gebraucht, bis ich auf die Lösung gekommen bin. Die Datei muss mit Audacity als „Unsigned 8-bit PCM“ WAV abgespeichert werden. Blöd nur, dass diese Auswahl in der Dropdown-Liste nicht möglich ist und man „Other uncompressed files“ auswählen muss – „IT“ ist kacke! 🙂

Ob es jetzt funktioniert? Tatsächlich kommen diesmal keine Dekodierungsfehler, aber trotzdem lässt sich das Bild nicht öffnen. Ernsthaft – was könnte jetzt noch das Problem sein?

Schlussendlich bin ich dann doch noch dahintergekommen. Die originale und die zurückgesicherte Datei unterscheiden sich in einem Byte! So nah am Ziel und nur exakt ein Byte davon entfernt – da könnte man verrückt werden! 🙁

Doch woran liegt das? Ein Lesefehler vom Band? Viel einfacher… 🙂 Erinnert ihr euch noch, wie wir die Datei „beschnitten“ haben? Dabei habe ich einen Fehler gemacht. Ich habe vorne und hinten jeweils ein paar wenige Millisekunden „Nichts“ drangelassen. Richtig wäre es gewesen die Datei (am Anfang und am Ende) vollständig zu beschneiden, sodass die Datei direkt mit dem „Piepton“ beginnt:

Tja, man lernt nie aus. So, aber jetzt sollte es doch hoffentlich endlich funktionieren oder?

Keine Fehler – und die Dateigröße sieht gut aus… Die Spannung steigt… Einen Trommelwirbel bitte!

Fun Fact: Diesmal hat es auch „nur“ zwei Minuten und 20 Sekunden gedauert um die Audiodatei wieder in das Datenformat zu konvertieren.

Tadaaaa!!! Es hat tatsächlich geklappt. Ich bin echt begeistert, dass das funktioniert! Schon verrückt – ich hätte erwartet, dass es Fehler gibt, weil die Daten ggf. nicht mehr sauber vom Band gelesen werden können, aber das hat alles einwandfrei funktioniert! Nur die blöde Software war mal wieder das Problem – typisch! 😛

Wenn man ehrlich ist, dann gibt es heutzutage keine sinnvollen Einsatzszenarien mehr für so eine verrückte Lösung. 300kB an Daten kann man selbst auf einer Diskette einfacher und schneller speichern (von Festplatten, USB-Sticks, Smartphones und Cloudspeicher mal ganz zu schweigen). Trotzdem könnte ich mir vorstellen, dass man z.B. sehr kleine aber dafür sicherheitskritische Daten (z.B. eine Passwort-Liste) prima auf so ein Band speichern könnte. Ein letzter Versuch… 😉

Fun Fact: So eine kleine TXT-Datei mit ein paar Passwörtern (110 Byte groß) belegt z.B. nur knapp eine Sekunde auf dem Band (wenn man die je 5 Sekunden für Anfang- und Enderkennung abzieht).

Schon cool und extrem unauffällig! Da kommt nie einer drauf, dass hier Passwörter versteckt sind! 😀

Puh, das wäre geschafft. Abschließend kann ich sagen, dass das ein Projekt mit vielen „Aha-Effekten“ war. Interessant und nervenaufreibend zugleich – so soll es sein! 😉

Bis die Tage!

Write a comment