/spinorama

A library to display and compare spinorama (speakers measurements) graphs.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Spinorama : a library to display speaker frequency response and similar graphs

image DeepSource GPLv3 license Maintenance Website pierreaubert.github.io/spinorama

This library provides an easy way to view, compare or analyse speakers data. This can help you take informed decision when buying a speaker instead of relying on commercial information or internet buzz.

Jump to the gallery of all (300+) speakers measurements.

What is a spinorama set of graphs?

It is a way to understand quickly a speaker properties, how it will sound.

Here is an example:

image

  • On Axis: this the frequency response. You expect it to be as flat as possible after 100Hz.
  • Listening Window: an average of various measurements around on axis. Expected to be close to the previous one.
  • Sound power DI: expected to be a smooth, slowy growing line.

The speaker above is very good.

Please read:

Or if you prefer videos, there is a nice set from ErinsAudioCorner:

  1. What Is Frequency Response? || Understanding the Measurements Part 1
  2. Off-Axis vs On-Axis Response || Understanding the Measurements Part 2
  3. What the heck is SPINORAMA?! || Understanding the Measurements Part 3
  4. Predicting Loudspeaker Performance In YOUR Room || Understanding the Measurements Part 4
  5. Loudspeaker Compression || Understanding the Measurements Part 5

Features

Import capabilities

The library support four different formats of data:

  1. Klippel NFS format: a set of CSV files.
  2. Princeton 3D3A files: they are IR data in hdf5 format
  3. Scanned data from a picture with WebPlotDigitizer (takes 10 minutes per picture)
  4. Export in text form from REW

Computations

  1. Generate CEA2034 data from horizontal and vertical SPL data.
  2. Calculate contour plot, radar plot, isolines and isobands.
  3. Estimate basic data for a speaker (-3dB output, flatness over a range)
  4. Compute various parameters defined in a paper from Olive (ref. below).
  5. It can compute the effect of an EQ (IIR) on the spinorama.
  6. It can generate an EQ to optimise the speaker (and get a better preference score) based on anechoic data. Note: this is not yet a room correction software.

Website generation

  1. Webpages digestable on mobile but also on very large 4k screens.
  2. Graphs are interactive.
  3. Comparison between speakers is possible.
  4. Some statistics.
  5. All EQs generated are easily accessible.

Other ways to look at the graphs in a more interactive way.

If you want to generate the graphs yourself or play with the data you need to install the software. We have a dedicated section.

Linux or Mac user

First install a few packages:

apt install imagemagick npm

On a Mac you can replace all apt calls by brew.

Using python3, ipython and Jupyter-Lab

pip3 install -r requirements.txt

pip3 may also be pip depending on your system.

export PYTHONPATH=src:src/website
jupiter-lab &

Your browser will open, go to experiments directitory and click on spinorama.ipynb and play around.

Linux or Mac developer

You are very welcome to submit pull requests. Note that the license is GPLv3.

Start with launching that should install a lot of software:

./setup.sh

If it doesn't work out of the box which is likely, please go step by step:

pip3 install -r requirements.txt
pip3 install -r requirements-tests.txt

For linting the python, html and javascript code:

npm install pyright html-validator-cli standard

You may have to update your npm version above 12.0:

nvm install lts/fermium

Please add tests and

export PYTHONPATH=src
python3 -m pytest --cov=src .

Before committing, please check that the various checks are fine:

  1. ./check_html.sh : check that HTML generated files are conforming.
  2. ./check_meta.py : check that the metadata file looks sane.
  3. flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude spinorama-venv should report 0
  4. black . will take care of formatting all the python files.

and also (but WIP):

  1. ./check_404.sh : check we do not have missing links.
  2. ./node_modules/.bin/pyright : should not report new type error.
  3. Check that notebook are cleaned up before committing.

Tests 1. to 4. should be in the pre-submit.

How to add a speaker to the database.

We have a dedicated tutorial.

Source of data and citations

ASR is a fantastic source of speakers data thanks to amirm@. They also have a lot of data about DACs that you may found useful. There is little correlation between price and quality in the audio world and this data gives some objective criteria to decide what to buy. You can support ASR.

Erin is a motivated person reviewing speakers. He is doing an outstanging jobs. He also has a Youtube channel. You can also support him.

3D3A is a research organisation at Princeton.

  • They provide a database of speaker measurements (manual)
  • Some scientific papers I have used:
    • Metrics for Constant Directivity (abstract, paper, poster)
      • Authors: Sridhar, R., Tylka, J. G., Choueiri, E. Y.
      • Publication: 140th Convention of the Audio Engineering Society (AES 140)
      • Date: May 26, 2016
    • A Database of Loudspeaker Polar Radiation Measurements (abstract, )
    • On the Calculation of Full and Partial Directivity Indices (abstract)
      • Authors: Tylka, J. G., Choueiri, E. Y.
      • Publication: 3D3A Lab Technical Report #1
      • Date: November 16, 2014

Books and research papers

  • Sound Reproduction: The Acoustics and Psychoacoustics of Loudspeakers and Rooms By Floyd E. Toole
  • Standard Method of Measurement for In-Home Loudspeakers is available for free at CTA
  • A Multiple Regression Model for Predicting Loudspeaker Preference Using Objective Measurements: Part II - Development of the Model by Sean E. Olive, AES Fellow. Convention paper 6190 from the AES.
  • Fast Template Matching. J.P.Lewis pdf
  • Farina, A. “Simultaneous Measurement of Impulse Response and Distortion with a Swept-Sine Technique,” Presented at the AES 108th Convention, Feb. 2000.
  • Hatziantoniou, P. D. and Mourjopoulos, J. N. “Generalized Fractional-Octave Smoothing of Audio and Acoustic Responses,” J. Audio Eng. Soc., 48(4):259–280, 2000.

Speakers manufacturers.

  • If you are a manufacturer of speakers, it would be great if you could provide spinorama datas.
  • Manufactures with good datas usually in speaker's manual:
    • JBL
    • Revel
    • Genelec
    • Adam
    • Eve Audio
    • Buscard Audio
    • KEF
    • JTR