2 Deconstructed Bell


Opdracht 2 van 6

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. De partialen worden vervolgens semi-random afgespeeld door een sequencer. 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: 23 februari

Belangrijke objecten in deze opdracht:



Gebruik alt-click op het object om de help-file te openen. Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.

Plaats comments (sneltoets c) om voor jezelf en ons duidelijk te maken dat je snapt hoe iets werkt.

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



a. Single Partial

Een belklank heeft boventonen, (partialen of harmonischen). Bouw eerst 1 partiaal, zodat het daarna makkelijk is om uit te breiden.

  1. Maak een [cycle~] oscillator en vermenigvuldig [*~] die met een [line~] envelope.
  2. Zorg dat bij het klikken van een [button] een midi-noot wordt omgerekend naar frequentie met [mtof] en vervolgens de ratio van Partiaal 0 krijgt (zie tabel hieronder).
  3. De button moet ook de envelope triggeren met de correct amplitude en duratie ratio's.
  4. Ga uit van een toon van MIDI-noot 84 (C6) in een message-box, een attack-tijd van 1ms met een amplitude van 1 en een duratie van 1000ms.
  5. Vergeet niet [(live.)gain~] voor de [ezdac~]/[plugout~] te zetten voordat je audio uit stuurt.

Objecten: [cycle~], [line~], [mtof], [trigger b f], [*], [*~], [message], [button], [(live.)gain~], [ezdac~]/[plugout~]



Risset Bell ratios

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

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


b. Harmonics

  1. Maak de overige partialen uit de tabel hierboven op dezelfde manier, elk met de correcte ratio's voor de frequentie, amplitude en duratie.
  2. Gebruik 1 [button] om alle tonen in 1x te horen en gebruik MIDI-noot 84 (C6) als grondtoon van waaruit alle frequenties berekend worden.
  3. Voeg een simpele reverb toe in parallel aan het droge signaal om de klank in een ruimte te plaatsen. Gebruik [yafr2] (Yet Another Free Reverb).

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.92       | a = 1 * 0.066 | t = 1000 * 0.65 
f[2] = etc...

Luistervoorbeeld 1

(cijfer: 6)


c. Deconstruction!

Maak een sequencer die willekeurig in kleine stapjes telkens een andere partiaal afspeelt.

  1. Gebruik [metro] om het tempo te bepalen, bijvoorbeeld 150ms.
  2. Gebruik [drunk] om de willekeurige partiaal te bepalen in kleine stappen, bijvoorbeeld [drunk 8 3]
  3. Gebruik een [gate] of [select] om een partiaal te triggeren op basis van het willekeurig gegenereerde getal

Luistervoorbeeld 2

(cijfer: 7)


d. Play it

Zorg ervoor dat de sequencer bespeelbaar wordt met de [kslider] of extern midi-keyboard ( [notein]) en andere GUI objecten.

  1. De MIDI-pitch bepaalt de grondtoon (uiteraard omgerekend met [mtof] en vermenigvuldigd met de frequentie-ratios van de partialen)
  2. De MIDI-velocity bepaalt de afspeelsnelheid van de [metro] waarbij een hoge velocity een kort tijd-interval is, verzin zelf een interessante mapping.
  3. Voeg een UI-object toe om de step-size van drunk aan te sturen, verzin zelf een zinvolle mapping.

Objecten: [kslider], [mtof], [scale], [(live.)dial], [(live.)slider]

Luistervoorbeeld 3

(cijfer: 8)



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

  1. Maak de attack en release tijden van de partialen variabel zodat je op een lager tempo lange fade-in en fade-out tijden kan genereren om zo tot een soundscape te komen.

  2. Voeg een algoritme toe dat bepaalt 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. 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.