SYSBAS1B/MAX Practicum

1 - Simple Synth


Dit is de introductie opdracht voor het MSP-domein van Max (Max Signal Processing). Max is een ontzettend krachtige omgeving voor het zelf bouwen/prototypen van audio-effecten, live-performance tools, interactief geluid, custom sound design en nog veel meer! In deze opdracht leer je hoe signalen in Max werken en programmeer je een simpele mono synthesizer die je kunt bespelen met een keyboard.

Belangrijke objecten in deze opdracht:



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



  • Lees uit de Max MSP Tutorials:
  • How digital audio works
  • How MSP works


  • a)

    De objecten met een ~ (tilde) in het eind van de naam zijn audio objecten (msp-objecten). Om audio te kunnen gebruiken in Max moet je de processing (dsp) aanzetten. Maak een [ezdac~] object aan, lock de patch en klik erop om te zien dat die blauw wordt. De ezdac is naast een aan/uit-knop ook de output van je patch naar de speakers of koptelefoon (dac = digital to analog converter, ez = easy).

    Maak een programma dat twee signalen bij elkaar op kan tellen. Gebruik een [number], het [sig~] object om van het getal een signaal te maken en een [+~]-object. Geef het antwoord weer in het [number~] object. Probeer wat verschillende values uit in de number boxen. Noteer je antwoord op de volgende vragen in een [comment]. Doe dit voor de objecten [+~], [-~], [*~], [/~].
  • Wat valt op aan de kabels van msp objecten?
  • Wat valt op als je het linker of rechter number aanpast in vergelijking met normale data-objecten?
  • Wat gebeurt er zodra je de audio uit zet en values verandert?

  • LET OP: Sluit deze signalen NIET aan op de [ezdac]!

    Objecten: [ezdac~], [+~], [-~], [/~], [*~], [number], [number~]

    b)

    Maak het [cycle~] object aan. Dit object is een oscillator die een sinus-toon genereert. Gebruik een [number] om de frequentie van de cycle~ in te stellen op 2 Hz. Sluit de cycle~ aan op het [scope~] object om het signaal te zien.

    Maak een [gain~] object aan, en sluit nu de [cycle~] aan op de [gain~] en de [gain~] op beide kanalen van de [ezdac~]. Zet de frequentie op 200 Hz en slide het volume omhoog om de sinustoon te horen.

    LET OP: Plaats altijd een gain-slider voor je ezdac, zodat je het volume van de audio kan regelen voordat je audio objecten aansluit. Doe je dat niet, dan wordt de sinus zo hard als die kan afgespeeld (0 dBFS).

    Objecten: [cycle~], [scope~], [gain~], [number]

    c)

    In plaats van de frequentie in te stellen kun je ook werken met midi-pitch nummers. Maak een [kslider] en zorg dat je de midi pitch omrekend naar frequentie met het [mtof]-object om daarmee de cycle~ aan te sturen. Speel wat noten en hoor de toonhoogte veranderen.

    Objecten: [kslider], [mtof]

    cijfer: 6

    d)

    De sinustoon klinkt nu continu door, dit gaan we tegenhouden door een envelope toe te voegen aan het signaal. De envelope bepaalt het volume (amplitude) van een signaal in de tijd. Hiervoor gebruiken we het [line~] object. Een message met daarin (0, 1 15 0 500) maakt een envelope met attack-tijd van 10ms, release-tijd van 500ms, en amplitude-waardes van 0, 1 en weer 0. De amplitude van een signaal [*~ 0.] is namelijk uit, en [*~ 1.] is oorspronkelijk volume. [*~ 0.5] zou de helft zachter zijn en [*~ 2] 2x zo hard.

    Zorg dat je met klikken op een toets van de [kslider] eerst de frequentie instelt bij de cycle~ en daarna de envelope triggered. Vermenigvuldig de envelope met het signaal van de cycle~ voordat deze de [gain~] in gaat.

    Objecten: [t b i], [message], [line~], [*~], [scope~], [mtof], [kslider].

    cijfer: 7

    e)

    Vervang de [cycle~] voor een [saw~], [rect~] of [tri~] om een andere golfvorm te gebruiken als de basis van je synth. Probeer ze alledrie eens uit.

    Vervang de waardes in de message voor het [line~] object voor verschillende waardes om de andere attack of release-tijden te maken. Probeer eens (0, 1 1000 0 10), of (0, 1 100 0 100 0.5 100 0 2000).
    Pas op voor je oren! Amplitude waardes hoger dan 1 zorgen ervoor dat je sinustoon gaat clippen.

    Objecten: [saw~], [rect~], [tri~], [line~], [message]

    cijfer: 8



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


    1. Maak 3 [cycle~]'s waarvan 1 een octaaf hoger klinkt dan de gespeelde toon, en 1 een octaaf lager klinkt. Geef ze alledrie een andere envelope met verschillende [line~] objecten, maar bespeel ze met 1 [kslider].

    2. Stuur de melodie van je synth aan met een algoritmisch proces in plaats van de kslider. Gebruik bijvoorbeeld wat werk uit het vorige semester!

    3. Laat het volume van de envelope voor de synth bepalen door de velocity van de [kslider] output. Tip: Je moet omschalen van de 0-127 midi range naar 0-1 floating amplitude range. Kijk ook eens naar het [adsr~] object.

    3. Maak user-interface objecten waarmee je de attack en release tijden van de line~ kunt instellen. Kijk eens naar [pak i i], [zl.reg] en ($1 $2) argumenten in messages.

    4. GA LOS!