Skip to main content

An image source-based method used to simulate room transfer functions for arbitrary room shapes.

Project description

Diffraction Enhanced Image Source Method - Arbitrary Room Geometry (DEISM-ARG)

DOI Documentation Status PyPI version

The code in this folder is able to solve the following problem:

A source and a receiver transducer with arbitrary directivity are mounted on one/two speakers; The local scattering and diffraction effects around the transducers result in complex directivity patterns. The directivity patterns can be obtained by analytical expressions, numerical simulations or measurements.

In DEISM-ARG, we can model the room transfer function between transducers mounted on one/two speakers using the image source method while incorporating the local diffraction effects around the transducers. The local diffraction effects are captured using spherical-harmonic directivity coefficients obtained on a sphere around the transducers. In addition to DEISM in shoebox rooms, DEISM-ARG can model more complex room shapes. However, for version 2.0, we now only supports convex shapes. In short, DEISM-ARG has the following features:

  1. Arbitrary directivities of the source and receiver
  2. Angle-dependent reflection coefficients, frequency- and wall-dependent impedance definition.
  3. Convex room shapes

image-20240812131054348

📚 Documentation

📖 Read the full documentation on Read the Docs

Preparation and installing

Build locally

  • In you encounter errors like "unrecognized arguments: deism_envs_exact.yml", please type the following commands manuelly in the command line.
  • Clone or download the repository to your local directory
  • Use the command conda env create -f deism_env.yml to create a Conda environment for the DEISM algorithms. If this does not work, try conda env create -f deism_env_exact.yml as the file deism_envs_exact.yml records the versions of all packages.
  • Activate the created environment by "conda activate DEISM"
  • Running pip install -e . will build the deism package including the c++ extensions locally. You can also modify the sources codes and check out the effects. In case you receiver errors like "ModuleNotFoundError: No module named 'pybind11" even after activated the conda environment, you can use python -m pip install -e . to try install again.
  • Run scripts in the examples folder.

Using pip to install remotely

  • Run pip install deism to install deism.

Additional heads up

  • You would need to an external LaTeX installation to render text properly when running the examples, since we enable plt.rcParams["text.usetex"] = True when plotting the simulated room transfer functions. Please refer to this page for more information Matplotlib usetex Documentation.

Running codes

Single set of parameters

The default parameters are defined in file configSingleParam.yml or configSingleParam_ARG.yml, depending on whether you want to run for shoebox rooms or more complicated room shapes. Take DEISM-ARG (configSingleParam_ARG.yml) as an example, there are two ways of running the codes:

  1. You can directly run deism_arg_singleparam_example.py in an IDE, which utilizes the parameters defined in configSingleParam_arg.yml.
  2. You can run deism_arg_singleparam_example.py from the command line after activating the conda environment. In addition, you can access help information quickly by python deism_arg_singleparam_example.py --help. You can then change the parameters based on the instructions from the help message, e.g., python deism_arg_singleparam_example.py -c 350 -zs 20 will change the parameter sound speed and the wall impedance. The new input value of the parameters then overrides the ones in file configSingleParam_arg.yml. After choosing the needed values, you can run the codes using, e.g., python deism_arg_singleparam_example.py -c 350 -zs 20 --run.
  3. You need to specify additionally the following parameters in the function init_parameters of deism_arg_singleparam_example.py:
    1. The vertices of the room
    2. If rotate the room w.r.t the origin. This can be useful if you want to have some comparisons with the rooms created using pyroomacoustics.
    3. The rotation angles of the room if it needs to be rotated.
  4. You can suppress all output information in the command line by adding flag "--quiet" or by setting the first parameters in the configuration.yml file SilentMode to 1.

Examples

DEISM-ARG

  • An example of running DEISM-ARG is examples/deism_arg_single_example.py
    • You can run this from IDEs or via the command line, as introduced in the previous section
  • An example of comparing different versions of DEISM-ARG is given in examples/deism_args_compare.py. A frequency- and wall-dependent impedance definition can also be applied for a convex room. The room transfer functions are compared among:
    • Original version (most computation-costly)
    • LC version (fastest)
    • Mix version (Trade-offs between Original and LC versions): Early reflections up to some changeable order (default is 2) are calculated using the original version and the higher orders are calculated using the LC version.
  • An example of comparing DEISM-ARG and pyroomacoustics is examples/deism_arg_pra_compare.py, Comparisons are done regarding if the following results are identical or mismatched only by a small deviation:
    • number of images
    • the positions of the images

DEISM for shoebox

We provide two examples for running the original DEISM for shoebox rooms

  • An example of running DEISM-shoebox is examples/deism_singleparam_example.py
    • You can either run this from IDEs or via the cmd
  • An example of comparing different DEISM versions are shown in examples/deisms_lc_mix_test.py. In this script, the following methods are compared
    • DEISM - original
    • DEISM - MIX (original + LC vectorized)
    • DEISM - LC vectorized
    • FEM as groundtruth (only for this specific parameter settings)

Tips

The example code only provides essential functionalities based on DEISM. For more complex scenarios, please contact the authors (zeyu.xu@audiolabs-erlangen.de) for support. In the following, a few important tips might be helpful for you:

  • If you want to simulate the scenario where both the source and receiver are positioned on the same speaker, you need to run DEISM for all reflection path except for the direct path.
  • It is recommended to set the distance at least 1m between the transducers and the walls.

Directivities

Modeling the directivities of the source and receiver in the room acoustics simulation is receiving increasing attention. The directivities of the source or receiver can include both the transducer directional properties and the local diffraction and scatterring effects caused by the enclosure where the transducers are mounted. Modern smart speakers are typical embodiments of such scenarios. Human heads are also a very common case.

Simple directivities

  • Monopole

Arbitrary directivities

Some key information should be provided if you want to include your own directivity data:

  1. Frequencies at which the directivities are simulated or measured. A 1D array.
  2. The spherical sampling directions around the transducer: azimuth from $0$ ( $+x$ direction) to $2 \pi$, inclination angle from $0$ ($+z$ direction) to $\pi$. A 2D array with size (number of directions, 2).
  3. The sampled pressure field at the specified directions and frequencies. A 2D array with size (number of frequencies, number of directions).
  4. The radius of the sampling sphere. A 1D array or float number.

For more information about directivity definition used in DEISM and DEISM-ARG, please refer to the following publication:

Zeyu Xu, Adrian Herzog, Alexander Lodermeyer, Emanuël A. P. Habets, Albert G. Prinn; Acoustic reciprocity in the spherical harmonic domain: A formulation for directional sources and receivers. JASA Express Lett. 1 December 2022; 2 (12): 124801. https://doi.org/10.1121/10.0016542

Contributors

  • M. Sc. Zeyu Xu
  • Songjiang Tan
  • M. Sc. Hasan Nazım Biçer
  • Dr. Albert Prinn
  • Prof. Dr. ir. Emanuël Habets

Academic publications

If you use this package in your research, please cite our paper:

Zeyu Xu, Adrian Herzog, Alexander Lodermeyer, Emanuël A. P. Habets, Albert G. Prinn; Simulating room transfer functions between transducers mounted on audio devices using a modified image source method. J. Acoust. Soc. Am. 1 January 2024; 155 (1): 343–357. https://doi.org/10.1121/10.0023935

Z. Xu, E.A.P. Habets and A.G. Prinn; Simulating sound fields in rooms with arbitrary geometries using the diffraction-enhanced image source method, Proc. of International Workshop on Acoustic Signal Enhancement (IWAENC), 2024.

Description of the codes and functions

configSingleParam_ARG.yml

In this file you define the default parameters for DEISM-ARG to run. Note that this file is different from the configSingleParam.yml on these parameters:

  • The dimensions are defined separately in the example script.
  • You also need to specify if you want to rotate the room, and the rotation angles as well.

configSingleParam.yml

In this file you define the default parameters for DEISM-shoebox to run.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deism-2.2.1.1.tar.gz (2.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

deism-2.2.1.1-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

deism-2.2.1.1-cp311-cp311-macosx_11_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

deism-2.2.1.1-cp311-cp311-macosx_10_9_universal2.whl (4.0 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

deism-2.2.1.1-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

deism-2.2.1.1-cp310-cp310-macosx_13_0_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

deism-2.2.1.1-cp310-cp310-macosx_11_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

deism-2.2.1.1-cp39-cp39-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9Windows x86-64

deism-2.2.1.1-cp39-cp39-macosx_13_0_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.9macOS 13.0+ x86-64

File details

Details for the file deism-2.2.1.1.tar.gz.

File metadata

  • Download URL: deism-2.2.1.1.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for deism-2.2.1.1.tar.gz
Algorithm Hash digest
SHA256 da76e6ce315ca006904b479ae1dc0048f391b9e6f8984ee7ddbe5e52389e20fc
MD5 cdbf1ffebed209d9f7b8f5eaf44ef080
BLAKE2b-256 c9e190cf400f60665a8fa73728ab54d5cd0d682d9d8b710ce12d0f955a93d6c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for deism-2.2.1.1.tar.gz:

Publisher: python-publish.yml on audiolabs/DEISM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deism-2.2.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: deism-2.2.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for deism-2.2.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 75d7a75f549372e145b511ea7e50db516821daaab9520f22a746db39be5d1b42
MD5 1c8e43fa0e904f0a519ae88993a27def
BLAKE2b-256 262f019578cae8df87369a97f2b70fb6cc31194804222e79c49c723cc8ba9f2c

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for deism-2.2.1.1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3abe6ec6795be24375cf4c7f1fa852d2dbf4476d9764c1ffca1c71e5c99fffab
MD5 deea870542a9eea8df0335203815a31c
BLAKE2b-256 a179368424218bdea61620a78bae7b44763248c4c2b089d37479c1ddf97cb10d

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for deism-2.2.1.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 94f79d0a0474ea22c4751dfb955de301ec11bf046ea19fc4d1389b92b70f730c
MD5 96bbe1b001fe2847df25ef0614c05281
BLAKE2b-256 b211c037a01a096e820f0456bf9e2bb7a845e0c13fd18f1c7c295a1a8fd94e66

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: deism-2.2.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for deism-2.2.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cfe5b214737393e60dfc88ec6c8a5e973c6a38dc61d6bc167faa95cb7478438f
MD5 a6b2321032d05af79d14e310c3aa1ca3
BLAKE2b-256 57b8bb3614e91dbead4d4e2c9caec3ed9b2bb0036769c64bcfc4fae74074d35f

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for deism-2.2.1.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f4a80aca3e74ef3140abf54ec0822d230e8c9275e0e7700e5fe87d3d80c08568
MD5 751f7a871149f95d48db5dea5bace1e8
BLAKE2b-256 49715a0108e05a9c0a341378e1390370f7c743ed107a39a6092112087e51b20a

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for deism-2.2.1.1-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 e2c14cefe70a93e6d12df52a0a17ccedce1c93dafa40e37c56ce9cd17ecdf661
MD5 cf23e9d6cae9d5eba8d1f517b97ec1e2
BLAKE2b-256 e59998583fe510ab9d152fe6ca03a73e66a339193a9ff6504d80617cde237657

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: deism-2.2.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for deism-2.2.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a2e341a171a72a1dcb7e585a712c4b7fcd817a8461097c922f73e13f123dcf36
MD5 69a79c9a21083ecdbbf6d1b3c2c4d874
BLAKE2b-256 99b75d8d6f1a3a6a5a4faf0fd3cc89c09c2e4b33b7c95fc2ef54bae4571b2d09

See more details on using hashes here.

File details

Details for the file deism-2.2.1.1-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for deism-2.2.1.1-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4cb862e57ec12c607715c7200de82bc5dd60d5d99900b90e225b6c49b37147ef
MD5 b647c8955e1a6f008aabff8c15c95233
BLAKE2b-256 92d2a6b9bbdcdecdee67265fc074798753a407f8942ea7afd6f3a5e674e3571f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page