Telliminator

Sample-Collector
Sprechprobe
Link
Hallo zusammen,

ich habe eine schöne kleine Spielerei entdeckt. Sie bringt die Welten von Programmieren und Musikproduktion auf schöne Art und Weise zusammen. Sonic Pi.

Was ist Sonic Pi?​

Sonic Pi ist eine kostenlose Open-Source-Software, mit der man durch das Schreiben von Code in Echtzeit Musik erzeugen kann – sogenanntes Live Coding. Ursprünglich von Sam Aaron für den Schulunterricht entwickelt, wird es mittlerweile von weltweit vielen Künstlern für Live-Auftritte, Sounddesign und elektronische Musik genutzt.

Die Features​

  • Anfängerfreundlich: Ihr braucht keine tiefen Programmierkenntnisse. Die Syntax ist klar, übersichtlich und fehlerverzeihend.
  • Direktes Feedback: Mit einem Klick auf Run hört ihr sofort, was euer Code macht. Änderungen können live vorgenommen werden, ohne dass die Musik stoppt.
  • Mächtige Sound-Engine: Sonic Pi bringt eine Fülle an integrierten Synths, Effekten (Reverb, Delay, Distortion etc.) und Sample-Bibliotheken mit. Zudem lassen sich eigene Audio-Samples problemlos einbinden.
  • Echte MIDI- & OSC-Unterstützung: Ihr könnt MIDI-Keyboards anschließen oder externe Hardware und DAWs ansteuern.

Wie sieht das in der Praxis aus?​

Hier ein einfaches Beispiel, das eine Bassdrum im Takt abspielt und eine kleine Melodieschleife darüberlegt:

Ruby

live_loop :beat do
sample :bd_haus, amp: 1.5
sleep 1
end

live_loop :melody do
use_synth :prophet
play choose([:c4, :e4, :g4, :b4]), release: 0.3
sleep 0.5
end

Wo fängt man am besten an?​

Das Großartige an Sonic Pi ist das integrierte Tutorial. Nach der Installation findet ihr in der Anwendung ein ausführliches, deutschsprachiges Handbuch mit Schritt-für-Schritt-Anleitungen und vielen Code-Beispielen.

ruby
use_synth :blade # 1. Wähle einen spacigen Synthesizer-Sound
live_loop :weltraum_sound do # 2. Starte eine Endlosschleife
# 3. Wähle eine zufällige Note aus einer harmonischen Tonleiter (E-Moll)
zufällige_note = (scale :e3, :minor_pentatonic).choose
play zufällige_note, release: 2 # 4. Spiele die Note und lass sie 2 Sekunden ausklingen
sleep [0.5, 1, 2].choose # 5. Warte zufällig eine halbe, eine oder zwei Sekunden
end # 6. Springe zurück zu Schritt 2

Auf der Webseite von Sonic Pi könnt ihr den Code live eingeben und simulieren. Ihr könnte das Programm aber auch herunter laden und wie der Name schon vermuten lässt, nebst Windows und MAC , Euren kleinen Raspberry Pi damit versorgen und damit rumspielen und mit der Programmierung von Euren eigenen Sounds loslegen. Macht Euren Pi zum Loop-Synthesizer.

Woher bekomme ich es?​

Download & Infos: sonic-pi.net (Verfügbar für Windows, macOS, Linux & Raspberry Pi)
 

Telliminator

Sample-Collector
Sprechprobe
Link
Spielerrei-Code, Axel F, aber auch nur mit viel Wohlwollen


# Axel F (Beverly Hills Cop) - Full Multitrack Version (FINALE VERSION) use_bpm 117 # MELODIE-SPEICHER (Hauptthema) melody_notes = (ring :f4, :g4, :f4, :f4, :bb4, :f4, :eb4, :f4, :c5, :f4, :f4, :db5, :c5, :ab4, :f4, :c5, :f5, :f4, :eb4, :eb4, :c4, :g4, :f4) melody_durations = (ring 0.75, 0.75, 0.5, 0.25, 0.5, 0.5, 0.75, 0.75, 0.75, 0.5, 0.25, 0.5, 0.5, 0.75, 0.5, 0.5, 0.5, 0.25, 0.5, 0.25, 0.5, 0.5, 1.5) # AKKORD-STABS (Die typischen Begleit-Treffer) chord_notes = (ring :f3, :f3, :eb3, :bb3) # ======================================================== # 1. DRUMS (Robuster, fetter 80s Club-Beat) # ======================================================== live_loop :linndrum do # Der Tick zählt stetig hoch t = tick # Bassdrum auf jedem geraden Hauptschlag (1 und 3) sample :bd_tek, amp: 2 if factor?(t, 2) # Snare exakt auf Schlag 2 und 4 (jeder 4. halbe Schlag) sample :sn_generic, amp: 1.5, rate: 1.2 if factor?(t + 2, 4) # Laufende off-beat Hi-Hats für den Groove sample :drum_cymbal_closed, amp: 0.6 sleep 0.5 end # ======================================================== # 2. MAIN LEAD (Der schneidende Synthesizer) # ======================================================== live_loop :axel_lead do use_synth :saw use_synth_defaults attack: 0.01, decay: 0.1, sustain: 0.6, release: 0.1 with_fx :reverb, room: 0.6, mix: 0.3 do idx = tick note = melody_notes[idx] duration = melody_durations[idx] play note, amp: 1.2 play note + 12, amp: 0.4 # Zweite Stimme eine Oktave höher für die Breite! sleep duration end end # ======================================================== # 3. SYNTH BASS (Der knallige DX7-Bassliner) # ======================================================== live_loop :dx7_bass do use_synth :fm # Spielt ein durchgehendes Achtel-Fundament 8.times do |i| # Wechselt am Ende des Taktes die Noten current_bass = (i < 6) ? :f2 : (i == 6 ? :eb2 : :ab2) play current_bass, release: 0.18, amp: 1.5, depth: 3, divisor: 2 sleep 0.5 end end # ======================================================== # 4. CHORD STABS (Die analogen Brass-Einwürfe) # ======================================================== live_loop :poly_chords do use_synth :prophet chord_root = chord_notes.tick with_fx :reverb, room: 0.5, mix: 0.2 do # Spielt dreistimmige Akkorde parallel play_chord [chord_root, chord_root + 4, chord_root + 7], release: 0.5, cutoff: 90, amp: 0.5 sleep 4 end end # ======================================================== # 5. PERCUSSION FILL (Der hölzerne Marimba-Sound) # ======================================================== live_loop :marimba_fill do use_synth :pulse # Spielt alle paar Takte ein kurzes, hölzernes Intro-Fill if one_in(3) 4.times do play :f5, attack: 0, release: 0.08, amp: 0.4, width: 0.2 sleep 0.25 play :c5, attack: 0, release: 0.08, amp: 0.3, width: 0.2 sleep 0.25 end else sleep 4 end end

# Megalovania (Undertale Theme) - Fast & Heavy Edition use_bpm 120 # Die markanten Bass-Wechselnoten des Riffs (D -> C -> H -> B) bass_roots = (ring :d3, :c3, :b2, :bb2) # Die unverkennbare Hauptmelodie (wird über die Bassnoten wiederholt) megalo_melody = (ring :d4, :d4, :d5, :a4, :gs4, :g4, :f4, :d4, :f4, :g4 ) # Die exakten Notenabstände für den Synkopen-Rhythmus megalo_durations = (ring 0.25, 0.25, 0.5, 0.75, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25 ) # ======================================================== # 1. DRUMS (Harter Driving Rock/Metal Beat) # ======================================================== live_loop :heavy_drums do # Knallende Bassdrum auf jeder Viertelnote sample :bd_tek, amp: 2.5 # Aggressive Snare auf Schlag 2 und 4 (jeder 2. Beat) sample :sn_dnb, amp: 1.8 if factor?(tick, 2) # Schnelle Achtel-Hi-Hats für den Vorwärtsdrang sample :drum_cymbal_closed, amp: 0.5 sleep 0.5 sample :drum_cymbal_closed, amp: 0.3 sleep 0.5 end # ======================================================== # 2. MAIN LEAD (Der ikonische Chiptune/Synth-Lead) # ======================================================== live_loop :megalo_lead do use_synth :pulse # Ein Hauch von Hall macht den Sound episch und breit with_fx :reverb, room: 0.5, mix: 0.25 do # Durchläuft die 10 Noten der Melodie 10.times do idx = tick note = megalo_melody[idx] duration = megalo_durations[idx] # Die ersten zwei Töne passen sich immer dem aktuellen Basslauf an! if idx % 10 == 0 || idx % 10 == 1 # Holt sich die aktuelle Bassstufe aus der anderen Schleife via Time-State current_step = get[:current_bass_step] || :d4 # Setzt die Starttöne eine Oktave höher als den Bass note = (idx % 10 == 0) ? current_step + 12 : current_step + 12 end # Spielt die Note knackig ab (Sustain kurz für den Retro-Vibe) play note, pulse_width: 0.5, attack: 0, sustain: duration * 0.7, release: 0.05, amp: 1.2 sleep duration end end end # ======================================================== # 3. CHIPTUNE BASS (Der treibende, tiefe Bass-Lauf) # ======================================================== live_loop :chiptune_bass do use_synth :saw # Holt sich die nächste Bassnote aus dem Speicher current_note = bass_roots.tick # Teilt der Melodie-Schleife mit, auf welchem Ton wir gerade sind set :current_bass_step, current_note # Spielt den Bass synchron zum Takt im harten Achtel-Rhythmus with_fx :low_pass_cutter, cutoff: 80 do 4.times do play current_note, release: 0.2, amp: 1.6 sleep 0.5 play current_note, release: 0.2, amp: 1.2 sleep 0.5 end end end # ======================================================== # 4. BACKING SYNTH (Fette Power-Chords im Hintergrund) # ======================================================== live_loop :backing_chords do use_synth :prophet # Holt die gleiche Bassnote wie die Bassspur chord_root = bass_roots.tick with_fx :reverb, room: 0.6, mix: 0.3 do # Feuert breite, verzerrte Akkorde auf den Taktanfang play_chord [chord_root + 12, chord_root + 19, chord_root + 24], attack: 0.05, release: 3.5, amp: 0.4, cutoff: 95 sleep 4 # Hält genau einen vollen Takt lang end end
 
Zuletzt bearbeitet:

Strom

Tausendsassa
Hab es mir noch nicht ganz genau angeschaut - erinnert mich aber an meine ersten musikalischen/kompositorischen Gehversuche aufm C-64, wo ich die Melodie auf der Blockflöte komponiert und gespielt habe, dann mit Stift und Papier (und meinem Gehirn :LOL: ) die Note in Hex-Werte umgerechnet - und dann in den Soundmonitor von Chris Hülsbeck eingetippt habe - Note für Note, Pause für Pause - für alle 3 Spuren des SID.

Ach ja - da kommen Erinnerungen wieder ... werd gleich mal wieder den C-64 anwerfen.:love: .. ach ne - wollte ja am Hörspiel weiter arbeiten 🤭
 

Telliminator

Sample-Collector
Sprechprobe
Link
@Strom Ja, es ist ein wenig wie von Hand zu Fuß Musik programmieren. Nur das es ein Loop wird.

Der Code lässt sich auf der Webseite im Browser ausprobieren und laufen lassen. Klingt wie die alten Synthsounds aus den frühen 80er/90er der ersten Homecomputer.
 

Strom

Tausendsassa
Klingt wie die alten Synthsounds aus den frühen 80er/90er der ersten Homecomputer.
IMG_20261009_171341.jpg

Damit fing alles an ❤️
 
Hoerspielprojekt.de

Neu

Discord Server
Oben