1 Simple Synth


Dit is de introductie opdracht voor het MSP-domein van Max (Max Signal Processing). Max is krachtige omgeving voor het bouwen/prototypen van audio-effecten, live-performance tools, interactief geluid, custom sound design en 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.

Deadline: 27 februari

Belangrijke objecten in deze opdracht:



Belangrijk:

Gebruik de help-files (alt-click). Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.

Plaats comments om duidelijk te maken dat je snapt hoe iets werkt.

Maak je patch netjes en overzichtelijk voordat je hem laat beoordelen!



Extra leesvoer uit Max MSP Tutorials:



a. Signals in Max

De objecten met een ~ (tilde) in de naam zijn audio objecten (msp-objecten). Om audio te gebruiken in Max moet je de Digital Signal Processing (DSP) aanzetten.

Maak een [ezdac~] object aan (of [plugout~] in MaxForLive), 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). NB: In Ableton kan je de ezdac~ niet aan/uit zetten. Daar moet je de audio aanzetten via de Ableton Preferences.

Maak een programma dat twee signalen bij elkaar op kan tellen. Gebruik een [number], het [sig~] object en een [+~]-object. Geef het antwoord weer in het [number~] object. Probeer wat verschillende values uit. Doe dit voor de objecten [+~], [-~], [*~], [/~].

LET OP: Sluit deze signalen NIET aan op de [ezdac~]/[plugout~]!

Noteer je antwoorden op de volgende vragen in een [comment]:

  1. Wat valt op aan de kabels van msp~ objecten?

  2. Wat valt op als je het linker of rechter number aanpast in vergelijking met normale data-objecten?

  3. Wat gebeurt er zodra je de audio uit zet (klik op ezdac, of via ableton preferences) en daarna values verandert?

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


b. Beeeeeeep

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~] (of [live.scope~]) object om het signaal te zien.

Maak een [gain~] (of [live.gain~]) object aan, en sluit nu de [cycle~] aan op de [gain~] en de [gain~] op links en rechts van de [ezdac~]. Zet de frequentie op 200 Hz en slide voorzichtig 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. Play it!

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 (MidiToFrequency) om daarmee de cycle~ aan te sturen. Speel wat noten en hoor de toonhoogte veranderen.

Objecten: [kslider], [mtof]


d. Envelope

De sinustoon klinkt nu continu door. Dit houden we tegen door een envelope toe te voegen aan het signaal. De envelope bepaalt het volume (amplitude) van het signaal in de tijd. We gebruiken hiervoor het [line~] object.

  1. Maak een message met daarin (1 15 0 500).
  2. Verbind de message met het [line~]-object om een envelope te maken met attack-tijd van 15ms naar een amplitude-waarde van 1 en een release-tijd van 500ms naar een amplitude-waarde van 0.
  3. Vermenigvuldig [*~] de envelope met het signaal van de [cycle~] voordat deze de [gain~] in gaat.
  4. Zorg dat je met klikken op een toets van de [kslider] de frequentie instelt bij de cycle~ en daarna de envelope triggered met een bang.

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

Luistervoorbeeld

(voldoende)


e. Waveforms

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 van het [line~]-object voor verschillende waardes om andere attack- of release-tijden te maken. Probeer eens (1 1000 0 10), of (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 als je de gain~ op 0dBFS hebt staan.

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

(goed)



Uitdaging

(zeer goed, minimaal 2 kiezen)

  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 (niet [random]!) 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] (rechter outlet). Tip: Je moet omschalen van de 0-127 midi range naar 0.-1. floating amplitude range.

  4. Maak een user-interface waarmee je de attack- en release-tijden van [line~] kunt instellen. Tip: kijk eens naar [pak i i], [zl.reg] en ($1 $2) argumenten in messages om de tijden variabel te maken.