Sonic Pi - Musik coden - Code klingt
  • Home
  • Sonic Pi - Die Sprache
  • Was kann Sonic Pi?
  • Sonic Pi - Blog
  • Contact

Neue Klänge

11/26/2019

0 Kommentare

 
Neue Klänge mit www.alphornexperience.ch und Sonic Pi an der SMI-Tagung vom 16.11.19.
Dank geht an:
Mike Maurer, Heinz Maeder
​Schulinformatik des Kantons Bern, IWM, PHBern
sonicpi_alphornexperience.rb.zip
File Size: 1 kb
File Type: zip
Datei herunterladen

Bild
0 Kommentare

Sonic Pi Blockwoche - OSZ Täuffelen

5/23/2018

0 Kommentare

 
Im Rahmen einer Projektwoche führte Lehrer R. Morgenthaler vom Oberstufenzentrum Täuffelen im Mai 2018 eine Gruppe von 15 Knaben in Sonic Pi ein mit dem Ziel, am Ende der Woche vor Publikum live Musik zu programmieren. Das Projekt wurde vor Ort unterstützt von C. Dietz und N. Steinbach von der PH Bern.
Die Woche mit dem abschliessenden «Live Coding» vor Publikum aus Schule und Dorf war ein Erfolg fürs Leitungsteam, für die Jugendlichen und auch fürs Publikum. Hier sind die wichtigsten Erkenntnisse von Lehrer R. Morgenthaler, welche hoffentlich für andere Live-Coding-Projekte mit Jugendlichen hilfreich sein können:
  • Alle Jugendlichen sollen wenn möglich einen eigenen Computer zur Verfügung haben.
  • Einen kräftigen Verstärker mit Lautsprecher und einem langen Kabel auftreiben, damit all die coolen Sounds genug Volumen erhalten.
  • Kurze Inputs geben und die Jugendlichen viel üben lassen.
  • Regelmässig Zwischenresultate präsentieren und Feedback geben für gegenseitige Inspiration.
  • Nicht erwarten, die die Jugendlichen mit Sonic Pi so arbeiten, wie du es tun würdest. Sei offen für ihre eigene Art, das Programm zu nutzen.
  • Falls du als Lehrer Fragen nicht beantworten kannst: Verweise sie aufs Programm-Tutorial oder die Sonic-Pi-Webseite.
  • Lass nach ersten Gehversuchen jeden Jugendlichen ein Live Coding nach einer Kriterienliste vorbereiten, das sie zuerst erarbeiten und dann üben. Beispielsweise:
    • 1 – 3 Minuten
    • Deine Aktivität ist sichtbar am Beamer
    • Eigene Elemente verwenden
    • Einen Aufbau planen: Anfang, Hauptteil, Ende
  • Lass sie zu diesen Kriterien regelmässig Feedback geben und erhalten.
  • Ermutige die Jugendlichen, eigene Samples herzustellen. Alle unsere besten Produkte verwendeten Sound-Samples; heruntergeladen von Youtube und mit Audacity zugeschnitten.
  • Mach die Beamer-Projektion bei der Vorführung so gross wie möglich.
  • Organisiere das Live Coding wenn möglich so, dass jeder Jugendliche auf dem «Präsentations-Computer» einen eigenen Programm-Puffer zugeteilt hat, in den er seinen Code vorgängig kopieren kann.
  • Bevor die Jugendlichen vor Publikum auftreten: nimm dir einige Minuten Zeit, dem Publikum zu erklären, wieso programmieren in die Schule wichtig ist. Und gib eine Einführung in die Arbeitsweise beim Live Coding – insbesondere zu den Live Loops - damit die Zuschauer versuchen können, die Aktivität am Beamer zu verstehen.
In dieser Youtube-Playlist finden sich die besten 5 Beiträge von 15 Jugendlichen. Sie sind in aus Klasse 8 oder 9 nach 5 Halbtagen Arbeit mit Sonic Pi. Einige der präsentierten Elemente entstanden mit Hilfe der Unterstützer der PH Bern.
Die restlichen 10 Beiträge waren deutlich weniger attraktiv und enthielten deutlich weniger eigene Elemente. Manche waren eher ein «Vorzeigen verschiedener Live Loops». Dennoch genossen es die Besucher, solange die Beiträge nicht allzu lang ausfielen. Insbesondere die Eltern…
Ohne die zwei Unterstützer von der PH Bern hätte ich nicht mehr als 5 – 7 Jugendliche betreuen wollen und können.

Happy live coding!
R. Morgenthaler
0 Kommentare

Sonic pi - OSC

7/18/2017

0 Kommentare

 

Die utz-utz-box

Bild
Die Utz-Utz-Box* ist eine mit einem Raspberry Pi betriebene 16-Steps OSC Box.
In der Version 3 kann Sonic Pi nun Midi, OSC und auch Audio Inputs verarbeiten. Die Möglichkeiten von Sonic Pi wachsen dadurch natürlich erheblich.
Die Utz-Utz-Box sendet mit einem Python Script die OSC Nachricht über WLAN. Ein Rechner mit Sonic Pi muss also ebenfalls im gleichen Netz stehen.
Theoretisch lassen sich natürlich nun mehrere Utz-Utz-Boxen im Netz betreiben. Momentan sind 16 verschiedene "States" möglich,
welche mit den 4 Switches oben mit Binär-Code "programmiert" werden. Mit den States wird dann die Adresse gebildet und die 16 Switch-Stellungen werden ganz einfach mit einem 16 stelligen 1-0-String als Arguments in einem Array mitgesendet.
Bsp.:
state1 ["1000100010001000"] für einen 4 on the floor Bassdrum
state2 ["1110111011101110"] als Hihat-Pattern

Innerhalb der Box befindet sich der Raspberry und eine Power-Bank. Die Verkabelung ist denkbar einfach.
​Jeder Switch kommt an einen GPIO Pin UND an 3V auf dem Raspberry.
Bild
Das Python Script zum Download:
Utz-Utz-Box Python Script
File Size: 1 kb
File Type: zip
Datei herunterladen

Das Script muss auf dem Raspberry Pi in den Autostart aufgenommen werden -> mehr dazu hier

In Sonic Pi müssen die OSC Nachrichten nun verarbeitet werden.
Im folgenden Video wird dies mit 2 live_loops pro Sound gemacht.
Der erste loop wartet mit "sync" jeweils auf einen bestimmten "State". ZB "state1" für die Bass Drum.
kik = [""]    # Array muss zuerst angelegt werden

live_loop :python_osc_kik do
  kik = sync "/osc/state1"
end

live_loop :kik do
  kik_aufgesplittet = kik[0].split(""). # splittet in einzelne Zeichen auf
  zaehler = 0
  16.times do
    sample :bd_haus, amp: 1 * kik_aufgesplittet[zaehler].to_i    # 1 * 0 = 0 Volume -> Pause
    sleep 0.25  # 16tel
    zaehler = zaehler + 1
  end
end

* thx to Gregor Luetolf für den Namen
0 Kommentare

open education days 2017

4/27/2017

 
Zusammenfassung Sonic Pi Workshop open education days 2017, Brugg
# open education days 29.04.17
#
##################### Sonic Pi #################
#
# christian.dietz@phbern.ch
# ----------------------------------------------
# Sonic Pi's API in 10 Min
# ----------------------------------------------
# Kinderlied coden
# ----------------------------------------------
# Ein paar Gedanken zu live coding und Schule
# Was kann Sonic Pi bieten?
# ----------------------------------------------
# Was ist sonst noch möglich?
# ----------------------------------------------
# Rocking mit Sonic Pi - ein Algorave(-versuch;))
# ----------------------------------------------

​Sonic Pi's API in 10 Min ist hier  zu  finden.

Bruder Jakob als Kanon im rtf Format zum Downloaden. Nicht direkt vom Browser kopieren, da der Zeilenumbruch sonst nicht funktioniert.

Sonic Pi bietet spannende Möglichkeit textbasiertes Programmieren mit dem Fach Musik zu kombinieren. Mit wenigen einfachen Anweisungen, ist der Einstieg schnell zu schaffen.
Die verschiedenen Zugänge zu Sonic Pi sind unter "Was kann Sonic Pi?" zu finden.

Sonic Pi kann natürlich auch einfach wav und aiff Files abspielen. Diese müssen nur irgendwo lokal auf der Festplatte liegen. Mit einer Pfadangabe lassen sie sich dann abspielen.​
test = "~/Dropbox/Tagung_19_11_16/bobbyFeeling.aiff"

blop = (0..1).step(1/16.0).each_cons(2).collect do |s, f|
  {start: s, finish: f}
end.ring

puts blop

Ein Sample lässt sich über start und stop Angaben auch stückchenweise abspielen. 0 ist hier immer der Anfang des Sampels, 1 das Ende. In der Variable blop stehen nun die Start und Stop Werte bei 16 Schritten - dies als Ringbuffer, d.h. am Ende wird Sonic Pi wieder zum Anfang springen. 

(ring {:start=>0.0, :finish=>0.0625}, {:start=>0.0625, :finish=>0.125}, {:start=>0.125, :finish=>0.1875}, {:start=>0.1875, :finish=>0.25}, {:start=>0.25, :finish=>0.3125}, {:start=>0.3125, :finish=>0.375}, {:start=>0.375, :finish=>0.4375}, {:start=>0.4375, :finish=>0.5}, {:start=>0.5, :finish=>0.5625}, {:start=>0.5625, :finish=>0.625}, {:start=>0.625, :finish=>0.6875}, {:start=>0.6875, :finish=>0.75}, {:start=>0.75, :finish=>0.8125}, {:start=>0.8125, :finish=>0.875}, {:start=>0.875, :finish=>0.9375}, {:start=>0.9375, :finish=>1.0})

Der folgende Code spielt nun den Sample test ab. Immer zu den blop Zeiten. In der zweiten Hälfte werden die Schnippsel von test aber nun mit choose zufällig gewählt. Somit ergibt sich eine neue Abfolge. Beat 3 und 4 werden somit immer zufällig generiert.
live_loop :blabla do
  8.times do
    sample test, blop.tick, rpitch: (knit 0, 32, -5, 16, 0, 16).tick(:bob)
    sleep 0.25
  end
  8.times do
    sample test, blop.choose, rpitch: (knit 0, 32, -5, 16, 0, 16).tick(:bob)
    sleep 0.25
  end
  tick_reset
end

​Rocking Sonic Pi
thx to Xavier Riley  for the code idea!

    Autor

    Christian Dietz

    Archiv

    November 2019
    Mai 2018
    Juli 2017
    April 2017

    TAGS

    Alle
    Live Coding
    OSC
    Projektwoche
    Schule

Proudly powered by Weebly
  • Home
  • Sonic Pi - Die Sprache
  • Was kann Sonic Pi?
  • Sonic Pi - Blog
  • Contact