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
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¶
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:
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
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.
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¶
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¶
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¶
live_loop :flibble do
sample :ambi_choir, rate: 0.3
sample :bd_haus, rate: 1
sleep 0.5
end
Live-Loop mit Mix:
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