Audioprogrammierung mit Sonic Pi, Teil 5

© David Jancik, 123RF

Grußbotschaften

Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

Serie: Professionelle Audioprogrammierung mit Sonic Pi

Thema

Ausgabe

URL

Sonic Pi: Einstieg und Grundlagen

RPG 11-12/2018, S. 80

http://www.raspi-geek.de/41258

Samples dynamisch bearbeiten

RPG 01-02/2019, S. 82

http://www.raspi-geek.de/41259

Sonic Pi als Live-Instrument

RPG 03-04/2019, S. 74

http://www.raspi-geek.de/41260

Netzwerk, MIDI, externe Signale

RPG 05-06/2019, S. 72

http://www.raspi-geek.de/42354

Laufende Klangereignisse modulieren

RPG 11-12/2019, S. 80

http://www.raspi-geek.de/42882

Unter der Kühlerhaube von Sonic Pi sorgt der Supercollider Synthesis Server (kurz: SCSynth) für die komplette Klangerzeugung. Jedes Mal, wenn Sonic Pi eine Zeile Code wie play 40, release: 4 ausführt, erhält SCSynth eine Nachricht, die sämtliche Parameter wie Tonhöhe oder Ausklingzeit enthält; der Server erledigt dann alles Weitere.

Auf den ersten Blick scheint es also nicht möglich, diese Parameter zu verändern, wenn ein Klangereignis bereits läuft. Das stimmt aber nur beinahe: Manche Synth- und Effekt-Optionen dürfen Sie selbst dann noch modulieren, während der Server den jeweiligen Auftrag abarbeitet. Dazu nutzen Sie die Funktion control. Listing 1 zeigt ein erstes, sehr einfaches Beispiel.

Listing 1

 

use_synth :square
event = play 40, release: 4
sleep 1
control event, cutoff: 80
sleep 1
control event, cutoff: 60
sleep 1
control event, cutoff: 40

In der zweiten Zeile des Listings startet die Funktion play einen vier Schläge langen Ton. Die Variable event speichert den Rückgabewert des Aufrufs play, ein Objekt der Klasse SynthNode (Abbildung 1). Vereinfacht gesagt liefert ein SynthNode-Objekt eine Referenz auf das von play veranlasste Klangereignis.

Abbildung 1: Die Kommunikation zwischen Sonic Pi und dem im Hintergrund laufenden SCSynth.

Die Funktion control erwartet als Argument eine solche Referenz, um Zugriff auf die Klangerzeugung zu erhalten. Im Beispiel senkt control die Grenzfrequenz des Tiefpass-Filters vom square-Synth dreimal nach jeweils einem Schlag (Zeilen 3 bis 7). Im Ergebnis hören Sie einen in drei Stufen dumpfer werdenden Klang.

Gleitende Parameter

Im ersten Beispiel erfolgte die Veränderung der Filterfrequenz abrupt. Listing 2 zeigt, wie gleitende Parametermodulation funktioniert. In diesem Fall soll control die Option note, also die Tonhöhe des Synths, steuern. Sie hören einen Ton, der binnen einer Sekunde um zwei Oktaven nach oben gleitet.

Listing 2

 

use_synth :square
event = play 40, note_slide: 1
control event, note: 80

Für diese gleitende Veränderung steht die Option note_slide. Wie alle zeitabhängigen Parameter bezieht sich slide auf die Dauer in Schlägen. Der Parameter note_slide sorgt dafür, dass der Server die neue Tonhöhe nach einem Schlag setzt. Im Beispiel steht diese Option im Funktionsaufruf von play. Sie dürfen aber bei Bedarf jeden Aufruf der Funktion control mit variierenden Slide-Optionen versehen.

Steuerbare Optionen

Ein Blick in den Synth-Bereich der eingebauten Hilfe gibt darüber Auskunft, welche Optionen Sie per control adressieren dürfen. In diesem Fall steht dort: "May be changed whilst playing" (Abbildung 2). Der Satz "Has slide options to shape changes" zeigt die Möglichkeit gleitender Übergänge an. Dann existieren, wie in Listing 2, entsprechende Optionen, die auf _slide enden.

Abbildung 2: Der Bereich Help | Synths gibt Auskunft darüber, ob eine Option veränderlich ist oder nicht.

Sie haben die Möglichkeit, mit einem control mehrere Optionen anzusteuern. Das demonstriert Listing 3 – und zeigt zudem, wie Sie mehrere Modulationen eines Klangereignisses in eine Schleife verpacken.

Listing 3

 

use_synth :tb303
live_loop :acid do
  use_random_seed 5
  event = play 40,
    release: 2,
    res: 0.5,
    note_slide: 0.05,
    cutoff_slide: 0.05
  16.times do
    control event,
      note: rand(20..60),
      cutoff: rand(40..120)
    sleep 2.0 / 16
  end
end

Im Live Loop acid startet play einen zwei Schläge dauernden Ton. Anschließend ruft times sechzehnmal den Code in den Zeilen 11 bis 14 auf: note und cutoff bekommen neue Werte. Eine Unterbrechung von 2/16 Schlägen sorgt dafür, dass ein Durchlauf des Loops insgesamt genau zwei Schläge dauert.

Übrigens: Durch den Aufruf von use_random_seed in Zeile 4 hören Sie bei jedem Durchgang exakt dieselbe Zufallssequenz – das klingt oft musikalischer als kompletter Zufall.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.