Startseite>Audio-Programmierung mit Sonic Pi, Teil 1
Aus Raspberry Pi Geek 12/2018

Audio-Programmierung mit Sonic Pi, Teil 1

© Janski, Photocase.com

Bytes und Beats

Pit Noack

In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

In der Raspbian-Grundausstattung findet sich mit Sonic Pi ein Programm, das wie Scratch Einsteiger spielerisch an die Software-Entwicklung heranführen soll. Während Scratch den Schwerpunkt bei Grafik und Animation setzt, spezialisiert sich Sonic Pi auf Klang und Musik. Im Gegensatz zu Scratch ist Sonic Pi nicht nur ein lehrreiches und amüsantes Spielzeug, sondern eine ausgewachsene Programmiersprache, die sich auch für anspruchsvolle Aufgaben eignet, bis hin zur Verwendung in interaktiven Multimedia-Installationen.

Dieser Artikel bildet den Auftakt einer kleinen Serie zum professionellen Einsatz von Sonic Pi. Wir starten mit einem flotten Rundgang, der über die Hintergründe aufklärt und einige der wichtigsten Sprachmittel kurz vorstellt. Die Folgeartikel bieten dann Vertiefungen an und stellen fortgeschrittene Themen vor – etwa die Interaktion mit anderen Programmen mittels Open Sound Control und das Einbinden externer Audio-Hardware per MIDI.

Erste Schritte

Sollte Sonic Pi noch nicht installiert sein, holen Sie das mit dem Befehl sudo apt install sonic-pi nach. Sie starten das Programm über den Starter im Hauptmenü unter Entwicklung oder im Terminal mit sonic-pi.

Die Bedienung gestaltet sich denkbar einfach: Sie schreiben Code in einen der zehn Textpuffer (Abbildung 1). Mit einem Klick auf den Run-Knopf links oben oder mittels [Alt]+[R] führen Sie den Code aus. Mit dem Help-Knopf oben rechts oder per [Alt]+[I] öffnen und schließen Sie ein Hilfefenster, das unter anderem ein Tutorial und Übersichten über die Sprachmittel von Sonic Pi bietet. Mit dem Einzeiler sample :elec_blip spielen Sie beispielsweise einen klassischen Techno-Sound ab.

Abbildung 1: Das übersichtliche Programmfenster der Sonic-Pi-IDE umfasst lediglich eine Schalterleiste sowie einen Eingabebereich für die zehn Textpuffer.

Abbildung 1: Das übersichtliche Programmfenster der Sonic-Pi-IDE umfasst lediglich eine Schalterleiste sowie einen Eingabebereich für die zehn Textpuffer.

Sonic-Pi-Programme bestehen im Wesentlichen aus Funktionsaufrufen. Sämtliche Sonic-Pi-Funktionen führt das Hilfefenster unter Sprache auf (Abbildung 2). Die Funktion sample spielt gespeicherte Klänge – also Samples – ab. Das Argument :elec_blip bezeichnet den Klang, den Sonic Pi wiedergeben soll – in diesem Fall einer von 129 Samples, die Sonic Pi von Haus aus mitbringt. Wann immer Sie sample eintippen, öffnet sich eine Auswahlliste mit allen eingebauten Klängen, eine Übersicht finden Sie zudem im Hilfebereich unter Samples.

Abbildung 2: Zu allen wichtigen Sprachelementen finden Sie im Hilfefenster von Sonic Pi eine ausführliche Erklärung.

Abbildung 2: Zu allen wichtigen Sprachelementen finden Sie im Hilfefenster von Sonic Pi eine ausführliche Erklärung.

Daneben können Sie auch Audiodateien aus anderen Quellen abspielen. In diesem Fall verwenden Sie als Argument einfach den Pfad zur entsprechenden Audiodatei als Zeichenkette, beispielsweise sample "/home/pi/klonk.wav". Sonic Pi kommt hier mit den Formaten WAV, AIF und Flac zurecht.

Die vielseitig anwendbare Funktion sample vermag unter anderem ganze Verzeichnisbäume nach Dateien zu durchsuchen, deren Namen einem bestimmten Muster entsprechen, und dann per Index auf alle Treffer zuzugreifen. Im Hilfefenster finden Sie im Bereich Sprache unter dem Eintrag sample nicht weniger als 35 Anwendungsbeispiele.

Optionen

Die Möglichkeiten von sample beschränken sich nicht darauf, gespeicherte Klänge vollständig und unverändert wiederzugeben: Sie können den Abspielvorgang mit diversen Optionen modifizieren. Eine besonders effektvolle Variante verändert die Abspielgeschwindigkeit.

Der Aufruf aus der ersten Zeile von Listing 1 stößt eine Wiedergabe in normaler Geschwindigkeit an. Der Code aus der zweiten Zeile halbiert die Abspielgeschwindigkeit mit der Option rate. Eine Halbierung der Abspielgeschwindigkeit vermindert gleichzeitig die Tonhöhe um eine Oktave; entsprechend schiebt rate: 2 die Tonhöhe um eine Oktave nach oben. Ein negatives Vorzeichen kehrt die Abspielrichtung um und sie hören den Klang rückwärts (Zeile 3)

Allein die Funktion sample bietet gut 60 Optionen. So bestimmt amp etwa die Lautstärke, voreingestellt ist der Wert 1. Mit pan steuern Sie die Position im Stereofeld: Hier steht -1 für den linken und 1 für den rechten Kanal, pan: -0.5 positioniert den Klang halblinks. Möchten Sie mehrere Optionen verwenden, schreiben Sie diese durch Kommas getrennt hintereinander weg.

Das Beispiel aus der vierten Zeile von Listing 1 spielt den Amen Break, eins der am häufigsten verwendeten Samples der Musikgeschichte, auf dem rechten Audiokanal ab. Dabei steht lpf für einen Tiefpassfilter (Low Pass Filter), der Frequenzen oberhalb einer Grenzfrequenz dämpft und für einen dunkleren Klang sorgt. Die Grenzfrequenz geben Sie im MIDI-Format an, auf das wir im Folgenden noch zurückkommen. Der Wert 80 im Beispiel steht für eine Trennfrequenz von 830 Hertz.

Listing 1

 

sample :ambi_piano
sample :ambi_piano, rate: 0.5
sample :ambi_piano, rate: -1
sample :loop_amen, pan: 1, lpf: 80
sample :bass_dnb_f
sample :ambi_lunar_land
[...]
sample :bass_dnb_f
sleep 1
sample :ambi_lunar_land

Zeitmanagement

Wenn Sie zwei Aufrufe von sample hintereinander weg schreiben, spielt Sonic Pi die Klänge gleichzeitig ab (Listing 1, Zeile 5 und 6). Die Funktion sleep sorgt gegebenenfalls für eine Unterbrechung, Sie hören dann die Klänge nacheinander (Zeile 8 bis 10). Der Parameter 1 in Zeile 9 steht für eine Unterbrechung von einem Schlag.

Alle Zeitangaben in Sonic Pi beziehen sich auf die Schlagdauer. Per Voreinstellung dauert ein Schlag eine Sekunde, das Tempo beträgt also 60 Schläge pro Minute (Beats per Minute, kurz: BPM). Bei Bedarf ändern Sie den BPM-Wert – und damit die Dauer eines Schlags – über die Funktion use_bpm. Mit use_bpm 120 verdoppeln Sie das Tempo und halbieren entsprechend die Schlagdauer, die dann eine halbe Sekunde beträgt.

Beim BPM-Wert handelt es sich übrigens nicht um eine globale Variable. Sonic Pi muss als Musikprogramm mehrere Threads (also Programmstränge) parallel ausführen können. Jeder davon enthält eine Reihe lokaler Variablen, die er beim Erzeugen vom Mutter-Thread kopiert; dazu gehört auch der BPM-Wert.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland