36
1 De bouw van de Aqualizer Door Josse van Dobben de Bruyn & Jelle van Mourik

De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 1 

 

  

De bouw van de Aqualizer  

 

 

 

 

Door Josse van Dobben de Bruyn & Jelle van Mourik 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 2: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 2 

 

 

 

 

 

 

 

 

  

 De bouw van de Aqualizer 

 

 

Door Josse van Dobben de Bruyn & Jelle van Mourik 

                  

Page 3: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 3 

 

Inhoud Inhoud ..................................................................................................................................................... 3 

Inleiding ................................................................................................................................................... 5 

1  Een lineair filter ............................................................................................................................... 6 

1.1  Een signaal ............................................................................................................................... 6 

1.2  Convolutie ............................................................................................................................... 7 

2  Het frequentiedomein ..................................................................................................................... 9 

2.1  Samenstelling van frequenties ................................................................................................ 9 

2.2  Van frequentiedomein naar tijddomein................................................................................ 11 

2.3  Van het tijddomein naar het frequentiedomein ................................................................... 12 

2.4  De frequentierespons ............................................................................................................ 14 

3  Recursieve filters ........................................................................................................................... 15 

3.1  Oneindige impulsrespons ...................................................................................................... 15 

3.2  Impulsrespons vaststellen ..................................................................................................... 16 

4  Complexe filters ............................................................................................................................. 16 

De complexe Fouriertransformatie ................................................................................................... 16 

4.1  Z‐transformatie ..................................................................................................................... 17 

4.2  Z‐transformatie in impulsrespons ......................................................................................... 20 

5  Polen en nulpunten ....................................................................................................................... 20 

5.1  Het plotten van een frequentierespons ................................................................................ 20 

5.2  Het berekenen van de impulsrespons (voorbeeld) ............................................................... 22 

5.3  Het berekenen van de reële impulsrespons (voorbeeld) ...................................................... 22 

6  Aqualizer ........................................................................................................................................ 24 

6.1  Eigen filter: de Aqualizer ....................................................................................................... 24 

6.1.1  Peaking filter .................................................................................................................. 24 

6.1.2  Low‐pass/high‐pass filter .............................................................................................. 25 

6.1.3  Parametrisch filter ......................................................................................................... 26 

6.1.4  Equalizer ........................................................................................................................ 26 

6.2  Vereisten filter ....................................................................................................................... 26 

6.2.1  Het aantal verschillende banden ( ) ............................................................................. 27 

6.2.2  Piekfrequentie ( ) ........................................................................................................ 27 

6.2.3  De frequentierespons .................................................................................................... 28 

6.2.4  Het volume ( ) .............................................................................................................. 28 

6.2.5  Link band‐width ............................................................................................................. 29 

Page 4: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 4 

 

6.2.6  Overige zaken bij het programmeren ........................................................................... 29 

6.3  Design grafische interface ..................................................................................................... 29 

6.4  Technische informatie Aqualizer ........................................................................................... 29 

7  Conclusie ....................................................................................................................................... 30 

Appendix A: Complexe getallen ............................................................................................................ 31 

Bijlage 1: Programmeercode: frequentierespons plotten in Scilab: ..................................................... 32 

Bijlage 2: Programmeercode: peaking filter .......................................................................................... 34 

Bijlage 3: Instellingen piekfrequenties .................................................................................................. 35 

Bibliografie ............................................................................................................................................ 36 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 5: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 5 

 

Inleiding Koffie wordt doorgaans gefilterd, anders vindt men het niet lekker. Water wordt gefilterd, anders loop je de kans allerlei ziektes op te lopen. E‐mail wordt vaak gefilterd om vervelende teksten buiten de deur te houden. Lucht kun je filteren om bijvoorbeeld giftige uitlaatgassen weg te houden. Ook geluid kun je filteren, maar hoe doe je dat? Probeer je met een vangnet het geluid van een gitaar weg te vangen? Nee, daarvoor zul je het moeten opnemen, er wiskundige formules op loslaten en in zijn nieuwe vorm weer uitzenden. Geen makkelijke klus.   Het filteren van geluid, dat wil zeggen, het vervormen ervan, kent een hele brede toepassing. Bij een  concert waar  versterkers worden  gebruikt, moet het  geluid op de  ruimte  aangepast worden. Hoge  tonen kunnen worden geabsorbeerd door gordijnen of de bekleding van  stoelen,  lage  tonen kunnen zichzelf versterken door middel van resonantie en daarom zou je ze kunnen willen versterken of  verzwakken.  Verder  is  het  soms wenselijk  de  balans  tussen  verschillende  instrumenten  aan  te passen en soms is het prettig om je speakers te sparen door de lage tonen wat zachter te zetten.    Met de  komst  van de  elektronische muziek, bijvoorbeeld  techno  en dance,  is  er nog  een hele nieuwe toepassing van geluidsfilters gekomen. De lage tonen, de ‘beat,’ worden vaak hard gezet om de muziek  te  kunnen  voelen en  veel  geluidseffecten  zijn erop  gebaseerd het  geluid door  speciale filters heen te halen.  Ons onderzoek gaat over het programmeren van een digitaal geluidsfilter. En niet zomaar een filter, maar een soort all‐in‐one‐geluidsfilter. Over het algemeen is een filter namelijk of een high‐pass filter (zie hoofdstuk 6  voor uitleg), of een parametrisch  filter, of een band‐pass  filter of nog een ander soort, maar niet allemaal tegelijk. Wij probeerden echter een digitaal filter te maken dat zo instelbaar is dat hij alles kan. Daar komt de nodige hogere wiskunde aan te pas. Een grote uitdaging was om bij het ontwerpen van het  filter gebruik  te maken van de oplossing die complexe getallen bieden om sommige problemen makkelijker te maken.  Hoofdstuk 1 tot en met 4 beschrijven de wiskunde die wij ons eigen moesten maken alvorens in staat te  zijn een digitaal  filter  te maken. Achtereenvolgends worden  lineaire  filters,  recursieve  filters en complexe  getallen  hierbij  behandeld.  Het  onderzoek  hierbij was  grotendeels  literatuuronderzoek. Hoofdstuk 5 bevat de beschrijving van een hulpprogramma dat we hebben geschreven om meer grip te krijgen op het ontwerp van een adequaat filter. Vervolgens wordt met behulp van een uitgebreid voorbeeld voorgedaan, hoe de verdere  formules  toegepast kunnen worden  in het ontwerp van de filter.  In  Hoofdstuk  6  staat  de  bouw  van  ons  filter  centraal.  Nog  een  hulpprogramma  wordt beschreven dat ons direct helpt bij het ontwerpen van de filter. Voor de rest komen alle formules ter sprake die van belang zijn bij het programmeren van het filter.   Het uiteindelijke programma is een VST‐plugin, geprogrammeerd in de programmeercode C++. Het is  te  laden  in diverse computerprogramma’s, zoals Sonar en MAGIX Music Maker. We hebben het programma Aqualizer genoemd, als variatie op de al bestaande equalizer.              

Page 6: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 6 

 

0 2 4 6 8 10 12 14 16 18 20

-2.0

-1.0

0.0

1.0

2.0

x(t)

Am

plitu

de1 Een lineair filter 

1.1 Een signaal Om te beginnen moeten we bedenken wat geluid eigenlijk is en hoe geluid wordt voorgesteld in de computer.  Geluid wordt  gevormd  door  continue  trillingen  in  de  lucht.  Hoge  frequenties worden gevormd door hele snelle trillingen in de lucht, lage frequenties door langzame. De trillingen kunnen worden gemeten en gedigitaliseerd. De sterkte van de trilling, de uitwijking ofwel amplitude, bepaalt de geluidssterkte.    Het  is belangrijk om  je te beseffen dat als  je een signaal digitaliseert,  je maar een eindig aantal keer per seconde een fragmentje kan nemen. Het continue signaal van bijvoorbeeld een gitaar wordt dan dus discreet, bestaande uit   puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek 1.1 staat een voorbeeld van hoe een signaal eruit zou kunnen zien. 

Elk puntje  in deze grafiek wordt  ‘sample’ genoemd en  is dus de  input op een moment. Deze wordt meestal met   aangeduid. De blokhaakjes geven aan dat we het hier over discrete tijd hebben. Als we ervan uitgaan dat ons signaal een tijdspanne van één seconde beslaat, was de frequentie waarop onze oscilloscoop werkte 20 Hz. Het  is meteen duidelijk zichtbaar dat een dergelijk  lage  frequentie een  relatief  grote  onnauwkeurigheid  met  zich  meebrengt.  Heel  veel  kleine  golfjes  in  het oorspronkelijke signaal zijn namelijk niet te zien in dat wat door de computer waargenomen wordt. Stiekem zag het continue signaal er namelijk uit als in grafiek 1.2. 

Je kunt zien dat de hoge frequenties –de kleine golfjes‐ van het oorspronkelijke signaal niet meer zichtbaar zijn. De grote lijn, die in de lage frequenties zit, is echter nog wel aardig zichtbaar in grafiek 1.1. Hier uit is dus te concluderen dat hoge frequenties niet meer goed waar te nemen zijn. Hieraan is zelfs een stelling verbonden, bedacht door de Zweedse elektronicus Harry Nyquist. Deze stelling zegt dat de hoogste frequentie die aanwezig is in het signaal niet hoger mag zijn dan de helft van de 

samplefrequentie, ofwel  . (Black, 1953) 

Als  je bijvoorbeeld een oscilloscoop hebt die honderd samples per seconde kan nemen, mag de maximale frequentie 50 Hz zijn. Is hij hoger, dan gaat er allerlei dingen mis in de herkenning van het signaal. 

0 2 4 6 8 10 12 14 16 18 20

-2.0

-1.0

0.0

1.0

2.0

x[n]

Am

plitu

de

Grafiek 1.2 Het oorspronkelijke signaal en de punten die zijn geregistreerd. Een groot deel van de boventonen zijn weggevallen door de lage resolutie van de oscillator.  

Grafiek 1.1 Een voorbeeld van een signaal in het tijddomein. Op de x‐as staat het samplenummer, op de y‐as de amplitude ervan. 

Page 7: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 7 

 

  Als er wel  te hoge  frequenties  in het  signaal  zitten, kunnen die niet meer als  zodanig herkend worden. Ze zijn er echter wel en moeten dus wel op een manier geregistreerd worden. Dat gebeurt dus ook wel. Een voorbeeld van deze situatie  is te zien  in grafiek 1.3. De samplefrequentie  is  in dit geval 10 Hz. Het signaal is echter ±9,5 Hz.  

 De computer krijgt op deze manier een compleet vertekend beeld van de input: hij denkt dat er een hele  lage  frequentie binnenkomt,  terwijl het een  veel hogere  frequentie  is. Dit  verschijnsel wordt ‘aliasing’ genoemd.   In de praktijk hebben de meeste geluidskaarten een samplefrequentie van 44.100 Hz en kunnen dus tonen die hoger zijn dan 22.050 Hz in één seconde niet als zodanig registreren. Je moet dus ook voordat  het  signaal  de  computer  binnenkomt  al  zorgen  dat  die  eruit  zijn,  anders  loopt  de  hele signaalverwerking in de soep.  

1.2 Convolutie Als  je een  signaal binnen hebt gekregen, wil  je daar ook graag wat mee doen. Een  van de eerste dingen die  je moet kunnen,  is het herkennen van een signaal. Dat  is  in allerlei toepassingen nodig. Een  radarsignaal moet  opgevangen  en  herkend worden,  de  spraakherkenning  van  een  computer moet  wel  weten  waarop  die  moet  reageren,  seismografen  moeten  bepaalde  signalen  kunnen herkennen en noem maar op. Er komt een signaal   binnen, dat verwerkt moet worden en dan tot  een  bepaalde  uitvoer   moet  leiden.  De  verwerking  van  het  signaal  ofwel  impulsrespons wordt over het algemeen   genoemd. In een schema ziet de verwerking eruit als in schema 1.1. 

   

   

Een geluidsversterker zou  je bijvoorbeeld kunnen weergeven met  · 3. Dat betekent dat elke input wordt vermenigvuldigd met 

3,  dat  wil  zeggen:  drie  keer  zo  sterk  wordt  en  dan  weer uitgezonden wordt. Dan krijg je dus altijd  3 .   Voor signaalherkenning  is het essentieel meerdere  inputs mee te  nemen.  De  impulsrespons  wordt  dan  wat  langer  en  zou  er bijvoorbeeld zo uit kunnen zien:      … Een  bepaalde  output  wordt  dus  veroorzaakt  door  de  afgelopen impulsen. Je kunt deze  impulsrespons ook tekenen  in een grafiek, een  zelfde  soort  als waar  je  ook  een  impuls  in  tekent. Grafiek  1.4  laat  zo’n  grafiek  zien.  Als we beginnen bij  ,  vermenigvuldigen we die waarde met a0,  sample nummer 0  in de  grafiek. Dan kijken we naar de vorige waarde,  1 , en vermenigvuldigen we die met nummer 1. Hetzelfde doen we met de volgende waarden tot en met  5 . Al deze waarden opgeteld vormen  . Dit kun je vervolgens ook doen om  1 ,  2  en zo voort uit te rekenen.  Dit proces wordt convolutie genoemd en is ook weer te geven in een wiskundige formule: 

0 1 2 3 4 5 6 7 8 9 10

-1.0

0.0

1.0

Grafiek 1.3 Deze sinus is het signaal dat er in een seconde binnenkomt. De punten zijn de samples die de oscilloscoop met een frequentie van 10 Hz waarneemt: een lagere frequentie.

 

Schema 1.1 De verwerking van een signaal schematisch weergegeven. 

Grafiek 1.4 Een voorbeeld van een impulsrespons h[n]. De hoogte van de puntjes zijn de waarde van an . 

0 1 2 3 4 5 60.0

0.2

0.4

0.6

0.8

1.0

Am

plitu

de

Page 8: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 8 

 

·  

Formule 1.1 Convolutie mathematisch beschreven. M is het aantal punten van de impulsrespons  , k loopt van 0 tot M‐1. Dit wordt geschreven als    

Dit  is  nogal  een mond  vol  om  telkens weer  op  te  schrijven,  daarom  is  er  een  tekentje  bedacht speciaal voor convolutie: het *‐teken. Net als optellen, aftrekken en vermenigvuldigen allemaal een eigen teken hebben, wordt convolueren met een sterretje weergegeven. Merk op dat in grafiek 1.5 0  correspondeert met   in de formule,  1  met a1 et cetera.  

       

       

Grafiek 1.5 Convolutie schematisch weergegeven. De bovenste grafiek geeft het signaal x[n] weer. Als voorbeeld wordt   geconvolueerd. Alle signalen worden vermenigvuldigd met een bepaalde waarde in h[n]. De som hiervan vormt de output  . Zo gaat het convolueermachientje het hele signaal af en vormt zo heel  . (Smith, 1997)  

De uitwerking van het voorbeeld om    uit te rekenen is: 

· · · ··   

. · . . · . . · . . ·. · . .   

0 1 2 3 40.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

4.0

4.5

5.0

h[n]

Am

plitu

de

0. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

-3

-2

-1

0

1

2

3

x[n]Ampl

itude

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

-20

-15

-10

-5

0

5

10

15

20

y[n]Ampl

itude

Page 9: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 9 

 

2 Het frequentiedomein 

2.1 Samenstelling van frequenties Elk instrument heeft zijn eigen klankkleur en produceert zijn eigen boventonen. Dat betekent dus dat zijn  toon een  samenstelling  is van bepaalde  frequenties; anders  zou het  immers een  zuivere  sinus zijn. Hoe moet je je nu voorstellen dat meerdere tonen tegelijk worden geproduceerd? De lucht kan immers niet tegelijk met 10 Hz en met 15 Hz trillen want dan zou hij op bepaalde momenten twee verschillende  kanten  tegelijkertijd  op moeten  trillen.  Je moet  je  voorstellen  dat  alle  signalen met verschillende  frequenties die op hetzelfde moment aanwezig zijn,  telkens worden opgeteld en dan één gezamenlijk sample vormen. In de volgende grafiek staat hoe dat in zijn werk gaat 

  

   

                        

 In de praktijk produceren veel instrumenten al gauw meer dan tien boventonen en de optelling van losse sinussen zal dan ook aardig oplopen. Als je al deze frequenties met hun amplitude weet, kun je die  natuurlijk  ook  weer  in  een  grafiekje  zetten.  Bij  ingewikkelde  signalen  werkt  dat  soms verhelderend.     Grafiek 2.2 maakt duidelijk waarom een frequentiedomein nuttig kan zijn. Het frequentiedomein bevat de amplitudes van alle mogelijke frequenties. Het tijddomein laat in dit geval een ogenschijnlijk rommelig  signaal  zien,  terwijl  het  frequentiedomein  slechts  zeven  losse  punten  bevat.  Beide grafieken bevatten echter exact dezelfde informatie, beide op een andere manier. De punten in het frequentiedomein zijn als volgt op te vatten: een coördinaat van (f;A) betekent hier dat een sinus een 

periode  heeft  van   met  amplitude  A.  Het  punt  (3;0,7)  staat  dus  voor  de  functie  0.7 ·sin 3 · 2 ·  met   als continu signaal. Van alle losse punten zijn soortgelijke sinussen te maken en de som van al deze sinussen vormt het  tijddomein. Zo  is van een simpel  frequentiedomein een relatief moeilijk uitziend tijddomein te maken en andersom. 

0 2 4 6 8 10 12

-1.0

-0.5

0.0

0.5

1.0

0 2 4 6 8 10 12

-1.0

-0.5

0.0

0.5

1.0

0 2 4 6 8 10 12

-1.0

-0.5

0.0

0.5

1.0

0 2 4 6 8 10 12

-1.0

-0.5

0.0

0.5

1.0

  . ·  

. · . ·  

Grafiek 2.1 Optelling van sinussen. 

   

  . ·    + 

 

Am

plitu

deA

mpl

itude

Am

plitu

deA

mpl

itude

Page 10: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 10 

 

   Grafiek 2.2 Een signaal  in zijn tijddomein ziet er  in dit geval behoorlijk rommelig uit. Het frequentiedomein  is een stuk overzichtelijker daar het uit slechts een klein aantal puntjes bestaat. Beide bevatten echter precies dezelfde  informatie over  het  signaal.  Als  alle  zeven  puntjes  uit  het  frequentiedomein  (de  rechtergrafiek)  worden  geschreven  als  ·

· · en worden opgeteld  (dus:  · · · · · ·   · · · )  is  het resultaat in het tijddomein  . 

In dit voorbeeld zijn voor het gemak alleen maar sinussen gebruikt. Je kunt er ook voor kiezen een cosinus  te gebruiken, die een sinus  is met een  faseverschil.  In de praktijk worden ze echter allebei tegelijk gebruikt en wordt een signaal dus voor de helft uit sinussen en voor de helft uit cosinussen opgebouwd. De  reden hiervoor en het nut hiervan  zullen  later nog uitgebreid aan bod  komen.  In ieder geval is het dus meestal nodig twee frequentiedomeinen te tekenen: één voor de sinussen en één voor de cosinussen, die beide evenveel punten bevatten. Het totaal aantal punten in deze twee grafieken  is weer  . De puntjes omvatten alleen gehele getallen, zodat       , dus  0,1,2,3, … . De 

maximale waarde die  ze  kunnen hebben  is    aangezien daarna  aliasing optreedt  (zie  §2.1). Als n 

echter van 0  tot en met    loopt, bevat elke grafiek  1 puntjes en dan zouden ze samen 2

1 2  punten  bevatten.  2  is  meer  dan    en  dit  hoort  niet  te  kunnen.  Het 

frequentiedomein zou dan namelijk meer informatie bevatten dan het tijddomein, terwijl ze precies hetzelfde horen te zijn. De reden hiervoor is echter de volgende: de grafiek met de sinus bevat onder 

andere de punten sin 0 · 2 ·  en sin 2 · sin · · . De sinus van 0  is 0, dus die valt 

weg. De enige frequentie die dan nog te veel is, is sin · · . In grafiek 2.3 is echter te zien dat die door aliasing precies uitdooft. Dat komt omdat alle samples worden genomen op   en   alleen natuurlijke getallen omvat, dus ook      . Bovendien hadden we al gesteld dat   alleen maar een heel getal kon zijn. Het getal binnen de haakjes van de sinus is dus altijd een veelvoud van  , en geeft dus nul. 

   Grafiek 2.3 Een tijddomein met N=6. De lijn stelt de functie  ·  voor. Je kunt duidelijk aflezen dat telkens als er een sample wordt genomen, deze frequentie buiten de boot valt bij de registratie.  

0 1 2 3 4 5 6 7 8

-1.0

-0.5

0.0

0.5

1.0

Am

plitu

de

0 10 20 30 40 50 600.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Frequentie (Hz)

Am

plitu

de

0 1 2 3 4 5

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

Am

plitu

de

Page 11: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 11 

 

In paragraaf 1.1 is kort ter sprake gekomen dat hele hoge frequenties onmogelijk zijn waar te nemen in discrete tijd. Hoger dan de helft van de samplefrequentie worden ze  immers niet meer herkend. De maximale  frequentie van het  frequentiedomein zal dus nooit hoger  liggen dan de helft van het aantal  signalen  in  het  tijddomein.  In  grafieken wordt  om  die  reden  op  de  horizontale  as  van  het frequentiedomein de relatieve frequentie gezet. Hiervoor geldt:               

Waarbij geldt:   

•      die loopt van 0 tot en met  . 

•           We kennen dus nu drie verschillende manieren om een signaal weer te geven: 

• In het  tijddomein als  , met N samples waar de amplitude tegen de tijd wordt uitgezet; 

• In  het  frequentiedomein  genaamd    (het frequentiedomein wordt met dakje op de  letter aangeduid). Er zijn dan twee grafieken nodig: een voor de sinussen en een voor de cosinussen. Ze 

bevatten  allebei  1  punten,  waarvan  het eerste  en  het  laatste  punt  bij  de  sinus  sowieso zul zijn; 

• In het relatieve frequentiedomein als  . Deze is  op  alle  punten  hetzelfde  als  het  normale frequentiedomein, met het verschil dat op de x‐as de relatieve frequentie staat, dus  . 

2.2 Van frequentiedomein naar tijddomein Uit  een  frequentiedomein  is  relatief  gemakkelijk  bijbehorend  tijddomein  samen  te  stellen.  De wiskundige formule hiervoor luidt: 

 

 Formule  2.1 De wiskundige  formule om  van de punten  in het  frequentiedomein het  tijddomein  te maken.    is de amplitude van een punt   in het tijddomein.   is een punt in het frequentiedomein die de amplitude van een bepaalde 

frequentie aangeeft. Er is  een  cos en een  sin omdat het frequentiedomein immers uit twee grafieken bestaat. k is een 

waarde die van 0 tot en met   loopt waarbij N het totaal aantal punten in het frequentiedomein is. (Smith, 1997) 

Deze formule telt dus voor elk punt   de waarde van alle sinussen en cosinussen op en vormt zo de amplitude. Zo kun je doorgaan tot en met puntje   om een volledig signaal te krijgen. Maar je kunt ook doorgaan met  1 ; de formule verhindert dat niet. Je krijgt dan echter weer hetzelfde signaal opnieuw, zoals wordt aangetoond in de volgende berekening:   

· · 

Grafiek 2.4 Het relatieve frequentiedomein van het signaal in grafiek 3.2. 

0.0 0.1 0.2 0.3 0.4 0.50.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

Relatieve frequentie

Am

plitu

de

Page 12: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 12 

 

· ·

· · 

 Als je het tijddomein construeert, zal het dus periodiek worden met periode  . 

2.3 Van het tijddomein naar het frequentiedomein Over het algemeen  is het waarschijnlijker dat het nodig  is een  signaal  in het  tijddomein naar een frequentiedomein te verplaatsen. Als een signaal gemeten wordt, zal een computer immers alleen de amplitudes  op  verschillende  tijdstippen  kunnen  waarnemen  en  niet  meteen  weten  waaruit  dat signaal  is  opgebouwd.  Veel  wiskundigen  hebben  er  zich  over  gebogen  hoe  je  signalen  in  een tijddomein  in een frequentiedomein kunt weergeven en zijn tot de conclusie gekomen dat dit  in de praktijk  niet mogelijk  is. Alhoewel,  alleen  niet  voor  een  continu  signaal.  Bij  bepaalde  golven met hoeken  (zoals bij blokgolven  en  zaagtandgolven)  zou  er  een oneindige hoeveelheid  sinussen  voor nodig zijn om het signaal te benaderen en dat  is voor een simpel computersysteem natuurlijk nooit haalbaar.   Er is een troost: voor discrete signalen is het wel mogelijk een signaal precies weer te geven in een frequentiedomein.  En  dat  is  heel  fijn, want  het  kan  soms  veel makkelijker  zijn  te werken  in  het frequentiedomein  dan  in  het  tijddomein.  Als  je  bijvoorbeeld  weet  dat  je  speakers  onder  een bepaalde  frequentie  een  lelijk  geluid  produceren,  kun  je  ervoor  kiezen  die  eruit  te  filteren.  In gehoorapparaatjes moeten  bepaalde  frequenties  in  het menselijk  gehoorspectrum  juist  versterkt worden. Ook hier heb je dus niets aan een tijddomein en des te meer aan een frequentiedomein.  De redenering om bepaalde  frequenties uit een signaal  te distilleren gaat als volgt: als  je naar een bepaald  signaal  zoekt,  ga  je  er  ook  vanuit  dat  hij  er  min  of  meer  meetbaar  inzit.  Stel,  je  wilt onderzoeken  of  je  binnengekomen  signaal  bijvoorbeeld  de  frequentie  ‘6  Hz’  bevat.  Als  hij  er inderdaad significant  inzit, verwacht  je dat, als  je die frequentie uitzet tegen de tijd en die over het signaal  legt, beide  tijddomeinen wel overeenkomsten vertonen. Op de plaats van de pieken bij de frequentie die je zoekt, zouden dus ook pieken moeten zitten in je signaal. 

   

 

0 5 10 15 20 25 30

-1 0

-0.8

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

0.8

1.0

Am

plitu

de

0 5 10 15 20 25 30

-1.0

-0.8

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

0.8

1.0

Am

plitu

de

0 5 10 15 20 25 30

-1.0

-0.8

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

0.8

1.0

Am

plitu

de

Grafiek 2.5 Het groene signaal is het binnengekomen signaal dat het rode signaal maar ook storing bevat. Als je beide signalen over elkaar legt, is het rode signaal nog wel goed te herkennen. 

Page 13: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 13 

 

  Vervolgens vermenigvuldig je het signaal met de frequentie die je zoekt. Dat wil zeggen, elk punt van  je  signaal met  het  bijbehorende  punt  van  de  frequentie.  Voor  het  gemak  geef  je  de  laatste amplitude 1. Als de pieken  inderdaad tegelijk voorkomen, versterken die elkaar en geven een hoge uitkomst. Dat geldt voor de negatieve net zo goed als voor de positieve pieken, omdat een negatief getal vermenigvuldigd met zichzelf een positief getal geeft. Als je al die puntjes optelt, krijg je goede indicatie hoe de gezochte  frequentie vertegenwoordigd  is  in het  signaal. Bij een hoge waarde  zijn blijkbaar veel (hoge) waardes opgeteld en daarom was de betreffende frequentie blijkbaar aanwezig. Bij een lage waarde hebben bepaalde punten elkaar blijkbaar uitgedoofd en was de frequentie er dus niet.   De  gemiddelde  uitkomst  per  sample  is  de  maat  voor  de  waarde  (dus  amplitude)  van  een frequentie in het frequentiedomein. Als je deze bewerking voor alle frequenties uitvoert die binnen het tijddomein passen, stel je op die manier je frequentiedomein samen. De formule om twee reële frequentiegrafieken  te  krijgen  uit  een  tijddomein  wordt  de  ‘discrete  reële  Fouriertransformatie’ genoemd en ziet er als volgt uit:1 

1· cos

1· sin

 Formule 2.2 De reële discrete Fouriertransformatie als wiskundige vergelijking, die een signaal in het tijddomein omzet naar een frequentiedomein.  cos  is de amplitude van een frequntie k in het frequentiedomein voor de cosinus, waarbij 

 maximaal de helft van de samplefrequentie   mag zijn. N is het aantal samples en n een waarde die van 0 tot en met 

N‐1 loopt. Idem voor de sinus. Uit deze formule komt een absoluut frequentiedomein rollen. Voor een relatief frequentiedomein moet je op de x‐as alle  ’s  delen door N. 

                                                            1 Voor de begrijpelijkheid is de reële discrete Fouriertransformatie opgesteld zoals hierboven. Voor de volledigheid kan echter niet nagelaten worden te zeggen dat deze formule niet helemaal correct is, al is hij voor de meeste berekeningen wel te hanteren. Om het tijddomein en het verkregen frequentiedomein werkelijk naadloos met elkaar overeen te laten komen, moet er nog een tussenstap worden genomen: het frequentiedomein moet met 2 vermenigvuldigd worden, zodat de formule komt te luiden: 

2· cos

2· sin

Ook dit is nog niet het hele verhaal, aangezien verder voor  0 ,    geldt: 

0  ∨  21

· cos2

 

Al deze problemen worden veroorzaakt door het feit dat we met deze formule binnen het reële getallenstelsel blijven. Verderop, in hoofdstuk 5, zullen we ook imaginaire getallen erbij betrekken, waardoor het een stuk overzichtelijker wordt. (Smith S. W., 1997)  

Page 14: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 14 

 

 

 

Grafiek 2.6 We vragen ons af of het signaal     de frequentie     bevat. Om daar achter te komen vermenigvuldigen 

we deze met elkaar en tellen alle punten bij elkaar op dus ∑   ·   . Als we die vermenigvuldigen met   (dus eigenlijk 

gewoon het gemiddelde nemen) krijgen we de waarde van de frequentie c1 in het frequentiedomein. In dit geval is het gemiddelde die uit deze berekening komt rollen  . . We accepteren dus ook de mogelijkheid van een ‘negatieve amplitude.’ 

De  reële  Fouriertransformatie  is  een  tamelijk  ingewikkelde  bewerking,  met  een  aantal onvolkomenheden. Wiskundig  gezien  is  het  dan  ook  niet  de meest  correcte, maar wel  de meest begrijpelijke methode  om mee  te  beginnen. Verderop  zullen we wiskundig  correcter met  de  stof omgaan. 

2.4 De frequentierespons Het  is  fijn dat we nu  een  signaal  in het  frequentiedomein kunnen  weergeven,  want  hiermee  zullen  we  voortaan blijven werken. De  voordelen  van  dit  domein  zijn  al  even aan  bod  gekomen.  We  gaan  met  deze  kennis  een  filter proberen  te  maken.  We  zullen  daarvoor  een frequentierespons nodig hebben. Dat wil zeggen: een   die voor elke frequentie bepaalt welke erdoor mag en welke niet. Het  liefst hebben we een continue frequentierespons, aangezien  hij  dan  op  elk  mogelijk  binnenkomend  signaal antwoord heeft.   Als we een frequentierespons willen ontwerpen, moeten we bedenken wat de  input en de output  is of  zou moeten 

0 5 10 15 20 25 30 35 40

-1.0

-0.5

0.0

0.5

1.0

0 5 10 15 20 25 30 35 40

-1.0

-0.5

0.0

0.5

1.0

0 5 10 15 20 25 30 35 40

-1.0

-0.5

0.0

0.5

1.0

Grafiek 2.7 Het gemiddelde audiogram per leefijdsgroep voor mannen. (NVON‐commissie, 2004) 

b. c1[ ] 

c. x1[ ] · c1[ ] 

a. x1[ ] 

Am

plitu

deA

mpl

itude

Am

plitu

de

Page 15: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 15 

 

zijn. We nemen als voorbeeld een gehoorapparaatje voor ouderen. Grafiek 2.7 is een audiogram van het menselijke gehoorspectrum en zoals te zien horen ouderen niet alle frequenties even goed meer. Als we ons tot doel stellen dat een oudere zijn medemens moet kunnen verstaan, moet hij  in  ieder geval de frequenties van normale stemmen kunnen verstaan. Over het algemeen zijn stemmen niet lager dan 100 Hz en niet hoger dan 3 kHz. Alle frequenties die daarbuiten liggen, zijn niet interessant en kunnen alleen maar storen. Die willen we er dus uit filteren, opdat alleen de stemmen overblijven. Een  nadeel  hiervan  is misschien  dat  enkele  boventonen  en  dus  klankkleur  ook  uit  de  stemmen verdwijnt, maar dat vinden we nu even minder belangrijk.    De  volgende  stap  is  het  uittekenen  van  de  frequentierespons  .  Die  geeft  aan met welke waarde  elke  frequentie  vermenigvuldigd  moet  worden.  Waar  in  het  tijddomein  dus  met   geconvolueerd wordt, wordt  in  het  frequentiedomein met    vermenigvuldigd. Dat  is  een  veel makkelijkere bewerking en ook veel sneller voor een computer. In het ideale geval zou   er hier zo uitzien:  

     

Helaas  lukt het niet goed een continue  frequentierespons  te maken die er zo uitziet  in een  lineair filter. Die moet namelijk per definitie de vorm hebben van: 

 Dat betekent dat we onze   moeten omrekenen naar de impulsrespons  . Dat kan door middel van formule 2.1: die is namelijk even goed geldig voor een signaal in het frequentiedomein als voor een  frequentierespons.  Het  probleem  zit  hem  er  echter  in  dat,  in  het  geval  van  een  minimale samplefrequentie  van  6000 Hz,  de  impulsrespons  tot minimaal  3000  punten moet  gaan  om  een adequate  respons  te  bereiken,  aangezien  de  frequentierespons  in  ieder  geval  tot  3000 Hz moet gaan.  Dat  betekent  dus  op  zijn minst  een  a0  tot  en met  a2999  waarmee  vervolgens  een  signaal geconvolueerd moet worden. Dat gaat heel erg veel rekentijd  in beslag nemen en dat  is allerminst bevorderlijk voor de snelheid van het apparaatje. 

3 Recursieve filters  

3.1 Oneindige impulsrespons In het vorige hoofdstuk is aan bod gekomen hoe je frequenties uit een signaal kunt filteren. Dit kan met  behulp  van  een  lineair  filter.  Het  is  echter  gebleken  dat  daar  een  hele  ingewikkelde impulsrespons voor nodig is en dat is natuurlijk niet fijn. Dit kost heel veel geheugen en rekentijd en vermijden we dus liever.   Maar waarom zou  je eigenlijk zover kijken als  je ook maar één stapje terug kunt kijken.  Je kunt immers ook kijken naar de vorige output: 

1  Hierin zit immers ook een deel van de vorige input: 

1 2  Waarin overigens ook de input van twee samples geleden zit: 

1 2 3  

Grafiek 2.8 De ideale frequentierespons voor een gehoorapparaatje zou er zo 

uitzien. Het menselijke vocale spectrum wordt versterkt, terwijl alle andere frequenties worden uitgedoofd. 

10 100 30001000 5000 100000.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

4.0

4.5

5.0

Frequentie (Hz)

h[k]

Page 16: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 16 

 

0 5 10 15 20 25 30

-10

-5

0

5

10

Sample

Am

plitu

de

Dit kun je natuurlijk zo ver uitschrijven als je maar wilt. Daarom wordt dit ‘oneindige impulsrespons’ genoemd. Daar tegenover staat de ‘eindige impulsrespons,’ die hoort bij het lineair filter. Filters die behalve de input ook de output gebruiken heten ‘recursieve filters.’   Het  grote  voordeel  van  recursieve  filters  is dus dat  ze de  input  van heel  ver  terug nog  in hun achterhoofd  kunnen houden.  Ze hebben echter ook een nadeel:  ze  kunnen  instabiel worden. Dat betekent dat ze ongewenst ineens kunnen doorschieten en een heel hoog signaal als output kunnen geven terwijl dat helemaal niet de bedoeling  is. Dat risico  loop  je als  je | | 1 kiest. Grafiek 3.1a t/m e laten zien wat er kan gebeuren met verschillende b’s. Steeds komt er op  5 een impuls van 1 binnen. 

    

Over het algemeen kies je bij een recursief filter voor de b’tjes dus waarden tussen de 1 en  1. Het is wel mogelijk  om waarden  daarbuiten  te  kiezen, maar  dan moet  je  goed  oppassen  en  eventuele instabiliteit compenseren met bepaalde waarden van de a’tjes of andere b’tjes. 

3.2 Impulsrespons vaststellen De  enige moeilijkheid  is  nu  het  samenstellen  van  ,  oftewel  van  de  a’tjes  en  de  b’tjes.  Een impulsrespons zoals bij een lineair filter is in ieder geval met geen mogelijkheid te maken, omdat die oneindig  lang  is.  Bovendien  hangt  de  respons  nu  ook  van  de  invoer  af.  Het  is  natuurlijk  een mogelijkheid om heel veel  frequenties af  te gaan en kijken hoe het  filter daarop reageert. Dat kan heel goed tot een oplossing leiden, maar het is niet erg efficiënt en allerminst exact.    Om een adequate  impulsrespons te creëren die niet teveel rekentijd  in beslag neemt, zullen we ons aan wat meer en vooral complexere wiskunde moeten wagen. 

4 Complexe filters  

De complexe Fouriertransformatie1 Tot nu  toe  zijn de oplossingen bij alle problemen binnen het normale getallenstelsel gebleven. De uitkomsten van de formules zijn begrijpelijke getallen geweest die in ons normale denkraam passen. Soms moeten  sommige  dingen  echter  iets moeilijker  gemaakt  worden  om  tot  een makkelijkere oplossing te komen. Zo wordt het in de wiskunde over het algemeen als ‘makkelijk’ beschouwd als je iets  in één  formule kunt vertellen  in plaats van  twee. De omrekening van het  tijddomein naar het frequentiedomein  (§2.3)  zou  dus  liever  gevangen worden  in  één  formule, met  als  uitkomst  één 

                                                            1 Vanaf hier wordt gebruik gemaakt van complexe getallen en wordt de informatie uit appendix A over complexe getallen gebruikt. 

0 5 10 15 20 25 30

-10

-5

0

5

10

Sample

Am

plitu

de

0 5 10 15 20 25 30

-10

-5

0

5

10

Sample

Am

plitu

de

0 5 10 15 20 25 30

-10

-5

0

5

10

Sample

Am

plitu

de

0 5 10 15 20 25 30

-10

-5

0

5

10

Sample

Am

plitu

de

b. 1.1 c. 1 a. 1.1 

e. 0.9d. 0.9 Grafiek 3.1 Impulsresponsen met verschillende waarden voor  . Allen krijgen ze op   een impuls van , maar ze reageren allemaal 

verschillend. 

Page 17: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 17 

 

grafiek.  De  formule wordt  daardoor  wel  aardig  complex.  In  Appendix  A  staat  kort  de  complexe materie uitgelegd waarvan gebruik gemaakt wordt.      We  kiezen  ervoor  de  helft  van  het  signaal  in  het  frequentiedomein,  namelijk  alle  sinussen,  te vermenigvuldigen met de wortel van  1,  ‘ .’ De sinussen uit het frequentiedomein worden dan als volgt berekend: 

· ·  

Het  ’tje heeft hier niet echt een betekenis. Op de y‐as staat nu  , 2 , 3 …  in plaats van 1, 2, 3… We kunnen  nu  echter wel    en    zonder  problemen  bij  elkaar  optellen  in  één  formule, zonder dat ze elkaar  in de weg gaan staan. Of eigenlijk, al  is dat meer een definitiekwestie, trekken we ze van elkaar af omdat dat in de praktijk soms handiger blijkt uit te pakken. De som van een reëel getal en een complex is immers niet te vereenvoudigen. Je krijgt dan ook 

·  Dit lijkt een beetje gekunstelde formule, tot we hem gaan omschrijven. 

·  

· ·

 

Volgens de formule van Euler,  cos sin , is dit ook te schrijven als: 

·  

Formule 4.1 De complexe Fouriertransformatie. Van het tijddomein   kan zo een punt    in het frequentiedomein berekend worden, die de amplitude van de sinus én de cosinus bevat.   mag maximaal de helft van het aantal punten    in het tijddomein zijn.   is een index die loopt van 0 tot en met  . 

Deze formule wordt de ‘complexe Fouriertransformatie’ genoemd en is natuurlijk de grote broer van de  reële  discrete  Fouriertransformatie.  Het  enige  nare  is  dat  het  complexe  deel  in werkelijkheid natuurlijk niet complex  is en dit deel dus eerst door   gedeeld moet worden, wil er  iets staan met reële betekenis.  De omrekening van een signaal  in het  frequentiedomein  is nu ook opeens een stuk makkelijker  te schrijven dan in §2.2.  

·  

Formule 4.2 De inverse complexe Fouriertransformatie, die wordt gebruikt om een signaal in het frequentiedomein om te schrijven naar eensignaal in het tijddomein. 

Het grote verschil met de eerdere formule  is dat de  index   hier  loopt van 0 tot en met  1. De rest  is  gewoon  het  resultaat  van  een  handigere manier  van  het  omschrijven  van  de  sinussen  en cosinussen.   Als het enige doel van beide formules het korter schrijven zou zijn, zouden we niet zo veel moeite hebben  gedaan.  Deze  formule  is  echter  de  basis  van  veel  berekeningen  om  daadwerkelijk impulsresponsen vast te stellen, ook voor recursieve filters. 

4.1 Z­transformatie  De complexe Fouriertransformatie is een handig opstapje naar het bepalen van de coëfficiënten van de recursieve filter. Hiervoor moeten we deze transformatie echter een beetje aanpassen.  

Page 18: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 18 

 

  Bij het berekenen van één  , dus één puntje in het frequentiedomein, is een aantal dingen vast 

te stellen. De    is hier een constante waarmee vermenigvuldigd wordt. Daarbij symboliseert  ·  

zelf  een  complex  getal  op  de  eenheidscirkel.  Het  is  immers  van  de  vorm  · waarbij  1. Gegeven een tijddomein  liggen 2 ,  ,  ,   en   gewoon vast, zodat   als enige variabele overblijft. Op het moment dat   van 0 tot en met  1 gaat lopen, geeft het eigenlijk steeds de hoek aan die per  stapje  bewandeld  wordt  over  een  cirkel.  Voor  het  schrijfgemak  definiëren  we  de  ‘z‐transformatie’ daarom als volgt: 

 

Als je aanneemt dat dit een andere manier is van het opschrijven van de Fouriertransformatie, moet 

hierbij gelden:   ·  Formule 4.3 De z‐transformatie is eigenlijk een andere manier van opschrijven van de complexe Fouriertransformatie en levert dus ook een representatie in het frequentiedomein op.Om het verschil aan te geven, wordt dit echter niet meer 

 genoemd, maar  .  

Het werkelijke verschil zit hem erin de 1N weg te laten. Dit was een constante die we voor de rest van de berekeningen liever kwijt dan rijk zijn en het blijkt uit de praktijk dat het niet nodig is hem verder nog te laten staan. (Smith S. W., 1997)   De  grafische  voorstelling  van  een  dergelijke  transformatie  is  moeilijk,  aangezien  je  er  vier dimensies voor nodig hebt: twee voor   en twee voor de eveneens complexe uitkomst. Om het toch zichtbaar te maken volgt hier een voorbeeld.     De    is hier eigenlijk heel goed op te vatten als de relatieve frequentie, die niet  lineair van 0 tot 0,5  loopt, maar over de complexe eenheidscirkel van    ( 1)  tot  . We mogen   kiezen op de eenheidscirkel, aangezien  1. De maximumfrequentie    ligt vervolgens altijd op  ; de onderste helft van de eenheidscirkel gebruiken we hierbij verder niet actief. 

     Grafiek 4.1 In deze grafieken wordt een voorstelling gegeven van de betekenis van de z‐domein. Links staat de eenheidscirkel in het complexe vlak met daarop twee waarden gekozen voor  . Tegelijkertijd dragen deze  beide complexe  getallenen een waarde (eigenlijk zelfs twee) bij zich voor de amplitude, die staan weergegeven in het relatieve frequentiedomein. Je kunt gerust zeggen dat als   over de eenheidscirkel wandelt van   tot  , hij tegelijkertijd óók door het relatieve frequentiedomein wandelt van   tot  , . De onderste helft van de eenheidscirkel wordt hier niet gebruikt. 

Stel we kiezen   onder een hoek van   zoals aangegeven grafiek 4.1. Deze   symboliseert dus de 

sterkte van een bepaalde  frequentie, namelijk een vierde van de maximumfrequentie, wat die ook wezen moge.  Vervolgens  heeft  dit  punt  een  bepaalde waarde:  de  amplitude  van  de  betreffende frequentie. Of eigenlijk natuurlijk twee: die van de cosinus én de sinus van die frequentie. Voor het gemak nemen we die echter samen, aangezien we de frequenties zelf een stuk interessanter vinden. Later komt nog aan bod hoe we dat precies doen.  

-1.0 0.0 1.0

-i

0

i

z1z2

0.0 0.1 0.2 0.3 0.4 0.50.0

0.2

0.4

0.6

0.8

1.0

Relatieve frequentie

Am

plitu

de14  

 

Page 19: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 19 

 

Op dezelfde manier als de input naar het z‐domein getransformeerd kan worden, kan de output dat ook. Het enige wat je daarvoor hoeft te doen is de   in een   te veranderen.  

 

Dat biedt interessante mogelijkheden om de impulsrespons vast te stellen voor een recursieve filter. Deze zag er als volgt uit:  

1 1 2  Dit mogen we in zijn geheel door de z‐transformatie heen halen, zodat we krijgen: 

· · ·  

Volgens  de  rekenregels  die  er  voor  de  z‐transformatie  gelden  (Smith  J.  O.,  2007)  geldt: 

· ·  

 Daaruit volgt dus ook: 

· 1 · · ·  

Voor de eerder genoemde formule geldt vervolgens: 

· · · ·  

 Oftewel: 

 Diverse termen buiten haakjes halen geeft: 

   

 

Met meerdere coëfficiënten, bijvoorbeeld 3 a´s en 2 b’s, werkt het evengoed en zou het er zo uit komen te zien: 

 

 Deze verhouding tussen  invoer en uitvoer  is van een geweldig belang. Het  is namelijk het signaal  in het frequentiedomein van de uitvoer gedeeld door dat  in het frequentiedomein van de  invoer. Het verschil  tussen  de  sinussen  en  cosinussen  is  er  nog  steeds, maar  vinden we  vanaf  hier  eigenlijk minder  interessant.  Het  gaat  ons  namelijk  vooral  om  de  frequentie  en  dan  maakt  het  kleine (fase)verschil tussen een sinus en cosinus niet zo veel meer uit. We moeten toch een manier hebben om  die  bij  elkaar  te  nemen.  Uit  de  praktijk  blijkt  dat  het  niet  handig  werkt  om  zomaar  het 

Page 20: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 20 

 

gemiddelde van de sinus en cosinus te nemen;  in plaats daarvan moeten we een nieuwe grootheid invoeren: de magnitude. Die is als volgt gedefinieerd: 

    | | Formule 4.4 De definitie van de magnitude. Binnen het reële frequentiedomein is de magnitude te berekenen met de genoemde formule. In het complexe vlak is dit gewoon de modulus (absolute waarde) van een punt in het complexe vlak. 

Per frequentie krijgen we dus een verhouding tussen de invoer en de uitvoer. Als die bijvoorbeeld 1 is, zijn beide gelijk. Als hij 2 is, is die bepaalde frequentie dus twee keer zo sterk vertegenwoordigd in de  uitvoer  als  in  de  invoer.  Met  de  z‐transformatie  hebben  we  dus  eigenlijk  een  hele frequentierespons samengesteld! Het grote voordeel zit hem hierin: het enige dat  je hoeft te doen om  de  frequentierespons  te  berekenen  is  delen.  Vergelijk  dat met  de  relatief  erg  ingewikkelde bewerking  van  convolutie  die  nodig was  in  het  tijddomein,  dan  zie  je  dat  deze manier  een  stuk eenvoudiger is en dus minder rekentijd kost voor de computer.   Zoals  het  blokschema  voor  de  impulsrespons  gold  (zie  §2.2),  zo  kunnen  we  die  ook  voor  het frequentiedomein opstellen:     

Hierbij geldt  . 

4.2 Z­transformatie in impulsrespons Het enige wat er nu gedaan moet worden is de a`tjes en b`tjes vaststellen. Dat ziet er misschien nog steeds als een heel moeilijke klus uit, maar is heel goed begrijpelijk te maken.  De  frequentierespons   bestaat eigenlijk uit  twee polynomen: die boven de deelstreep en die eronder. De respons is daarom ook te schrijven te schrijven als: 

……   waarbij   ,       

Formule 4.5 De formule voor de frequentierespons. De  ’en en  ’s zijn (complexe) getallen die je zelf mag kiezen. 

Als het gedeelte boven de deelstreep 0 wordt voor een bepaalde  , is er voor die   de uitkomst van de  gehele  breuk  0.  De  uitvoer  dus  ook,  en  daarmee  de  frequentierespons  bij  een  bepaalde frequentie. Dat gebeurt dus door een   zo te kiezen dat hij op de eenheidscirkel  ligt, zodat des te dichter   (die alle relatieve frequenties symboliseert) bij   komt, des te kleiner het getal en dus de invoer‐uitvoerverhouding wordt.   Voor de   geldt hetzelfde, behalve dat de frequentie dicht bij een    juist heel erg hoog wordt. Enkele voorbeelden staan in grafiek 2. De  ’en worden over het algemeen ‘nulpunten’ genoemd en in  tekeningen aangegeven met  rondjes. De  ’s worden polen genoemd en worden weergegeven met een kruisje. Vaak worden ze gekozen als complexe getallen. 

5 Polen en nulpunten 

5.1 Het plotten van een frequentierespons Het is natuurlijk belangrijk dat je kunt zien wat er met een signaal gebeurt als je polen en nulpunten op bepaalde plaatsen gaat neerzetten. Ons eerste deel eigen onderzoek bestond uit het  zichtbaar maken  van  het  invullen  van  verschillende  polen  en  nulpunten.  We  hebben  een  programma geschreven  dat  bij  het  invoeren  van  polen  en  nulpunten  de  frequentierespons  uitrekent  en  ook daadwerkelijk  tekent  in  een  grafiek.  Dat  verduidelijkt  het  effect  van  het  plaatsen  van  polen  en nulpunten, zodat de rest van het onderzoek makkelijker uitviel.   Het programma is uit te voeren in Scilab en staat in Bijlage 1. 

 

Page 21: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 21 

 

     

   

   

   Grafiek 5.1 Diverse voorbeelden van het het plaatsen van polen en nulpunten rond de eenheidcirkel. De rechtergrafiek is de frequentierespons die hoort bij de eenheidscirkel in de linkergrafiek en is gemaakt met behulp van ons programma. 

-1.0 0 1.0

-i

0

i

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0.0

0.2

0.4

0.6

0.8

1.0

1.2

-1.0 0 1.0

-i

0

i

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0.0

0.5

1.0

1.5

2.0

2.5

3.0

-1.0 0 1.0

-i

0

i

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

1

2

3

4

5

6

7

-1.0 0 1.0

-i

0

i

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0

2

4

6

8

10

12

14

5.2 aI  

5.2 dI 

5.2 cI 

5.2 bI 

5.2 aII 

5.2 bII 

5.2 cII 

5.2 dII 

Relatieve frequentie

Relatieve frequentie

Relatieve frequentie

Relatieve frequentie

Mag

nitu

dere

spon

sM

agni

tude

resp

ons

Mag

nitu

dere

spon

sM

agni

tude

resp

ons

Page 22: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 22 

 

5.2 Het berekenen van de impulsrespons (voorbeeld) Door het rond de eenheidscirkel plaatsen van de polen en nulpunten is ongeveer te bekijken hoe de frequentierespons  eruit  zal  zien. Aangezien  een  computer  hier  echter  niet  snel mee  kan werken, moeten we dit uitdrukken  in de vorm van a’s en b’s. Dat doe je door de getallen van de polen  in je formule 5.4 in te vullen. We nemen het voorbeeld van grafiek 5.2d. Deze kent: 

12 2√

3 1 

134

 

25√

225 √

2 Die vullen we in de formule in: 

12 2√3 1

1 34

25√2

25 √2

12 2√3 ·

12 2√3

34 · 2

5√2 ·25√2

310√2

25 √2 ·

25 √2

310√2

12 2√3

12 2√3

1 25√2

34

25 √2

110√2

710√2

 

Dit is precies van de vorm: 

 

Waarbij geldt:  1 12 2√

3 12 2√

125√

234

25 √

2 110√

2710√

5.3 Het berekenen van de reële impulsrespons (voorbeeld) Het  enige  probleem  bij  de  zojuist  berekende  impulsrespons  is  dat  we  nu  een  complexe impulsrespons  hebben.  Onze  invoer  worden  hier  en  daar  opeens  met  complexe  getallen vermenigvuldigd en dat kan niet goed gaan. Een speaker kan  immers niets met een  imaginair getal als uitvoer. We moeten dus iets verzinnen om het uiteindelijke resultaat reëel te houden, zonder dat de frequentierespons daaronder lijdt.   Daarvoor hebben we de onderste helft van de eenheidscirkel. Die wordt nu niet gebruikt, maar niets verhindert ons er toch nulpunten en polen te plaatsen. We moeten dus getallen vinden die precies het  complexe  gedeelte  van  de  a´tjes  en  b´tjes  opheft,  maar  niets  aan  de  frequentierespons verandert. Het  enige  getal  dat  hiertoe  in  staat  is,  is  de  complex  geconjugeerde  van  elke  pool  of nulpunt. Voor elk getal    is   zijn geconjugeerde. Voor elke  , zetten we  in de eenheidscirkel ook een  . Idem voor de  . Het resultaat staat in grafiek 5.3. 

Page 23: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 23 

 

√3 12 2√

3 1 

Let op: er is geen   nodig, aangezien   al reëel is. 

134

 

134

 

25√

225 √

2 25√

225 √

2  

  Vervolgens stoppen we al deze  ’s en  ’en in de formule en kijken wat eruit rolt: 

12 2√3

12 2√3 1

1 34 1 3

425√2

25 √2

25√2

25 √2

1 1

2 2516

45√2 ·

1625

1

2 45√2 ·

881400

85√2 ·

54√2 ·

3225 1

1

2 45√2 · 8

5√2881400

54√2

3225 1

 

 Dit is een iets grotere polynoom, van de vorm: 

 

Met daarin:  1 0 0 1 

    

245√

2 1.71716 85√

2881400

0.06024 54√

23225

0.48777 1 

De impulsrespons die de frequentierespons geeft als in grafiek 5.2dII is dus: 3 1.71716 · 1 0.06024 · 2 0.48777 · 3 4  

  

-1.0 0.0 1.0

-i

0

i

Grafiek 5.2 Dezelfde grafiek als in 5.1dI, maar nu ook met de complex geconjugeerde van elk getal. Deze opstelling heeft dus wel dezelfde frequentierespons van 5.1II. 

Page 24: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 24 

 

-1 0 1

-i

0

i

6 Aqualizer 

6.1 Eigen filter: de Aqualizer Ons doel was het maken van een combinatie tussen een parametrisch filter, een low/high‐pass filter en een equalizer, allemaal gebaseerd op het principe van een peaking filter. Dat  is een groot aantal termen, die we dan ook allemaal afzonderlijk zullen uitleggen. 

6.1.1 Peaking filter Ons hele filter  is gebaseerd op het principe van een peaking filter. Dat  is een eenvoudig soort filter dat  relatief weinig  rekentijd  voor  de  computer  vergt maar  over  het  algemeen wel  een  adequate respons geeft.   Bij dit filter moeten op zijn minst drie dingen ingesteld kunnen worden: de bandbreedte, de piek en de  (relatieve)  frequentie. De bandbreedte  is het gebied van  frequenties dat de  frequentiespons beslaat, de piek de sterkte waarmee hij deze frequenties vervormt. Zie grafiek 6.1.  

 De  hoogte  van  een  piek  of  dal  op  een  bepaald frequentiegebied  is  equivalent  aan  de  mate waarmee  dat  frequentiegebied  versterkt  of verzwakt wordt.   De piek en de bandbreedte worden bepaald door de polen en nulpunten. Bij het makkelijkste soort peaking  filter wordt die bepaald door het plaatsen  van  één  pool  en  één  nulpunt  rond  de eenheidscirkel.  De  plaats  van  de  pool  ten opzichte  van  de  eenheidscirkel  is  vooral bepalend  voor  de  bandbreedte.  Die  afstand wordt dan ook   genoemd. De afstand tussen de pool en het nulpunt is de bepalende factor voor de hoogte van de piek. Dat  is goed duidelijk  te maken  met  ons  programmaatje  uit  Bijlage  1. Deze  piek  wordt  dus  uitgedrukt  in  .  Beide 

variabelen zijn niet een exacte maat voor de piek en de bandbreedte maar geven een  zeer goede indicatie. Proefondervindelijk zijn we er zelf achter gekomen dat dit een heel goede manier is om het uit te drukken als volgt: 

We kiezen als pool:  

Met als geconjugeerde:  

En als nulpunten:   

Waarbij    de  hoogte  van  de  piek  is  en    de bandbreedte  in  het  relatieve frequentiedomein.  Wordt nu de verhouding van de afstand pool‐oorsprong/nulpunt‐oorsprong  groter,  dan wordt de piek hoger. Wordt de afstand van de pool  tot  de  eenheidscirkel  kleiner,  dan wordt de band smaller.  Om  het  effect  van  het  instellen  van 

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

4.0

Relatieve frequentie

Mag

nitu

dere

spon

s

 

 

Grafiek 6.1 De frequentierespons van een peaking filter. De bandbreedte is het gebied van frequenties dat de frequentiespons beslaat, de piek de sterkte waarmee hij deze frequenties vervormt. 

 

Page 25: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 25 

 

verschillende  bandbreedtes  en  pieken  zichtbaar  te  maken,  hebben  we  nog  een  programmaatje geschreven. Hierin zijn  ,   en   instelbaar en plot het programma vervolgens de frequentierespons. Het programma is geschreven voor Scilab en staat in Bijlage 2.  Een peaking filter heeft vaak meerdere banden die allemaal bepaalde frequentiegebiedjes beslaan, zodat de respons voor meerdere frequenties afzonderlijk in te stellen is. In grafiek 6.2 staat een voorbeeld van de frequentierespons van een peaking filter. Dat zijn er dus meerdere: voor elk gebiedje één. Al heeft elke band zijn eigen frequentiegebied waarin het een piek of een dal kan vertonen, het is onvermijdelijk dat ze elkaar voor een deel overlappen. Bovendien geldt natuurlijk dat hoe meer banden je hebt, hoe hoger de precisie is van het gebiedje van frequenties dat je aanspreekt.   Bij een peaking filter moeten alle banden met elkaar in  serie  geschakeld worden. Dat wil  zeggen dat  iedere frequentieband  zijn  eigen  respons  uitvoert  op  het  signaal  en  dat  vervolgens  doorgeeft  aan  zijn buurman, die daarop de volgende respons uitvoert. Als het signaal alle banden heeft doolopen is dat de uitvoer die naar de speakers gaat. De uitvoer die elke band op zich echter gebruikt, de  , is die van zichzelf, niet de totale. Elke band is dus eigenlijk een filtertje op zich, die deel uitmaakt van een groter filtercomplex. In schema 6.1 staat dit schematisch weergegeven.     

     

Het aantal banden kan in theorie alles zijn. Wat wij echter proberen is iets bijzonders: we maken het aantal banden  instelbaar.  Je kunt dus  twee banden gebruiken, maar ook vijf,  tien of  twintig.  In de praktijk  is het niet handig om al  te veel schuifjes  te hebben, dus wij nemen een maximum van 32 verschillende banden. 

6.1.2 Low­pass/high­pass filter Een  low‐pass filter  is een soort filter, dat alleen  lage frequenties doorlaat. Een high‐pass filter doet hetzelfde voor de hoge frequenties. De frequentie van waaraf je wilt dat er niets meer doorgelaten wordt, wordt de cutoff‐frequentie genoemd en is vaak instelbaar.   

 De manier om met ons peaking filter het effect van een low‐pass filter te bereiken, is een laag aantal banden kiezen met een brede bandbreedte. Als je bijvoorbeeld twee banden hebt, een voor de hoge frequenties en een voor de lage, heb je eigenlijk al een instelbaar high‐pass filter en low‐pass filter in één. Om  het mogelijk  te maken  de  cutoff‐frequentie  te  bepalen,  zorgen we  dat  de  bandbreedte 

MagnitudeMagnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0

2

4

6

8

10

12

14

16

18

Magnitude0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0

2

4

6

8

10

12

14

16

18

Grafiek 6.3 Een low‐pass filter en een high‐pass filter laten respectievelijk de lage en de hoge frequenties door. Het punt waar de frequentiewaarderespons snel kleiner begint te worden, heet de ‘cutoff‐frequentie.’ Bij veel filters is deze instelbaar. 

 ‐ 

0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.500.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

2.0

Grafiek 6.2 Grafiek 6.2 De frequentierespons van een peaking filter met zes verschillende banden. Over het algemeen is de respons van elke band los instelbaar.

]  Filter 1  Filter 2  Filter     ] …

Schema 6.1 Schematische weergave van een peaking filter. Elk filter werkt op zichzelf, maar maakt deel uit van een groter filter, dat de uiteindelijke  bepaalt.

Mag

nitu

dere

spon

s

Relatieve frequentie

Mag

nitu

dere

spon

s

Mag

nitu

dere

spon

s

Relatieve frequentie Relatieve frequentie

Page 26: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 26 

 

instelbaar  is.  Als  je  de  bandbreedte  van  de  lage  frequenties  kleiner maakt,  komt  dat  immers  op hetzelfde neer als het veranderen van de cutoff‐frequentie.  Om een hogere precisie samen te stellen kun je ook kiezen voor drie of vier banden, waarvan je van elk ook weer de bandbreedte en piek kunt aanpassen. Zo kun  je dus zelf een  low‐pass of high‐pass filter samenstellen met de nauwkeurigheid die je zelf wilt. 

6.1.3 Parametrisch filter Een  parametrisch  filter  is  een  filter  waarbij  je  zelf  nauwkeurig  de  frequentiebanden  kunt samenstellen met bijbehorende bandbreedte en piek. Meestal kun  je dus precies het aantal Hertz instellen waarop  je de  frequentiebanden wilt afstemmen.  In ons  filter  zijn deze  frequentiebanden instelbaar, dus is dit ook mogelijk. 

6.1.4 Equalizer Een  equalizer  is  een  filter,  dat  een  hoop  verschillende  vaste  frequentiebanden  heeft  die  hij  kan manipuleren. De meest gebruikte vormen zijn 10 bands, 15 bands en 31 bands equalizers. Over het algemeen  staan  de  banden  op  logische  toonafstanden,  zoals  kwinten  of  tertsen.  Ons  filter  is gemakkelijk zo in te stellen dat hij als equalizer fungeert. Hij kan zelf uitrekenen welke frequentie bij welke  band moet  als  je  een    aantal  banden  instelt. Het  voordeel  is  dat  je  dus  ook  zou  kunnen zeggen dat  je 20 banden wilt, als  je dat op het moment goed uitkomt.  Je kunt dus helemaal  zelf vrijelijk de gewenste resolutie bepalen. 

 

6.2   Vereisten filter Er  zijn  veel  variabelen  en  constantes  die  nodig  zijn  bij  de  berekeningen  die  ons  filter  uitvoert. Sommige staan altijd vast, sommige zijn aan het begin van het programma in te stellen en sommige zijn  real‐time  te wijzigen. Hier  staan  ze  allemaal op een  rijtje met de wiskundige naam die we  in vergelijkingen kunnen gebruiken: 

• Het aantal verschillende banden  ; • De hoogte van de piek of het dal van een specifieke frequentieband,  ; • De bandbreedte  ; • De  piekfrequentie  per  band  .  Met  een    aantal  banden  is  er  ook  een    aantal 

piekfrequenties nodig; • Het volume van het geluid  . • De  laagste  piekfrequentie  die  gebruikt wordt,  . Deze  is  instelbaar, maar  een  logische 

keus ervoor is de laagst hoorbare frequentie: 20 Hz; • De  hoogste  piekfrequentie  die  gebruikt  wordt,  .  Ook  deze  is  instelbaar,  maar  het 

maximum is 20000 (dus de helft van de samplefrequentie min een beetje); 

Figuur 6.1 Het ontwerp van onze equalizer, Aqualizer genaamd omdat hij blauw is. De blauwe schuiven zijn de actieve schuiven, de zwarte de inactieve. Hier is   dus 31. De draaiknopjes onder de schuiven zijn om de bandbreedte in te stellen. De schuif helemaal rechts is de gain‐knop (volumeknop).  

Page 27: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 27 

 

• De samplerate (aantal geregistreerde samples per seconde)  : 44100;  De dingen die het filter zelf vervolgens moet kunnen uitrekenen zijn: 

• De piekfrequentie van elke band   (die wordt in een venster zichtbaar zodra  ,   en   zijn vastgesteld). Met een   aantal banden is er ook een   aantal piekfrequenties nodig; 

• De coëfficiënten van de elke band van het filter, in ons geval 5 in getal:  ,  ,  ,   en  .  Merk op dat   er  twee keer  instaat. Dat komt omdat deze  in de eerste  instantie uitgerekend wordt als je het programma als equalizer wilt gebruiken, maar ook  instelbaar moet zijn  in het geval dat je een parametrisch filter wilt hebben. 

6.2.1 Het aantal verschillende banden ( ) We willen de mogelijkheid hebben het aantal  frequentiebanden  in  te  stellen. Dat kunnen er  twee zijn, of twintig, of in theorie zelfs tweehonderd. In de praktijk is het maximum aantal banden meestal echter 31. Ook 10 en 15 banden zijn veelgebruikte standaards. Voor de bijbehorende frequenties die de banden beslaan, bestaan standaardinstellingen.    Het voordeel van een  instelbaar aantal banden  is dat  je  zelf kunt bepalen hoe belangrijk  je de precisie vindt. Als  je graag een hoge  resolutie hebt, kun  je een hoog aantal nemen, maar dit kost meer geheugen in je computer. Voor veel onervaren gebruikers is een klein aantal banden echter al voldoende. De mogelijkheid het  aantal banden  in  te  stellen, brengt ook de mogelijkheid met  zich mee het  filter  te stemmen. De minimumfrequentie  is 20 Hz, de maximumfrequentie 22050 Hz.  Je kunt echter kiezen of  je daartussen  in bijvoorbeeld tertsen (hoge resolutie), kwinten (middelmatige resolutie) of octaven (lage resolutie) omhoog wilt.   Wij kiezen het maximum aantal banden op 32, omdat je dat het aantal is dat je nodig hebt om in tertsen van 20 Hz naar 22050 Hz te komen. Dus: 

 

6.2.2 Piekfrequentie ( ) Bij  elke  band  hoort  een  centrale  frequentie.  Een  standaardinstelling  voor  een  eenendertigbands equalizer in Hertz is bijvoorbeeld:  

20, 25, 31.5, 40, 50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000, 1250, 1600, 2000, 2500, 3150, 4000, 5000, 6300, 8000, 10000, 12500, 16000, 20000. 

Aangezien  wij  echter  variabel  aantal  banden  hebben,  hebben  we  ook  een  variabel  aantal piekfrequenties met variabele waarden. Die moeten dus telkens berekend worden. De moeilijkheid van het uitrekenen van de verschillende banden zit hem in het feit dat een toonschaal logaritmisch is. Het laagste octaaf beslaat bijvoorbeeld slechts 20 Hz (van 20 Hz tot 40 Hz) terwijl het hoogste octaaf 10000  Hz  beslaat  (van  10000  naar  20000).  Het  verband  tussen  het  aantal  banden  en  de piekfrequentie rekent de computer als volgt uit: 

· ,  

Waarin   het nummer van de band is en dus even groot of kleiner is als het aantal banden  .    Bij  het  opstarten  van  het  programma  wordt  in  principe  gebruik  gemaakt  van  20  Hz  en 

20000 Hz. Als  je  echter een  kleiner bereik wilt hebben,  kun  je deze  instellingen wijzigen. Nadat het aantal banden ( ) is ingesteld, rekent het programma zelf alle piekfrequenties uit en vult ze  in het vakje onder de schuifjes  in. Als  je de standaardinstelling wilt wijzigen, vul  je de gewenste minimum‐  en maximumfrequentie  in  en  drukt  op  de  ‘Go’‐knop. Alle  piekfrequenties worden  dan automatisch uitgerekend. Als  je dan nog veranderingen wilt aanbrengen omdat  je – om wat voor reden dan  ook  –  een  andere  verdeling  van  je  banden  wilt,  dan  kun  je  elke 

Figuur 6.2 De Go‐knop 

Page 28: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 28 

 

afzonderlijke piekfrequentie nog eens aanpassen.  Bovendien hebben we, voor de technici, nog een aantal standaardinstellingen gemaakt. Er zijn drie standaardmodellen  voor equalizers, die we ook willen  aanbieden. Verder  leek het ons handig om banden te maken die muziektheoretisch gezien logisch overkomen. We hebben bijvoorbeeld banden gemaakt, die steeds precies elk octaaf, elke kwint of elke kwart hun piekfrequenties hebben.   In Bijlage 3 staat een lijst met alle mogelijke vooringestelde piekfrequenties.  Recht evenredig met de piekfrequentie, is de hoek die je over de eenheidscirkel moet lopen voor een bepaalde frequentie. De computer moet deze hoek weten om de impulsrespons voor elke frequentie uit te rekenen. Het verband tussen de hoek en de piekfrequentie ziet er als volgt uit: 

 ·

,  

 De hoek wordt dus bepaald door de piekfrequentie en ligt bij elke band afzonderlijk vast.  

6.2.3 De frequentierespons Door  de    in  te  vullen  kan  vervolgens  de  impulsrespons  berekend worden. Die  is  onmisbaar, aangezien  we  niet  tijdens  het  filteren  willen  hoeven  knutselen met  eenheidscirkeltjes  en  polen. Invullen  gaat  op  dezelfde manier  als  in  het  voorbeeld  van  §5.3  en  §5.4. We  gebruiken  hier  de waarden die ter sprake zijn gekomen bij de uitleg van de peaking filter in §6.1.1. 

 · ·

· ·

 ·

·· ·· ·

 

 Dit is van de vorm:  

 

Waarbij geldt:  

    

  

 Dit zijn dus de coëfficiënten die altijd gelden als we de polen en nulpunten kiezen op de manier van §6.1.1. Het nut hiervan is dat we dus nu schuifknopjes kunnen ontwerpen die direct in verband staan met de  ’s en  ’s. Dat werkt een stuk gemakkelijker en sneller voor de computer. De sterkte van een bepaalde band kunnen we  linken aan de   en de bandbreedte aan de  . De schaalverdelingen van beide parameters moeten we proefondervindelijk vaststellen.  

6.2.4 Het volume ( ) De  volumeknop  is  de  makkelijkste  van  alle  knoppen.  Het  duidt  een  waarde  aan  waarmee  het uitvoersignaal  vermenigvuldigd wordt,  nadat  het  alle  frequentiebanden  heeft  doorlopen.  Bij  een 

Page 29: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 29 

 

waarde van 2 wordt het geleverde vermogen twee keer zo groot. Dat betekent niet dat het aantal decibel ook twee keer zoveel wordt! De schaalverdeling van het aantal decibel is logaritmisch. In de praktijk komt het erop neer dat bij elke verdubbeling van het geleverde vermogen het aantal decibel met 3 toeneemt.   Het volume wordt in de geluidsindustrie ook wel ‘gain’ genoemd. 

6.2.5 Link band­width Ons filter bevat nog een extra knop. Deze staat in relatie met de bandbreedtes van elke  frequentie.   Soms  is het nuttig om één bepaalde bandbreedte  te verstellen, 

bijvoorbeeld als  je weet dat één bepaalde frequentie rondzingen veroorzaakt (de harde piep  van  een microfoon). De bandbreedte  van die  frequentie  kies  je dan waarschijnlijk  heel  smal. De  rest  van  je  banden wil  je  echter wel  graag  op  een fatsoenlijke breedte hebben staan. Daarom  is het  fijn als  je de breedte van elke frequentieband los zou kunnen instellen.   Soms wil je echter dat al je banden gewoon even breed zijn; dat wil zeggen: een even groot bereik hebben over bijvoorbeeld een terts of octaaf. Dan is het handig om ze niet allemaal collectief hoger te zetten, maar dat in één keer te kunnen doen. Daarvoor is de knop ‘link band‐width.’ Die zegt dat alle banden een relatief even groot bereik blijven hebben. Dat vergroot het gebruikersgemak. 

6.2.6 Overige zaken bij het programmeren Alle voorgenoemde zaken zijn het werkende deel van het geluidsfilter. Bij het programmeren zijn er echter nog  veel meer dingen die een  rol  spelen. De  schuifjes en  knopjes op de equalizer moeten bediend  (en  dus  bewogen)  kunnen  worden,  het  host‐programma  moet  de  plugin  (dus  het programma)  kunnen herkennen,  snappen dat hij het geluid dan wel moet afspelen enzovoorts. Al deze stappen zijn echter helemaal niet  interessant voor de eigenlijke werking van het filter en gaan we dus ook niet stuk voor stuk bespreken. 

6.3 Design grafische interface Behalve  de  relevante  formules  hebben  we  ook  het  grafisch design  van  de  equalizer  zelf  gemaakt.  De  afbeeldingen  zijn gemaakt met behulp van Adobe Flash.    Voor  het  wijzigen  van  de  amplitude  hebben  we  schuifjes gekozen. De schuifjes die aan staan zijn blauw, de schuifjes die uit staan  zwart.  Om  de  bandbreedte  te  besturen  hebben  we draaiknopjes  gekozen,  waarvoor  dezelfde  kleurencombinatie geldt.    Alle  knopjes  staan  naast  elkaar  opgesteld,  omdat  het programmeertechnisch gezien niet makkelijk was om er meer of minder knopjes te tekenen, al naar gelang  het  aantal  geselecteerde  banden. Daarom  hebben we  gekozen  voor  de mogelijk  ze  uit  te zetten en zwart te kleuren als je ze niet gebruikt. 

6.4 Technische informatie Aqualizer Ons filter heeft de vorm gekregen van een equalizer. We hebben hem Aqualizer gedoopt en hem de toepasselijke  kleur  blauw  gegeven. Het  programma  is  een  VST‐plugin  (Virtual  Studio  Technology‐plugin). Dat is een formaat dat door veel software voor muziekproductie wordt ondersteund. Om het programma  te  runnen,  is het dus wel nodig eerst een host‐programma  te hebben dat VST‐plugins ondersteunt. Voorbeelden hiervan zijn MAGIX Music Maker, Sonar en Cubase. Zo’n programma moet dus eerst geïnstalleerd worden alvorens onze Aqualizer uitgevoerd kan worden. 

Figuur 6.4 De draai‐ en schuifknopjes. Blauw betekent ‘aan,’ zwart betekent ‘uit.’ 

Figuur 6.3 De knop ‘link band‐with.’ Als hij blauw is, staat hij aan, als hij zwart is staat hij uit. 

Page 30: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 30 

 

7 Conclusie Een equalizer was natuurlijk niet een heel nieuw fenomeen. Het is nu al een veel gebruikt apparaat in de geluidsindustrie. Wij hebben het echter wel klaargespeeld met relatief eenvoudig programma een zeer  adequate  equalizer  te  bouwen.  De manier  om  dat  te  bereiken  door  gebruik  te maken  van complexe  getallen  was  al  voor  een  deel  bekend,  maar  de  formule  om  hiermee  ook  een  goed werkende  impulsrespons van te maken  (§6.2.3), hebben wij zelf bedacht. Met behulp van de  twee hulpprogramma’s die we hebben geschreven, is ook precies te zien hoe ons filter werkt, waarom het werkt en wat voor respons je er precies mee bereikt. Dit biedt veel inzicht in de werking van filters in het algemeen.   Wat ook nieuw  is,  is de multi‐inzetbaarheid van onze Aqualizer. Hij  is te gebruiken  in disco’s om bepaalde geluidseffecten te bereiken. Een paar wijzigingen en enkele drukken op de knop verder en de  gebruiker  kan  er  een  zaal  mee  soundchecken.  De  amateurmusicus  die  ervan  houdt  op  zijn studiootje op zolder  ‘maar wat  te pingelen’ heeft veel aan de Aqualizer, aangezien het een simpel apparaat is, dat op elk niveau gebruikt kan worden. Een hoge resolutie en precieze instellingen voor de  ervaren  gebruiker  en  standaardinstellingen  voor  de  amateur,  beide mogelijkheden  zijn  even gemakkelijk in te stellen. Dat in grote tegenstelling tot het grote apparaat dat je nu moet kopen om alleen maar één 15‐bandsequalizer te kopen. De Aqualizer heeft dus zijn gebruikersgemak mee. Het enige nadeel  is dat het  een VST‐plugin  is,  en dus  een hostprogramma nodig heeft om  te  kunnen functioneren. De  Aqualizer  leeft  dus  bij  de  gratie  van  die  host  en wordt  dus wel  beperkt  in  zijn kunnen indien de host ook zijn beperkingen heeft.   De Aqualizer  functioneert naar behoren. We stellen hem dan ook vrij beschikbaar aan  iedereen die hem graag wil gebruiken en staan open voor kritiek. Misschien  is er wel een plaatsje voor hem weggelegd in de geluidsindustrie.         

        

Nummer piekfrequentie 

Minimale en maximale piekfrequentie 

Go­knopMeer/minder banden instellen 

Gain (volume)instellen 

Bandbreedte instellen 

Link bandwidth 

Piekfrequentie Aantal banden

Piek in frequentieband instellen 

Page 31: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 31 

 

Appendix A: Complexe getallen Een groot wiskundig probleem  is het oplossen geweest van de wortel van een negatief getal. Er  is geen enkel reëel getal dat vermenigvuldigd met zichzelf een negatief getal geeft. Er is dus ook geen enkele reële wortel van een negatief getal. Daarom hebben wiskundigen de complexe getallen in het leven geroepen. De  wortel  van  1  is  gedefinieerd  als  i.  Aan  de  hand  van  die  definitie  kunnen  alle  wortels  van negatieve getallen worden berekend. Dat gaat als volgt: 

√ √ 1 · √ · √ 1 √  Als een dergelijk getal wordt opgeteld bij een reëel getal, ontstaat er een getal van de vorm      . Een getal van die vorm wordt ook wel complex getal genoemd. Omdat   in termen is van √ 1 en   niet, kan dit getal niet verder worden vereenvoudigd. Voor complexe getallen gelden geen aparte rekenregels. Optellen gaat zo: 

 Op dezelfde manier gaat aftrekken. Vermenigvuldigen ziet er iets lastiger uit, omdat  1. 

·   

Delen  lijkt op het  eerste oog niet  gemakkelijk  te  gaan, maar  lukt wel  als de  teller  en de noemer worden vermenigvuldigd met een variatie op de noemer, de zogenaamde complexe geconjugeerde. Elk  complexe  getal  heeft  een  complexe  geconjugeerde.  Als  een  complex  getal        is,  is  zijn complexe geconjugeerde      . Twee complexe getallen delen gaat als volgt: 

 

 Dit is voor gegeven  , , ,  exact te berekenen, omdat   reëel is.  Complexe  getallen blijken onmisbaar  als we de  formule  van Euler willen  gebruiken. Deze  formule zegt dat: 

cos sin  Omdat cos sin 1 kun  je de eenheidscirkel beschrijven met de formule van Euler, waarbij je  het  reële  gedeelte  op  de  x‐as  zet  en  het  complexe  gedeelte  op  de  y‐as.  De  eenheidscirkel  is namelijk de cirkel waarvoor geldt:  1, en voor  cos  en  sin  geldt dat.   is dus een  beschrijving  van  de  eenheidscirkel  in  het  complexe  vlak  (het  vlak waarbij  de  x‐as  het  reële gedeelte en de y‐as het complexe is).  In  de  complexe  Fouriertransformatie  worden  complexe  getallen  gebruikt  om  de  sinussen  en cosinussen te weergeven. Het reële gedeelte van het frequentiedomein geeft aan wat de amplitudes van de  cosinussen moeten  zijn; het  complexe  gedeelte dat  van de  sinussen. Met de  formule  van Euler kan de Fouriertransformatie in een simpelere vorm worden weergeven, namelijk met complexe machten van  . (Getal & Ruimte, 2001) 

 

 

 

 

Page 32: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 32 

 

Bijlage 1: Programmeercode: frequentierespons plotten in Scilab:  function h=H(z, zs, ps)

h=1 for i=1:length(zs)

h = h * (z-zs(i)) end for i=1:length(ps)

h = h / (z-ps(i)) end

endfunction function [Mag, Ph]=plotHz(z, p)

h=[] for i=0:1000 h(i+1)=H(%e^(%pi*%i*i/1000), z, p)

end Mag=abs(h) Ph=atan(imag(h), real(h)) x=0:.0005:.5 plot2d(x,Mag,style=2,leg="Magnitude")

endfunction function [db, Ph]=plotDB(z, p)

h=[] db=[] for i=0:1000

h(i+1)=H(%e^(%pi*%i*i/1000), z, p) if abs(h(i+1))>1D-10

db(i+1)=20*log(abs(h(i+1)))/log(10) else

db(i+1)=-10000 end

end Ph=atan(imag(h),real(h)) x=0:.0005:.5

plot2d(x,db,style=2,leg="Magnitude(db)",frameflag=1,rect=[0,-200,.5,150])

endfunction //------------------------------------------------------------------------- // And now with gain: //------------------------------------------------------------------------- function [Mag, Ph]=plotHzGain(gain, z, p)

h=[] for i=0:1000

h(i+1)=H(%e^(%pi*%i*i/1000), z, p)*gain end Mag=abs(h) Ph=atan(imag(h), real(h)) x=0:.0005:.5 plot2d(x,Mag,style=2,leg="Magnitude")

endfunction function [db, Ph]=plotDBGain(gain, z, p)

h=[] db=[] for i=0:1000

h(i+1)=H(%e^(%pi*%i*i/1000), z, p)*gain if abs(h(i+1))>1D-10

Page 33: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 33 

 

db(i+1)=20*log(abs(h(i+1)))/log(10) else

db(i+1)=-10000 end

end Ph=atan(imag(h),real(h)) x=0:.0005:.5 plot2d(x,db,style=2,leg="Magnitude(db)",frameflag=1,rect=[0,-200,.5,150])

endfunction refunction z=uc(p)

z=%e^(p*%i*%pi) endfunction Deze functie wordt aangeroepen door plotHz([n],[p]). Hierbij is n een of meerdere nulpunten in het complexe vlak en p een of meerdere polen in het complexe vlak. Meerdere nulpunten of polen worden gescheiden door een spatie. De grafiek 5.1dII  is bijvoorbeeld gemaakt door  in te voeren  in Scilab: 

plotHz([cos(1/3*%pi)+%i*sin(1/3*%pi) -1], [1.25*cos(1/4*%pi)+1.25*%i*sin(1/4*%pi) .9*cos(3/4*%pi)+%i*sin(3/4*%pi)])

Page 34: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 34 

 

Bijlage 2: Programmeercode: peaking filter Het volgende programma werkt alleen als ook het programma uit bijlage 1 in Scilab geladen wordt!  function [gain,z,p]=peaking(f, bw, peak) b=bw absz=1-b*peak absp=1-b z=[absz absz].*uc(2*cat(2,f,-f)) p=[absp absp].*uc(2*cat(2,f,-f)) if peak>1 gain=1/min(abs([H(1, z, p) H(-1, z, p)])) else gain=1/max(abs([H(1, z, p) H(-1, z, p)])) end endfunction function [gain,z,p]=plotpeaking(f, bw, peak) zdef=[] pdef=[] gain=1 for i=1:length(f) [g,z,p]=peaking(f(i), bw(i), peak(i)) zdef=[zdef,z] pdef=[pdef,p] gain=gain*g end z=zdef p=pdef Hz=plotHzGain(gain, z, p) endfunction function [gain,z,p]=DBpeaking(f, bw, peak) zdef=[] pdef=[] gain=1 for i=1:length(f) [g,z,p]=peaking(f(i), bw(i), peak(i)) zdef=[zdef,z] pdef=[pdef,p] gain=gain*g end z=zdef p=pdef plotDBGain(gain, z, p) endfunction

Deze  functie wordt aangeroepen door plotpeaking(f, bw, peak). f  is hierbij de  relatieve frequentie,  bw  de  bandbreedte  en  peak  de  piek.  Het  programma  plot  vervolgens  zelf  de frequentierespons. Meerdere nulpunten of polen worden gescheiden door een spatie. Een voorbeeld van een functie is: plotpeaking([.2 .4], [.01 .03], [1.2 .6]). De andere  functie die  in hetzelfde programma  staat  is DBpeaking(f, bw, peak). Die werkt hetzelfde, met dat verschil dat deze de niet de frequentie uitzet tegen de amplitude, maar tegen de geluidssterkte (in deciBel). Let op: de functie is hoofdlettergevoelig. 

Page 35: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 35 

 

Bijlage 3: Instellingen piekfrequenties Dit  zijn  alle  standaardinstellingen,  die  als  lijsten  in  de  Aqualizer  zijn  opgeslagen.  De standaardinstellingen  zijn  direct  overgenomen  van  de  instellingen  die  veel worden  gebruikt  in  de geluidsindustrie. De ‘uitgerekende  instellingen’ zijn berekend met behulp van de formule uit §6.2.2. De  octaven,  kwinten  en  kwarten  zijn  berekend met  behulp  van  het  pythagoreïsche  toonstelsel, waarbij respectievelijk de verhoudingen 1: 2, 4: 3 en 5: 4 zijn aangehouden.   Standaardinstellingen: Fpstandaard10=[31.25,62.5,125,250,500,1000,2000,4000,8000,16000]  (Dunlop, 2007)  Fpstandaard15=[25,40,63,100,160,250,400,630,1000,1600,2500,4000,6300,10000,16000]  (dbx, 2007)  Fpstandaard31=[20,25,31.5,40,50,63,80,100,125,160,200,250,315,400,500,630,800,1000,1250,1600,2000,2500,3150,4000,5000,6300,8000,10000,12500,16000,20000]  (dbx, 2007)  Octaven vanaf de centrale C (256 Hertz) Fpoctaaf=[32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384]  Kwinten vanaf centrale C (256 Hertz) Fpkwint=[22.474,33.711,50.567,75.851,113.777,170.666,256,384,576,864,1296,1944,2916,4374,6561,9841.5,14762.25]  Kwarten vanaf centrale C (256 Hertz) Fpkwart=[25.628,34.171,45.562,60.75,81,108,144,192,256,341.333,455.11,606.814,809.086,1078.781,1438.375,1917.834,2557.112,3409.483,4545.978,6061.304,8081.738,10775.652,14367.535,19156.714]                      

Page 36: De bouw van de Aqualizer - RJProjects Aqualizer.pdfdan dus discreet, bestaande uit 0 puntjes. Als je alle gemeten waarden tegen de tijd uitzet, krijg je het tijddomein. In grafiek

 36 

 

Bibliografie Black, H. S. (1953). Modulation Theory. Van Nostrand. 

dbx® (2007). dbx® iEQ‐15 Dual 15‐Band Graphic EQ/Limiter with Type V™ NR and AFS&trade. Opgeroepen op 29 februari, 2008, van dbx® Professional Products: http://www.dbxpro.com/iEQ15/iEQ15.php 

dbx® (2007). dbx® iEQ‐31 Dual 31‐Band Graphic EQ/Limiter with Type V™ NR and AFS&trade. Opgeroepen op 29 februari, 2008, van dbx® Proffecional Products: http://www.dbxpro.com/iEQ31/iEQ31.php 

Dunlop. (2007). Dunlop. Opgeroepen op 29 februari, 2008, van http://www.jimdunlop.com/index.php?page=products/pip&id=248&pmh=products/p_and_e_detail 

Getal & Ruimte. (2001). Zebraboekje Complexe getallen (1 ed.). Houten: EPN. 

NVON‐commissie. (2004). BINAS havo/vwo (5e ed.). Groningen: Wolters‐Noordhoff. 

Smith, J. O. (2007). "Shift Theorem". Opgeroepen op 8 februari, 2008, van Introduction to Digital Filters with Audio Applications, online boek: http://ccrma.stanford.edu/~jos/filters/Shift_Theorem.html 

Smith, S. W. (1997). The Scientist and Engineer's Guide to Digital Signal Processing. California Technical Publishing. 

 

Met dank aan: Dr.Ir. Richard Heusdens Drs. Jacob van Eeghen Remy van Dobben de Bruyn Tim van Mourik Wouter Berkelmans