Computerspiel Worm

Es gibt – wie fast immer – einen Hauptgrund und Motivator sich mit Computern auseinander zu setzen: Spiele! Das war bei mir nicht anders. Bei mir hat es ja in den späten 1980er Jahren auf dem DDR-Kleincomputer KC85/4 von Robotron angefangen, seit es dann ab dem Jahr 1991 bis heute ohne Unterbrechung die x86 PC-Plattform ist.

Worm
Worm – früher Spielverlauf

Über das c’t Sonderheft Retro des Heise-Verlags bin ich über das Thema CP/M auf das Computerspiel Worm aufmerksam geworden. Dank des großen Angebots an CP/M-Versionen, der dazu passenden Software im Internet und dem SIMH, der auch den Altair 8800 mit Zilog Z80 Prozessor emulieren kann, ist die Einstiegshürde gering.

Worm
Worm – Der kopf jagt seinem Körperende hinterher

Worm ist eine frühe Umsetzung des später auf den Nokia-Mobiltelefonen sehr beliebten Snake gewesen. Das gute an dieser frühen Implementation von Worm ist, dass im Spielablauf nur dann etwas passiert, wenn man eine Taste zur Bewegung des Wurmes drückt. Das entschleunigt den Bewegungsablauf auf eine beliebige Langsamkeit. Dies gibt im Umkehrschluss für den Spieler die Möglichkeit langsam, behutsam und mit System den Bewegungsverlauf der Spielfigur zu Steuern und letztendlich das Spiel vollständig zu lösen. Noch nie ist es mir gelungen, in der Lage zu sein ein Spiel überhaupt – und zudem in der Schnelligkeit von zwei bis drei Tagen und ein paar Anläufen zu lösen.

Worm
Worm – Letztes Segment mit neuer Zahl besetzt
Worm
Worm – Gelöstes Spiel

Die erste Version von Worm ist im Jahr 1978 von dem US-Amerikaner Peter Trefonas programmiert worden. Es ist damit für mich das älteste von mir gespielte Computerspiel.

Links:

MP3-Dateien aus der Tonspur einer DVD erzeugen

Meine DVD-Sammlung besteht fast nur aus Musik-DVDs. Von einigen der darauf enthaltenen Konzerte und Musik-Video-Clips, mochte ich dann immer auch eine Audioversion im MP3-Dateiformat bei einzelnen Lieder, beziehungsweise bei Konzerten eine AAC-codierte m4a-Datei mit Kapitelmarken. – Wobei man sagen muss, dass das MP3-Format selber auch Kapitelmarken unterstützt, nur gibt es bloß eine handvoll Software-Player die Kapitelmarken überhaupt unterstützen, bei den Hardware-Player ist mir selber sogar überhaupt keiner bekannt. Grund ist wahrscheinlich, dass die Funktion der Kapitel erst in einer Weiterentwicklung des MP3-Formats implementiert wurde, wo es sich bereits so weit etabliert hatte, dass es auch keine Rolle mehr gespielt hatte. Auch die Funktionalität der Kapitelmarken in AAC-codierten m4a-Dateien hat in der Music-App auf Apples iOS mal mehr oder weniger zuverlässig funktioniert.

Mein Workflow für die Extraktion von dem Audio auf der DVD sah seit dem Jahr 2003 so aus, dass ich am Computer die DVD mit einem Software-Player abgespielt habe und für den Vorgang ein Wave-Editor das Signal aus dem Audio-Mixer des Betriebssystems aufnahm. Dieses Verfahren war sehr störungsanfällig, da ich sicherstellen musste, dass kein anderes Programm mit Klangwiedergaben in die Aufnahme reingrätschen durfte. Passierte dies, so war die Aufnahme hin und musste neu begonnen werden, und selbst wenn es bei dem ersten Versuch geklappt hatte, so war dies Verfahren dennoch auch zeitaufwendig, denn die Audio-Spur auf der DVD musste ja mindesten einmal in der gesamten Länge abgespielt werden. Danach ging es an das Zurchtstutzen der Enden durch Schneiden, die Anpassung des Signalpegels und dem re-Encoding in die MP3-Datei.
Für die AAC-codierten m4a-Dateien mit den Kapitelmarken musste ich die Aufnahme erst als Wave-Datei speichern, welche ich dann unter GarageBand in ein neues Podcast-Projakt importiert habe. Nur die Podcast-Funktion von Apples GarageBand ist in der Lage die gewünschten Kapitelmarken zu setzen. Und klar: die fertigen Aufnahmen mit allen Kapitelmarken dürfen dann nur als m4a-Datei mit AAC exportiert werden, wenn diese beibehalten werden sollen. Auch GarageBand ist nicht in der Lage MP3s mit Kapitelmarken zu erstellen.
Wenn ich ehrlich bin, so habe ich das Gefühl, dass gerade durch den Schritt des analogen Aufzeichnens meine Aufnahmen bisher schon qualitativ bereits gelitten haben.

Da mir vor ein paar Tagen nach langer Zeit mal wieder eine Konzert-DVD in der Stadtbibliothek in die Hände gefallen ist, von der ich mir einen Großteil der Songs als MP3-Dateien nochmals als eine Art Best-of zusammenstellen möchte, ist das Thema „Extrahieren der Audio-Spur von DVD“ mir wieder in den Fokus gerückt.

Soll direkt aus der Audio-Spur der DVD eine MP3-Datei erstellt werden, ohne dass eine Audio-Bearbeitung vorher stattfindet, ist der für mich beste Workaround nun folgender.:

  • Das ISO-Image der DVD mit HandBrake einlesen.
  • Ein Encoding-Preset wählen, was am Ende eine schlecht mögliches Ergebnis im Video-Encoding ergibt. Der Schnelligkeit halber, denn der Video-Stream wird sowieso dann wieder weggeworfen.
  • Bei den Audio-Einstellungen MP3 als Codec wählen und die gewünschte Bitrate wählen. Für Musik 192 zum Beispiel.
  • Dann kann das Encoding gestartet werden.

Für das eigentliche Extrahieren der Audio-Spur, die ja bereits im gewünschten MP3-Format im MP4-Container enthalten ist, kommt nun das wirklich unschlagbar gute Kommandozeilenprogramm ffmpeg zum Einsatz.

ffmpeg -i Sample.m4a -vn -acodec copy Sample.mp3

Am Ende noch vielleicht Dateinamen anpassen und die id3-Tags bearbeiten. – Fertig!

Soll die Audio-Spur vor dem finalen Encoding als MP3 oder als AAC-m4a-Datei noch bearbeitet werden, so muss die Audio-Spur erst einmal unkomprimiert von der DVD extrahiert werden. Wer wie ich am liebsten das MP4-Containerformat mit der Videodateiendung .m4v verwendet, so muss dieses erst einmal in HandBrake als Zielformat in ‚mkv Datei‘ geändert werden. Grund ist, dass es über HandBrake nur mit mkv-Dateien möglich ist, die Audiospur der DVD mit dem Quell-offenen Audiokompressions-Codec FLAC verlustfrei zu Encodieren. Unter den Audioeinstellungen kann als Codec noch zwischen ‚FLAC 16-Bit‘ und ‚FLAC 24-Bit‘ gewählt werden. Danach das Encoding wieder starten.

Für das Extrahieren der FLAC-Datei kommt nun wieder ffmpeg zum Einsatz.:

ffmpeg -i Sample.mkv -acodec flac Sample.flac

Die erzeugte FLAC-Datei mit der verlustfreien Audiospur kann dann mit dem Audioeditor Audacity geöffnet und bearbeitet werden.

Für mich stellt sich weiterhin das Problem mit den Kapitelmarken. Da GarageBand leider nur den Import von MP3- und Wave-Dateien unterstützt, muss ich das bearbeitete Audio mit Audacity erst als Wave-Datei exportieren. Dann die Wave-Datei wie bereits früher gehandhabt, in GarageBand in ein neues Podcast-Projekt importieren, setzen der Kapitelmarke und das Projekt als AAC exportieren, damit die Marken funktionieren.

Es sei noch angemerkt, dass HandBrake auch in der Lage ist, den Signalpegel der Audiospur mittels Gain anzuheben. Davon möchte ich aber abraten, da dies vermutlich am Ende zu einem permanenten Try-and-Error Spiel führt, bis der Pegel in einem sinnvollen Volumen erhöht ist. Ich zum Beispiel könnte nie vorhersagen, welche akustische Dynamik eine Tonspur hat, und sehr schnell sind bei der unvorsichtigen Handhabung des Reglers, Stellen innerhalb der Tonspur – wenn nicht sogar über die gesamte Länge – übersteuert. Deswegen möchte ich immer die Benutzung eines Audio-Wave-Editors für die Bearbeitung einer Tonspur empfehlen. Audacity ist seit Version 2.3 in der Lage die Übersteuerten Stellen einer Tonspur mit einer roten Markierung nun kenntlich zu machen.

Bei meiner aktuellen DVD aus der Stadtbibliothek handelt es sich um eine Konzertaufnahme der Rolling Stones aus dem Jahr 1998 anlässlich ihrer ‚Bridges To Babylon‘-Tour. Das Konzert – unter dem Titel „Bridges To Bremen“ – fand am 02. September 1998 im Bremer Weserstadion statt und wurde von den TV-Stationen in ganz Europa und Teilen Afrikas im Fernsehen live übertragen. Das ist einmal an Bildformat 4:3 und -qualität – und vor allem an dem Audio zu hören. Da dieses Konzert wahrscheinlich nicht für eine offizielle Vermarktung als Tonträger durch das Label aufgenommen wurde, wo es eigentlich immer noch eine Post-Produktion mit dem Mastering gibt, sondern nur direkt versendet wurde, haben die Tontechniker das Signal fleißig durch einige Kompressoren geschickt. Außerdem befinden sich so ziemlich in allen Titeln übersteuerte Stellen.

Leider hatte Apple im Jahr 2013 die Podcast-Funktion mit Erscheinen von GarageBand in Version 10 wieder entfernt und damit mir die Möglichkeit von Kapitelmarken in AAC-encodierten m4a-Dateien genommen.

Links:

Individuelles ISO-Image unter macOS erstellen

Im Zuge meines Vorhabens dass ich mir nach langer Zeit wieder ein MS-DOS virtualisiert habe, stand ich auch wieder vor dem Problem ein individuelles ISO-CD-Image mit Computerdateien unter macOS zu erstellen. Im graphischen Programm ‚Disk Utility‘ (dt.: Festplattendienstprogramm) ist dies leider nicht direkt möglich. Allerdings muss im ‚Disk Utility‘ über das Menü ‚File‚ -> ‚New Image‚ -> ‚Blank Image …‚ ein leeres Image erstellt werden. Dabei ist darauf zu achten, dass im Dialogfenster unter ‚Partitions‘ ‚CD/DVD‘ und bei ‚Image Format‘ ‚DVD/CD-Master‘ als Optionen ausgewählt sind.

Somit ist erst einmal ein Image mit der Dateierweiterung .cdr erstellt, das mit Dateien gefüllt werden kann. Um daraus nun ein CD-ROM-konformes ISO-Image zu erstellen, ist das Kommandozeilenprogramm hdiutil nötig.

Der Befehl lautet:

hdiutil makehybrid -iso -o CD-ROM.ISO CD-ROM.cdr

Bei der Benennung der Output-Datei ist es aber nicht nötig .ISO als Dateierweiterung an zu hängen, da hdiutil dies automatisch tut.

Links:
Einrichten eines virtualisierten MS-DOS Systems (eigener Blogartikel)
ISO 9660 (dt. Wikipedia)

Einrichten eines virtualisierten MS-DOS Systems

Erst einmal eine Sache vorweg: Auch wenn ich bei der Lösungserstellung VMWare Fusion für Mac als Desktop-Virtualisierung verwendet habe, wird diese aber auch mit VMWare Desktop für Linux oder Windows, den Virtualisierungslösungen Parallels Desktop oder Oracle VirtualBox, und sogar mit diversen x86-Emulatoren funktionieren.

Der Hintergrund warum ich diesen Artikel erstellt habe ist, dass ich mich vor einigen Tagen in ein Gespräch mit zwei mir mehr und weniger bekannten Personen dazu gesellt habe, wo es um eine Software zur Erstellung von Partituren im MIDI-Format ging. Ich berichtete, dass ich im Alter von 15 bis 17 Jahre selber eine Windows-Software besaß, mit der es möglich war in Form einer Partitur MIDI-Songs zu erstellen, um die musikalischen Partner für das Üben zu ersetzen. Die Software die ich damals einsetzte – und auch heute auf Diskette noch habe, heißt „MIDI Recording Session“. Auch wenn es sich bei dieser um ein 16-bittige Windows 3.x Anwendung handelt, so konnte ich sie dennoch ohne Probleme in einer bestehenden virtuellen Maschine mit Windows XP starten und benutzen. Allerdings kam mir bereits bei dem ersten Gedanken das Programm nach so langer Zeit mal wieder zu Starten auch die Idee, nach recht langer Zeit ein MS-DOS mit Windows 3.11 mal wieder zu virtualisieren.
So habe ich meine Disketten-Images aus dem Schrank geholt und das Microsoft DOS 6.2 in eine virtuelle Maschine installiert. Um das Windows for Workgroups in der Version 3.11, sowie das Microsoft Works für Windows Version 2 von CD-ROM in die DOS-VM installieren zu können, bedarf es allerdings auch noch einen Treiber um überhaupt auf das optische Laufwerk zugreifen zu können.

Bei meiner Recherche nach einem adäquaten DOS-Treiber für das virtualisierte MS-DOS bin ich auf das Technology Blog von Werner Ziegelwanger gestoßen. Dieser hatte es sich zu seinem Hobby gemacht einen DOS-PC zusammen zu bauen und ist bereits auf das selbe Problem gestoßen wie ich, nur mit der zusätzlichen Schwierigkeit im Gegensatz zu mir, dass er eben kein virtualisiertes System verwendet, wo sich die (Pseudo-) Hardware immer gleich verhält, sondern dass er mit den Herstellereigenen Besonderheiten der Laufwerke zu kämpfen hatte, die immer für Fummelarbeiten bei den Treibern unter einem nativ ausgeführten DOS sorgten.
Ziegelwanger hat die Arbeitsschritte sehr schön dokumentiert, so dass es mir ohne Probleme möglich war das optische Laufwerk aus der virtualisierten DOS-Umgebung ansprechen zu können. Ich habe sie als Anleitung nochmals in mein Wiki übernommen.

Links:
Anleitung im eigenen Dokuwiki
Technology Blog – DOS CD Rom Treiber installieren

Darüber hinaus stand ich vor dem Problem, Dateien, wie zum Beispiel eben die Treiber für den Zugriff auf das CD-Laufwerk, von meinem Host-System (macOS) in die virtuelle Maschine zu übertragen. Der Trick ist für das erste aber recht einfach.:

  1. Über das Terminal unter macOS (Linux, BSD) ein leeres Disketten-Image mit dem Konsolenprogramm dd erstellen.
    dd if=/dev/zero bs=512 count=2880 of=msdos-floppy.img
  2. Das erstellte Disketten-Image mit dem Virtualisierungsprogramm als Diskettenlaufwerk verbinden und mit dem Befehl format a: mit dem Dateisystem FAT12 unter DOS formatieren.
  3. Image von der VM wieder lösen und im Dateimanager (macOS Finder oder dem jedes anderen Host-Systems) wieder mounten und dann die Dateien hineinkopieren.
  4. Zuletzt das Image wieder aus dem Dateimanager auswerfen und mit der virtuellen Maschine verbinden. Die Dateien können gelesen beziehungsweise wenn nötig verändert werden.

Auf Dauer ist dies aber natürlich keine Lösung und ziemlich umständlich sowie nervend.

Teletext auf dem Raspberry Pi generieren

Im Herbst 2018 veröffentlichte der Heise-Verlag zum ersten Mal das Sonderheft c’t-Retro. Neben den Themen zu alten Computern wie den ZX Spectum oder Commodore C64 sowie anderen Technik-Bereichen der IT aus der Sicht längst vergangener Tage, hatten die Redakteure ein Raspberry Pi Projekt vorgestellt, mit dem es möglich ist, selber den Fernseh-Teletxt zu erstellen und auszugeben.

Teletext, hier in Deutschland eher unter dem Begriff Videotext bekannt, ist ja das textuelle Zusatzangebot der Fernsehsender für die eigenen Programminformationen, sowie aktuelle Sportergebnisse und Nachrichten. Übertragen wird der Teletext mit dem PAL-Normsignal in der Austastlücke.

Zum Nachbau des Projektes braucht es nicht viel an Hardware. Glücklicherweise habe ich noch einen Raspberry Pi der ersten Generation mit einer Buchse für den Composite Video Cinchstecker. – Die neueren Generationen haben statt der Chinchbuchse nur einen GPIO-Pin für die analoge Videoausgabe. Mein elektronischer Aufbau ist daher recht übersichtlich.:

Am Composite-Ausgang des Raspberry Pi’s geht ein Chinchkabel auf den Adapter für S-Video und Composite meines Elgato TV-Hybrid DVB-T USB-Sticks. Der DVB-T Stick ist also der „Fernseher“, der mit seiner Fernseh-Software EyeTV das PAL-Signal wieder als Bild ausgibt.
Der Raspberry Pi selber besitzt in seiner jetzigen finalen Aufbaustufe eine SD-Karte mit einem Respbian-Linux für die Teletext-Software und einen kleinen USB-WiFi-Dongel, um sich auf ihn über W-LAN zu administrativen Zwecken mittels SSH verbinden zu können.

Ist der Raspberry Pi so konfiguriert, dass die Bildschirmausgabe über das PAL-Signal an den „Fernseher“ geht und eine USB-Tastatur direkt am Raspberry Pi angeschlossen ist, dann fällt direkt die enorme Latenz auf, die durch den analogen Umweg entsteht. Ist der Raspberry Pi über seinen HDMI-Ausgang an einem gewöhnlichen Computerbildschirm angebunden, besteht die enorme Latenz nicht.
Wird dann der Teletext-Dienst VBit2 gestartet, so ist über die Teletext-Taste des „Empfangsgerätes“ der Videotext, der aus den vorinstallierten Tafeln besteht, zu sehen und es lässt sich wie bei den klassischen Fernsehsendern durch ihn hindurch navigieren.
Es gibt aber bereits eine Teletext-Tafel, in der die Temperatur des ARM-Chips und die lokale IP-Adresse des Rasperry Pi’s ausgelesen und angezeigt werden.
Die c’t-Redaktion hatte sich dann entsprechende Tafeln erstellt, mit denen die Meldungen und Nachrichten aus dem Heise-Newsticker als Teletxt abgerufen werden können.

In meinem Wiki habe ich eine entsprechende Installationsanleitung erstellt, wie die Software VBit2 auf dem Raspbian zu installieren ist.
Link: https://sommteck.net/wiki/doku.php?id=linux:vbit2_teletext-generator

Sobald ich meine ersten eigenen Gehversuche bei dem Erzeugen eigener Teletext-Tafeln erfolgreich durchschritten habe, werde ich dazu ein Update schreiben.

Update 05. April 16:05 Uhr:

Von der genannten Teletext-Tafel, in der die Temperatur des ARM-Chips und die lokale IP-Adresse des Rasperry Pi’s ausgelesen und angezeigt werden kann, gibt es natürlich auch ein Foto. Ich habe alle Bilder in einer eigenem Album.:
Link Fotoalbum VBit2

Links:
Heise c’t-Artikel: Teletext auf dem Raspberry Pi generieren
Links Teletext auf dem Raspberry Pi generieren
Projekt Heise Raspi Newstext (Github)
Teletext Page Editor im Browser
Teletext (dt. Wikipedia)
Raspberry Pi (dt. Wikipedia)
Composite Video (dt. Wikipedia)
Geniatech EyeTV (ehemals Elgato)