8 Algo Arp
Opdracht 8 van 9
Voor deze opdracht maak je een arpeggiator met een algoritme dat afspeelvolgordes van de noten veranderd. Vervolgens voeg je een velocity sequencer toe of gebruik je midi-keyboard input om noten te kunnen selecteren voor de arp.
Deadline: 12 December
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. Note sequencing
- Maak een lijst met 6 midi-noten (bijvoorbeeld:
60 72 64 69 67 57
). - Gebruik een
[metro]
in 16de-tempo met BPM input op 135 (via een user-interface aanpasbaar). - Gebruik een
[counter]
(tellend 0 t/m 15),[% 6]
en[zl.lookup]
om opeenvolgend de noten uit de lijst af te spelen via[makenote]
-[noteout]
combinatie.
Handige objecten: [toggle]
, [metro]
, [counter]
, [%]
, [message]
, [zl.lookup]
b. Shuffle & sort
Voeg een algoritme toe dat elke maat de lijst transformeert. Het algoritme kiest willekeurig tussen een van hoog-naar-laag
, van laag-naar-hoog
of shuffle
transformatie.
Handige objecten: [select]
, [zl.sort]
, [zl.scramble]
, [random]
, [gate]
/[switch]
c. More sequencing (velocity)
- Maak een
[multislider]
met 7 sliders tussen 0 en 127 (instellen in de inspector). - Zorg ervoor dat voor elke keer dat een noot gespeeld wordt het volgende getal uit de output van de multislider gekozen wordt.
- Gebruik dat getal om de velocity aan te sturen.
Handige objecten: [multislider]
, [%]
, [zl.lookup]
, [message]
, [+]
, [trigger]
(voldoende)
d. Perform it!
-
Maak een
[kslider]
en een[notein]
aan. Stel de[kslider]
in op polyphonic mode in de inspector. Sluit de[notein]
aan op de kslider en open de KeyMidi (onder Extras) of gebruik een extern midi-keyboard via USB om je gespeelde noten zichtbaar te maken in de patch. Speel de pitch van de[kslider]
af via makenote en noteout. -
Gebruik nu het
[thresh]
object om binnen 100 milliseconden een lijst te maken van de note-on pitches die gespeeld worden (filter dus de note-off berichten met[stripnote]
). Geef je output van[thresh]
weer in een[message]
. -
Vervang de lijst die je zelf hebt ingevuld voor de output van het
[thresh]
object. Maak een aanpassing zodat het afspelen van de noten ook werkt met een lijst van meer of minder dan 5 items.
Tip: [kslider]
, [notein]
, [makenote]
, [noteout]
, [thresh]
, [message]
, [stripnote]
, [zl.len]
, [%]
(goed)
Uitdaging
(zeer goed, minimaal 2 maken)
Ben je klaar met alle bovenstaande opdrachten? Kijk eens naar een of meer van deze uitdagingen om te onderzoeken en je patch mee uit te breiden:
-
Laat de arpeggiator alleen spelen wanneer je noten ingedrukt houdt. Als je noten los laat gaat die weer uit. Tip: Gebruik de velocity note-off message of kijk eens naar
[borax]
. -
Zorg dat je noten 1-voor-1 kunt toevoegen of verwijderen terwijl je al andere noten ingedrukt houdt. Tip: Kijk naar de objecten
[bag]
,[zl.group]
en[borax]
-
Voeg een algoritme toe om de velocity lijst om de x-maten te kunnen veranderen. Tip: bekijk de verschillende
zl.
objecten of kijk naardrunk
/urn
/random
,uzi
enzl.group
. -
Maak het mogelijk om een toonladder in te stellen en zorg dat alle noten die niet passen binnen de toonladder gemapped worden naar de dichstbijzijnde noot die wel past. Bijvoorbeeld: in C-mineur wordt een E gespeeld, deze wordt dan een Eb of F. Tip: Kijk naar
[coll]
,[umenu]
,[zl.lookup]
.