Download presentation
Presentation is loading. Please wait.
1
Improved Headphone Sound Stage Background to ENCM515 Labs on DSO Audio Channel Modeling Based on concepts in Bessinger Thesis Various copyrights M. Smith, E. Bessinger and L.E.Turner M. Smith, Electrical and Computer Engineering, University of Calgary, Canada smithmr @ ucalgary.ca This presentation will probably involve audience discussion, which will create action items. Use PowerPoint to keep track of these action items during your presentation In Slide Show, click on the right mouse button Select “Meeting Minder” Select the “Action Items” tab Type in action items as they come up Click OK to dismiss this box This will automatically create an Action Item slide at the end of your presentation with your points entered.
2
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 2 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project?
3
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 3 / 33 Main reference material E. C. Bessinger, Localization of Sound Using Headphones M. Sc. thesis, Electrical and Computer Engineering, January 1994. Supervisor Dr. Turner Translated for DSP processors by M. Smith
4
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 4 / 33 Improved Head Sound Stage Actual Mono Sound Source Perceived Repositioned Sound Source
5
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 5 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project?
6
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 6 / 33 Concept behind Labs. OFF-LINE initial development using VisualDSP++ simulator Sound Source -- fixed input data array Process Sound -- KNOWN ALGORITHM Sound Sink -- fixed output data array Testing -- plotting and comparing to theory Possible algorithmic time constraints investigated ON-LINE (REAL-TIME) testing using SHARC board Sound Source -- background task (or CODEC) Process Sound -- SAME KNOWN ALGORITHM Sound Sink -- CODEC background task Testing -- using aurally using GOOD earphones and quantified using known sound source
7
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 7 / 33 Labs. 2 and 3 -- delay line -- Concept No relative delay modelled into the audio channel -- then sound perceived in centre of head Modelling a relative delay into the right ear audio channel. Sound arrival will shift sound to left as “sound” seems to get to left ear first DELAY 0 DELAY_LEFT DELAY_RIGHT
8
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 8 / 33 Delay Necessary -- Calculation Distance to Sound Sound Time Delay = -------------------------- Speed of Sound Algorithm Delay = Time Delay * Sampling Rate Relative Distance = 0.3 m Speed of sound = 300 m/s Sampling Rate = 44 kHz Delay needed in array = ???? Sound resolution = ???? Reasonable or NOT?
9
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 9 / 33 GLOSSARY FIFO First In -- First Out stack Delay Line-- Implementation using FIFO LIFOLast In -- First Out stack C-stack-- Implementation using LIFO FIR Finite duration Impulse Response IIRInfinite duration Impulse Response FT (CFT)continuous Fourier transform DFTdiscrete Fourier transform FFT-- fast Fourier transform which is an implementation of DFT
10
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 10 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project?
11
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 11 / 33 Real-time N-pt Delay code concept void ProcessSound(int channel_one, int channel_two, int *left_channel, int *right_channel) { if ((sound_source & LEFT_DELAY) == LEFT_DELAY) { if ((sound_source & MOVEDELAY) == MOVEDELAY) MemoryMove_LeftDelay(process_var1, &channel_one); ---------------------------------------------------- void MemoryMove_LeftDelay(int N, int *channel_one) { float left_delayline[MAXDELAY + 1] = {0}; // Insert new value into the back of the FIFO delay line left_delayline[0 + N] = (float) *channel_one; // N delays implimented // Grab delayed value from the front of the FIFO delay line *channel_one = (int) left_delayline[0]; // Update the FIFO delay line using inefficient mass memory moves for (count = 0; count < N; count++)<--- Or N + 1 or N - 1? left_delayline[count] = left_delayline[count - 1]; } WHAT’S WRONG AND MISSING? WHAT’S WRONG
12
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 12 / 33 Basic Algorithm -- Handle Delay Requires 2 * (LD + RD - 2) memory operations Sample into audio channel Sample from channel
13
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 13 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project?
14
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 14 / 33 Labs. 4 -- delay line -- Concept Get “ambience” by taking into account constructive and destructive interference around the face. This implies knowing characteristics of “audio channel” and modelling using an FIR filter -- 2 FIR filters per speaker -- processing requirement increasing FILTER 330 LEFT FILTER 30 LEFT FILTER 30 RIGHT FILTER 330 RIGHT
15
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 15 / 33 Delay is not only thing to take into account Four audio channels from 2 sources in front
16
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 16 / 33 Lab. 4 -- Transfer function h30(f)
17
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 17 / 33 Lab. 4 -- FIR transfer -- h330(f)
18
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 18 / 33 Why different Audio Channels? Delay is not only positioning element -- take into account actual direction Transfer function from loudspeaker to ear modelled by FIR filterS Enough time to perform calculation between samples?
19
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 19 / 33 FIR schematic diagram
20
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 20 / 33 FIR = Complex Delay Line
21
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 21 / 33 Real-time FIR Filter void ProcessSound(int channel_one, int channel_two, int *left_channel, int *right_channel{ if ((sound_source & FIRFilter) FIRFilter(&channel_one, &channel2); float fircoeffs_30[], fircoeffs[330]; void FIRFilter(int *channel_one, int *channel_two) { // Insert new value into FIFO delay line left_delayline[0 + N] = (float) *channel_one; right_delayline[0 + N] = (float) *channel_two; channel_one_30 = channel_one 330 = 0; Need equivalent of following loop for EACH sound source for (count = 0, count < FIRlength - 1, count++) { channel_one_30 = channel_one_30 + arrayleft[count] * fir_30(count); channel_one_330 = channel_one_330 + arrayright[count]* fir_330[count]; } *channel_one = (int) channel_one_30 + scale_factor * channel_one_30 ditto 2 Update Left Channel delay line; Update Right Channel Delay line }
22
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 22 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project – Try on other processor architectures – try with video?
23
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 23 / 33 Lab. 5 -- Room Effects Need to have multiple sources more FIR operations Need to have reflections off the wall -- possibilities IIR filters, Comb, FFT (frequency domain)
24
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 24 / 33 Standard IIR filter example -- biquad Normally in multi-stages Make parallel BETWEEN rather than IN stages -- see Smith (Micro Magazine article, 1992) SMALL DELAYS
25
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 25 / 33 Real Time standard IIR code finalleftear = h0 * lefttemp1 + h1 * lefttemp2 + h3 * lefttemp3; finalrightear = h0 * rightemp1 + h1 * righttemp2 + h3 * righttemp3; newlefttemp1 = gain * leftear + h4 * lefttemp2 + h5 * lefttemp3; newrighttemp1 = gain * rightear + h4 * rightemp2 + h5 * righttemp3; lefttemp3 = lefttemp2;// Parallel ear calculations lefttemp2 = lefttemp1;// Parallel stages lefttemp1 = newlefttemp1; righttemp3 = righttemp2; // Optimization -- final exam question? righttemp2 = righttemp1;// Optimization righttemp1 = newrighttemp1; // Need other delay and FIR filters for audio channel characteristics
26
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 26 / 33 Lab. 5 -- IIR -- comb filter -- different Long delay line
27
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 27 / 33 Full Lab 5 -- FIR and IIR Time available if multi-task?
28
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 28 / 33 Lab. 5 requires 7 comb filters BIG DELAYS (Use PACK instructions or decimation?)
29
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 29 / 33 Lab. 5 Possibilities -- FFT? Implement filters in frequency domain rather than in time domain Frequency domain algorithms can be considerably faster than time domain algorithms especially when performing several filtering operations on one set of data Require more memory to process BLOCKS OF DATA
30
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 30 / 33 Real Time FIR Convolution Filter via multiplication in frequency domain FFT is faster that FIR and IIR if memory available (2N log N + 4N) rather than 3 * N * N operations for 512 points // Signal Conditioning -- Windowing wleftear[n] = leftear[n] * window[n]; FFT(wleftear, leftfrequency, forward FFT) for 512 points // Signal convolution with FIR frequency domain response new_leftfrequency1[n] = leftfrequency[n] * filter1[n] + leftfrequency[n] * filter2[n] + leftfrequency[n] * filter3[n]; FFT(new_leftfrequency, newleftear, inverse FFT)
31
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 31 / 33 DSP 4 -- FFT -- Decimation Require special architecture for speed
32
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 32 / 33 Major FFT implementation Reference Major reference on signal conditional and filter implementation in frequency domain FFT -- friscy Fourier Transforms? Smith (Microprocessors and Microsystems)
33
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 33 / 33 DIF -- FFT code -- in Fortran pseudo code DO 11 I = 1, 15 -- allows FFT size up to 2^15 M = I; N2 = 2 **I; IF (N.EQ.N2) go to 21 11 CONTINUE RETURN 21N2 = N DO 30 I = 1, M N1 = N2; N2 = N2/2; I1 = 1; I2 = N/N1; -- indexes DO 30 J = 1, N2 --- Note that N2 gets smaller C= cosarray(I1); S = sinarray(I1); I1 = I1 + I2-- Note indexing format DO 30 K = J, N step N1 L = K + N2 tempr = xreal(K) - xreal(L); xreal(K) = xreal(K) + xreal(L) tempi = ximag(K) - ximag(L); ximag(K) = ximag(K) + ximag(L) xreal(L) = C * tempr + S * tempi; ximag(L) = C * tempi + S * tempr; 30 CONTINUE BitReverseArrayManipulation(N, xreal, ximag)
34
6/3/2015 ENCM515 -- Background to Audio Channel Modelling Copyright smithmr@ucalgary.ca 34 / 33 To be tackled today Audio channel modelling concepts as detailed in Bessinger’s thesis on improved sound stage Sound re-positioning through delay lines Post Lab. 1 Quiz – Determination of delay effects using known input audio signals (simulated and real-time) Lab. 2 -- Implementation in “C” (with and without pointers) Lab. 3 -- Implementation in “assembly”, with and without pointers, with specialized SHARC architecture (hardware circular buffers) Sound colouration through FIR filters Lab. 4 -- In “C/C++”, assembly, custom assembly (hardware loops) and VERY custom assembly (highly parallel algorithm) Additional Audio Channel Modeling Lab. 5 -- Multi-tasking environment -- SHARC RTOS -- Room colouration through IIR filters -- Student project – Try on other processor architectures – try with video?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.