SYSBAS1B/MAX Practicum

4 - FM Synthesis

Bij deze opdracht ga je een classis FM-synthesizer bouwen in Max. FM staat voor Frequentie Modulatie. Bij deze techniek moduleer je de frequentie van de grondtoon sinusgolf (de carrier) met de amplitude van een sinusgolf van een andere frequentie (de modulator). De frequentie van de modulator is een ratio van de grondtoon, en dit wordt ook wel de harmonicity genoemd. De amplitude van de modulator bepaald de modulation depth (hoeveel gaat de frequentie omhoog en omlaag), ook wel de index genoemd. De grondtoon wordt bepaald door een offset te geven aan de amplitude van de modulator. Lees hier meer.

Belangrijke objecten in deze opdracht:

Lees altijd even de Extra delen nadat je klaar bent. Mogelijk zit er iets interessants tussen dat je kunt gebruiken voor je eindopdracht!

  • Help-file: Alt+Click een object
  • Max Shortcuts
  • Max Cheat Sheet
  • Plaats comments voor je eigen documentatie! (sneltoets "c")
  • a)

    Maak een carrier en stuur de frequentie met een apart [sig~] object aan, stel de frequentie in op 220 Hz. Maak een modulator en stel deze in op 440 Hz. Moduleer de frequentie van de carrier met de modulator door het signaal op te tellen bij de grondtoon. Zorg dat de carrier moduleert tussen 110 en 440 Hz. Luister naar de output via een gain en dac.

    Zorg dat de synth bespeeld kan worden met het [kslider]-object en maak gebruik van OF: het [adsr~] object zodat het om kan gaan met note-on en note-off messages OF: het [line~] object in combinatie met [function] zodat je complexe envelopes kunt genereren maar zonder sustain (dus geen note-off gebruiken).

    Tip: cycle~, sig~, +~, *~, flonum, gain~, dac~, kslider, adsr~, line~, stripnote, function, slider/dial/multislider, scale

    b)

    Zorg dat de frequentie van de modulator een ratio van de grondtoon is, en dat dit ratio ingesteld kan worden met een user-interface object. Doe de gehele bereking in het signaal-domein. Bedenk een zinnige scaling voor de ratio. Plaats comments!

    Tip: *~, sig~, flonum/slider/dial, scale

    cijfer: 6

    c)

    Zorg dat de modulation-depth (index) een ratio is van de frequentie van de modulator. Voer de berekeningen uit in het signaal domein. Gebruik een user-interface object om de modulatie mee in te stellen en verzin een zinnige scaling.

    Tip: *~, sig~, flonum/slider/dial, scale

    cijfer: 7



    EXTRA (cijfer: 8, 9, 10, 10+ met eeuwige waardering!)


    1. Heb je bovenstaande werkend? Dan kan je het hart van de synth encapsulaten (omzetten naar een subpatch) of opslaan als abstraction voor snel hergebruik in de toekomst. Gebruik argumenten om snel een am-synth in je patch te kunnen toevoeging met de goede ratio, adsr etc..

    2. Gebruik een extra envelope voor het beïnvloeden van de modulation-depth van de modulator.

    3. Gebruik een extra envelope voor het beïnvloeden van de frequentie-ratio van de modulator.

    4. Maak een complexere fm-synth door meerdere carriers en/of modulators toe te voegen (denk aan hoe Native Instruments' FM8 werkt).

    5. Maak de synth polyphonic (verdiep je in het [poly~] object en het maken van abstractions).