Giter Site home page Giter Site logo

rir-generator's Introduction

DOI

RIR-Generator

The image method, proposed by Allen and Berkley in 1979 [1], is probably one of the most frequently used methods in the acoustic signal processing community to create synthetic room impulse responses. A mex-function, which can be used in MATLAB, was developed to generate multi-channel room impulse responses using the image method. This function enables the user to control the reflection order, room dimension, and microphone directivity.

This repository includes a tutorial, MATLAB examples, and the source code of the mex-function.

More information can be found here.

Compile mex-function in MATLAB

Run

mex -setup C++

mex rir_generator.cpp rir_generator_core.cpp

References

  1. J.B. Allen and D.A. Berkley, "Image method for efficiently simulating small-room acoustics," Journal Acoustic Society of America, 65(4), April 1979, p 943.

rir-generator's People

Contributors

ehabets avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rir-generator's Issues

Support placement of solid objects inside room

Hello RIR-Generator!

Are there plans to support placement of solid objects inside the rooms? Starting with a solid box (same material as wall) of variable size would allow for approximation of "more realistic" rooms with objects in them.

Thank you!

Published equations for impulse LPF differer from implementation

If I'm following implementations for [0, 1] correctly I believe there are discrepancies between the source code and published equations for the Hanning-windowed ideal low pass filter function.

In rir_generator.cpp:

https://github.com/ehabets/RIR-Generator/blob/master/rir_generator.cpp#L427

LPI[n] =  0.5 * (1 - cos(2*M_PI*((n+1-(dist-fdist))/Tw))) * Fc * sinc(M_PI*Fc*(n+1-(dist-fdist)-(Tw/2)));

However, if I'm following [0, 1] correctly I would expect to be more like the following form:

const double t = (n - 0.5 * Tw) - (dist - fdist));
LPI[n] = 0.5 * (1.0 - cos(2.0*M_PI*t/Tw)) * sinc(2.0 * M_PI*Fc*t)

The notable differences are missing 2.0 * M_PI in sinc, inconsistent t between sinc and cos function, and extra Fc multiplication outside of sinc/cos (although I don't think this matters because Fc = 1.0).

Is this intended to be different than the published equations?

[0] Eq 24 https://github.com/ehabets/RIR-Generator/blob/master/rir_generator.pdf
[1] Eq 1 https://www.ncbi.nlm.nih.gov/pubmed/3782618

error using mex rir_generator.cpp

Hi
I have been using your function before and it was fine, now I have downloaded the latest version, after importing the file using mex like this:
mex rir_generator.cpp
I will receive this error:
Building with 'MinGW64 Compiler (C++)'.
Error using mex
C:\Users\AppData\Local\Temp\mex_723928368179636_15160\rir_generator.obj:rir_generator.cpp:(.text+0x3e3):
undefined reference to `computeRIR'
collect2.exe: error: ld returned 1 exit status

could you please give me some hint about what the problem is?
Thanks
All the best
Niloo

python port

Is there an interest for a python port for the RIR-Generator?
I am interested in installing it directly from PyPi.
But it would be nice, when the repository, that pushes to PyPi is the original repo.

When there is a chance that a Pull Request would be accepted, I would prepare one.

Support for putting the microphone outside the room?

Hi there RIR-Generator!

I was playing around with the RIR-Generator and I noticed that we are allowed to place the receiver coordinates to be outside the room. Are the resulting signals that are being picked up by the receiver accurate despite not being inside the room? If so, is there support for receiving a signal from outside the room parameters? And if not, is there a way to repurpose the code to allow me to pick up accurate audio signals from outside the room?

Thank you!

Aliasing Artifacts Issues

Hello to whom this may concern,
I was trying to apply low pass filters on RIR signals made using this code when I noticed there were aliasing artifacts when I was running the examples from this repo. Is there a reason why for this and is there a way to resolve this?

I attached some .wav files that I made by running some of the example files and using the audio write() function in Matlab in case you wanted to check it as well.
Thank you!
Example_Wav_files.zip

Installation

I think the command
mex -setup **-**C++
should be
mex -setup C++.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.