---------------------
Improved Simulator with Ray Tracing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Ray Tracing in the libroom module. The function compute_rir() of the Room object in python
can now be executed using a pure ray tracing approach or a hybrid (ISM + RT) approach.
That's why this function has now several default arguments to run ray tracing (number
of rays, scattering coefficient, energy and time thresholds, microphone's radius).
- Bandpass filterbank construction in ``pyroomacoustics.acoustics.bandpass_filterbank``
- Acoustic properties of different materials in ``pyroomacoustics.materials``
- Scattering from the wall is handled via ray tracing method, scattering coefficients are provided
in ``pyroomacoustics.materials.Material`` objects
- Function ``inverse_sabine`` allows to compute the ``absorption`` and ``max_order`` to use with
the image source model to achieve a given reverberation time
- The method ``rt60_theory`` in ``pyroomacoustics.room.Room`` allows to compute the theoretical
RT60 of the room according to Eyring or Sabine formula
- The method ``measure_rt60`` in ``pyroomacoustics.room.Room`` allows to measure the RT60 of
the simulated RIRs
Changes in the Room Class
~~~~~~~~~~~~~~~~~~~~~~~~~
- Deep refactor of Room class. The constructor arguments have changed
- No more ``sigma2_awgn``, noise is now handled in ``pyroomacoustics.Room.simulate`` method
- The way absorption is handled has changed. The scalar variables
``absorption`` are deprecated in favor of ``pyroomacoustics.materials.Material``
- Complete refactor of libroom, the compiled extension module responsible for the
room simulation, into C++. The bindings to python are now done using pybind11.
- Removes the pure Python room simulator as it was really slow
- ``pyroomacoustics.transform.analysis``, ``pyroomacoustics.transform.synthesis``,
``pyroomacoustics.transform.compute_synthesis_window``, have been deprecated in favor of
``pyroomacoustics.transform.stft.analysis``, ``pyroomacoustics.transform.stft.synthesis``,
``pyroomacoustics.transform.stft.compute_synthesis_window``.
- ``pyroomacoustics.Room`` has a new method ``add`` that can be used to add
either a ``SoundSource``, or a ``MicrophoneArray`` object. Subsequent calls
to the method will always add source/microphones. There exists also methods
``add_source`` and ``add_microphone`` that can be used to add
source/microphone via coordinates. The method ``add_microphone_array`` can be
used to add a ``MicrophoneArray`` object, or a 2D array containing the
locations of several microphones in its columns. While the
``add_microphone_array`` method used to replace the existing array by the
argument, the new behavior is to add in addition to other microphones already
present.
Bugfix
~~~~~~
- From Issue 150, increase max iterations to check if point is inside room
- Issues 117 163, adds project file `pyproject.toml` so that pip can know which dependencies are necessary for setup
- Fixed some bugs in the documentation
- Fixed normalization part in FastMNMF
Added
~~~~~~~
- Added `room_isinside_max_iter` in `parameters.py`
- Default set to 20 rather than 5 as it was in `pyroomacoustics.room.Room.isinside`
- Added Binder link in the README for online interactive demo
Changed
~~~~~~~
- Changed while loop to iterate up to `room_isinside_max_iter` in `pyroomacoustics.room.Room.isinside`
- Changed initialization of FastMNMF to accelerate convergence
- Fixed bug in doa/tops (float -> integer division)
- Added vectorised functions in MUSIC
- Use the vectorised functions in _process of MUSIC