noqqe


blog | sammelsurium | projects | about

Beats | Eine in Ruby geschriebene Drummachine

2011-05-22 @ bash, beats, development, drummachine, drums, random, ruby, shell, sound

Neulich habe ich voller Begeisterung das Drummachine Projekt Beats entdeckt. Beats stellt so in etwa die Musicbox für Nerds dar. In einem Verzeichnis mit einem Set an *.wav Dateien (wohl der Standard) legt man eine Art Konfigurationsdatei, welche durch Beats interpretiert wird. In einer gewissen Syntax beschreibt man dieses Lied und dessen Abfolge.

Das Traurige an der Sache ist eigentlich lediglich, dass ich mir bewusst geworden bin, wie wenig Kreativität/Können ich im musikalischen Bereich vorzuweisen habe. Teilweise sind beim Herumexperimentieren zwar Interessante Ergebnisse entstanden, aber nichts wofür ich mich nicht schämen müsste ;)

$ beats song1.txt song.wav
$ open song.wav

Ich hab dann allerdings kurzer Hand begonnen, den Vorgang zu automatisieren. Erst wollte ich es outsourcen, aber dann habe ich es doch automatisiert. Da die ganze “Ich baue mir ein neues Lied”-Sache nur auf einem einzigen File beruht, dachte ich mir dass sich das mit Sicherheit auch automatisch generieren lässt.

Das Skript das dabei herauskam, taufte ich randombeats. Wie alles was ich in letzter Zeit tue habe ich es natürlich auf github veröffentlicht.

https://github.com/noqqe/randombeats

Benutzung:

Ins jeweilige Verzeichnis mit den Roh-Daten kopieren/wechseln und Skript ausführen.

$ git clone http://github.com/noqqe/randombeats
$ cp randombeats/randombeats.bash /path/to/music
$ cd /path/to/music
$ ./randombeats.bash > randomsong.txt
$ beats randomsong.txt
$ open randomsong.wav

Raus kommen allerlei sehr Interessante und manchmal auch schöne Rhythmen. Aber manchmal auch akute Ohrenschmerzen verursachen. Ein paar davon sammle ich mittlerweile in einem separaten Branch im Git-Repo. Diesen kann ich aber nicht uploaden, weil die Größe meines Github Accounts auf 300MB beschränkt ist. Aber vielleicht finde ich anderweitig Möglichkeiten die Ergebnisse zu publizieren.

Mittlerweile habe ich folgenden Befehl in einer Schleife laufen.

./randombeats.bash > rnd.txt && beats rnd.txt && open rnd.wav

An Feedback, Kritik oder Anmerkungen zu Verbesserungen an den Eckdaten des Skripts bin ich wie immer sehr interessiert :)

Update: Kurze WAV-Files generiert und als Beispiel hochgeladen.

randombeats example 1 randombeats example 2

Comments (2)

Jurkan on 2011-05-23T01:21:01
Super Sache! Ich hab vor nem halben Jahr mal was vergleichbares (mit GUI) gesucht, bin aber nicht fündig geworden. BEATS entspricht da genau meinen Vorstellungen, GUI braucht man bei dem einfachen Format nicht wirklich. Das Randomsong-Skript dazu ist ganz interessant, aber zum Glück reicht meine Kreativität auch aus, um von Hand was einigermaßen brauchbares zu erzeugen. Oder du setzt einfach höhere Maßstäbe an ;-) Danke jedenfalls für den Tipp.

noqqe on 2011-05-24T18:02:20
Hi Jurkan! Super das es dir gefällt :) Der Autor von Beats hat mir auch neulich Feedback dazu geben und fand es gerade zum Erstellen neuer Ideen sehr hilfreich :)