7 Broken Chords


Voor deze opdracht ga je gebroken akkoorden genereren bij het drukken van 1 noot op de kslider/keyboard (een akkoord waarvan de noten los achter elkaar gespeeld worden i.p.v. tegelijkertijd). Je maakt gebruik van logica/algoritmes zodat jouw akkoorden gegenereerd kunnen worden voor alle noten van het keyboard. Met delays ga je de noten gebroken spelen.

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. Solo note

Maak een [kslider]-object. Zorg dat het klikken op de kslider een midinoot afspeelt via [makenote] en [noteout]. Koppel de noot los van het octaaf, en gebruik een [number]-box om zelf het octaaf in te stellen van de gespeelde noot.

Tip: [%], [*], [+], [number], [kslider]

b. Major Chord Generator

Zorg er nu voor dat iedere keer dat de gebruiker een witte toets speelt je patch een majeur drieklank genereert, bij de zwarte toesten hoor je geen akkoord, alleen de losse noot.

Tip: [select], [trigger], [+], [message], [int]

c. Delay it!

Zorg er nu voor dat de terts in het akkoord met 250 ms vertraagt wordt en de kwint 500 ms. Maak een [slider] of [dial] object waarmee je de "spread" van het gebroken akkoord kunt beรฏnvloeden. Bedenk zelf je mapping, maar zorg ervoor dat de eerste delay altijd de helft van de tweede delay is! (Welke tijdseenheden jij wilt kunnen gebruiken en hoe de dial/slider deze beรฏnvloed)

Tip: [pipe], [delay], [dial], [slider], [*], [scale]

(cijfer: 6)

d. Chords in key

Maak het trappensysteem (scale degree) af van de C-majeur toonladder, zorg er hierbij voor dat op iedere witte toets de juist drieklank klinkt van die trap in de C-majeur toonladder. Dus: Cmaj (C E G), Dmin (D F A), Emin (E G B), etc. De zwarte toetsen genereren geen akkoord maar zijn wel nog steeds hoorbaar. Mocht je het trappensysteem van de westerse harmonieleer nog niet kennen, zoek dit dan eerst op op internet, of vraag uitleg bij je klasgenoten.

Tip: [select], [+], [int], [trigger], [message]

(cijfer: 7)

e. Include the octave

Verwijder de octave [number]-box en zorg dat je algoritme werkt voor elke noot op de [kslider] en vervolgens ook de drieklank in hetzelfde octaaf laat terughoren als de oorspronkelijk gedrukte noot.

Tip: [%], [/], [*], [+]

(cijfer: 8)


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

Ben je klaar met alle bovenstaande opdrachten? Kijk eens naar een of meer van deze opdrachten om je patch mee uit te breiden:

Random Chord Progressions

Maak een sequencer die met 1 druk op een button een willekeurige akkoordprogressie genereerd door enkele noten in een lijst op te slaan en deze vervolgens af te spelen in kwartnoten en via jouw algoritme omzet in akkoorden. Gebruik hiervoor: [uzi], [urn]/[random]/[drunk], [zl.group], [zl.lookup]

Meer toonladders

Maak een optie voor andere toonladders die gebruikt kunnen worden om akkoorden mee te genereren (bijvoorbeeld: mineur, dorisch, hexatonisch, of ga eens op zoek naar niet-westerse toonladders) en hun bijbehorende trappensysteem of breidt uit met septiem akkoorden. Probeer eens [bendout] te gebruiken zodat je kan afstappen van de 12-tone equal temperament stemming. Kijk eens naar objecten als: [zl.lookup], [expr], [vexpr], [coll].

Interpolated Chords

Verzin een systeem dat, zodra jij een volgend akkoord aanslaat, eerst een akkoord speelt dat halverwege het nieuwe akkoord en het vorige akkoord ligt. Hiervoor zul je moeten interpoleren. Je kunt beginnen met het gemiddelde nemen, maar je zou ook een systeem kunnen verzinnen dat meer stappen maakt om naar een ander akkoord toe te bewegen. Je kunt ook nog akkoorden laten genereren met verschillende liggingen en daar tussen interpoleren. Objecten als: [iter], [expr], [zl.group], [vexpr] kunnen van pas komen.