Jeg er ikke flink med digitalteknikk, og sliter veldig med forståelse av biquads, taps osv.
Må bare se overordnet på det.
En tap er et korreksjonspunkt i tidsdomenet. Når et audiosample mates inn i et FIR-filter korrigeres det først i tap nr 1. Så sendes sample 1 til tap nr 2, og sample nr 2 sendes til tap nr 1. Sånn jobber alle samplene seg gjennom alle taps i filteret inntil man har kommet til siste tap. Etter dette forkastes det første sampelet slik at filteret har en absolut definert lengde. Filteret har da samme samplingfrekvens som selve audiosignalet.
Et eksempel kan være med 4 taps. De tre første taps er lik null, og den siste er lik en. Hvert sample går da til tap 1, 2 og 3, men ingen ting kommer ut fordi disse taps er bare null. Fjerde tap er lik 1, og der går alle audiosamples rett gjennom. Dette filteret er kort og godt et 4 sample langt delayfilter som ikke endrer noe på signalet forøvrig.
Det er lett å henge seg opp i at FIR-filtre korrigerer impulsrespons. Men impulsrespons, frekvensrespons og fase er alltid knyttet sammen. Det betyr at både FIR og IIR-filtre korrigerer både impulsrespons og frekvensrespons. Allikevel jobber de fundamentalt forskjellig.
Det er spesielt to ting man kan tenke på som kjennetegner et FIR-filter. Det ene er at FIR-filteret ikke har noen feedback. Det som skjer i tap nr 2 har ingen sammenheng med det som skjedde i tap nr 2 annet enn den sammenhengen som følger av målingen man la til grunn. Den andre tingen er at antallet taps er definert. Med andre ord lengden på filteret er absolutt definert, filteret har en "finite" varighet.
En analogi til et FIR-filter kan være som følger:
Vi kan tenke oss en lydfil som varer i 1 sekund. Vi kan tenke oss at fila består av 48 000 samples. Dette er målingen vår. Selve lydfilen er det vi spilte inn via målemikrofonen.
Så kan vi tenke oss en virtuell lydfil. Denne har også en varighet på 1 sekund. Denne fila er idealet vårt. Den inneholder en optimalisert impulsrespons, men den har også begrensninger i båndbredde (vi ønsker for eksempel ikke å tvinge høyttalerne til å spille med fullt nivå ved 100kHz, eller ved 2Hz). Har vi for eksempel aktiv deling inneholder den også filterflankene for hver driver, og den inneholder selvsagt target frekvensrespons.
Så regner vi ut forskjellen på idealet og det vi har målt. Både idealet og det vi har målt består av 48 000 datapunkter i tidsdomenet. Det betyr at vi får en numerisk verdi som forskjell for hvert sample. Disse numeriske verdiene, 48 000 stk, er i prinsippet FIR-filteret vårt.
Dersom vi for eksempel skulle hatt et filter på 24 000 taps korter vi ned både referansen og selve lydfila (målingen) til 0,5 sekunder. Det som eventuelt måtte skje etter 0,5 sekunder er ikke en del av målingen, og det blir heller ikke korrigert.
Et IIR-filter likner mer på et tradisjonelt analogt filter. Slike filtre kan ha veldig mange ulike utforminger, men felles for dem er at de kan defineres innenfor det samme settet parametre. Det betyr at man egentlig har samme grunnutforming på disse filtrene, men ved å endre på enkeltparametre får man dem til å opptre som for eksempel høypass, lavpass, shelf, EQ osv. Denne grunnutformingen kalles en biquad, og i praktisk bruk kan man på en måte se en biquad som en "plass" for et EQ-punkt, et delefilter eller liknende. Opprinnelsen til biquads er egentlig en måte å bygge opp et analogt filter på.
Noen av parametrene i en biquad befinner seg i en feedback loop. Det er fullt mulig å definere parametrene i en biquad slik at man får et ustabilt filter. Et slikt filter vil kunne gå i selvsving og vil ha uendelig varighet. En stabil biquad vil klinge ut, og hvor lang tid dette tar avhenger av Q, signalet inn, og hvor høy presisjon filteret har. Et 64 bits filter med høy Q vil ha en enorm etterklangstid, mens et tilsvarende filter med lav Q vil dø ut svært raskt. Parametrene man setter i én biquad har ingen påvirkning på parametrene man setter i en annen biquad, så disse deler i prinsippet ikke noe annet enn samplefrekvens. Denne udefinerte tidskarakteristikken gjør at man kaller dette for "infinite".
En biquad behandler også hvert audiosample, men til forskjell fra FIR-filtre som kun bearbeider ett og ett sample, og summerer det som kommer ut, vil et IIR-filter bearbeide ett sample, kjøre det i feedback, mikse det med neste sample, bearbeide de to på nytt, kjøre dem i feedback osv. Litt på samme måte som et aktivt filter i feedbackloopen på en op-amp.
Dessverre tror jeg man kan forklare dette veldig mange ganger, men for hver gang vil det være et fåtall som får noe særlig ut av det.
Det som vi ser på produktene er at straks en entrer FIR basert så benytter en automatisk oppsett.
Mens det meste IIR basert er manuelt.
For å generere et FIR-filter er man avhengig av data å mate inn i systemet. Man kan tenke seg at man har en target og en måling som er helt like. Da vil ikke det resulterende filteret gjøre noe som helst. Så kan vi se for oss at target modifiseres ved at man endrer frekvensresponsen slik et EQ-punkt ville gjort. Da vil forskjellen på målingen og target tilsvare dette, og vi har laget oss en FIR-basert parametrisk EQ. Denne styres da manuelt, og man bruker ikke en faktisk måling for å generere dette filteret.
Vi kan også se for oss at vi lager et automatisert filter for IIR-korreksjon. Men dette vil likne mer på en manuell prosess. Man må identifisere hvert avvik og ha regler for å bestemme hvordan man genererer EQ-punkter for å behandle disse.
Om jeg har forstått ting riktig så er det ikke noe problem å lage automatisk IIR basert for høyttalerkorreksjon som fint holder følge med FIR basert?
Arrest me if I`m wrong
Det finnes en del avvik i høyttalere som det er vanskelig å gjøre noe med når man bruker IIR-filteret. Det finnes også noen det er vanskelig å gjøre noe med når man bruker FIR-filtere. Når man korrigerer med IIR-filtere vil man altså kunne gå glipp av noe, men det er få eller ingen ting man gjør med IIR-filtere som korrigerer noe som opptrer annerledes i andre situasjoner. Risikoen for dette er noe større med FIR-filtere. Eksempler på dette er dynamisk flux i magnetsystemer. Et FIR-filter vil kompensere for dette, mens et IIR-filter vil ikke gjøre noe med dette. Når dette endrer seg med signalpåtrykk vil IIR-filteret fortsatt ikke gjøre noe, mens FIR-filteret vil nå korrigere feil. Dette til tross for at for et gitt signal er dette pr definisjon minimum fase.
Man kan også se for seg at en driver komprimerer signalet noe. Ved signalet 0,5 inn gir den 0,5 ut. 0,7 inn gir 0,7 ut, mens 0,8 inn gir 0,75 ut, 0,9 inn gir 0,8 ut osv. Man får en komprimeringseffekt når signalet går over et visst nivå. Dersom målingen er gjort ved høyt nok nivå vil FIR-filteret ha dette som en del av korreksjonen enten man vil eller ikke. Siden volumekontrollen som regel er plassert etter filteret vil den korrigere for dette også når man spiller på et nivå som er langt unna å trigge denne effekten. Den totale forvrengningen vil da øke, mens ved en gitt volumeinnstilling vil den bli svært lav.
Man kan plassere volumekontrollen før et slikt filter. Man kan også lage et slikt filter som ikke er FIR-basert, og man kan helt fint lage en separat funksjon som tar seg av det dynamiske, plassere denne etter volumekontrollen, og plassere EQ før volumekontrollen.
Med manuel IIR så står en med hele datasamlingen selv, og en skal overføre dette og sette i DSP.
Dette setter krav til brukeren.
Normalt er det dette som er situasjonen, men som beskrevet over kan man altså automatisere også dette. DEQX har prøvd seg på dette, men svært begrenset hell. Selv på den gamle 8024 digital-EQ-en til Behringer har man en slik funksjon. Men det låter redselsfullt.
Selv når har benyttet IIR så har bare måttet se grovt på hele greia og bare kjøre delinger, delay og veldig enkel EQ for voicing.
Så dårlig er jeg på dette
Det er ikke et dumt utgangspunkt i det heletatt. Verden har sett mange gode høyttalere opp gjennom historien der nettopp dette er selve metodikken som ligger til grunn.
Jeg spurte Snickers på pm her en dag, når en banker løst med FIR på denne måten, hvordan er det da med f.eks intermodulasjonsvreng i driver?
Jeg fikk da til svar at i mange tilfeller så går vreng ned etter korreksjon.
Mitt hue sa da i utgangspunktet at når en korrigerer så "tvinger" en drivere til noe som ikke er i dems natur.
Men det er ikke tilfelle. En må se dette på en annen måte.
Jeg klarer ikke helt gjenforklare, vi er over på signalprosess, men ville skrive dette så en ikke ser på korreksjon som noe som tvinger høyttalere til å gjøre noe dem ikke er ment til. Da har man i tilfelle gjort noe galt.
Det jeg skrev over om signal inn vs signal ut, der vi har en ulinjær effekt, kan vi også betrakte med to samtidige signaler.
1: Vi har et signal med en gitt frekvens. Det har en amplitude på 0,1.
2: Vi har et signal med en gitt frekvens, det har en amplitude på 0,8
Når vi spiller av signal nr 1 vil vi få 0,1 ut.
Når vi spiller av signal nr 2 og nr 1 samtidig vil amplituden på signal nr 2 bringe oss opp i området med komprimering. Da vil amplituden på signal nr 1 gå ned fra 0,1 til 0,05. Straks amplituden på signal nr 2 går ned vil amplituden på signal nr 1 gjenopprettes til 0,1, men så beveger signal nr 2 seg ned på minussiden, og over i det ulinjære området. Da går igjen amplituden på signal nr 1 ned til 0,5. Det er også viktig å huske på at begge disse signalene modulerer hverandre.
Denne typen modulering kaller vi intermodulering. Dersom vi retter opp overføringsfunksjonen slik at signaler helt opp til 1.0 gjengis som 1.0 vil vi unngå denne moduleringen. Men i en driver er ikke nødvendigvis denne moduleringen konstant, og en korreksjon som er perfekt i ett tilfelle kan virke mot sin hensikt i et annet tilfelle. Her er det med andre ord viktig å vite hva en kompensere for, og hva en bør la være å gjøre noe med.