2 Bell Synth


Voor deze opdracht ga je de klank van een bel namaken met behulp van additieve synthese (het optellen van meerdere sinus tonen). Elke partiaal in de bel-klank heeft een andere verhouding van frequentie, amplitude en duratie. Je bouwt je patch in eerste instantie door de ratio's om te rekenen, vervolgens kun je uitbreiden zodat je de parameters zoals attack, release, pitch en velocity kan beinvloeden met midi of gui objecten.

Deadline: 18 februari

Belangrijke objecten in deze opdracht:



Snap je de functie van een object niet? Gebruik alt-click op het object om er meer over te weten te komen. Help-files in Max bestaan uit werkende programma's, zodat je meteen de toepassing van het object kan zien. Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.

Plaats comments (sneltoets c) bij delen van je patch om voor jezelf en ons duidelijk te maken dat je snapt wat er gebeurd en hoe iets werkt. Dit wordt documentatie genoemd, en kan je helpen jezelf te herinneren als je een week later (of een maand/jaar) weer eens de patch opent. Ook helpt dit ons gerichte vragen te stellen bij het aftekenen.

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



a. Single Partial

Een belklank heeft boventonen, ook wel partialen genoemd (of overtones). Voordat je alle partialen gaat programmeren bouw je er eerst 1, zodat het daarna makkelijk is om uit te breiden.

Maak een [cycle~] oscillator met een [line~] envelope. Zorg dat bij het klikken van een [button] je midi-noot omgerekend wordt naar frequentie met [mtof] en vervolgens de ratio van Partiaal 0 krijgt (zie tabel hieronder). De button moet ook de envelope triggeren met de correct amplitude en duratie ratio's.

Ga als startpunt uit van een grondtoon van MIDI-noot 84 (C6), een duratie van 1000 ms en een amplitude van 1 (of MIDI-velocity van 127). Vergeet niet [gain~] voor het master-volume te gebruiken en een [ezdac~] om je audio uit te sturen.

Tip: [cycle~], [line~], [mtof], [*~], [message], [button], [gain~], [ezdac~]


Risset Bell ratios

             |  freq. ratio  | amp. ratio   | dur. ratio
------------ | ------------- | ------------ | ------------
partial 0    | 0.56          | 0.066        | 1.00
partial 1    | 0.56 + 1      | 0.044        | 0.9
partial 2    | 0.92          | 0.066        | 0.65
partial 3    | 0.92 + 1.7    | 0.118        | 0.55
partial 4    | 1.19          | 0.175        | 0.325
partial 5    | 1.7           | 0.109        | 0.35
partial 6    | 2.0           | 0.096        | 0.25
partial 7    | 2.74          | 0.087        | 0.2
partial 8    | 3.0           | 0.087        | 0.15
partial 9    | 3.76          | 0.066        | 0.1
partial 10   | 4.07          | 0.087        | 0.075

from: "Computer Music: Synthesis, Composition and Performance", Charles Dodge and Thomas A. Jerse, 1985, p. 105

b. Harmonics

Maak de overige 10 partialen uit de tabel hierboven op dezelfde manier, elk met de correcte ratios voor de frequentie, amplitude en duratie. Gebruik 1 [button] om alle tonen in 1x te horen en gebruik MIDI-noot 84 (C6) als grondtoon van waaruit alle frequenties berekend worden. 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.50 * 0.56       | a = 1 * 0.066 | t = 1000 * 1.0 
f[1] = 1046.50 * 0.56 + 1.0 | a = 1 * 0.044 | t = 1000 * 0.9 
f[2] = 1046.50 * 0.92       | a = 1 * 0.066 | t = 1000 * 0.65 
f[3] = etc...

(cijfer: 6)

c. Play it

Zorg ervoor dat de partialen bespeelbaar worden (zowel Pitch als Velocity) met de [kslider] of [notein] (extern midi-keyboard). De MIDI-pitch bepaalt dus de grondtoon (uiteraard vermenigvuldigd met de frequentie-ratios) en de MIDI-velocity bepaalt de amplitude.

Tip: [kslider], [mtof], [*], [/]

(cijfer: 7)

d. Soundscape

Voeg twee GUI-objecten toe waarmee je de attack en release kunt instellen van de klank. De attack tijden kunnen voor alle partialen hetzelfde zijn, maar de release tijden moeten naar ratio aangepast worden. Zet je bel-klank om naar een soundscape generator met extreem lange attack en release tijden (20 - 60 seconden). Probeer vervolgens eens lagere tonen.

Tip: [slider], [dial], [multislider], [scale], [message], [zl.reg], [trigger]

(cijfer: 8)


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

  1. Voeg een algoritme toe dat bepaald welke toonhoogte bespeeld wordt in de tijd. Kijk eens naar opdrachten uit het vorige semester, zoals klank beïnvloeden op basis van de tijd, of een hele langzame arpeggiator gebruiken om de soundscape aan te sturen.
  1. Gebruik software zoals Spear om een andere klank te analyseren en daar de ratios van toe te voegen aan je Additieve synth.

  2. Koppel de envelope van de partialen van elkaar los zodat je zelf kan bepalen wanneer welke partiaal aan of uit gaat in je soundscape generator, of verzin bijvoorbeeld een algoritmische patch die verschillende envelopes ritmisch triggered.

  3. Verzin een slimmere/efficientere 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.