improved headphone sound stage background to encm515 labs on dso audio channel modeling based on...
Post on 19-Dec-2015
222 views
TRANSCRIPT
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, Canadasmithmr @ ucalgary.ca
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 4 / 33
Improved Head Sound Stage
Actual MonoSound Source
Perceived Repositioned Sound Source
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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 0DELAY_LEFT
DELAY_RIGHT
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 8 / 33
Delay Necessary -- Calculation
Distance to Sound Sound
Time Delay = -------------------------- Speed of Sound
Algorithm Delay = Time Delay * Sampling Rate
Relative Distance = 0.3 mSpeed of sound = 300 m/sSampling Rate = 44 kHzDelay needed in array = ????Sound resolution = ???? Reasonable or NOT?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 9 / 33
GLOSSARY FIFO First In -- First Out stack
Delay Line -- Implementation using FIFO LIFO Last In -- First Out stack
C-stack -- Implementation using LIFO FIR Finite duration Impulse
Response IIR Infinite duration Impulse
Response FT (CFT) continuous Fourier transform DFT discrete Fourier transform
FFT -- fast Fourier transform which is an implementation of DFT
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 12 / 33
Basic Algorithm -- Handle Delay
<----------DELAY ----------> Requires 2 * (LD + RD - 2) memory operations
<---------- LEFT DELAY ---------->
Sample into audio channel
Sample from channel
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 15 / 33
Delay is not only thing to take into account Four audio channels from 2 sources in front
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 16 / 33
Lab. 4 -- Transfer function h30(f)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 17 / 33
Lab. 4 -- FIR transfer -- h330(f)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 18 / 33
Why different Audio Channels? Delay is not only
positioningelement -- takeinto accountactual direction
Transfer functionfrom loudspeakerto earmodelledby FIR filterSEnough time to performcalculation betweensamples?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 19 / 33
FIR schematic diagram
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 20 / 33
FIR = Complex Delay Line
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 21 / 33
Real-time FIR Filtervoid 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 lineleft_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 2Update Left Channel delay line; Update Right Channel Delay line
}
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 26 / 33
Lab. 5 -- IIR -- comb filter -- different
Long delay line
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 27 / 33
Full Lab 5 -- FIR and IIRTime available if multi-task?
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 28 / 33
Lab. 5 requires 7 comb filters
BIG DELAYS(Use PACK instructions
or decimation?)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 31 / 33
DSP 4 -- FFT -- Decimation
Require special architecture for speed
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 33 / 33
DIF -- FFT code -- in Fortran pseudo codeDO 11 I = 1, 15 -- allows FFT size up to 2^15
M = I; N2 = 2 **I; IF (N.EQ.N2) go to 2111 CONTINUE
RETURN21 N2 = 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)
04/18/23 ENCM515 -- Background to Audio Channel Modelling
Copyright [email protected] 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?