 Download
 Welcome to SOFiA
 Who is behind SOFiA
 Feature overview
 System overview
 Function reference
 readVSAdata
 mergeArrayData
 F/D/T
 gauss
 lebedev
 S/W/G
 S/T/C
 W/G/C
 S/F/E
 M/F
 R/F/I
 P/D/C
 I/T/C
 makeMTX
 makeIR
 visual3D
 Coordinate System
 Application Examples
 Example 1
 Example 2
 Example 3
 Example 4
 Example 5
 Example 6
 Example 7
 Example 8
 Array Datasets
 VariSphear system
 Groups and Mailinglists
 Contact and Support
 How to Reference

SOFiA Sampled Wave Generator Wrapper
The sampled wave generator emulates a full spectrum wave impact to a microphone array. The wave is sampled at discrete positions determined by a quadrature grid (e.g. from SOFiAlebedev() or SOFiAgauss()). The generator script can be modified to simulate errors like e.g. positioning or temperature deviation. Feeding the SOFiA chain with a S/W/G synthesized plane wave aliasing artifacts and errors can easily be simulated, visualized or auralized (see figures below). The S/W/G module (2nd generation) is a wrapper using the W/G/C wave generator core and the I/T/C inverse spatial fourier transform core. The internal generator order Ng should be (much) higher than the array order.
ARGUMENTS
Input
Name 
Type 
Purpose 
Default 
r 
float 
Microphone radius in m
Can also be a vector for rigid/dual sphere configurations:
(1,1) => rm Microphone Radius
(2,1) => rs Sphere Radius or Microphone2 Radius
! If only one radius (rm) is given using a Rigid/Dual Sphere Configuration:
rs = rm. In this case only one krvector is returned.

1 
gridData 
float mtx 
Quadrature grid, positions and weights (W):
AZ1 EL1 W1 AZ2 EL2 W2 ... AZM ELM WM for M Positions 
Lebedev 110P 
ac 
int 
Array configuration
0: Open Sphere with p Transducers
1: Open Sphere with pGrad Transducers
2: Rigid Sphere with p Transducers
3: Rigid Sphere with pGrad Transducers
4: Dual Open Sphere with p Transducers 
0 
FS 
int 
Sampling rate 
48000 
NFFT 
int 
FFT Order (Number of bins) should be 2^x, x=1,2,3,… 
512 
AZ 
float 
Azimuthal angle of the wave (Refer to
Coordinate System) 
0 
EL 
float 
Elevation angle of the wave (Refer to
Coordinate System) 
pi/2 
Nlim 
int 
Internal generator order 
120 
t 
float 
Time delay in s 
0 
c 
float 
Speed of sound in m/s 
343.0 
wavetype 
int 
0: Plane wave, 1: Spherical wave 
0 
ds 
float 
Source distance in m (For wavetype = 1, spherical wave only)
Warning: If NFFT is smaller than the time the wavefront needs
to travel from the source to the array, the impulse response will by
cyclically shifted (cyclic convolution) 
1m 
Angles AZ, EL are in RAD
Output
Name 
Type 
Purpose 
fftData 
complexfloat mtx 
Frequency domain data for
S/T/C 
kr 
float vec 
kr Values (k: wave number, r: radius)
Can also be a matrix krs for rigid sphere configurations:
[1,:] krm referring to the Microphone Radius
[2,:] krs referring to the Sphere/Microphone2 Radius 
ANALYSIS OF SPATIAL ALIASING USING SOFiA S/W/G
The figure shows array responses to a synhtesized plane wave from S/W/G for different krvalues. The left globe shows
the response for kr << N. Everything is fine. The globe in the middle is a response for kr = N (kr is slightly
higher than N). Some spatial alias artifacts can be observed. The right one shows a response for kr >> N. The spatial
aliasing has destroyed the plane wave response completely.
The figure above shows a reconstructed spectrum for a fullspectrum (FS 48KHz) plane wave synthesized with the S/W/G
module. The spectrum is perfectly reconstructed for all krN starting at 23KHz.
FILE(S):
File 
Type 
OS/Matlab 
sofia_swg.m 
Help header, Fuction 
All OS 
HEADER
/*
[fftData, kr] = sofia_swg(r, q_grid, ac, FS, NFFT, AZ, EL, Ng, t, c, wavetype, ds)


fftData 
Complex sound pressures [(N+1)^2 x NFFT] 
kr

krVector
Can also be a matrix [krm; krs] for rigid sphere configurations:
[1;:] => krm referring to the Microphone Radius
[2;:] => krs referring to the Sphere/Microphone2 Radius

 
r 
Microphone Radius
Can also be a vector for rigid sphere configurations:
[1,1] => rm Microphone Radius
[2,1] => rs Sphere Radius (Scatterer)

gridData

Quadrature grid [default LEB110]
Columns: Position Number 1...M
Rows: [AZ EL Weight]
Angles AZ, EL in [RAD]

ac

Array Configuration
0 Open Sphere with p Transducers
1 Open Sphere with pGrad Transducers
2 Rigid Sphere with p Transducers
3 Rigid Sphere with pGrad Transducers (Thx to Nils Peters!)
4 Dual Open Sphere with p Transducers (Thx to Nils Peters!)

FS 
Sampling Frequency 
NFFT 
FFT Order (Number of bins) shhould be 2^x, x=1,2,3,... 
AZ 
Azimuth angle in [DEG] 02pi 
EL 
Elevation angle in [DEG] 0pi 
Nlim 
Internal generator transform order limit. (Warning: Should be much
higher than typical microphone array order) 
c 
Speed of sound in [m/s] (Default: 343m/s) 
t 
Time Delay in s 
wavetype 
Type pf the Wave. 0: Plane wave (default); 1: Spherical Wave 
ds 
Distance of the source in [m] (For wavetype = 1 only) 
This file is a wrapper generating the complex pressures at the
positions given in 'q_grid' for a full spectrum 0FS/2Hz (NFFT Bins)
wave impining to an awway. The wrapper involves the W/G/C wave
generator core and the I/T/C spatial transform core

*/ 

