8 Algo Arp
Voor deze opdracht ga je een arpeggiator programmeren met een algoritme dat afspeelvolgordes van de noten veranderd. Vervolgens kan je een velocity sequencer toevoegen of een akkoord van een midi-keyboard of build-in keyboard laten oppikken dat de arp vervolgens herhaalt.
Deadline: 26 November
Belangrijke objecten in deze opdracht:
Snap je de functie van een object niet? Gebruik alt-click op het object om er meer over te weten te komen. Help-files in Max bestaan uit werkende programma's, zodat je meteen de toepassing van het object kan zien. Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.
Plaats comments (sneltoets c
) bij delen van je patch om voor jezelf en ons duidelijk te maken dat je snapt wat er gebeurd en hoe iets werkt. Dit wordt documentatie genoemd, en kan je helpen jezelf te herinneren als je een week later (of een maand/jaar) weer eens de patch opent. Ook helpt dit ons gerichte vragen te stellen bij het aftekenen.
Maak je patch netjes en overzichtelijk voordat je hem laat aftekenen!
a. Note sequencing
Maak een lijst met 5 midi-noten (bijvoorbeeld: 60 64 67 69 72). Gebruik een [metro]
(in 16den-tempo met BPM input) en een [counter]
(tellend 0 tot 16) om opeenvolgend de noten uit de lijst af te spelen via [noteout]
-[makenote]
combinatie.
Tip: [toggle]
, [metro]
, [counter]
, [%]
, [message]
, [zl.lookup]
b. Shuffling
Voeg een algoritme toe dat elke maat de lijst van hoog-naar-laag, van laag-naar-hoog of geshuffled wordt afgespeeld.
Tip: [sel]
, [zl.sort]
, [zl.scramble]
, [random]
, [gate]
(cijfer: 6)
c. More sequencing (velocity)
Maak een [multislider]
met 5 sliders tussen 0 en 127. 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.
Tip: [multislider]
, [%]
, [zl.nth]
/[zl.mth]
/[zl.lookup]
, [message]
, [+]
, [trigger]
(cijfer: +1)
d. Play 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). 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 3 items.
Tip: [kslider]
, [notein]
, [makenote]
, [noteout]
, [thresh]
, [message]
, [stripnote]
, [zl.len]
, [%]
(cijfer: +1)
Uitdaging (cijfer: 9, 10, 10+ met eeuwige waardering!)
-
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.
-
Zorg dat je ook 1 noot kunt toevoegen of verwijderen zonder je andere vingers van de toetsen te halen. Tip: Kijk naar de objecten
[bag]
en[zl.group]
-
Voeg algoritmes toe om de velocity per maat of cycle te kunnen veranderen. Tip: bekijk de verschillende zl. objecten of kijk naar drunk/urn/random, uzi en zl.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]
.