Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simulation of the continuous measurement of spatial room impulse responses #1

Open
narahahn opened this issue Nov 10, 2017 · 0 comments

Comments

@narahahn
Copy link
Contributor

narahahn commented Nov 10, 2017

Simulation of the captured signal

  • Define sound source position
  • Define a microphone movement (radius, angular speed, etc)
  • The angular position of the microphone phi (length of L)
  • Gerenate a perfect sequence p (length N)
  • Compute the captured signal s, which has the same length L

System identification

  • Select a set of target positions phi_target (length K) at which the impulse responses are to be computed
  • Decompose the captured signal into N sub-signals, where the i-th signal is s[i::N]
  • The i-th signal 's_i' (i=0,...,N-1) corresponds to angular positions phi[i::N]
  • For each target angle phi_target[k] (k=0,...,K-1), reconstruct the original sound field y by using spatial interpolation
  • The interpolation will look like this:
    y[i] = spatial_interpolation(s_i, phi_i, phi_target[k])
    So you get the i-th sample of the sound field at phi_target[k]
  • The corresponding impulse response h is then given as the circular cross correlation of y and the perfect sequence p
    h = cross_correlation(y, p)
  • The overall structure will look more or less like this:
impulse_responses = np.zeros((N,K))
for k in range(K):
	y = np.zeros(N)
	for i in range(N):
		s_i = s[i::N]
		phi_i = phi[i::N]
		y[i] = spatial_interpolation(phi_i, s_i, phi_target[k])
	impulse_responses[:, k] = circular_cross_correlation(y, p)
  • You should implement the function spatial_interpolation

Extension to MISO case

  • Define multiple microphone loudspeaker positions (M)
  • Generate perfect sequences. The period has to be M*N. Apply a time-shift of m*N to the m-th signal
  • Compute the superimposed signal (sum up)
  • The same procedure as above
  • This time, circular_cross_correlation(y, p) will have a length of M*N. Each block of N samples correspond to the m-th impulse response.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant