Lær hvordan man koder music live på raspberry pi eller din computer med Sonic Pi
Sonic Pi er en open-source programmeringsmiljø, designet til at lave nye lyde med kode i et live kodningsmiljø. Det var udviklet af Dr Sam Aaron ved University of Cambridge. Han brugte softwaren til at spille live med hans band. Denne ressource vil hjælpe med at introducere dig til det grundlæggende af Sonic Pi, så du kan programmere din egen music.
Ved at følge denne Sonic Pi vejledning på din Raspberry Pi, vil du lære:
Denne ressource bruger elementer fra den følgende sektion af Raspberry Pi Digital Making Curriculum:
Dette er Sonic Pi interfacet; det har tre hovedvinduer. Det største vindue er til at skrive din kode, og vi vil kalde det Programmeringspanelet. Der er også et output panel, der viser information omkring dit program, mens det kører. Når du klikker på help knappen øverst i vinduet, vil det tredje panel dukke op langs bunden og vise hjælpedokumentationen. Dette indeholder information omkring forskelligt kode du kan prøve, så vel som forskellige synth lyde, samples, og meget mere.
Kør Sonic Pi fra skrivebordet eller applikationsmenuen.
Vælg Buffer 1 og skriv:
play 60
Klik på play ikonet øverst på skærmen. Hvad sker der efterfølgende?
Hvad sker der, hvis du skriver pley 60
og trykker på play ikonet?
Dette er et eksempel på en bug i din kode. I de kommende aktiviteter, hvis error-panelet viser tekst, vil du vide, at du har en bug der skal fikses. Det kunne være, at du har stavet play
forkert.
Skriv nu:
play 60
play 67
play 69
Klik på play ikonet øverst på skærmen. Hvad sker der nu?
Computeren afspiller hver node i sekvens (en efter den anden), men det sker så hurtigt, at det for os lyder som om, at de afspilles samtidigt.
Vi bliver nødt til at fortælle computeren, at den skal holde pause imellem hver node. Vi kan gøre dette ved at skrive følgende kode efter hver play
:
sleep 1
Værdien indtastet efter ordet sleep
forestiller det antal sekunder, computeren skal holde pause. Værdien 1 skal forestille et sekund. Hvad ville du indtaste for halvdelen af et sekund?
Værdierne du har indtastet efter ordet play
skal forestille noder; de er faktisk MIDI nodetal. Dette betyder, at vi kan oversætte sange, der er spillet på et klaver, til Sonic Pi MIDI noder ved at bruge en tabel som denne:
C D E C
eller 60 62 64 60
i MIDI noder.
Musiknoder til MIDI noder Værdier
C | D | E | F | G | A | B |
---|---|---|---|---|---|---|
60 | 62 | 64 | 65 | 67 | 69 | 71 |
Dette er en ret lang proces, hvis du kender noderne til den sang, du prøver at spille. Med Sonic Pi kan du også bruge normal nodenotation.
play :c4
sleep 0.5
play :d4
sleep 0.5
play :e4
sleep 0.5
play :c4
sleep 0.5
Det er tid til at gøre dine melodier mere interessante! Vi kan gøre dette ved at ændre de brugte synthesizer lyde. Standardsynthen, som Sonic Pi bruger, er kaldt beep
.
For at bruge en anden synth, bliver du nødt til at tilføje koden use_synth :navn på synth
over den sekvens af kode, som du vil bruge den i.
I dette eksempel er fm
navnet af den brugte synth:
use_synth :fm
2.times do
play 60
sleep 0.5
play 67
sleep 0.5
end
Der er mange synths, der lyder seje, som er inkluderet med Sonic Pi. For at finde deres navne, klik på help ikonet øverst på skærmen for at vise hjælpedokumentationen. Vælg derefter Synths fra fanerne til venstre af hjælpevinduet. Klik på en af synth navnene for at få at vide, hvordan man bruger det.
Ikke nok med at du kan lave musik i Sonic Pi ved at bruge enkelte noder, men du kan også lave musik med samples. Samples er forudindspillede lyde eller melodier, som du kan indsætte i din musik. Dette er en meget simpel måde at få din musik til at lyde utroligt godt!
For at bruge en sample, skal du tilføje koden sample :navn af sample
i den sekvens af dit musikprogram, hvor du vil have det til at blive afspillet.
I dette eksempel er loop_amen
navnet på det brugte sample:
2.times do
sample :loop_amen
sleep 1.753
end
Der er mange samples inkluderet med Sonic Pi. For at finde deres navne, klik på help og derefter samples til venstre af hjælpevinduet. Klik på en af sample navnene for at få at vide, hvordan man bruger det.
Sonic Pi er blevet udviklet til at være en platform for live kodning af music, så koden kan blive manipuleret, ændret, og tilpasset i realtid; dette betyder, at programmører kan udføre deres kode i stedet for at afspille forudskrevet programmer. Lad os prøve det!
define :play_my_synth do
use_synth :prophet
play 50, attack: 0.2, release: 1.3
sleep 0.5
end
loop do
play_my_synth
end
#
symbol i starten af hver linje som vist her:# loop do
# play_my_synth
# end
Moderne synthesizere kan tilføje effekter til lyde. Sonic Pi er ikke anderledes på det punkt: du kan tilføje studioeffekter som rumklang, ekko, og forvrængning. For at tilføje effekterne bliver du selvfølgelig nødt til at bruge kode!
Åben et nyt worksheet og find et sample som du synes godt om, for eksempel sample :guit_e_fifths
Indsæt dit sample i en effektblok som i dette eksempel:
with_fx :reverb do
sample :guit_e_fifths
end
with_fx :reverb do
with_fx :distortion do
sample :guit_e_fifths
end
end
Det er muligt, at du nogen gange gerne vil få lyde til at spille i længere tid eller ved en anden hastighed. Dette kan let opnås ved at ændre parametrene af den kode, som du bruger.
Som et eksempel kan vi undersøge play 60
.
play
uden nogen parametre; lad os bruge nogen nu.play 60, attack: 1, release: 3
Tryk på play knappen for at høre, hvordan den ene node lyder. Attack og release styrer amplituden af en node over tid.
Prøv nu at ændre værdierne for attack og release for at se, hvordan disse parametre påvirker noden.
Der er mange andre parametre, som også kan ændre, hvordan et sample eller en synth lyder. Prøv at ændre værdierne for cutoff:
, pan:
, rate:
, eller amp:
.
For at få en fuld liste af parametre, klik på Help ikonet, og derefter på Samples. Vælg et sample og rul ned for at få en fuld forklaring for hver parameter, der kan bruges med det valgte sample. Det samme gælder også for synths!
Sonic Pi inkluderer et antal funktioner, der kan tilføje mere interessante elementer til din musik. En virkelig sjov funktion er rrand
, som vil sende en tilfældig værdi mellem to bestemte tal tilbage. Hvis du vil have en sej effekt, kan du bruge rrand
til at få cutoff til at hoppe rundt.
loop do
play chord(:a3, :minor).choose, attack: 0, release: 0.3, cutoff: 80
sleep 0.2
end
80
til at bestemme cutoff værdien, prøv at bruge rrand(40, 120)
som set her:loop do
play chord(:a3, :minor).choose, attack: 0, release: 0.3, cutoff: rrand(40, 120)
sleep 0.2
end
rrand
med andre parametre. For eksempel, tilføj pan: rrand(-1, 1)
til play chord linjen og derefter tryk play.Unless otherwise specified, everything in this repository is covered by the following licence:
Getting Started with Sonic Pi 2 by Sam Aaron and the Raspberry Pi Foundation is licensed under a Creative Commons Attribution 4.0 International Licence.
Based on a work at https://github.com/raspberrypilearning/sonic-pi-2-taster