4 Algorithmic Beat Slicer
Bij deze opdracht ga je een algoritmische beat slicer bouwen in Max. Je gebruikt een drumloop die standaard in Max zit, maar je kan ook je eigen loops erin stoppen! De loop ga je vervolgens "slicen" door er stukjes uit af te spelen in random volgorde, van random lengtes en in random ritmes.
Deadline: 20 maart
Belangrijke objecten in deze opdracht:
Belangrijk:
Gebruik de help-files (alt-click). Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.
Plaats comments om duidelijk te maken dat je snapt hoe iets werkt.
Maak je patch netjes en overzichtelijk voordat je hem laat beoordelen!
a. Slice a Sample
- Maak de objecten
[buffer~]
en[play~]
. Lees van allebei de objecten de helpfiles! - Geef de
[buffer~]
een naam en laad hierin de sample jongly, brushes of drumloop met(replace)
of via een argument of loadmess. - Sluit
[play~]
aan op een[gain~]
en[ezdac~]
. - Combineer vervolgens een
[button]
,[random]
, en de(start $1 $2)
message om bij elke klik op de button een stukje af te spelen van100
milliseconden lang, startend op een willekeurige positie tussen0
en4000
milliseconden. - Zorg dat, wanneer het stukje klaar is, er weer een nieuwe waarde gegenereert wordt en afspeelt. Gebruik hiervoor de rechter outlet van
[play~]
(of stuur een bang vanuit een[delay]
met dezelfde lengte als de afspeeltijd). Er ontstaat dus een loop!
Tip:
[play~]
,[buffer~]
,[random]
,[+ 0.]
,[pack i i i]
,[message]
Extra: Je kunt het [waveform~]
object gebruiken om de audio weer te geven en de stukjes daarin ook weer te geven als selectie.
b. Rhythmic Slicing
- Gebruik het
[info~]
object om de speellengte van de drumloop op te vragen. - Gebruik die lengte om 1/8ste deel van de loop te berekenen.
- Zorg er voor dat bij elke herhaling de startpositie een willekeurige veelvoud is van deze 8ste slice-lengte.
Tip:
[info~]
,[/ 1.]
,[random]
,[* 0.]
,[+ 0.]
c. Playback Speed
- Maak een toevoeging aan je patch die ervoor zorgt dat bij elke herhaling de sample willekeurig een
0.5x
,1x
of2x
zo snel wordt afgespeeld. Er zijn veel manieren om dit te doen, wat handige objecten staan hieronder.
Tip:
[pack]
,[*]
,[random]
,[zl.lookup]
(voldoende)
d. Probabilities
Maak de volgende toevoegingen aan je patch:
- 5% van de tijd wordt de sample reversed afgespeeld
- 30% van de tijd is het ritme in 16de slices in plaats van 8ste
Tip:
[random]
,[> ]
,[< ]
,[gate]
,[switch]
,[message]
(goed)
UITDAGING
(zeer goed)
-
Koppel je beatslicer aan de OSC-communicatie opdracht van JavaScript. Gebruik de y-positie van de lijn om de slice-positie te bepalen. Zorg dat de loop in stand blijft, dus drukken op de spatiebalk genereert een random positie, die bepaald de slice-positie in Max, zodra de slice is afgelopen wordt er weer een bang terug gestuurd.
-
Gebruik de principes van de beatslicer om een granulaire synth te maken. Maak de granulaire synth in een aparte patch (dus bewaar je slicer!). De grains worden korter, spelen sneller achter elkaar, en de random positie voor de volgende grain ligt op een willekeurige afstand van de vorige. Tip: drunk, scale, slider. Probeer de slicer nu polyfoon te maken door te werken met abstractions. Bekijk eens de help-file en documentatie van
[poly~]
.