Seit ein paar Tagen beschäftige ich mich intensiv damit, wie man mit dem Computer Musik macht. Vorweg: ich bin kein Musiker, und ich werde auch keiner. Aber eine von meinen Lieblingstöchtern singt gerne, und das nehme ich natürlich gerne als Aufhänger dafür mich in ein neues Gebiet reinzunerden.

Ich nutze wann immer das möglich ist freie Software, also bin ich bei der Aufnahme und Bearbeitung von Sound ziemlich schnell — nach einem kurzen aber unvermeidbaren Zwischenstopp bei Audacity — bei Ardour gelandet. Das ist eine Digital Audio Workstation, offenbar nutzen Leute mit Ahnung sowas um Musik zu produzieren. Einige Namen der kommerziellen Konkurrenz habe ich schon gehört: Ableton, Reason oder Cubase. Wie weit Ardour davon entfernt ist weiss ich nicht, auf jeden Fall bin ich beeindruckt (und erschlagen) von dem Funktionsumfang.

Unter anderem kann man mit dem Ding (natürlich) MIDI abspielen, also praktisch Musikinstrumente bedienen ohne wirklich Ahnung von Rhythmus oder Melodie zu haben. Dabei können die Instrumente dafür wirkliche MIDI-Instrumente sein (mit Tasteninstrumenten rechnet man irgendwie, ich habe aber auch schon MIDI-Gitarren (nein, nicht solche Playstation-Teile!) und ein MIDI-Akkordeon gesehen), oder Synthesizer — tatsächlich im Sinne von Tongenerator, einzubinden als Plugin in Ardour.

Und eben ein solcher ist Cardinal. Und zwar einer von der modularen Sorte:

Ein „Patch“ den ich am Beispiel eines Videos gemacht habe.

Modulare Synthesizer bestehen, wie der Name schon suggeriert, aus Modulen aus denen man sich seinen Klanggenerator zusammenbaut. In der wirklichen Welt funktioniert das ähnlich wie Lego: man gibt viel Geld für die Module aus, schraubt sich die Dinger in ein Rack und bastelt mit Kabeln und Knöpfchen so lange rum bis man seinen Sound gefunden hat.

Vor einigen Jahren gab es dazu eine Ausgabe von CRE, und da die Technik eigentlich antiquitiert gut abgehangen ist hat die nichts von ihrer Aktualität verloren. Wer sich für das Thema interessiert kriegt da auf jeden Fall einen guten Überblick.

Ich bin hoch erfreut dass es sowas in virtuell gibt. Nicht weil ich da einen Nutzen raus ziehen könnte, sondern weil es mich immer schon gereizt hat mit so einem Ding zu spielen. Vor Ewigkeiten hatte ich mal einen Abend die Gelegenheit mit einem moderneren Synthesizer zu spielen, einem Roland MC-505. Das hat schon echt Spass gemacht, und ich könnte da immer noch eine Menge Spaß mit haben. Das hier ist aber wesentlich ursprünglicher, und auch wenn mich der Funktionsumfang erschlägt — mitgeliefert werden 974 (!!!) unterschiedliche Module — ist das echt ein spannendes Spielzeug.

Oh, und noch ein Tipp: wer nicht alleine wohnt sollte für den ausgedehnten Spielspaß unbedingt Kopfhörer haben… :-)

Achtung, sicher!

Achtung, sicher!

Es ist wirklich kein schöner Anblick, und ich fühle mich jetzt auch etwas schmutzig. Fragt bitte nicht wo ich mich mit einem Windows 2003 Server in Verbindung gesetzt habe.

Fakt ist: ich habe versucht den Server mit Google in Verbindung zu bringen. Und der verwendete Internet Explorer hat mich gewarnt (!) daß ich auf einer sicheren Verbindung unterwegs bin.

Früher war nicht alles besser. Echt nicht. Das gilt für Windows doppelt…

Vorweg: Ich habe das noch nicht selbst ausprobiert, aber ich weiss dass ich mal nach sowas gesucht habe.

Viele Gruppen nutzen zur Findung von Terminen die Webseite doodle.com. Der Dienst funktioniert prima, für einige Anwendungen fände ich es aber wesentlich angebrachter einen solchen Dienst selbst zu hosten. Wenn ich mal wieder Bedarf habe werde ich auf jeden Fall einen Blick auf Dudle werfen. Die Funktionalität scheint in etwa die gleiche zu sein, und man kann es „zu Hause“ installieren. Wer das nicht mag findet bei der TU Dresden eine gehostete Version.

sed -f arkanoid.sed

sed -f arkanoid.sed

Wer viel an der Unix-Shell unterwegs ist kennt das Tool sed. Das steht für Stream EDitor, es ist ein kleines aber mächtiges Tool zum automatischen Bearbeiten von Texten. Ich nehme an dass es in mindestens 98% aller Einsätze nur zum Suchen und Ersetzen genutzt wird (per s///).

Ich wusste schon dass es mehr kann, aber eine wirkliche Implementierung von Arkanoid hätte ich nicht erwartet. Wow!

Notiz am Rande: auf meinem ersten Rechner hieß das auch Arkanoid. Original heißt das Spiel Breakout und ist sehr direkt mit der Firma Apple verknüpft. Mehr steht im Abschnitt Entwicklung des Wikipedia-Artikels.

War mir nicht bekannt, aber man kann sudo so einstellen dass es einen nach Eingabe eines falschen Passwortes… originell abweist. :-)

Wer nur die Antworten sehen möchte kann das — zumindest auf Ubuntu — so machen:

Vor gut zehn Jahren hatte ich schon mal einen ähnlichen Tipp im Blog, damit bietet dann praktisch jedes Tool in der Shell diesen… Service. :-D

Ich hatte schon öfter was über ungewöhnliche Programmiersprachen geschrieben. Zuletzt über Folders, eine Sprache die ganz ohne Dateien auskommt.

Heute habe ich zwei neue Sprachen kennengelernt. Nein, nicht gelernt. Nur erfahren dass es das gibt. Da wäre zum einen Qalb, eine Sprache in der die Quelltexte (eigentlich auch der Name, aber bei قلب hätte ich noch weniger Ideen zur Aussprache als bei der lateinischen Umschreibung) in arabischer Schrift verfasst werden. Hier gibt es alles was man braucht bei Github. :-D

Die Sprache ist aber schon älter, neuerdings gibt es — ebenfalls bei Github — eine Sprache namens Potaka (wieder eine lateinische Umschreibung, für পতাকা fehlt mir nicht nur eine Idee zur Aussprache sondern sogar die Zeichen im Font). Um die zu beherrschen sollte man bengalische Schrift entziffern können. Wer es versuchen mag: das hier sieht nach einem Spielfeld aus — genau sagen kann ich das aber nicht… ;-)

Da jemand gefragt hat: offenbar kann man in WordPress-Kommentaren ganz normale <pre>-Tags benutzen um Quelltexte in Kommentaren beizusteuern.

Und da ich hier das Crayon Syntax Highlighter Plugin installiert habe kann man sogar noch etwas Farbe ins Spiel bringen: mit <pre class="lang:sh"> sagt man zum Beispiel direkt dass es sich um ein Shell-Skript handelt. Das wird dann so dargestellt:

Will man das? Nicht notwendigerweise. Aber gerade bei längeren Skripten kann das schon hilfreich sein…

TP-Link TL-MR3020 und Fujitsu fi-4120C

TP-Link TL-MR3020 und Fujitsu fi-4120C

Ich verfolge schon lange das Ziel, eingehende Post direkt durch einen Scanner zu ziehen, um sie dann in einer Kiste verschwinden und rein elektronisch weiter verarbeiten zu können. Das mag übertrieben aufwändig klingen, aber erfahrungsgemäß kann ich in Dateien besser den Überblick behalten als in Papierstapeln. Und leider bin ich nicht ordentlich genug um Briefe sortiert abzuheften. Außerdem, selbst wenn: packe ich den Brief wegen der KFZ-Steuer zum Finanzamt oder zum Auto? Im Computer ist das ein Symlink…

Nun, um das zu realisieren habe ich schon vor längerer Zeit einen Scanner gekauft. Fujitsu fi-4120C. Altes Modell, aber immerhin ein echter Dokumentenscanner, mit Duplex und automatischem Einzelblatteinzug. Eigentlich wollte ich den mit einem Raspberry ins Netz bringen, kürzlich ist aber bei einer anderen Bastelei ein TP-Link TL-MR3020 abgefallen. Den kriegt man gebraucht schon unter 20 Euro, und in Kombination mit der freien Firmware OpenWRT ist das echt interessantes Spielzeug — das sogar Pakete enthält die meinen Scanner befeuern können.

Leider ist der Router so klein dass mit einer Standard-Installation von OpenWRT kein Platz mehr für meine Zwecke ist. Und einfach Pakete deinstallieren geht nicht, die vorinstallierten wird man nicht los. Es sei denn man baut ein eigenes Image-File…

Glücklicherweise ist das mit dem Image Generator kein Problem. In dem Paket ist alles wichtige vorcompiliert enthalten. Das stellt man sich geeignet zusammen, pflegt bei Bedarf ein paar eigene Dateien ein und fertig ist die Laube. In meinem Fall habe ich folgende Dateien angelegt, alle in einem Unterordner files unter dem entpackten OpenWRT-Paket:

  • files/etc/resolv.conf und files/etc/config/network — Konfiguration für mein Netz
  • files/etc/config/system — Hostnamen einstellen
  • files/etc/fstab — ein Laufwerk von meinem Server mounten
  • files/etc/hotplug.d/button/buttons — ruft das Scan-Skript auf
  • files/root/scan.sh — das eigentliche Scan-Skript
  • files/etc/zabbix_agentd.conf — Überwachung mit Zabbix (soviel Platz war noch frei :-) )

Das ist alles keine Raketentechnik. Zentral sind aber die beiden Dateien die mit dem Scanner zu tun haben (hätte ich auch in einer Datei machen können, finde ich so aber übersichtlicher). Zum einen ist das files/etc/hotplug.d/button/buttons, das wird vom Hotplug-Daemon gestartet sobald der Button auf dem Router gedrückt wird:

Und zum anderen das eigentliche Scan-Skript files/root/scan.sh:

Sind diese Dateien angelegt ist man nur noch einen Make-Aufruf von der eigenen Firmware entfernt:

Nach kurzer Bauzeit lag in meinem Fall unter bin/ar71xx eine Datei die ich vermutlich auch direkt aus der originalen Firmware hätte flashen können. Da ich schon OpenWRT und somit eine Shell auf dem Router hatte konnte ich das dort machen:

Die Installation beendet sich mit einem Reboot. Per Telnet komme ich direkt auf das Gerät, da es sich ja direkt in mein Netz verbinden kann (kabelgebunden, ich habe eine Steckdose an der Stelle wo der Scanner stehen soll). Und mit scanimage -L sehe ich direkt den Scanner: device `fujitsu:fi-4120Cdj:44135' is a FUJITSU fi-4120Cdj scanner. Und scannen kann ich direkt auf Knopfdruck aus dem Skript heraus.

Ich habe mir auch schon Skripte gebastelt die die Scans weiter verarbeiten. Leere Seiten rausfischen, alles gerade rücken, Texte erkennen, komprimieren und Sandwich-PDF erstellen. So habe ich jetzt einen Haufen elektronisch durchsuchbarer Dokumente. Was mir noch fehlt ist eine nette Lösung um die dann auch zu archivieren. Mit Suchfunktion und so. Bis jetzt nutze ich Alfresco, aber für zu Hause ist das zu groß und zu umständlich. Für Tipps bin ich offen!

Das einzige was ich jetzt noch zu meinem Glück fehlt ist eine Möglichkeit, herauszufinden in welchem Zustand sich der Scanner befindet. Der hat eine Taste und eine Anzeige ‚Function‘, damit könnte ich dann die weitere Verarbeitung des Scans steuern… mal sehen, vielleicht finde ich dafür auch noch was. Mit scanimage -A sehe ich dass das irgendwie implementiert ist, aber ich habe noch nicht herausgefunden wie ich es benutzen kann.