Sonic Pi Workshop open education days 2021 - online
Aufzeichnung der Zoom-Videokonferenz
Nachgefragt wurde das Codebeispiel zum Stepsequencer mit Arrays. Im Video ab 51:40
use_bpm 120 BD = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0] HH = [1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1] SN = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0] live_loop :drums do 16.times do |i| puts i sample :bd_haus if BD[i]==1 sample :drum_cymbal_closed, amp: 0.9 if HH[i]==1 sample :sn_dolf, amp: 0.6 if SN[i]==1 sleep 0.25 end end
Vielen Dank an martina.friker@gmx.ch für dieses Cheatsheet von Sonic Pi:
![]()
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 ![]()
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:
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 Die utz-utz-box
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
Das Python Script zum Download:
![]()
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
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!
|
AutorChristian Dietz Archiv
Mai 2021
TAGS |
Proudly powered by Weebly