3 Algorithmic Beat Slicer


Bij deze opdracht ga je een algoritmische beat slicer bouwen in Max. Eerst gebruik je een drumloop die standaard in Max zit, maar je kan daarna ook je eigen loops erin stoppen! De loop ga je "slicen" door er stukjes uit af te spelen in random volgorde, van random lengtes en in random ritmes met verschillende kansen.

Deadline: 19 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

  1. Maak de objecten [buffer~] en [play~]. Lees van allebei de objecten de help-files!
  2. Geef de [buffer~] een naam en laad hierin de sample jongly, brushes of drumloop met (replace) of via een argument, of met [loadmess].
  3. Sluit [play~] aan op een [gain~] en [ezdac~].
  4. Combineer vervolgens een [button], [random], en de (start $1 $2) message om bij elke klik op de button een stukje af te spelen van 100 milliseconden lang, startend op een willekeurige positie tussen 0 en 2500 milliseconden.
  5. 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!
  6. Met een [gate] en [toggle] kan je de loop nu tegenhouden.

Tip: [play~], [buffer~], [random], [+ 0.], [pack i i i], [message]

Extra: Je kunt het [waveform~] object gebruiken om de inhoud van de buffer te laten zien, en eventueel de slices ook, als selectie.

Luistervoorbeeld 1


b. Rhythmic Slicing

  1. Gebruik het [info~] object om de lengte (in ms) van de drumloop op te vragen.
  2. Gebruik de lengte om 1/8-ste deel van de slice te berekenen.
  3. Zorg er voor dat bij elke herhaling de startpositie een willekeurige veelvoud is van deze 8ste slice-lengte.

Tip: [info~], [/ 1.], [random], [* 1.], [+ 0.]

Luistervoorbeeld 2


c. Playback Speed

  1. Maak een toevoeging aan je patch die ervoor zorgt dat bij elke trigger van een slice de sample willekeurig een 0.5x, 1x of 2x zo snel wordt afgespeeld. Er zijn veel manieren om dit te doen, wat handige objecten staan hieronder.

Tip: [pack], [*], [random], [zl.lookup]

Luistervoorbeeld 3

(voldoende)


d. Probabilities

Maak de volgende toevoegingen aan je patch:

  1. 5% van de tijd wordt de sample reversed afgespeeld
  2. 30% van de tijd is het ritme in 16de slices in plaats van 8ste

Tip: [random], [> ], [< ], [gate], [switch], [message]

Luistervoorbeeld 4

(goed)


UITDAGING

(zeer goed)

  1. Koppel je beatslicer aan de OSC-communicatie opdracht van JavaScript. Gebruik de y-positie van 1 touch om de slice-positie te bepalen. Gebruik de x-positie om de afspeelsnelheid te veranderen. (Tip: Goed om te oefenen alvast voor de eindopdracht).

  2. Maak een beatslicer die uit 2 buffers (dus 2 verschillende loops) willekeurig kiest bij elke slice, om op die manier 2 loops te mixen. Gebruik een slider/dial om de kans te bepalen tussen de eerste en de tweede buffer. Eventueel kan je nog een manier verzinnen om het tempo gelijk te houden (dezelfde slice-lengtes gebruiken op basis van het BPM).