# Muziek componeren: orkest, partituren en MIDI-invoer [Programmeergidsen](LEESMIJ.md) Maak muziek met piano, strijkers, bas en slagwerk en hoor de partijen samen spelen. Pliro bevat 128 General MIDI-instrumentklanken, 47 drumklanken en de oorspronkelijke stemmen `chip`, `bell`, `pluck` en `flute`. De muziekgereedschappen zijn inbegrepen bij Learner en werken ook in de [speeltuin in je browser](speeltuin.md). ## Een orkest starten Elke partij is een lijst met een instrument, geschreven noten en eventueel een volume. Eén aanroep van `startOrkest` start alle partijen tegelijk: ```pliro # language: nl zetVolume(60) laat piano = ["gm.acoustic-grand-piano", "C4+E4+G4:2 F4+A4+C5:2", 75] laat bas = ["gm.acoustic-bass", "C3:2 F2:2", 65] laat drums = ["drums", "C2+F#2:1 D2+F#2:1 C2+F#2:1 D2+F#2:1", 35] startOrkest("lied", [piano, bas, drums], 120, waar) wacht(8) stopSpoor("lied") ``` Probeer het volume van het slagwerk te verlagen. Alle partijen delen hetzelfde tempo en startmoment. Een kortere partij wacht tot de langste klaar is. Daarna herhalen ze samen als herhalen aanstaat. `zetSpoorVolume("lied", 40)` verandert het hele orkest; `stopSpoor("lied")` stopt het. De instrumentbank gebruikt compacte synthese en werkt daardoor offline zonder samples te downloaden. Je krijgt het volledige GM-instrumentenpalet, geen opgenomen akoestisch orkest. Instrument-ID's blijven gelijk in Nederlandse en Engelse code. ## Een partituur lezen en schrijven | Geschreven noten | Betekenis | |---|---| | `C4:1` | Centrale C gedurende één tel | | `C#4:0.5` | Cis gedurende een halve tel | | `Bb3:2` | Bes gedurende twee tellen | | `R:1` | Eén tel rust | | `C4+E4+G4:2` | Drie noten tegelijk gedurende twee tellen | Scheid gebeurtenissen met spaties. Een akkoord heeft één gezamenlijke duur en maximaal acht verschillende toonhoogten. Bij `drums` kiest de toonhoogte een slagwerkklank: `C2` is de basdrum, `D2` de snaredrum en `F#2` de gesloten hi-hat. Drumtoonhoogten lopen van B1 tot A5. Kies in **Blokken** de muzieknootknop naast een letterlijk ingevulde partituur. Selecteer een noot op de notenbalk om hem te wijzigen, gebruik de knoppen voor nootlengten, voeg rusten toe of voer de geschreven noten direct in. **Extra akkoordnoten** accepteert toonhoogten zoals `E4+G4`. De editor heeft eigen knoppen voor ongedaan maken, opnieuw uitvoeren en beluisteren. **Melodie gebruiken** past de partituur in je broncode aan; Annuleren laat die ongewijzigd. Het instrument en tempo in de melodie-editor gelden voor het beluisteren. Verander de bijbehorende blokvelden of de instellingen in de componist om ze voor het afspelen van je programma te bewaren. ## Liederen in maps bewerken Muziek blijft bewerkbaar wanneer die in een map of lijst met liederen staat, zoals bij de jukebox. Kies in Blokken **Partituren bewerken** naast de liedgegevens. Zoek een lied of partij, selecteer het en kies **Melodie bewerken** voor één partituur of **Lied componeren** voor het hele arrangement. De componist herkent liedmaps met `bpm` en `parts`. Elke partij heeft een letterlijk ingevulde `score` en `instrument`, met eventueel `role` en `volume`. Een lied kan ook `title` en `tempoChanges` bevatten. Berekende expressies blijven in Tekst bewerkbaar; de componist voert je programma niet uit om hun waarden te raden. ## Meerdere sporen arrangeren De componist brengt de sporen, het notenoverzicht en de afspeelknoppen samen in één compact venster. Lucide-pictogrammen hebben vertaalde knopinfo en toegankelijke namen. Beweeg de muis over een knop om de functie te zien, of bereik hem met Tab. 1. Selecteer een spoor om de naam, het instrument, het volume of de geschreven noten te veranderen. 2. Kies **Noten bewerken** voor de notenbalk of om noten met een MIDI-keyboard in te voeren. 3. Gebruik **Spoor toevoegen**, **Spoor dupliceren** of **Spoor verwijderen** om het arrangement aan te passen. 4. Kies **Alle sporen afspelen** om alles samen te horen. **Dempen** en **Solo** helpen bij het beluisteren van afzonderlijke partijen. 5. Kies **Compositie gebruiken** om het arrangement als één broncodewijziging op te slaan. Het overzicht toont wanneer de noten klinken. Selecteer een spoor en open de noteneditor om ze aan te passen. Namen, noten, instrumenten, volumes en tempowijzigingen worden bewaard. Dempen, solo en oefeninstellingen gelden alleen bij het beluisteren. Ongedaan maken en opnieuw uitvoeren werken eerst op je concept; na toepassen kun je met ongedaan maken in de editor de vorige broncode herstellen. Bestaand commentaar en andere liedvelden blijven behouden. Bestaande letterlijke velden `beats`, `seconds` en `time` volgen de gewijzigde duur.
*De huidige gedeelde componist, vastgelegd in de browserspeeltuin. De desktop-IDE gebruikt dezelfde componist.* ## Oefenen met een metronoom Schakel **Metronoom** in om tikken tijdens het afspelen in de componist te horen. **Aftellen** voegt een maat toe voordat de muziek begint. Met **Tellen per maat** kies je 2/4, 3/4, 4/4 of 6/4, met een accent op de eerste tel. De tikken volgen de tempowijzigingen van het lied. **Metronoom starten** speelt een oefentik op het begintempo zonder het lied af te spelen. De melodie-editor voor één partituur heeft ook een oefenmetronoom. Deze instellingen helpen bij het componeren; ze voegen geen tiknoten of maatsoort toe aan je opgeslagen lied. ## Het tempo tijdens een lied veranderen **Begintempo** in de componist stelt het eerste BPM in. **Tempowijziging toevoegen** maakt een markering met een telpositie en een nieuw BPM. Posities beginnen bij nul: positie 4 ligt na vier tellen. Vanaf die positie geldt het nieuwe tempo voor elke partij. Een aangehouden noot blijft doorklinken over de wijziging. Dit volledige voorbeeld vertraagt na vier tellen. Open de liedmap in Blokken om ermee te experimenteren: ```pliro # language: nl laat song = { "title": "Avondlicht", "bpm": 120, "tempoChanges": [[4, 90]], "seconds": 4.666667, "parts": [ {"role": "Piano", "instrument": "gm.acoustic-grand-piano", "volume": 75, "score": "C4+E4+G4:2 F4+A4+C5:2 G4+B4+D5:2 C4+E4+G4:2"}, {"role": "Cello", "instrument": "gm.cello", "volume": 65, "score": "C3:2 F2:2 G2:2 C3:2"} ] } laat orchestra = [] voor part in song.parts: zet orchestra = orchestra + [[part.instrument, part.score, part.volume]] startOrkest("lied", orchestra, song.bpm, onwaar, song.tempoChanges) wacht(song.seconds) ``` Het laatste argument geeft `song.tempoChanges` door aan het afspelen. Alleen een veld aan een map toevoegen verandert het gedrag van een audioaanroep niet. De eerste vier tellen duren twee seconden bij 120 BPM; de volgende vier ongeveer 2,67 seconden bij 90 BPM. Het tempo moet 20–400 BPM zijn. Markeringen moeten oplopende posities hebben vóór het einde van de langste partij. Een markering op nul vervangt het begintempo. Bij herhalen beginnen de markeringen opnieuw. Voor één partituur accepteert `startMelodie` dezelfde lijst als zesde argument. Zie [startOrkest](../ingebouwde-functies/startOrkest.md) en [startMelodie](../ingebouwde-functies/startMelodie.md). ## Noten invoeren met een MIDI-keyboard MIDI-invoer werkt **stap voor stap** in de melodie-editor. Je voert toonhoogten in met de gekozen nootduur; de timing van je uitvoering wordt niet opgenomen. 1. Verbind de USB-MIDI-aansluiting van je keyboard, of verbind MIDI OUT via MIDI IN van een MIDI-interface. 2. Open **Noten bewerken** voor een spoor in de componist, of open de melodie-editor van een letterlijk ingevulde partituur. 3. Kies **MIDI verbinden** en geef toestemming voor MIDI-toegang als daarom wordt gevraagd. 4. Selecteer de invoer bij **MIDI-keyboard** en kies een nootduur. 5. Speel een noot of akkoord en laat alle toetsen los. De editor voegt het in na de geselecteerde noot, of aan het einde wanneer er geen noot geselecteerd is. De activiteitsindicator reageert zodra nootberichten binnenkomen. Invoegen gebeurt pas wanneer alle toetsen los zijn; een akkoord mag maximaal acht toonhoogten hebben. Kies voor de volgende invoer een andere duur en gebruik **Rust toevoegen** voor rusten. Sluit de editor of kies **MIDI loskoppelen** om de invoer los te laten. Verschijnen er geen poorten? Controleer de USB-dataverbinding, sluit het keyboard opnieuw aan en kies nogmaals **MIDI verbinden**. Alleen een audiokabel geeft geen MIDI door. Kan een poort niet worden geopend, sluit dan andere muziekprogramma's die hem mogelijk gebruiken, verbind opnieuw en probeer het nogmaals. Bij geweigerde toestemming moet je MIDI-toegang toestaan; een melding over een niet-ondersteund venster betekent dat deze uitvoeromgeving geen MIDI-invoer aanbiedt. Handmatig noten bewerken blijft beschikbaar. Deze functie hangt af van Web MIDI-ondersteuning in de browser of desktopomgeving. Ze importeert geen MIDI-bestanden, neemt geen aanslagsterkte, sustainpedalen, besturingsberichten of uitvoeringstiming op en stuurt geen muziek terug naar externe instrumenten. Je opgeslagen Pliro-programma heeft geen MIDI-keyboard nodig om af te spelen. *De melodie-editor in de browserspeeltuin. MIDI verbinden zoekt naar invoerpoorten; de afbeelding toont geen aangesloten keyboard.* ## Opgenomen geluiden en afspeelgrenzen Importeer opgenomen effecten via **Media** in de IDE in een draagbaar project. `speelGeluid("assets/sprong.wav", 70)` speelt één effect; `startGeluid("sfeer", "assets/wind.wav", waar)` start een herhalend spoor. Gebruik `zetSpoorVolume` en `stopSpoor` om het te regelen. Volumes lopen van 0 tot 100. Hoofdvolume, spoorvolume en partijvolume worden met elkaar vermenigvuldigd. Audio starten op een bestaande naam vervangt het geluid en behoudt het spoorvolume. `speelNoot("C5", 0.5, 120, "gm.flute")` voegt één noot toe zonder andere sporen te vervangen. Afspelen blokkeert de volgende opdracht niet. Houd herhalende muziek actief met gebeurtenisafhandelaars, een spellus of een positieve `wacht`. Bij normaal programma-einde stoppen herhalende sporen; eindige geluiden mogen uitklinken. Pauzeren onderbreekt het geluid en Stoppen/Resetten ruimt het afspelen op. Er zijn maximaal 16 benoemde sporen, 16 partijen per orkest en 32 tegelijk klinkende noten. Bij een volle bezetting stopt de oudste klinkende noot. Partituren bevatten maximaal 4096 gebeurtenissen; een orkest deelt deze grens over zijn partijen. Elke partituur duurt maximaal 4096 tellen, elke gebeurtenis 1/64–64 tellen en een tempolijst bevat maximaal 256 markeringen. Synthese werkt zonder geluidsbestanden in de IDE, speeltuin en ondersteunde native Windows/Linux/Raspberry Pi-exports. Codecs voor opgenomen geluid hangen af van de uitvoeromgeving; ondersteunde PCM WAV is de draagbare keuze voor native apps. De tekst-CLI en telefoonvoorbeeldweergave spelen deze audio niet af. [Probeer het orkestvoorbeeld](https://playground.pliro.wiki/?example=orchestra&lang=nl) · [Speeltuingids](speeltuin.md) · [Spelprojecten](demospellen.md)