SYSBAS1A/MAX Practicum

6 - Random Drum Machine


Voor deze opdracht ga je een random drum machine programmeren. Het ritme en tempo gaat bepaald worden door verschillende vormen van randomness in Max. 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 [makenote] - [noteout] combinatie en stel het channel argument in op 10 zodat je met midinoten drumgeluiden hoort. Zorg dat je met het klikken op een [button] de kick hoort.

Tip: [makenote], [noteout], [button], [message]

b)

Maak een [metro] aan waarvan je de BPM kan instellen met een number-box. Zet de BPM op 108, maar zorg ervoor dat de metro bangs uitstuurt op het tempo van de 16de noten (dus 4x meer bangs dan bij kwartnoten). Sluit een [counter] aan op de metro en zorg er vervolgens voor dat de kick alleen elke kwartnoot klinkt. Zorg dat het BPM bij het opstarten van je patch al correct in de number-box staat en de operators de goede argumenten hebben.

Tip: [number], [metro], [!/ 0.], [* 0.], [counter], [%], [sel], [message], [loadmess],

c)

Gebruik het [random] object om een willekeurig getal van 0 tot 100 te genereren voor elke bang van de metro (elke 16de-tel). Zorg met behulp van een vergelijking-object dat er een snare 30 procent van de tijd afgespeeld wordt. Voeg een number-box toe zodat je het percentage kan veranderen, en zorg dat de number-box met de goede waarde opstart.

Tip: [random], [<] / [>] / [<=] / [>=], [sel], [number], [loadmess], [message]

cijfer: 6

d)

Voeg een hihat toe, en zorg dat deze altijd op alle 8ste-noten speelt, en daarnaast op de 16de noten daartussen maar 15 procent van de tijd.

Tip: [%], [sel], [random], [<]/[<=]/[>]/[>=]

cijfer: 7

e)

Maak een algoritme dat de drummachine laat schommelen in het tempo. Voeg het [drunk] object toe. Laat het drunk-object elke 16de tel een random waarde genereren tussen 0 en 30 met steps van 3.

Het tempo mag nooit meer of minder dan 15 BPM veranderen vanuit het ingestelde BPM. (voorbeeld: ingesteld BPM = 108, dan is het minimum 108 - 15 = 93 en het maximum 108 + 15 = 123).

Je moet ook nog in staat zijn om een nieuw BPM in te stellen waar omheen het tempo dan gaat schommelen.

Tip: [drunk], [trigger b f], [number], [-], [+]

cijfer: 8



EXTRA (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:

1. Maak een algoritme dat in de laatste maat van een aantal (instelbare!) maten altijd een random fill speelt over de toms

2. Voeg een algoritme toe dat, wanneer de snare gespeeld wordt op de plek van een kick, de kick niet laat spelen.

3. Breid je patch uit waardoor je de kans van een snaredrum per tel apart kan beïnvloeden.

4. Er bestaat niet zoiets als true-random, en veelal wordt random gegenereert op basis van een "seed" (wat vaak de tijd is). Bekijk de help-file van [random] en hoe je zelf de seed kunt instellen. Maak een algoritme dat elke maat de seed van de random-number-generator reset, en daardoor een herhalend random patroon genereert.

5. Bouw verder met de bovenstaande toevoegingen! GA LOS!