Øvelse: Samples
I denne øvelse arbejder du med sample-afspilning ved hjælp af PlayBuf
.
Klargøring af sample
Til brug i denne øvelse skal der indlæses et sample. Du kan bruge din egen lydfil, den skal blot have disse egenskaber:
- Samplet skal vare maksimalt 10 sekunder.
- Samplet skal være trimmet (brug hertil evt. Audacity), så der ikke er stilhed i begyndelsen eller slutningen af samplet.
- Samplet skal indlæses i mono.
Som forberedelse til de øvrige opgaver herunder:
- Indlæs et sample i en buffer gemt under variablen
~buffer
. - Hvis din lydfil er i stereo, kan du indlæse den første kanal med
.readChannel
(se kodeblokken herunder). - Hvis du ikke har en lydfil klar selv, kan du bruge den nederste linje herunder i stedet med et indbygget sample fra SuperCollider.
Indlæsning af sample
// Udfyld her med dit eget sample
~buffer = Buffer.read(s, );
// Brug .readChannel, hvis dit sample er i stereo
~buffer = Buffer.readChannel(s, channels: [0], path: );
// Hvis du ikke har en lydfil klar, kan du bruge et indbygget sample i stedet:
~buffer = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
Afspilning med PlayBuf
- Afspil dit sample ved dobbelt hastighed.
- Afspil dit sample ved halv hastighed.
- Afspil den sidste halvdel af dit sample.
- Afspil dit sample baglæns (bemærk, at dette kræver justering af enten
startPos
ellerloop
ogdoneAction
).
Sampleafspilning med PlayBuf
{
PlayBuf.ar(
numChannels: 1,
bufnum: ~buffer,
rate: BufRateScale.kr(~buffer) * 1,
trigger: 1,
startPos: BufFrames.kr(~buffer) * 0,
loop: 0,
doneAction: Done.freeSelf
)
}.play;
Afspilningshastighed
- Modulér afspilningshastigheden ved at fjerne
//
'erne for en række forskellige LFO'er herunder. - Notér i kommentarer, hvilken effekt de forskellige modulatorer har på den æstetiske oplevelse.
Modulation af afspilningshastighed
{
var rate = 1; // afkommentér linjerne herunder for eksempler
// rate = LFPulse.kr(1).range(0.5, 2);
// rate = SinOsc.kr(1).range(-1, 1);
// rate = SinOsc.kr(1).range(0.5, 2);
// rate = SinOsc.kr([1, 1.02]).range(1, 1.5);
// rate = LFNoise1.kr(2.dup).exprange(0.5, 4);
// rate = Line.kr(-5, 5, 10, doneAction: 2);
PlayBuf.ar(
1,
~buffer,
BufRateScale.kr(~buffer) * rate,
loop: 1,
doneAction: Done.none
);
}.play;
Lydcollage-komposition
Fremstil en abstrakt lydcollage. Kompositionen skal baseres på ét sample og realiseres ved at bruge patterns sammen med en udleveret SynthDef.
- Indlæs SynthDef'en fra afsnittet om lydcollage.
- Vælg og indlæs et sample, som...
- ... indeholder en vedvarende lyd (dvs. uden lange pauser i lyden).
- ... varer mellem 2 og 10 sekunder.
- ... tonalt set er relativt enkel og stabil.
- ... indeholder én monokanal (indlæs blot én kanal, hvis din ønskede fil er stereo-format).
- Modificér
Pbind
'en herunder ved at erstatte faste værdier med patterns, således at vi hører en klangligt varieret lydcollage baseret på det valgte sample.
Indlæs et sample
// Erstat stien med en sti til din egen lydfil
~vedvarendeLyd = Buffer.readChannel(s, "C:/lydfiler/minSejeLydfil.wav", [0]);
Samplecollage genereret med patterns
TempoClock.tempo = 60/60;
Pbind(
\instrument, \collage,
// PlayBuf-indstillinger
\buffer, ~vedvarendeLyd,
\startPos, 0,
\transpose, 0,
\loop, 1,
\direction, 1,
// Timing og overlap
\dur, 1,
\legato, 1,
// Klang
\drive, 0.1,
\cutoff, 1000,
\rq, 0.5,
// Panorering og lydstyrke
\pan, 0,
\db, -20,
\atk, 0.1, \rel, 1,
).play;