stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

6h 30m 31s logged

Animating by Azimuth

I tried to identify patterns in the HRTF curves by azimuth. Wrote a function which animates it frame by frame (by azimuth). Visually, I could see it gradually moving (similar shape, moving little by little), though as it was apparent from the heat maps, it wasn’t regular and had phases of very slight changes and phases of chaotic movement.

(This was all done with right ear curves since SADIE II is symmetrical, which made things easier).

To understand this, I wrote another function which compared the similarity of 5 curves at a time, and then plotted that. This had some very dense regions with little variation most of the time, but was quite chaotic around 50-150°.

Peak Analysis Compression

I tried writing a set of functions which would go through the curves, identify significant points (turning points and drops/rises, detected by changes in signs of differences and slope changes) then judge whether the curves of the angles following it are similar (same number of peaks, within a threshold of frequency and magnitude).

Similar curves would be grouped within a “phase” where each phase is a dictionary with:

  • 'initial' (initial coordinates of peaks, list of tuples)
  • 'freq_changes' (nested list of changes in frequency for each frame of each peak)
  • 'mag_changes' (similar to freq_changes)

The changes arrays would then be simplified; if frequency/magnitude changes are subtle enough that it’s imperceptible (determined by continuous bark scale/hardcoded decibel threshold), it would be reduced to zero.

Reconstruction

To reconstruct it, a function would get the phase’s initial, add the corresponding differences to get the exact peaks, then interpolate using pchip to get the curve.

Results

It looked like it could optimise everything significantly, but it failed miserably.

  • Very inaccurate (error ~5dB mean, ~14dB max)
  • About 77% of phases were just 1 curve
  • The max size of a phase was 6 curves (compared to my expected 20-30)

The error could be made better by having more peaks, but it doesn’t optimise anything significantly.

I’ll move on with directly applying the HRTF curves now, though I’ll come back to this later because it looks promising! Attaching the azimuth animation video and the similarity plot

0
8

Comments 0

No comments yet. Be the first!