• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

A Matlab - Octave Tool to calculate the correct Spinorama - CEA2034 from the NFS data

Does anyone know how to check if Score changes when applying random EQ in matlab?
I've even succeeded in getting Maiky's compressed file and opening Spinorama data, but I don't know where to apply the EQ I want to try.
 

Attachments

  • Matlab.png
    Matlab.png
    178.4 KB · Views: 204
There is no provision to add EQ in the scripts.
What I use is proprietary and won't be published.
Feel free to add one and add to the package and share it...

I am not that familiar with it you might be able to use REW and add EQ to ALL the CEA curves.
Then export ALL the CEA curves into a format readable by Octave/Matlab
Use Octave/Matlab to generate a file "Spininorama_corrected_F_ON_LW_ER_PIR_SP_SPDI_ERDI_DIoffset.mat"
The name tells you the order of the columns.
Then use this file to run the PPR script.
 
Last edited:
There is no provision to add EQ in the scripts.
What I use is proprietary and won't be published.
Feel free to add one and add to the package and share it...

I am not that familiar with it you might be able to use REW and add EQ to ALL the CEA curves.
Then export ALL the CEA curves into a format readable by Octave/Matlab
Use Octave/Matlab to generate a file "Spininorama_corrected_F_ON_LW_ER_PIR_SP_SPDI_ERDI_DIoffset.mat"
The name tells you the order of the columns.
Then use this file to run the PPR script.
oh... okay. that's sad news... =(
I tried to use matlab because the vituixcad program was not properly loaded, but it's not easy...
 
There is no provision to add EQ in the scripts.
oh... okay. that's sad news... =(

A straightforward way to EQ using Spinorama data and a measured in-room response
  • Measure your loudspeakers in your room with the tool of your choice (REW, Dirac, ..)
  • From the Spinorama, take the curve which represents the on-axis response or another focussed average as proxy of direct sound.
    According to Toole, this is the part which is perceived as loudspeaker timbre.
  • Now, above Schrodinger frequencies, equalize closely to your measured curve and apply the direct-sound corrections, if necessary.
    The Schrodinger frequency can be guessed where the two loudspeakers' responses start to resemble and slope down.
    Corrections should straighten the direct sound response, preserving approx. the original slope.
    Below Schrodinger, correct according to your measurement to flat or apply a bass boost below 150Hz to your liking.
 
Last edited:
EDIT:

GNU Octave is a free Matlab compatible software
https://www.gnu.org/software/octave/
  • Powerful mathematics-oriented syntax with built-in 2D/3D plotting and visualization tools
  • Free software, runs on GNU/Linux, macOS, BSD, and Microsoft Windows
  • Drop-in compatible with many Matlab scripts

Updated version:
- simplified script with better handling of the figures
- Added a script to plot the directivity of the speaker (LW, Vertical, Horizontal, normalized or not, 3D plots)

If you have an issue or detect a mistake please share!
Cheers
M

View attachment 77588View attachment 77591View attachment 77590View attachment 77592View attachment 77589View attachment 77587
Could you do a polar map that can be rotated about the normal? That would be interesting.
 
Could you do a polar map that can be rotated about the normal? That would be interesting.
Hello Dr. Geddes,

The Klippel NFS does harmonic decomposition and calculates the anechoic response of the source DUT.
I do not have access to the full data set, just the export provided by Amirm, the MC of ASR, which the traditional spinorama as depicted here:

1748921105252.png



I believe that your equivalent polar map mentioned here is also using harmonic decomposition with a different spatial sampling i.e finer spatial resolution around the listening axis - I could be wrong but in my notes these are: 0, 5, 10, 15, 20, 30, 40, 50, 60, 80, 100, 120, 150, 180deg.
I am not sure if the data we have access to is enough to do what you have in mind.

What is it exactly you would like to visualize?
 
Last edited:
Yes, I did the same thing back early this century. I did not do the two sphere anechoic calcs, because I found it unnecessary. Gating worked just fine blended with model simulations of the LFs from TS data. And my rotations were manual. I'm still unconvinced that the two sphere requirements are necessary, certainly not if one has reasonable space. My data is taken with equal spacing in the cos(theta) space as this is the variable that the fitting is done to. It yields good resolution with fewer data points.

Once one has the polar radiation model, you have all the data for any point in space. Doing just horizontal and vertical plots is not everything. For example in a square waveguide where the vertical and horizontal could be matched, the polars can collapse along the diagonal. This will not be seen in the two planes being shown. But you have the data, you just need a way to be able to look at any angle around the axis, not just two.

It would be a shame if one did not have access to the actual polar radiation modal data as this is far better than just two planes. The data is very concise as frequency responses of each mode. Could even be impulse responses of each mode.
 
Am I correct in thinking that you believe that the two orbits or variations of thereof would be enough to access the full radiation pattern through harmonic decomposition?
@Tom Kamphuys would be vey much interested in that...
 
No, that is not what I think, although there would be many cases where that would be true. But I am talking about looking at the data, once taken and decomposed in modal radiation patterns. The measurement has all the data for any field point, why not make it available, i.e. along diagonals. I don't understand why you only have access to"the MC of ASR, which the traditional spinorama as depicted here:" Once the decomposition is done someone has all the data.
 
During the summer of 2024 I did my first measurements with my diy table top NFS with two measurement spheres around a speaker. It was still in the early stages of development. Still lots to learn and improve. Unfortunately I didn't do much during the winter and am just starting again.

I do have some measurement from the last summer and can do fitting of the spherical harmonics and sound field separation. The measurements were taken in a (very) small room and no gating was applied.

I just wrote some code to generate the polar plots rotated around the normal, if I understand you correcly. 0 degrees is horizontal. 90 degrees is vertical.

1749068901007.png



The speaker is an Elac Debut 2.0 B6.2. Measurements by amirm can be found here: https://www.audiosciencereview.com/forum/index.php?threads/elac-debut-2-0-b6-2-speaker-review.14272/

I hope to do some measurements in a larger room and use gating for the higher frequencies, but that will take some time.
 
Stumbled upon this thread. Two immediate thoughts.

  1. use the LLMs to convert Matlab to python. I was a hardcore user of Matlab from '97 to '17, but moved on to python which is far more broadly used these days in all fields, libraries ported, academic involvement, etc. Should be an easy lift.
  2. Make it a github project and all can test and provide feedback.
 
Back
Top Bottom