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.4.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.4-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

deism-2.2.1.4-cp311-cp311-manylinux_2_39_x86_64.whl (17.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

deism-2.2.1.4-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.4-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.4-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

deism-2.2.1.4-cp310-cp310-manylinux_2_39_x86_64.whl (17.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

deism-2.2.1.4-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.4-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.4-cp39-cp39-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9Windows x86-64

deism-2.2.1.4-cp39-cp39-manylinux_2_39_x86_64.whl (17.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

deism-2.2.1.4-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.4.tar.gz.

File metadata

  • Download URL: deism-2.2.1.4.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for deism-2.2.1.4.tar.gz
Algorithm Hash digest
SHA256 4171893fa0cd24a495e8c6cf216c2679f5146093526219c36859e214dab56669
MD5 043dfa2647388bb1912c3b35508f97d3
BLAKE2b-256 f6c85ee35c376fe2ab92e0bf0e8e070b2e3e85caaaed2ea3e4d8eb9a629df4c4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: deism-2.2.1.4-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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 298017114a130d5cb2edde3d017670f2bac9c188ec8c85a2355c9667a83520c7
MD5 3df2a5654e0ecaebee172f55629596e9
BLAKE2b-256 f9b21c2a4774422b402a419ad856d63d977719e053fb6322ec1bda13ac3e556a

See more details on using hashes here.

File details

Details for the file deism-2.2.1.4-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for deism-2.2.1.4-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6539b91ed624060401c9a7de598a864ff2d1ec972c53a2c03a7f8efef662b97f
MD5 17cd044ff0b7dcc68538210998bced12
BLAKE2b-256 20c362686bed44b1019d1e92e25750e28b198baac2186e5c61fc1ad4a32e35b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deism-2.2.1.4-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 82067763ee3c92721c00a41192511bedc261938b6f599b03ed367fabc6526f42
MD5 405ef50b6ee079f2ea996d1912c756ec
BLAKE2b-256 b537c2edfaba5ee23ad33ccadf2647bf8cd3d2ccf1d4e0a0294c74a5ed610f50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deism-2.2.1.4-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 9510c1a9adc2e7c13f46f092279d94cbf9933222280463f188bf1328b1d5aa36
MD5 d0e05005b76638bc3ae7b6599e68a677
BLAKE2b-256 9cead20a17f3c7f80c254970409b6df82a7ad85b9b2f2b0eceb109e1fe3df1bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: deism-2.2.1.4-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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c1e24ebc98ef8c36b5345bb3253b0ac210aa0b5375a529121e4bfd813b89e860
MD5 bba1470575e5ae4c238104a416045a1c
BLAKE2b-256 ab011b5accaf19c18fa2bfbf594e30a5e55cfe79b87cbf5a741db52e4733de87

See more details on using hashes here.

File details

Details for the file deism-2.2.1.4-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for deism-2.2.1.4-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 860a0dbdeaf99843e2a505030c536117a000c6393281228d2fd50ee237bcec7a
MD5 0824ed4f53e060689bee87e49a073aef
BLAKE2b-256 4ca66169fa9e80413fe1326d76d3e69dc87f69844735c6395e0b922f9fc1efea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deism-2.2.1.4-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 1907ef26718d879a5145100443be77b4aceec6097692ff5ae48a341df60eac7e
MD5 3162ef1f3bcd8b813cd6152d68eb466e
BLAKE2b-256 50d49811280e25f67d1e9a32bf54cdd19a271c5ce30f6f74b6423cfe4c3f3756

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deism-2.2.1.4-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 af017bfc1cb40182447d0600dde546231b75e13e9b3d7312e53199b06d3bf025
MD5 1e7e869e43fe235f5000414330d899b4
BLAKE2b-256 be0694dc42fc27596d568f989f2df0af75cdf9646fd0969446ecca3b8f309d81

See more details on using hashes here.

File details

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

File metadata

  • Download URL: deism-2.2.1.4-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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a9a821297b5c058c355f62da555e88e31236bfbb5f9e96dea2379d30598b86dd
MD5 3fd4802abd0b87c6da397d37617271b6
BLAKE2b-256 2192164eb065e3bc55bbe22573a5b2a5daee8fefcec082e7a6839c9831f75aca

See more details on using hashes here.

File details

Details for the file deism-2.2.1.4-cp39-cp39-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for deism-2.2.1.4-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 12c03b20d0a9ba926f62c2edcb1d603de66a08ce9155723818b50e2e31077d81
MD5 fad2123cf2f15aa431048e3f889db743
BLAKE2b-256 d061a745c6d64584b9a12798abb028f90a869c6cb159ec38945520c6551cd11d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deism-2.2.1.4-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e971aeed2ccc1d83637280bd7ba758f652a69782dfad5498b24fdf986aeb3b3b
MD5 a580cd37793153ef4ac52aaaf4628089
BLAKE2b-256 2852f7e37aec67dfe71f0793c0c593b7c155df630ec263ee709a7c1fbf9e3cc3

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