Geluidssynthese
"sound from scratch"

Introductie

Hallo, welkom bij de vierde les van de cursus "From media computation to data science". In deze les gaan we vanuit het ruwe materiaal, nieuwe geluiden vanuit getallen creΓ«ren. De vraag die wij onzelf daarbij stellen: kunnen wij in Snap! vanuit het niets met getallen een nieuw geluid programmeren en laten horen? Welkom bij de les over geluidssynthese.
In de afbeelding hieronder zie je schematisch de werking van een "speaker" uitgelgd. Het electrische signaal (-1 en 1) worden door de magneet en spoel omgezet in trillingen die wij kunnen horen. Ook leuk om deze speaker zelf te maken.
Werking van een speaker

Geluidssynthese

De afgelopen weken heb je kennis kunnen maken met het
blok. Het samples blok geeft in een lijst de samples van een opgenomen geluid weer. De waarde van elke afzonderlijke sample varieert tussen -1 en 1.
De vraag die wij onzelf daarbij willen stellen: kunnen wij zelf een dergelijke sample lijst maken? Kunnen wij door alleen getallen te gebruiken onze eigen "sound" maken?
    maak een variabele met de naam "samples" en zet de variabele op
    .
    klik op deze variabele, op het podium verschijnt de nieuwe, nu nog lege lijst.
    Bouw het onderstaande script:
sample script
    bespreek en verklaar de werking van dit script met elkaar.
    verklaar de keuze voor het getal 0.0009
    speel het geluid door het samengestelde
    blok te gebruiken.
Dit geluid noemen we witte ruis, wat je hoort is het gemiddelde van alle (-1, 1) is amplitude van alle samples. Over smaak valt niet te twisten.
Kunnen we het script veranderen zodat het geluid aangenamer gaat klinken? Je kent vast de formule voor het berkenen van frequenties. Frequentie is het aantal trillingen per seconde. (f = 1/T). De in het script gebruikte lijst van samples bestaat uit willekeurige getallen. Deze (te) grote "randomness" geeft als resultaat witte ruis.
    Maak een variabele "samples2" aan en voeg een lege lijst toe.
    Maak een variabele "sound2" aan en wijs een lege lijst daaraan toe. Bouw dit script.
    Bespreek deze twee scripts, wat zijn de veschillen met de eerste lijst "samples?
    Is de lijst "sound2" meer of juist minder "random" dan de lijst "samples"
    Laat de lijst "samples" klinken.
    ​
    Laat de lijst "sound2" klinken.
    ​
Minder willekeur in de keuze van getallen geeft een beter en rijker geluid. Zouden we nog meer orde in de gekozen samples kunnen aanbrengen?
    Maak een variabele "samples3" aan, voeg een lege lijst toe.
    Maak een variabele "sound3" aan, voeg een lege lijst toe.
    Bouw het script, laat het geluid klinken.
Prachtig, uit puur en alleen getallen heb je uit het niets geluid kunnen voortbrengen.
Hieronder zie een afbeelding van het complete script. Een samenvoeging van de twee voorgaande scripts.

Probeer meer

In deze les hebben we het nog niet over toonhoogte gehad, we hebben in de les het timbre, alleen de kwaliteit van het geluid gewijzigd. Bedenk een script waarmee je ook de toonhoogte van het geluid kunt wijzigen. Wanneer dat is gelukt?, kun je ook een zelf bedacht lied laten horen?
Probeer andere golfvormen "waveforms" te maken.
    1.
    Golfvorm van honderd oplopende getallen tussen -1 en 1
    ​
    ​
2. Golfvorm van honderd op- en aflopende getallen tussen -1 en 1
    ​
    ​
De meest harmonische golfvormen onstaan uit berekeningen met sinus.
    ​
    ​
Maak voor deze golfvormen een eigen blok:
    ​
    ​

Testopgaven

    1.
    Hoe bereken je de frequentie van de gemaakte toon.
    Door de terugspeelsnelheid(44 100Hz) te vermenigvuldigen met de "sample rate".
    Door 1000 milliseconden te delen door de lengte van de volledige sample set.
    Door de afspeelsnelheid van 44 100 Hz te delen door de lengte van de sample set.
    Door de lengte van de sample set te vermenigvuldigen met de frequentie van de toon A (440 Hz)
2. Welk script geeft als resultaat de curve.
    ​
    ​
    ​
    ​
    ​
    ​
    ​
    ​
3. Welke van de onderstaande scripts geeft je "witte ruis" als klinkend resultaat.
    ​
    ​
    ​
    ​
    ​
    ​
    ​
    ​
Last modified 10mo ago