Skip to content

tluebeck/sound_field_analysis-py

 
 

Repository files navigation

Sound Field Analysis toolbox for Python

https://ci.appveyor.com/api/projects/status/u0koxo5vcitmbghc?svg=true

The sound_field_analysis toolbox (short: sfa) is a Python port of the Sound Field Analysis Toolbox (SOFiA) toolbox, originally by Benjamin Bernschütz[1]. The main goal of the sfa toolbox is to analyze, visualize and process sound field data recorded by spherical microphone arrays. Furthermore, various types of test-data may be generated to evaluate the implemented functions.

The package is pure Python and PEP8 compliant (except line-length). Please expect things to be slow for now and for the API to break, as the development is still very much ongoing.

Requirements

We use Python 3.7 for development. Chances are that earlier version will work too but this is currently untested.

The following external libraries are required:

Installation

For performance and convenience reasons we highly recommend to use Conda (miniconda for simplicity) to manage your Python installation. Once installed, you can use the following steps to create a new environment with the sfa toolbox.

  1. Create a new environment: conda create --name sfa python numpy scipy plotly

  2. Activate the environment: source activate sfa

  3. Install sfa from either source:

    By cloning (or downloading) the repository [recommended]:

    git clone https://github.com/AppliedAcousticsChalmers/sound_field_analysis-py.git

    cd sound_field_analysis-py/

    pip install -e .

    From conda-forge channel [not recommended - code currently outdated]:

    conda install -c conda-forge sound_field_analysis

    From PyPI [Not recommended - code currently outdated]:

    pip install sound_field_analysis

Documentation

Please find the full documentation over at https://appliedacousticschalmers.github.io/sound_field_analysis-py/!

Examples

The following examples are available as Jupyter notebooks, either statically on GitHub or interactively on nbviewer. You can of course also simply download the examples and run them locally!

Exp1: Ideal plane wave

Ideal unity plane wave simulation and 3D plot.

View interactively on nbviewer

AE1_img

Exp2: Measured plane wave

A measured plane wave from AZ=180°, EL=90° in the anechoic chamber using a cardioid mic.

View interactively on nbviewer

AE3_img

Exp3: Import data in SOFA format

The provided example loading a SOFA file is outdated. We recommend using the pysofaconventions package. See repository for examples and install instructions.

Exp4: Binaural rendering

Render a spherical microphone array measurement for binaural reproduction.

View interactively on nbviewer

Version history

2019-07-11 V0.8
  • Implement Spherical Harmonics coefficients tapering
  • Adaption of associated Spherical Head Filter
2019-06-17 V0.7
  • Implement Bandwidth Extension for Microphone Arrays (BEMA)
  • Edit read_miro_struct, named tuple ArraySignal and miro_to_struct.m to load center measurements
2019-06-11 V0.6
  • Port of Radial Filter Improvement from SOFiA
2019-05-23 V0.5
  • Implement Spherical Head Filter
  • Implement Spherical Fourier Transform using pseudo-inverse
  • Extract real time capable Spatial Fourier Transform
  • Outsource reversed m index function (Exp. 4)

References

The sound_field_analysis toolbox is based on the Matlab/C++ Sound Field Analysis Toolbox (SOFiA) toolbox by Benjamin Bernschütz. For more information you may refer to the original publication:

[1] Bernschütz, B., Pörschmann, C., Spors, S., and Weinzierl, S. (2011). SOFiA Sound Field Analysis Toolbox. Proceedings of the ICSA International Conference on Spatial Audio

The Lebedev grid generation was adapted from an implementation by Richard P. Muller.

About

Analyze, visualize and process sound field data recorded by spherical microphone arrays.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%