3. Algoritmische bewerkingen


* Uitgedeeld op 9 oktober 2025.
* Deadline: aftekenen in de les, uiterlijk 6 november 2025.
* Met deze opdracht denken we dat je zo'n 1 - 1.5 uur bezig bent tot en met deel f. 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. Je gaat een aantal functionaliteiten toevoegen, waardoor de lijsten met noot-informatie bewerkt worden. Elke functionaliteit is gekoppeld aan het indrukken van een toets op je toetsenbord. Het is belangrijk voor deze opdracht dat de noten die je in het begin invult in een bepaalde toonsoort staan, als dat niet het geval is pas dan de lijst met midi-noten aan.

Kopieer de opdracht van de vorige keer 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.

Dit kan op verschillende manieren:

Ga naar de csdosc-folder in de terminal en voer vervolgens het cp-commando uit.

cd ~/Documents/HKU/Jaar1/sysbas/javascript/csdosc
cp -rn opdracht2_sequencer opdracht3_algoritmische_bewerkingen

Start csdosc door in de terminal npm start te typen.

Ga naar de csdosc-folder in de command prompt en voer vervolgens het cp-commando uit.

cd Documents\HKU\Jaar1\sysbas\javascript\csdosc
xcopy /e opdracht2_sequencer opdracht3_algoritmische_bewerkingen\

Klik met de rechtermuisknop op de map opdracht2_sequencer, kies dupliceer en hernoem de nieuwe map naar opdracht3_algoritmische_bewerkingen


b. omdraaien

  1. als je op de 'o' drukt moet de volgorde van de elementen uit de lijst met midinoten omdraaien.

    het resultaat zou als volgt moeten zijn:

    //oorspronkelijke lijst:
    [60, 62, 64, 67];
    //nieuwe lijst:
    [67, 64, 62, 60];

c. roteren

  1. Als je op de 'r' drukt moeten de elementen uit de lijst met midinoten één plaats naar rechts roteren.

    het resultaat zou als volgt moeten zijn:

    //oorspronkelijke lijst:
    [60, 62, 64, 67];
    //nieuwe lijst:
    [67, 60, 62, 64];
  2. Als je op de 'l' drukt moeten de elementen uit de lijst met midinoten één plaats naar links roteren.

    het resultaat zou als volgt moeten zijn:

    //oorspronkelijke lijst:
    [60, 62, 64, 67];
    //nieuwe lijst:
    [62, 64, 67, 60];

d. noten toevoegen

  1. Als je op de 'a' drukt moet er random één noot worden toegevoegd aan het eind van de lijst met noten. Zorg dat de range van dit getal enigszins logisch is.

    het resultaat zou als volgt kunnen zijn:

    //oorspronkelijke lijst:
    [60, 62, 64, 67];
    //nieuwe lijst:
    [60, 62, 64, 67, 65];
  2. Als je op de 't' drukt, zorg dan dat er een noot wordt toegevoegd die binnen de toonsoort past die je aan het begin van deze opdracht hebt ingevuld.

    //oorspronkelijke lijst:
    [60, 62, 64, 65, 67, 69, 71];
    //nieuwe lijst:
    [60, 62, 64, 65, 67, 69, 71, 64];

e. noten verwijderen

  1. Als je op 'b' drukt moet de laatste noot uit de lijst verwijderd worden, zorg daarbij dat de lijst niet korter kan worden dan 2 noten. Vergeet ook niet de duur en amplitude aan te passen.

    het resultaat zou als volgt kunnen zijn:

    //oorspronkelijke lijst:
    [60, 62, 63];
    //nieuwe lijst
    [60, 62];
    //--------
    //oospronkelijke lijst
    [60, 62];
    //nieuwe lijst
    [60, 62];
  2. Als je op 'd' drukt moet de eerste noot uit de lijst verwijderd worden, zorg daarbij dat de lijst niet korter kan worden dan 2 noten.

    het resultaat zou als volgt kunnen zijn:

    //oorspronkelijke lijst:
    [60, 62, 63];
    //nieuwe lijst
    [62, 63];
    //--------
    //oospronkelijke lijst
    [62, 63];
    //nieuwe lijst
    [62, 63];

f. transponeren

  1. Als je op de '+' drukt moeten alle noten uit de lijst 1 semitoon omhoog gaan.

het resultaat zou als volgt kunnen zijn:

//oorspronkelijke lijst:
[60, 62, 63, 65];
//nieuwe lijst
[61, 63, 64, 66];
  1. Als je op de '-' drukt moeten alle noten uit de lijst 1 semitoon omlaag gaan.

het resultaat zou als volgt kunnen zijn:

//oorspronkelijke lijst:
[60, 62, 63, 65];
//nieuwe lijst
[59, 61, 62, 64];

Je hebt nu de volgende mogelijkheden om je sequencer aan te passen: Druk eens in de zoveel tijden de toetsen in om de sequence aan te passen.

* o = notenlijst omdraaien
* r = notenlijst naar rechts roteren
* l = notenlijst naar links roteren
* a = random noot toevoegen
* t = noot binnen toonsoort toevoegen
* b = noot aan het eind van de lijst verwijderen
* d = noot aan het begin van de lijst verwijderen
* + = alle noten één semitoon omhoog
* - = alle noten één semitoon omlaag

(beoordeling: voldoende)


g. volume aanpassen

  1. Als je op de pijl naar beneden drukt moeten alle noten uit de lijst 10% zachter klinken.

  2. Als je op de pijl naar boven drukt moeten alle noten uit de lijst 10% harder klinken.


h. duur aanpassen

  1. als je op de 'l' drukt, moet de duur van de alle noten afhankelijk worden van de toonhoogte. Bijvoorbeeld, hoe lager de noot, hoe langer de noot. Of verzin een eigen relatie tussen hoogte en duur.

(beoordeling: goed)


i. Sequence deze bewerkingen

Zorg dat eens in de zoveel stappen van de sequencer er een willekeurige bewerking uit bovenstaande opdrachten wordt uitgevoerd, hiervoor is het handig dat deze bewerkingen in functies worden gezet, iets waar we volgende week mee aan de slag gaan, maar wat je alvast kan verkennen zie hier voor meer informatie


j. transponeer +

  1. Pas de transponeer-functie aan dat deze binnen de gekozen toonsoort blijft

  2. Zorg dat als je op de 's' drukt, de toonsoort van bijv. majeur naar mineur verandert

(beoordeling: zeer goed)