2 Deconstructed Bell


Voor deze opdracht ga je de klank van een bel namaken met behulp van additieve synthese (het optellen van sinustonen). 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 beรฏnvloeden met MIDI of GUI-objecten.

Deadline: 6 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!



a. Single Partial

Een belklank heeft boventonen, (ookwel partialen of harmonischen). Bouw eerst 1 partiaal, zodat het daarna makkelijker is om uit te breiden. Het is aan te raden om een subpatch te maken van de partiaal om overzicht in de patch te houden later.

  1. Maak een [cycle~] oscillator en vermenigvuldig [*~] die met een [line~] envelope.
  2. Zorg dat bij het klikken van een [button] MIDI-noot 84 (C6) wordt omgerekend naar frequentie met [mtof] en vervolgens de ratio van Partiaal 0 krijgt.
  3. De button moet ook de envelope triggeren met de correct amplitude en duratie ratio's.
  4. Stuur de frequentie naar de cycle~, geef de line~ 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 uitstuurt!

Objecten: [cycle~], [line~], [mtof], [t 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 8 partialen uit de tabel hierboven op dezelfde manier, elk met de correcte ratio's voor de frequentie, amplitude en duratie.
  2. 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.)
  3. Gebruik 1 [button] om alle tonen in 1x te horen en gebruik MIDI-noot 84 (C6) als grondtoon van waaruit alle frequenties berekend worden.
  4. 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.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

(voldoende)


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


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

(goed)



Uitdaging

(zeer goed)

  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.