SYSBAS1A/MAX Practicum

8 - AlgoArp


Voor deze opdracht ga je een arpeggiator programmeren met enkele algoritmes. Deze arp herhaalt je gespeelde akkoord van een midi-keyboard of build-in keyboard, en gebruikt algoritmes om variaties te maken. De deelopdrachten a t/m c zijn verplicht, daarna kun je doorwerken aan d en e en eventueel de extra opdrachten doen.

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 de Max Cheat Sheet

Plaats comments (sneltoets "c") bij delen van je patch om voor jezelf duidelijk te maken 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.



a)

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].

Tip: [kslider], [notein], [makenote], [noteout], [thresh], [message], [stripnote]

b)

Maak een lijst met 3 midi-noten (bijvoorbeeld: 60 64 67). Gebruik een [metro] (in 16den-tempo) en een [counter] (tellend 0 tot 16)om opeenvolgend de noten uit de lijst af te spelen. Zorg dat je de metro aan/uit kunt zetten en het tempo kunt instellen in BPM.

Tip: [metro], [toggle], [counter], [message], [%], [zl.lookup]/[zl.mth]/[zl.nth]

c)

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: [zl.len], [%]

cijfer: 6

d)

Voeg een algoritme toe dat elke ronde dat de lijst met noten opnieuw wordt afgespeeld de lijst van hoog-naar-laag, van laag-naar-hoog of gescrambled wordt afgespeeld.

Tip: [zl.sort], [zl.scramble], [random], [gate]

cijfer: 7

e)

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: 8



EXTRA (cijfer: 9, 10, 10+ met eeuwige waardering!)


1. 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.

2. 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]

3. 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

4. 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].

5. GA LOS!