Zum Inhalt

Programmieren mit SonicPi

Was ist SonicPi

SonicPi ist ein modernes Kompositionsprogramm. Damit bietet SonicPi eine Möglichkeiten, sich selbst mittels Programmieren auszudrücken. SonicPi kann man schneller lernen als ein klassisches Musikinstrument.

Höre dir zum Beispiel auf deren Internetseite das Beispiel Listen to crazy coded beats an.

Demonstrationen, wie man mit SonicPi Musik programmiert:

Demonstration on RubyDay 12:45-20:00

Beispiel Industial-Beat

Demonstration von Sam Aaron

Man kann mit SonicPi auch Minecraft programmieren: Seite 29 und 53 in der Anleitung Essentials.

Erste Schritte

  • Wenn der Kopfhörer nicht funktioniert, das Programm neu starten, während die Kopfhörer bereits eingesteckt sind.
  • Im Programm selbst sind Anleitungen und Beispiel-Code vorhanden.
  • In den neueren Versionen (ab Version 3) gibt's die Anleitung auf Deutsch.
  • Der “Ausführen“-Button ist der Run-Button.
  • Mit einem “freien Buffer“ ist ein Workspace gemeint.
  • Mit Alt-Minus kannst du den Code kleiner darstellen lassen.
  • Mit Alt-A kannst du den ganzen Code auswählen, mit Alt-V die Zwischenablage einfügen.
  • Als erste Komposition dient vielleicht eine einfache Melodie?
  • Das Speichern funktioniert nicht immer reibungslos, deswegen solltest du deinen Quellcode in einer Text-Datei speichern.

Töne erzeugen

```ruby play_pattern [61, 62, 63]

play 61 sleep 1 play 62 sleep 0.5 play 63

Oder mit den klassischen Notenbezeichnungen

play :C play :C4 play :Cs4 # erhöht um einen Halbton play chord(:C4, :minor)

```

Es gibt einige Optionen:

```ruby play 60, amp: 0.5 # Für die halbe Amplitude (Lautstärke) play 60, pan: -1 # Spielt bei Stereo-Lautsprechern den Klang links (Richtung)

play 61, attack: 0.5, sustain: 1, release: 0.5 # Wie der Ton klingen soll

attack für die Zeit bis zur maximalen Lautstärke

sustain wie lange das Maximum gehalten wird

release dann bis zur minimalen Lautstärke

```

Um Töne besonders klingen zu lassen verwendet man Synths

```ruby

use_synth :saw play 38 sleep 0.25 play 50 sleep 0.25 play 62 sleep 0.25

use_synth :prophet play 38 sleep 0.25 play 50 sleep 0.25 play 62 sleep 0.25

Weiter Synths: :dsaw :fm :tb303 :pulse

```

Samples

Mit sample können vorinstallierte oder auch eigene Samples (in Anführungszeichen den vollen Pfad angeben) im Format *.wav oder *.aiff verwendet werden.

```ruby sample :loop_amen sample :loop_amen, rate: 0.5 # probiere 1.5 und -1 (Strecken und Stauchen; Geschwindigkeit)

sample :loop_amen, start: 0.5 sample :loop_amen, finish: 0.5 ```

Schleifen und Zufallszahlen

```ruby loop do play rrand(50, 95) sleep rrand(0.2, 2) end

5.times do sample :ambi_lunar_land sleep 5 end

2.times do use_synth :tb303 play chord(:A3, :minor) sleep 2 play chord(:C4, :minor) end

Parallele Töne erzeugt man mit:

in_thread do loop do sample :drum_heavy_kick sleep 1 end end loop do use_synth :fm play 40, release: 0.2 sleep 0.5 end

```

Effekte

```ruby with_fx :reverb do # Hall play 50 sleep 0.5 sample :elec_plip sleep 0.5 play 62 end

with_fx :echo do # Echo play 50 sleep 0.5 sample :elec_plip sleep 0.5 play 62 end ```

Live-Loop

ruby live_loop :flibble do sample :ambi_choir, rate: 0.3 sample :bd_haus, rate: 1 sleep 0.5 end

Live-Loop mit Mix:

```ruby live_loop :guit do with_fx :echo, mix: 0.3, phase: 0.25 do sample :guit_em9, rate: 0.5 end

sample :guit_em9, rate: -0.5

sleep 8 end live_loop :boom do with_fx :reverb, room: 1 do sample :bd_boom, amp: 10, rate: 1 end sleep 8 end ```

Weitere Tutorials