1 Simple Bell Synth
Dit is de eerste opdracht voor het MSP-domein van Max (Max Signal Processing). MSP is een 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 synth die je kunt bespelen met een keyboard. Daarna ga je de klank van een bel namaken met behulp van additieve synthese (het optellen van sinustonen). Elk partiaal in de bel-klank krijgt een andere verhouding van frequentie, amplitude en duratie.
Deadline: 5 maart
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. Signalen 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, 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, gebruik in Ableton altijd[plugout~]om geluid uit te sturen. -
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
[+~],[-~],[*~],[/~].
- Gebruik een
LET OP: Sluit deze signalen NIET aan op de
[ezdac~]/[plugout~]!
Geef antwoord op de volgende vragen in een [comment]:
- 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 (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 [flonum] (f) om de frequentie van de cycle~ in te stellen op 2 Hz. Sluit de cycle~ aan op een [live.scope~] om het signaal te zien.
Maak een [gain~] (of [live.gain~]) object aan, en verbind de [cycle~] met de [gain~] en de [gain~] met links/rechts van de [ezdac~]. Zet de frequentie op 200 Hz en schuif 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. Envelope
De sinustoon klinkt nu continu door. Dit houden we tegen door een envelope te genereren en te vermenigvuldigen met het signaal. De envelope bepaalt het volume (amplitude) van het signaal in de tijd. We gebruiken hiervoor het [line~] object. Ook gebruiken we een [kslider] om de frequentie van de sinus aan te passen.
- Maak een message met daarin
(1 5 0 1000). - Verbind de message met het
[line~]-object om een envelope te maken (attack-tijd van5msmet amplitude-waarde van1, release-tijd van1000msmet een amplitude-waarde van0). - Vermenigvuldig
[*~]de envelope met het signaal van de[cycle~], voordat deze naar de[gain~]gaat. - Zorg dat je met klikken op een toets van de
[kslider]de frequentie instelt bij de cycle~ met[mtof]en daarna de envelope triggered met een bang.
Objecten: [kslider], [mtof], [t b f], [message], [line~], [*~], [live.scope~].
d. Een bel van partialen
Een belklank heeft boventonen, (ookwel partialen genoemd). De combinatie van 1 sinus met 1 envelope is 1 partiaal. Je hebt nu dus één partiaal gemaakt. Bekijk de onderstaande tabel eens goed:
Risset Bell ratios
| freq. ratio | amp. ratio | dur. ratio
---------- | ------------ | ----------- | -----------
partial 0 | 0.92 | 0.066 | 1.0
partial 1 | 1.19 | 0.175 | 0.65
partial 2 | 2.0 | 0.109 | 0.325
partial 3 | 2.74 | 0.096 | 0.25
partial 4 | 3.0 | 0.087 | 0.2
partial 5 | 4.07 | 0.066 | 0.15
adapted from: "Computer Music: Synthesis, Composition and Performance", Charles Dodge and Thomas A. Jerse, 1985, p. 105
- Maak de partialen uit de tabel hierboven, elk met de correcte ratio's voor de frequentie, amplitude en duratie.
- Je kan met subpatches werken om het overzichtelijk te houden, (als uitdaging onderaan kan je ook een systeem bedenken om makkelijk alle waardes in te kunnen vullen zonder veel opnieuw te hoeven patchen.)
- Gebruik 1
[kslider]om alle tonen in 1x te horen (van waaruit alle frequenties berekend worden). - Voeg een simpele reverb toe in parallel aan het droge signaal om de klank in een ruimte te plaatsen. Gebruik hiervoor
[yafr2](Yet Another Free Reverb 2).
Zie het rekenvoorbeeld hieronder voor hulp met het berekenen van de ratios.
voorbeeld berekening:
f = frequentie
t = duratie in ms
a = amplitude
f[0] = 1046.50Hz * 0.92 | a = 1 * 0.066 | t = 1000 * 1.0
f[1] = 1046.50Hz * 1.19 | a = 1 * 0.175 | t = 1000 * 0.65
f[2] = etc...
(voldoende)
e. Expressive Bell
Zorg ervoor dat de bell expressiever wordt met door ook de velocity en duratie te kunnen aanpassen.
- De MIDI-pitch bepaalt de grondtoon (omgerekend naar frequentie en naar ratio van de frequenties uit de partialen-tabel)
- De MIDI-velocity bepaalt de amplitude (omgerekend van velocity naar amplitude en naar ratio van de amplitudes uit de partialen-tabel)
- Een
[live.dial]of[live.slider]bepaalt de duratie van de bel (omgerekend naar ratio van de duratie uit de partialen-tabel)
Tip: [kslider], [/ 127.], [live.dial], [pack], [zl.reg], ($1 $2)
(goed)
Uitdaging
(zeer goed, minimaal 2 kiezen)
-
Stuur de melodie van de bel aan met een algoritmisch proces (niet
[random]!) in plaats van de kslider. Gebruik bijvoorbeeld wat werk uit het vorige semester! -
Maak ook de attack tijd van de partialen variabel zodat je op een laag tempo lange fade-in en fade-out tijden kan genereren (> 2 seconden) om zo tot een soundscape te komen.
-
Gebruik software zoals Spear om een andere klank te analyseren en daar de ratios van te gebruiken in je Additieve synth.
-
Verzin een slimmere/efficiΓ«ntere manier om snel ratios voor alle partialen in te kunnen vullen zonder alle objecten te hoeven aanpassen. Kijk eens naar:
abstractions/subpatches,coll,dict,patcherargs.
