4. Algoritmische bewerkingen


* Uitgedeeld op 7 november 2024.
* Deadline: aftekenen in de les, uiterlijk 28 november 2024.
* Met deze opdracht denken we dat je zo'n 1 - 3 uur bezig bent tot deel e. Voor verdere stappen ben je waarschijnlijk wat meer tijd kwijt.
* Bronnen bij deze opdracht: Syllabus | P5.js reference
* Schrijf commentaar bij de code die je maakt, zodat duidelijk wordt wat je doet.

a. Werk door op de sequencer

Je werkt voor deze opdracht door op de sequencer uit de vorige opdracht. Dus kopieer deze om hier mee verder te kunnen werken. Maak een nieuw project in je CSDOSC map door opdracht2_sequencer te kopiΓ«ren en deze naam te geven: opdracht3_algoritmische_bewerkingen.

gebruik hiervoor het commando

cp -rn opdracht2_sequencer opdracht3_algoritmische_bewerkingen

Start csdosc door in de terminal npm start te typen in de csdosc map.


b. rotatie

  1. Maak een functie die alle elementen uit een array die je aan de functie meegeeft 1 positie naar rechts verschuift. Bedenk welke array-functies die je hier in de syllabus vindt je daar bij nodig hebt.

De code zou het volgende resultaat moeten geven:

console.log(rotateRight([1, 2, 3, 4])); 
//output in de console is dan [4, 1, 2, 3]

Als je moeite hebt om te bedenken welke array-functies je nodig hebt om dit te realiseren, ga dan elke functie die in het genoemde hoofdstuk in de Syllabus staat langs, bekijk wat ze doen en kom er zo achter wat je nodig hebt.
Dus:

let lijst = [1,2,3,4];
console.log(lijst.shift(),lijst);
console.log(lijst.pop(),lijst);
//enzovoorts
  1. Maak een functie die alle elementen uit een array die je aan de functie meegeeft 1 positie naar links verschuift. Bedenk welke array-functies die je hier in de syllabus vindt je daar bij nodig hebt.

De code zou het volgende resultaat moeten geven:

console.log(rotateLeft([1, 2, 3, 4])); 
//output inde console is dan [2, 3, 4, 1]

c. trigger een functie met je keyboard

Zorg ervoor dat je de functies uit stap b kan uitvoeren door op een toets op je toetsenbord te drukken. Gebruik de array's met midinoten, amplitudewaarden en nootlengtes uit de vorige opdracht als arrays die je meegeeft aan de functies - kies zelf per array welke bewerking je uitvoert

Gebruik hiervoor de functie keyPressed() en de variabele keyCode of key


d. Overige array-bewerkingen

Voeg extra toetsenbord-triggers toe om de array's met noot-informatie te bewerken, gebruik hiervoor de in P5.js ingebouwde shuffle()-functie en de standaard javascript reverse()-functie. Dus bijvoorbeeld, als je op de s drukt op je toetsenbord, wordt de lijst met toonhoogten geshuffeld, en als je op de r drukt wordt de lijst met durations naar omgedraaid en zo voor alle drie de arrays.

Speel de sequencer af en druk eens in de zoveel tijd op de door jou ingestelde toetsen, luister naar de verandering, welke functie is het interessantst om toe te passen?


e. Notenmateriaal genereren

zie voor meer informatie voor deze stap: Functies maken in Javascript, kijk specifiek naar het kopje 'Verder werken met het resultaat van een functie' en de subkop 'een array teruggeven uit een functie'

(beoordeling voldoende)


f. EΓ©n functie voor alles


Extra's voor als je meer wil doen!

Als je een zeer goed wil halen moet je minimaal twee van onderstaande opdrachten doen.

(beoordeling zeer goed)