Spat Convert

Spatialization Converter is a script for converting loudspeaker and sound source configuration data between various sound spatialization software system formats.

Usage

Basic usage, assuming the directory containing the executable
SpatializationConverter is your current working directory:

./SpatializationConverter <input file path> <output file path> <output format>.

It is also possible to simply execute:

./SpatializationConverter.

In the latter case, the user is asked to input the required parameters interactively. The format of the input file is detected automatically. If the format is supported, the loudspeaker configuration is read and converted into an internal object representation. From this representation, it is transformed to the desired target file format.

Supported input file formats:

  • LISP (List with nested lists containing (x,y,z) tuples)
  • IOSONSO XML
  • SpatDif XML
  • Zirkonium XML
  • CSV

Supported output file formats and corresponding output format identifiers:

  • lisp: LISP (List with nested lists containing (x,y,z) tuples)
  • iosono: IOSONSO XML
  • spatdif: SpatDif XML
  • zirkonium: Zirkonium XML
  • csv: CSV

Installation

  • Find the script executable in the ComputerStudio Team Dropbox or create an executable by executing the script BuildExecutable.sh in the root directory of the project.
  • Copy the executable file (dist/)SpatializationConverter to a folder of your choice.
  • Run the executable from a terminal as described above.

Dependencies

Note: you only need to care about dependencies if you intend to build an executable yourself. The script depends on the module pyparsing (required to parse LISP code). It can be installed using the command pip3 install pyparsing.

Conversion example

SPATGRIS format:

<SpeakerSetup Name="GRISpeaker Cube8 Octophony.xml" Dimension="3" SpatMode="1"> 
  <Ring>
    <Speaker PositionX="0.9239000082015991" PositionY="-0.3826999664306641"
           PositionZ="0.0" Azimuth="337.5017700195312" Zenith="0.0" Radius="1.0"
           LayoutIndex="1" OutputPatch="1" Gain="0.0" HighPassCutoff="0.0"
           DirectOut="0"/>
    <Speaker PositionX="0.9239000082015991" PositionY="0.3826999664306641"
           PositionZ="0.0" Azimuth="22.49823379516602" Zenith="0.0" Radius="1.0"
           LayoutIndex="2" OutputPatch="2" Gain="0.0" HighPassCutoff="0.0"
           DirectOut="0"/>''
...

becomes LISP format:

( (0.9239000082015991 -0.3826999664306641 0.0)
  (0.9239000082015991 0.3826999664306641 0.0) )