Sonic Pi
Sonic Pi is een programmeeromgeving (IDE) voor muziek. Je kan er muziek in programmeren en eventueel tegelijk uitvoeren.
Ze is ontwikkeld voor Pixel op de Raspberry Pi, Pixel draait nu ook op gewone pc hardware.
Een klein geheugensteuntje bij gebruik:
Concept, programmeer-strukturen, eigenaardigheden, ...
Programmeerstrukturen (ga eerst naar concept)
1. Lineair
play 50 # speel deze toon
–
play 50
play 60 # en speel deze toon (tegelijk!!)
–
play 50
sleep 1
play 60 # begin deze toon na 1 wachttijd
–
2. Loop
n.times do
play x
sleep y
end
–
live_loop :myname do play x sleep y end
Deze blijft doorlopen tot je zelf manueel stopt of hij crasht, en wordt gebruikt bij het live performen.
3. Choose
r = [0.125, 0.25, 1].choose
play n, release: r
4. tick
notes= (ring :E4, :Fs4, :B4)
live_loop :slow do
play notes.tick
sleep 0.3
end
5. shuffle
(schud een lijst dooreen?)
6. one_in
one_in(2)
geeft TRUE of FALSE met probability 2
Concept, programmeer-strukturen, eigenaardigheden, ...
1. Code
Een tekstverwerkervenster waarin je “sonic pi” code schrijft om de muziek te definiëren.
Als je op “run” drukt, wordt de huidige editor-code uitgevoerd.
Er zijn verschillende tab-bladen, die “buffer” genoemd worden. Je kan elke buffer van eigen code voorzien, en iedere buffer wordt apart opgestart. Je kan een buffer niet stoppen, je kan enkel de hele uitvoering stoppen.
2. ring
ringnaam = (ring :e3, :e3, :r, :g3, :r, :r, :r, :a3)
melodie van opeenvolgende noten en rusten, op te roepen met optionele parameters:
play ringnaam.tick, release: 0.25, cutoff: 80
3. random
Random (altijd dezelfde) waarde vragen met:
print rand
Dat is de eerste van 441.000 random getallen die gegenereerd werden bij het starten.
rand = random
rrand = random uit een reeks
rrand_i = random geheel getal uit een reeks
one_in = geeft true of false met een gegeven probabiliteit
dice = waarde van 1 tot 6
choose = kiest random waarde uit een lijst
Om een muziekuitvoering voorspelbaar te houden is de random geen echte random, maar een op voorhand bepaalde reeks van waarden. Je kan naar een startpunt in die reeks springen met
use_random_seed 3
gebruik
play rrand_i(50, 95)
mycofreq = rrand(30, 100)
play n, cutoff: mycofreq
sample: drum_bass_hard, rate: r, amp: rand
4. geluiden
Emulaties bekende synths:
use_synth :tb303 / :prophet
use_synth :blade / :hoover / :piano /
Synthetiseren
use_synth :fm / :dsaw / :supersaw / :pulse / : subpulse
Parameters bv:
note, amp, pan, a d s r, a d s_level env_curve, cutoff
vibrato_rate, vibrato_depth, vibrato_delay, vibrato_onset
detune, divisor, depth, vel, hard, stereo_width, …
5. filter fx
with_fx :bitcrusher do play 50 end
with_fx :compressor do play 50 end
with_fx :echo do play 50 end
with_fx :flanger do play 50 end
with_fx :krush do play 50 end
with_fx :lpf do play 50 end
(low pass filter)
with_fx :pan do play 50 end
(pan -1..0..+1)
with_fx :slicer do play 50 end
(phase in-out)
with_fx :panslicer do play 50 end
(stereoverschuiving, phase 0.25 …)
with_fx :reverb do play 50 end
with_fx :wobble do play 50 end
(modulate rlpf, rhpf filters)
6. samples
sample: ambi_choir / bd_haus / bd_tek / loop_industrial / ..
parameters:
start, finish, norm, window_size, pich_dis, time_dis
amp, pan, rate, res, cutoff,
attack, decay, sustain, release, a d s_level
env_curve, cutoff_env_curve, cutoff_min
cutoff_a d s r_level
Concept, programmeer-strukturen, eigenaardigheden, ...
Eigenaardigheden
of (voor mij) onbeantwoorde vragen
1. Buffer af?
je kan een buffer aktiveren door alt-R, maar je kan een buffer NIET UITSCHAKELEN. Dan moet je in de code iets doen (uitcommenten, de code wegknippen, enz) en dan terug alt-R in die buffer om hem in de volgende loop te doen zwijgen.
2. …