• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. 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

Maiky76

Senior Member
Joined
May 28, 2020
Messages
487
Likes
4,044
Location
French, living in China
Hi,

Here is a Matlab - Octave Tool to calculate the correct Spinorama - CEA2034 from the NFS data (or other analyzers for that matter via minor modifications).
As of now (June, 17th 2020), the NFS CEA2034 data does not correctly compute the ER from its own data.
Since the calculation of PIR is using the ER, it is also incorrect.

I have put together a simple tool that loads the relevant NFS data and performs the correct calculations for the ER and corollary the PIR.
It also checks the SP and LW which are correct.

The PIR is critical for EQ design and the calculation of the Olive Predicted Preference Rating metric.

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

Cheers
M
 

Attachments

  • NFS Complete Data.png
    NFS Complete Data.png
    62.6 KB · Views: 386
  • PIR Data.png
    PIR Data.png
    43.2 KB · Views: 346
  • SP Data.png
    SP Data.png
    32.3 KB · Views: 341
  • ER Data.png
    ER Data.png
    38.1 KB · Views: 299
  • LW Data.png
    LW Data.png
    36.8 KB · Views: 309
  • Octave_Calulate_PIR_SP_LW_ER ver1.0.zip
    8.4 KB · Views: 331
  • Corrected Spininorama.png
    Corrected Spininorama.png
    50.7 KB · Views: 319
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

Horizontal 3D Directivity data.png
Raw Directivity data.png
Normalized Directivity data.png
Vertical 3D Directivity data.png
LW data.png
Corrected Spininorama.png
 

Attachments

  • 20200811 Octave PIR SP LW ER Directivity ver2.0.zip
    11.1 KB · Views: 240
Last edited:
Really nice work.
 
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
Anyone know what Audioholics uses for their 3D graphs?
image

image


The 3D heat map polar plot / spectrogram is especially nice.


If one could combine this with the 360 globe plot that @hardisj uses:
Buchardt%20S400_360_Horizontal_Polar.png

That would be an amazing visual.


It also checks the SP and LW which are correct.

I assume you have it manually calculating ER/PIR. in which case manually calculating SP & LW should be simple. That's what I do, I simply upload the horizontal & vertical SPL files and it does the rest.
 
Last edited:
Anyone know what Audioholics uses for their 3D graphs?
image

image


The 3D heat map polar plot / spectrogram is especially nice.


If one could combine this with the 360 globe plot that @hardisj uses:
Buchardt%20S400_360_Horizontal_Polar.png

That would be an amazing visual.




I assume you have it manually calculating ER/PIR. in which case manually calculating SP & LW should be simple. That's what I do, I simply upload the horizontal & vertical SPL files and it does the rest.

Hi,

The best polar plots are found there:
http://www.gedlee.com/Application Files/RunPolarMap.aspx
It's using harmonic decomposition of the sound field (like the NFS), you can check the DI and directivity and the at any angle.
All the others are more or less the same, just more or less fancy.
I am not a big fan of the mesh presentation except in 2D like so:

1597197844533.png

Maybe in a future revision...

For the Spinorama calculation I do the same, load the V and H data and calculate everything directly, so no mistake.
All the heavy lifting is already done in the script.
These are tool that I hope will help and are easily adapted to whatever the user wants to visualize.
 
Hi,

here is the fancy stuff:
It takes Octave a few seconds to plot the data, be patient...
all the 3D plots can be rotated real time in the live figure window.

2D surface Directivity Contour Data.png
3D surface Vertical Directivity Data.png
Vertical 3D Directivity data.png
 

Attachments

  • 20200813 Octave PIR SP LW ER Directivity ver3.0.zip
    17.2 KB · Views: 233
  • Horizontal 3D Directivity data.png
    Horizontal 3D Directivity data.png
    309.6 KB · Views: 199
  • 3D surface Horizontal Directivity Data.png
    3D surface Horizontal Directivity Data.png
    241.8 KB · Views: 224
Last edited:
1. When you're posting speaker's EQ filters to try, can you show EQ files according to Equalizer APO docs?
https://sourceforge.net/p/equalizerapo/wiki/Configuration reference/
This will make importing into Equalizer APO and PEACE addon (both Windows apps) much easier.
Example 1:
https://raw.githubusercontent.com/pierreaubert/spinorama/master/datas/eq/Edifier R1280T/iir.txt
@pierre shows this format on his github page.

Example 2:
https://github.com/jaakkopasanen/AutoEq/blob/master/results/oratory1990/harman_over-ear_2018/HIFIMAN HE400i/HIFIMAN HE400i ParametricEQ.txt
This is ParametricEQ for headphones, but the format is the same.

2. Also, can you create a master post with all of your EQ'd speakers?
This will make finding all of your work much faster.
Similar to what @pierre did on github, but post here on ASR (or on github, or both)

Appreciate your work!
 
1. When you're posting speaker's EQ filters to try, can you show EQ files according to Equalizer APO docs?
https://sourceforge.net/p/equalizerapo/wiki/Configuration reference/
This will make importing into Equalizer APO and PEACE addon (both Windows apps) much easier.
Example 1:
https://raw.githubusercontent.com/pierreaubert/spinorama/master/datas/eq/Edifier R1280T/iir.txt
@pierre shows this format on his github page.

Example 2:
https://github.com/jaakkopasanen/AutoEq/blob/master/results/oratory1990/harman_over-ear_2018/HIFIMAN HE400i/HIFIMAN HE400i ParametricEQ.txt
This is ParametricEQ for headphones, but the format is the same.

2. Also, can you create a master post with all of your EQ'd speakers?
This will make finding all of your work much faster.
Similar to what @pierre did on github, but post here on ASR (or on github, or both)

Appreciate your work!

Hi,

- APO config file
I can have a look at automatically generating APO config files.
It seems pretty straight forward, I should be able to write a Matlab routine.
Would you be able to test them? I don't have a MS Window PC.
if so, what speaker would like to try the EQ on?

- Master thread
I don't know how to do that.
Any pointer?
 
Hi,

- APO config file
I can have a look at automatically generating APO config files.
It seems pretty straight forward, I should be able to write a Matlab routine.
Would you be able to test them? I don't have a MS Window PC.
if so, what speaker would like to try the EQ on?

- Master thread
I don't know how to do that.
Any pointer?
Sure, I can test. I have JBL 305P MKII, so you can try that one.

I just meant create another post and link each of your previous posts inside.
Here's all the posts you've done, so you can just copy the relevant links to each speaker's EQ data.
https://www.audiosciencereview.com/forum/index.php?search/member&user_id=16354
Something like this will work fine:
- Edifier R1280T Powered Speaker
- Vanatoo Transparent Zero

Then come back to it, once in a while, and update the post as you add more speakers. :)
 
Hi @Maiky76 ,

Thanks for your knowledge sharing!

Very basic questions:
1) How you measure and get data, but would be cool to hear more details.
2) Could you share any raw dataset of measured speaker? Would like to play with it.
3) Do you know Octave alternative for Python?
 
Last edited:
Hi @Maiky76 ,

Thanks for your knowledge sharing!

Very basic questions:
1) How you measure and get data, but would be cool to hear more details.
2) Could you share any raw dataset of measured speaker? Would like to play with it.
3) Do you know Octave alternative for Python?

1) The purpose of these Octave/Matlab scripts is to process the data measured with the Klippel NFS used by ASR.
You can adapt the script but you'll need a bit a knowledge. As long as the data is human readable there is a way to import it into Octave/Matlab.
There are many analyzers to take measurements. REW (Room EQ Wizard) is probably the most popular at the moment and free.
There are plenty of tutorials on the web including on the REW website and Youtube. You'll need a stand to rotate the speaker and tall mic stand.
You can buy a miniDSP Umik and you'll be set.

2) You can already play with all the speakers that were tested by ASR, each review contains the full data set.

3) GNU Octave is a free and Open 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
Python is also free and open and stands alone so I don't see why you would need an alternative to work with Octave.
You could try to develop a Python version of my scripts though.
 
1) The purpose of these Octave/Matlab scripts is to process the data measured with the Klippel NFS used by ASR.
You can adapt the script but you'll need a bit a knowledge. As long as the data is human readable there is a way to import it into Octave/Matlab.
There are many analyzers to take measurements. REW (Room EQ Wizard) is probably the most popular at the moment and free.
There are plenty of tutorials on the web including on the REW website and Youtube. You'll need a stand to rotate the speaker and tall mic stand.
You can buy a miniDSP Umik and you'll be set.

2) You can already play with all the speakers that were tested by ASR, each review contains the full data set.

3) GNU Octave is a free and Open 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
Python is also free and open and stands alone so I don't see why you would need an alternative to work with Octave.
You could try to develop a Python version of my scripts though.

Thanks @Maiky76 !
Ech, Amir always attach raw data! :facepalm:
Python is my best know language, but probably Octave at this audio case is smarter way to try because it is suited process data as Klippel NFS.
I will check your first post attachments.
Also where I can find formula how Score is calculated?
 
Last edited:
Last edited:
Hi,

- APO config file
I can have a look at automatically generating APO config files.
It seems pretty straight forward, I should be able to write a Matlab routine.
Would you be able to test them? I don't have a MS Window PC.
if so, what speaker would like to try the EQ on?

- Master thread
I don't know how to do that.
Any pointer?

"Master thread" like @pierre suggestion probably means to point to a Github project page that is always up-to-date.

Great work and thank's for sharing. Just wonder if the v3 still has any significant bugs in calculations? I don't need the code now, but I would like to keep it for reference.
 
Hi,

Here is a Matlab - Octave Tool to calculate the correct Spinorama - CEA2034 from the NFS data (or other analyzers for that matter via minor modifications).
As of now (June, 17th 2020), the NFS CEA2034 data does not correctly compute the ER from its own data.
Since the calculation of PIR is using the ER, it is also incorrect.

I have put together a simple tool that loads the relevant NFS data and performs the correct calculations for the ER and corollary the PIR.
It also checks the SP and LW which are correct.

The PIR is critical for EQ design and the calculation of the Olive Predicted Preference Rating metric.

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

Cheers
M
Hi,

New Version including the Scoring from the Harman paper.
Kali IN8 Scored Spinorama Correct data.png
 

Attachments

  • 20211124 Octave Matlab PPR v1.0.zip
    26.1 KB · Views: 458
Last edited:
Hi Maiky,
I am not familiar with the use of Matlab or Octave but I have a good number of Self built speakers with spinorama data. I would love to plug those into your tool to see the scores. I downloaded Octave. Any chance that you might provide a brief tutorial as to how I can plug these into your tool to get the scores?
Thanks,
Jay
 
Back
Top Bottom