Faltningsreverb i realtidsimplementering

Relevanta dokument
Digital Signalbehandling i Audio/Video

DIGITALA FILTER. Tillämpad Fysik Och Elektronik 1. Frekvensfunktioner FREKVENSSVAR FÖR ETT TIDSDISKRET SYSTEM. x(n)= Asin(Ωn)

DIGITALA FILTER DIGITALA FILTER. Tillämpad Fysik Och Elektronik 1

Exempelsamling Grundläggande systemmodeller. Klas Nordberg Computer Vision Laboratory Department of Electrical Engineering Linköping University

Laboration i tidsdiskreta system

Resttentamen i Signaler och System Måndagen den 11.januari 2010, kl 14-19

Tentamen i Signaler och kommunikation, ETT080

Tentamen i TMA 982 Linjära System och Transformer VV-salar, 27 aug 2013, kl

Exempelsamling Grundläggande systemmodeller. Klas Nordberg Computer Vision Laboratory Department of Electrical Engineering Linköping University

DT1130 Spektrala transformer Tentamen

Att fånga den akustiska energin

Kan vi beskriva ett system utan någon fysikalisk kännedom om systemet?

Mätningar med avancerade metoder

DT1130 Spektrala transformer Tentamen

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

TNMK054 - LJUDTEKNIK 1 RUM, REVERB,

Digital signalbehandling Digitalt Ljud

Optimal Signalbehandling Datorövning 1 och 2

Försättsblad till skriftlig tentamen vid Linköpings universitet G33(1) TER4(63)

2 Laborationsutrustning

TIDSDISKRETA SYSTEM SYSTEMEGENSKAPER. Minne Kausalitet Tidsinvarians. Linjäritet Inverterbarhet Stabilitet. System. Tillämpad Fysik och Elektronik 1

RÄKNEEXEMPEL FÖRELÄSNINGAR Signaler&System del 2

Ämnesområde Hörselvetenskap A Kurs Signalteori, 7,5 hp Kurskod: HÖ1007 Tentamenstillfälle

Föreläsning 11 Reglerteknik AK

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Effektpedal för elgitarr

Föreläsning 11. Reglerteknik AK. c Bo Wahlberg. 8 oktober Avdelningen för reglerteknik Skolan för elektro- och systemteknik

TSBB16 Datorövning A Samplade signaler Faltning

Försättsblad till skriftlig tentamen vid Linköpings universitet KÅRA T1 T2 U2 U4

Signal- och bildbehandling TSBB03

Systemkonstruktion Z3 (Kurs nr: SSY-046)

Signal- och bildbehandling TSEA70

2F1120 Spektrala transformer för Media Tentamen

Laboration 3 Sampling, samplingsteoremet och frekvensanalys

Conreg. Översikt T-Logg T-LOGG. System för insamling, bearbetning, visning och lagring av tjockleksdata 1 (14)

1. Vi har givet två impulssvar enligt nedan (pilen under sekvenserna indikerar den position där n=0) h 1 (n) = [ ]

Projekt 1 (P1) Problembeskrivning och uppdragsspecifikation

Tentamen i ESS 010 Signaler och System E3 V-sektionen, 16 augusti 2005, kl

Signal- och bildbehandling TSEA70

Föreläsning 8, Introduktion till tidsdiskret reglering, Z-transfomer, Överföringsfunktioner

Grundläggande ljud- och musikteori

Tillämpning av komplext kommunikationssystem i MATLAB

Hemuppgift för E2 SF1635, HT 2007

Vad gör vi när vi bara har en mätserie och ingen elegant matematisk funktion? Spektrum av en samplad signal. Trunkering i tiden

TSRT91 Reglerteknik: Föreläsning 5

Signalbehandling, förstärkare och filter F9, MF1016

AD-/DA-omvandlare. Digitala signaler, Sampling och Sample-Hold

Signalanalys med snabb Fouriertransform

System. Z-transformen. Staffan Grundberg. 8 februari 2016

Tentamen ssy080 Transformer, Signaler och System, D3

FÖRELÄSNING 13: Analoga o p. 1 Digitala filter. Kausalitet. Stabilitet. Ex) på användning av analoga p. 2 filter = tidskontinuerliga filter

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

Laboration - Va xelstro mskretsar

A/D D/A omvandling. Lars Wallman. Lunds Universitet / LTH / Institutionen för Mätteknik och Industriell Elektroteknik

Grundläggande A/D- och D/A-omvandling. 1 Inledning. 2 Digital/analog(D/A)-omvandling

Tentamen ssy080 Transformer, Signaler och System, D3

DT1130 Spektrala transformer Tentamen

Sammanfattning TSBB16

TAIU07 Matematiska beräkningar med Matlab

Adaptiva Filter. Johan Haarala Signaler och System

Tentamen i Miljö och Matematisk Modellering för TM Åk 3, MVE345 MVE maj 2012,

Miniräknare, formelsamling i signalbehandling.

Digital signalbehandling Laboration 2 Digital filtrering

Spektrala Transformer

Flerdimensionell signalbehandling SMS022

Numerisk lösning till den tidsberoende Schrödingerekvationen.

2E1112 Elektrisk mätteknik

Spektrala Transformer

Implementering av digitala filter

Musikeffekter med signalprocessor

Signalbehandling Röstigenkänning

Övningar med Digitala Filter med exempel på konstruktion och analys i MatLab

Lab 4: Digital transmission Redigerad av Niclas Wadströmer. Mål. Uppstart. Genomförande. TSEI67 Telekommunikation

Elektronik. Dataomvandlare

Spektrala Transformer

Audio & Videoteknik 2D2021, 2D1518

Styr- och Reglerteknik för U3/EI2

Signal- och bildbehandling TSEA70

Föreläsning 10, Egenskaper hos tidsdiskreta system

DT1120/DT1130 Spektrala transformer Tentamen

Elektro och Informationsteknik LTH. Laboration 6 A/D- och D/A-omvandling. Elektronik för D ETIA01

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

Analog till Digitalomvandling

Signal- och bildbehandling TSBB14

GRUNDKURS I SIGNALBEHANDLING (454300), 5sp Tentamen

Analog till Digitalomvandling

Läsinstruktioner. Materiel

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Teori... SME118 - Mätteknik & Signalbehandling SME118. Johan Carlson 2. Teori... Dagens meny

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

Tillämpad digital signalbehandling Laboration 1 Signalbehandling i Matlab och LabVIEW

TSDT15 Signaler och System

Analys/syntes-kodning

D/A- och A/D-omvandlarmodul MOD687-31

Signal- och bildbehandling TSBB14

Digitala filter. FIR Finit Impulse Response. Digitala filter. Digitala filter. Digitala filter

Elektronik. Viktor Öwall, Digital ASIC Group, Dept. of Electroscience, Lund University, Sweden-

TANA17 Matematiska beräkningar med Matlab

ETIN80 - Algoritmer i signalprocessorer. EigenBeamformer

Transkript:

Faltningsreverb i realtidsimplementering SMS45 Lp1 26 DSP-system i praktiken Jörgen Anderton - jorand-3@student.ltu.se Henrik Wikner - henwik-1@student.ltu.se

Introduktion Digitala reverb kan delas upp i två huvudgrupper, de som är algoritmbaserade och de som bygger på ett inspelat impulssvar. Algoritmbaserade reverb approximerar ett reverb genom en eller flera matematiska funktioner som appliceras på insignalen. Dessa kan realiseras genom FIR- eller IIR-filter eller en kombination av de båda. Den andra huvudgruppen tar sin utgångspunkt i ett reverb som redan finns. En kort och transientrik signal används som insignal till det existerande reverbet och en inspelning görs av utsignalen. Insignalen bör vara så lik en ideal impuls som möjligt och oftast används en startpistol eller bredbandigt brus under en mycket kort tidsperiod, en s.k. burst. Reverbet kan vara såväl ett existerande hårdvarureverb som en faktisk lokal. I det senare fallet spelar man in rummets klang med mikrofoner i godtycklig uppställning, det leder till att en och samma lokal kan generera en mängd olika impulssvar beroende på mikrofonernas typ och placering. Detta betyder också att det inte finns ett enkelt sätt att ändra på reverbets parametrar då lokalens (eller systemets) klang är inspelad under vissa, speciella förutsättningar u M [] n = h[] k x[ n k] k= Formel 1.Principen för ett FIR-filter, u är utsignal, h impulssvar, x insignal och M+1 längden på resp. vektor Det framtagna impulssvaret samplas sedan och appliceras på en insignal enligt principen för ett FIR-filter (se formel 1). Detta leder till den stora skillnaden mellan algoritm- och impulssvarsbaserade reverb, nämligen beräkningskraven. För att beräkna en sampel av utsignalen i ett impulssvarsreverb krävs att alla sampels i impulssvaret multipliceras med motsvarande sampel i insignalen. Eftersom den totala mängden beräkningar per sampel begränsas av ett realtidssystems klockfrekvens finns det ett direkt samband mellan den maximala längden på ett impulssvar och beräkningshastigheten hos systemet. Ett 2 s långt impulssvar, stereosamplat i 441 Hz ger två impulssvarsvektorer (vänster resp. höger) med 2 441 = 882 sampels i vardera vektor. Detta betyder att varje sampel i utsignalen kräver minst 2 882 = 1764 klockcykler per sampel. Detta kan jämföras med beräkningshastigheten hos den använda processorn i detta enskilda projekts DSP-kort, 16 MHz, med samma samplingsfrekvens som ovan, 441 Hz. Varje samplingsperiod ger då idealt 16 / 441 = 3628 beräkningar för båda kanalerna, dvs. 1/5 av det antal beräkningar som skulle behövas i det ovanstående exemplet. Vi måste alltså kraftigt minska antalet beräkningar för att kunna använda det tillgängliga DSP-kortet. DSP-kortet (Stud-1 från Rubico Systems) innehåller en processor från Analog Devices (ADSP-2191) med en klockfrekvens på 16 MHz och 16 kb minne. A/D- och D/Aomvandlingen av ljudet gjordes genom codecen AD1885, som innehåller 16-bits omvandlare från Analog Devices. SMS45 Faltningsreverb i realtidsimplementering 2

Metod Reverbet implementerades i ADSP-2191 stud-1 utvecklingskort i programmeringsspråket Assembler. För att få programmet så effektivt som möjligt gjordes alla beräkningar på en klockcykel vilket i sin tur innebar att koefficientvektorn och vektorn med gamla insignaler sparades i programminnet respektive dataminnet. Pga. koefficientvektorns storlek partionerades programminnet om så att ett block innehöll variabler och ett annat programkod. För att DSP:n ska hinna med att göra så många beräkningar som möjligt (vilket är viktigt för att få en så autentisk känsla som möjligt av reverbet) sattes samplingsfrekvensen till 225 Hz. Med den samplingsfrekvensen borde DSP:n teoretiskt klara av 7256 beräkningar per monosampel. Det första impulssvaret som användes var 5 sampel långt men det klarade inte DSP:n av. Detta märktes på ett skrapande ljud liknande overflowdistorsion. Därför valdes ett kortare impulssvar och test genomfördes i Matlab huruvida det räcker med 3 sampel. Det visade sig att det lät alldeles utmärkt även med 3 sampel varför den längden valdes att fortsättningsvis användas. För att kunna ändra längden på reverbet dvs. efterklangstiden på originalljudet måste längden på impulssvaret ändras. Det löstes genom att hoppa över vissa sampel ur originalimpulssvaret (se fig. 2-4). Man får då ett annat impulssvar och genom att vissa sampel hoppas över behövs sampel längre fram i originalimpulssvaret. Dock är magnituden för senare sampel så låg att de knappt spelar någon roll varvid ett kortare reverb uppfattas. Pga. att den faktiska beräkningshastigheten låg så pass mycket under den teoretiska bestämdes att DSP:n bara skulle processera en kanal. Annars hade bara ~15 sampel kunnat filtreras och troligtvis hade då reverbet inte låtit så mycket reverb. Filterkoeffienterna togs fram genom att läsa in ett inspelat impulssvar i Matlab och sedan sampla ner det med en faktor 2. Dvs. samplingsfrekvensen blir hälften så kort, 225 Hz. Därefter togs de 9 första värdena och skalades om för att passa 1.15-systemet. Sedan exporterades koefficenterna till en.dat-fil som importerades i programkoden. Tre olika filtreringsalgoritmer implementerades. En för varje reverbstorlek. För den största storleken lästes de 3 första samplen ur impulssvaret och multiplicerades med gamla insignaler. För mellanstorleken lästes varannat sampel in upp till de 6 första samplen och för den minsta storleken lästes var tredje sampel in ända till slutet av vektorn. SMS45 Faltningsreverb i realtidsimplementering 3

Resultat För att anpassa impulssvaret till beräkningshastigheten på en enklare DSP kan sampels som inte innehåller nödvändig information tas bort. Det resulterande, kortare impulssvaret blev i vårt fall 9 sampels långt (av totalt ca 2). Impulssvaret är en ögonblicksbild av en verklig lokal under vissa förutsättningar. Detta hindrar dock inte att man tolkar impulssvaret på olika sätt för att ge olika klang på utsignalen. Klangen hos ett reverb bestäms till största delen av de tidiga reflektioner som inträffar under de första 1 ms, vilket gör att vi kan skapa olika stora reverb av samma impulssvar så länge impulssvarsvektorn innehåller de sampels som motsvarar dessa tidiga reflektioner. Genom att decimera impulssvaret (hoppa över ett visst antal sampels) ges approximationer av reverb som kan ses som skalade versioner av originalimpulssvaret. De 3 beräkningar som är tillgängliga per sampel fördelas över olika stor del av impulssvaret enligt tabell 1 och figur 2-4. Antal samples ur impulssvaret Hoppstorlek mellan sampels Small 9 3 Medium 6 2 Large 3 1 Tabell 1. Tabell över de olika reverbstorlekarna och deras relation till originalimpulssvaret. Figur 1. Det nersamplade impulssvar varifrån koefficienterna tas. SMS45 Faltningsreverb i realtidsimplementering 4

.4 Impulssvar för Small.35.3.25 h[n ].2.15.1.5 5 1 15 2 25 3 35 [n] Figur 2. Impulssvar för det minsta reverbet där var tredje sampel används..45 Impulssvar för Medium.4.35.3.25 h[n].2.15.1.5 5 1 15 2 25 3 [n] Figur 3. Impulssvar för mellanreverbet där varannat sampel används. SMS45 Faltningsreverb i realtidsimplementering 5

.45 Impulssvar för Large.4.35.3.25 h[n].2.15.1.5 5 1 15 2 25 3 [n] Figur 4. Impulssvar för det största reverbet där varje sampel upp till 3 används. SMS45 Faltningsreverb i realtidsimplementering 6

Diskussion Man kan ifrågasätta huruvida det blir ett så välljudande reverb som möjligt när man hoppar över sampels som vi gjort i detta projekt. I fallet för det kortaste reverbet använder vi bara var tredje sampel och de som ligger emellan kan ju faktiskt vara viktigare. Detta innebär ju också i och för sig att man bara får ett annorlunda impulssvar som beter sig som vilket annat impulssvar som helst, men inte nödvändigtvis som en kortare version av det här projektets längsta reverb. Dessutom har vi i vårat impulssvar totalt 2 sampels. Vi använder de 9 första vilket är mindre än hälften. Kanske är de sista 11 viktigare än man tror. Ofta är det reverbsvansen som bestämmer hur autentiskt ett reverb låter. Detta är dock svårt att testa i realtid i DSP:n, men man kan kontrollera i Matlab om man vill födjupa sig mer inom området. En annan typ av implementation har diskuterats inom gruppen som innebär att man sparar fler insignalsvärden och istället för att hoppa över sampels bara i koefficentvektorn också hoppa över insignaler och t ex ta var tredje tidigare insginal och multiplicera med var tredje värde i koefficientvektorn. På så vis kan man möjligtvis uppnå ett längre reverb utan att kräva fler beräkningar. SMS45 Faltningsreverb i realtidsimplementering 7