2117198

Sonic Pi: Programmieren lernen mit Musik - so geht's

28.09.2015 | 12:33 Uhr |

Sonic Pi ist eine verblüffende Software, die zwei auf den ersten Blick gegensätzliche Welten miteinander verbindet: Damit können Sie mit Ihrem Raspberry Pi Musik machen und gleichzeitig spielerisch das Programmieren erlernen.

Moderne Unterhaltungsmusik ist ohne den Einsatz von Computern nicht mehr denkbar. Sie spielen in Produktion und Distribution eine tragende Rolle. Und der Raspberry Pi eignet sich nicht nur ganz hervorragend als Abspielstation für Ihre Musik- und Videosammlung, sondern auch als Instrument. In diesem Artikel soll kein klassischer Software-Synthesizer zum Einsatz kommen, sondern Sonic Pi . Die Entwickler bezeichnen ihr Produkt als „Audible Programming“, und genau das ist es auch. Anders als Sie dies vielleicht von anderen Anwendungen gewohnt sind, simuliert die Software keine Klaviatur oder bildet die Regler von berühmten Synthesizern nach. Stattdessen wird das Instrument durch kleine Scripts „gespielt“. Das grundlegende Vorgehen ähnelt dabei der Anwendungsentwicklung. Das macht Sonic Pi auch für Bildungseinrichtungen so interessant. Denn die Anwender lernen damit spielerisch das Programmieren. Sonic Pi gibt es für den Raspberry, für Mac-OS X und für Windows.

Sonic Pi auf Raspberry installieren

Sonic Pi auf dem Raspberry setzt dort ein bereits funktionierendes System voraus. Es handelt sich also um Software, nicht um eine eigenständige Distribution. Zusätzliche Hardware müssen Sie für die Nutzung nicht beschaffen, allerdings benötigen Sie zur Audioausgabe ein Paar Lautsprecher oder Kopfhörer. Nutzen Sie Raspbian als Betriebssystem, starten Sie den Raspberry und melden sich an. Auf der Konsole aktualisieren Sie zunächst die Paketquellen:

sudo apt-get update  

Danach installieren Sie das Programm mit

sudo apt-get install sonic-pi  

Ist die Installation der Pakete abgeschlossen, starten Sie die grafische Oberfläche mit startx. Sonic Pi finden Sie auf dem Desktop in der Rubrik „Education“.

Sonic Pi kurz vorgestellt

Nach dem Start erhalten Sie die sehr einfache Oberfläche des Programms. Im größten Fenster sehen Sie den Editor. Hier tragen Sie die Programmierung der Klänge ein – dazu aber gleich noch mehr. Auf der rechten Seite befindet sich das Protokoll der Aktionen. Da Sie die Klänge in Form von Scriptcode programmieren, kann es hierbei natürlich auch einmal zu Fehlern kommen. Mit dem Protokoll verfolgen Sie nicht nur die Aktionen, sondern auch Fehlermeldungen der Software.

In der Werkzeugleiste am oberen Bildschirmrand stehen auf der linken Seite die wichtigsten vier Funktionen zur Auswahl. Mit „Run“ starten Sie das aktuelle Script, das Sie mit „Stop“ jederzeit anhalten können. „Save“ speichert den aktuellen Zustand. Die Musik-Scripts werden dabei als einfache Textdateien angelegt, die Sie im Prinzip auch mit jedem anderen Texteditor ansehen oder bearbeiten können. Die Tonausgabe, die durch das Script gesteuert wird, nehmen Sie mit „Rec“ auf. Die Schaltflächen auf der rechten Seite der Werkzeugleiste passen lediglich die Optik des Editors an und führen zu den allgemeinen Voreinstellungen der Software.

Das große Hauptfenster von Sonic Pi zeigt den Code-Editor zur Entwicklung Ihrer Musik.
Vergrößern Das große Hauptfenster von Sonic Pi zeigt den Code-Editor zur Entwicklung Ihrer Musik.

Der erste selbst programmierte Ton

Stecken Sie einen Kopfhörer in die Buchse des Raspberry, und tragen Sie in das Fenster von Sonic Pi „play 60“ ein. Drücken Sie anschließend auf „Run“. Damit haben Sie Ihre erste Note gespielt. Wenn Sie Erfahrungen mit dem Keyboard besitzen, kennen Sie wahrscheinlich Midi-Werte, die hier verwendet werden. Jeder Taste auf der Klaviatur (oder besser jedem Ton auf der klassischen Klaviatur) ist ein Zahlenwert zugeordnet. Sie können natürlich mehrere Töne hintereinander ausgeben. Wenn Sie eine Pause zwischen den verschiedenen Tönen einhalten wollen, nutzen Sie dazu das Kommando „Sleep“, das als Wert die Dauer der Pause in Sekunden erwartet. Ohne Pause erfolgt die Ausgabe der Töne gleichzeitig als Akkord. Sleep beschreibt nur den Zeitraum, der zwischen dem Auslösen zweier Töne vergeht. Klingen diese nach, legen sich die verschiedenen Klänge übereinander.

Wie in jeder Programmiersprache gibt es auch eine Abkürzung, um mehrere gleichartige Befehle ausführen zu lassen. „play_pattern [61, 62, 63]“ spielt die angegebenen Tonhöhen nacheinander, die dabei automatisch mit einer Pause getrennt sind.

Programmieren als Hobby - So klappt der Einstieg

Dynamik ins Spiel bringen

Machen Sie keine weiteren Angaben, klingen die ausgegebenen Töne ziemlich steril und keineswegs wie auf einem Keyboard gespielt. Das liegt daran, dass die für ein Tasteninstrument typischen Eigenschaften des Tons noch nicht programmiert wurden. Wenn eine Taste auf dem Keyboard gedrückt wird, vergeht eine Zeitspanne zwischen dem Druck der Taste und dem Anschwellen der Lautstärke bis zum Maximum (Attack). Ist das Maximum erreicht, kann dies ebenfalls über eine Zeitspanne gehalten werden (Sustain), bis der Ton nach dem Loslassen der Taste wieder abschwillt (Release). Alle drei Werte weisen Sie jeder gespielten Note optional zu: p

lay 61, attack: 0.5, sustain: 1, release: 0.5  

Wie leicht zu erkennen, trennen Sie einzelne Anweisungen mit einem Komma voneinander. Deswegen müssen Sie bei Zeitangaben unbedingt den Punkt als Dezimaltrenner verwenden, um Syntaxfehler zu vermeiden.

Durch die Anweisung „Sleep“ trennen Sie die Wiedergabe der Töne durch kurze Pausen. Nur so kommt Ordnung in das Klangspiel.
Vergrößern Durch die Anweisung „Sleep“ trennen Sie die Wiedergabe der Töne durch kurze Pausen. Nur so kommt Ordnung in das Klangspiel.

Sonic Pi stellt verschiedene Klangquellen zur Verfügung. Das sind zum einen die klassischen bereits von analogen Synthesizer gewohnten Wellenformen, aber auch zwei Emulationen bekannter Instrumente. Mit dem Parameter „use_synth :“ wählen Sie eine der Quellen aus. Diese bleibt übrigens so lange aktiviert, bis der Parameter wieder geändert wird. Das Instrument muss also nur einmal ausgewählt werden. Zusätzlich zu den internen Klangerzeugern lassen sich auch Samples verwenden. Das Programm liefert bereits eine Menge mit, die im Hilfebereich unter „Samples“ zu finden sind. Angesprochen werden diese im Code mit dem Kommando „sample :“, gefolgt vom Namen des Klangs.

Generell wie auch bei der Auswahl von Samples können Sie die Vervollständigungsfunktion von Sonic Pi nutzen. Sobald Sie damit beginnen, einen Befehl einzutragen, klappt ein Kontextmenü mit einer Liste möglicher Optionen herunter, so etwa die Sample-Liste nach der Eingabe „sample :“.

Auch Samples werden nacheinander gespielt, lassen sich aber wieder mit „sleep“ voneinander abgrenzen. Der Klang von Samples wird bei Bedarf über „Attack“, „Sustain“ und „Release“ verändert. Tippen Sie nach dem Sample-Kommando einen Gruppennamen wie „ambi_“ oder „bass_“, so wird das Angebot der Samples von der Vervollständigungsfunktion automatisch passend gefiltert.

Sie können auch eigene Samples einbinden, sofern diese im Format WAV oder AIFF vorliegen. Diese werden wie die mitgelieferten Klänge mit dem Sample-Kommando abgespielt. Hier müssen Sie aber in Anführungszeichen den vollständigen Pfad zur Sample-Datei angeben.

Erst durch das Zuweisen von Dynamik in Sonic Pi schwindet der synthetische Eindruck, und die Töne klingen wie mit auf dem Keyboard gespielt.
Vergrößern Erst durch das Zuweisen von Dynamik in Sonic Pi schwindet der synthetische Eindruck, und die Töne klingen wie mit auf dem Keyboard gespielt.

Loop und Abläufe strukturieren

Bisher wurden alle Befehle hintereinander ausgeführt. Durch die Zusammenfassung von Kommandos zu einem Code-Block können die Anweisungen leicht wiederholt werden. Ein Code-Block wird mit „do“ eingeleitet und mit „end“ vom Rest des Scripts abgegrenzt. Die beiden Kommandos markieren aber nur den Block. Damit die darin enthaltenen Angaben auch abgespielt werden, wird das „do“ noch ergänzt. Soll ein Block wiederholt werden, ergänzen Sie ihn mit der Anweisung „n.times“. Dabei steht „n“ für die Anzahl der Wiederholungen:

5.times do  sample :ambi_lunar_land  sleep 5  end 

In diesem Fall wird das Sample insgesamt fünfmal gespielt. Codeblöcke lassen sich wie auch in anderen Programmiersprachen miteinander verschachteln. Das gerade gezeigte Beispiel könnte also auch in einem ähnlichen Block integriert werden, der ebenfalls mehrfach wiederholt wird.

So ergeben sich schichtweise immer ausgefeiltere Klanggebilde. Stellen Sie dem Codeblock ein „loop“ voran, werden die Anweisungen unendlich wiederholt.

Das spart Tipparbeit, und Sie können die vordefinierten Klänge oder Wellenformen schnell ausprobieren.
Vergrößern Das spart Tipparbeit, und Sie können die vordefinierten Klänge oder Wellenformen schnell ausprobieren.

Auf den ersten Blick scheint Sonic Pi lediglich in der Lage, seiriell einzelne Töne wiederzugeben (Monophonie). Es ist aber via Multithreading vorgesehen, Codeblöcke gleichzeitig wiederzugeben, wodurch Mehrstimmigkeit erzeugt wird. Verwendet wird hier die Anweisung „in_thread_“, die einen Codeblock einleitet. Das Kommando besagt dann, dass die damit umfasste Anweisung genau zur gleichen Zeit gespielt werden soll wie der folgende Block. Das schafft beim Abspielen von mehreren Samples sehr komplexe Klanggebilde.

Sonic Pi für Musiker

Dieser Artikel konnte nur einige Grundlagen von Sonic Pi beschreiben. Je intensiver Sie sich mit der Software beschäftigen, umso mehr Möglichkeiten werden Sie entdecken. Angeboten werden auch Effekte oder die Möglichkeit, einen Klang einem der beiden Stereokanäle zuzuweisen. Bei den vorgestellten Beispielen wurden stets nur einzelne Klänge verwendet, tatsächlich unterstützt Sonic Pi aber auch eine Reihe von Akkorden, die auch als Arpeggio abgespielt werden.
Eine weitere Besonderheit: Probieren Sie einmal die Funktion „live_ loop“ aus. Nachdem Sie das Kommando für die Ausführung gestartet haben, wird Ihr Codeblock wiedergegeben. Nun ergänzen Sie den Code um weitere Klänge oder verändern die Notenwerte. Ihre Änderungen übernimmt die Software live, was Sonic Pi in ein (wenn auch etwas abstraktes) Musikinstrument verwandelt.

So fassen Sie die Ausgabe mehrerer Kommandos in Sonic Pi zusammen, um diese zu wiederholen.
Vergrößern So fassen Sie die Ausgabe mehrerer Kommandos in Sonic Pi zusammen, um diese zu wiederholen.

Trotz allem bleibt Sonic Pi ist ein sehr einfach gehaltener Klangerzeuger mit geringen Ansprüchen an die CPU und moderaten Anforderungen an Speicher, was dem Einsatz auf dem Raspberry entgegenkommt. Derzeit ist es allerdings nicht möglich, weitere externe Klangquellen anzusprechen oder externe Controller zu benutzen. Damit bleibt Sonic Pi seinem ursprünglichen Konzept treu, aber gerade zusätzliche Klangerzeuger könnten das Konzept noch vielseitiger machen. Die aktuell angebotenen Klänge bestehen aus den klassischen Wellenformen (Sinus, Sägezahn, Rechteck, Puls, Rauschen). Zusätzlich stehen einige Klassiker der Musikgeschichte als Emulationen zur Verfügung, darunter legendäre Systeme wie „Prophet“ oder Rolands Bass-Synthie „TB-303“.

Über Sonic Pi hinaus: Die besten Verwendungsmöglichkeiten für einen Raspberry Pi

0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2117198