GithubHelp home page GithubHelp logo

zmxu / binauralfir Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ircam-rnd/binauralfir

0.0 2.0 0.0 86.94 MB

Binaural module for the Web Audio API

Home Page: https://ircam-rnd.github.io/binauralFIR/

License: BSD 3-Clause "New" or "Revised" License

JavaScript 99.14% HTML 0.86%

binauralfir's Introduction

BinauralFIR node

Processing audio node which spatializes an incoming audio stream in three-dimensional space for binaural audio.

The binauralFIR node provides binaural listening to the user with three simple steps. The novelty of this library is that it permits to use your own HRTF dataset. This library can be used as a regular node - AudioNode - inside the Web Audio API. You can connect the native nodes to the binauralFIR node by using the connect method to binauralFIR.input:

nativeNode.connect(binauralFIR.input);
binauralFIR.connect(audioContext.destination);

We provide a HRTF dataset example provided by IRCAM in the /example/snd/complete_hrtfs.js file.

Example

A working demo for this module can be found here and in the examples folder.

HRTF dataset format

As this library allow you to use your own HRTF Dataset, if you want to use your dataset in the library you have to follow the following format:

Data Description
azimuth Azimuth in degrees: from 0 to -180 for source on your left, and from 0 to 180 for source on your right
distance Distance in meters
elevation Elevation in degrees: from 0 to 90 for source above your head, 0 for source in front of your head, and from 0 to -90 for source below your head)
buffer AudioBuffer representing the decoded audio data. An audio file can be decoded by using the [buffer-loader library] (https://github.com/Ircam-RnD/buffer-loader)

This data must be provided inside an Array of Objects, like this example:

[
  {
    'azimuth': 0,
    'distance': 1,
    'elevation': 0,
    'buffer': AudioBuffer
  },
  {
    'azimuth': 5,
    'distance': 1,
    'elevation': 0,
    'buffer': AudioBuffer

  },
  {
    'azimuth': 5,
    'distance': 1,
    'elevation': 5,
    'buffer': AudioBuffer
  }
]

API

The binauralFIR object exposes the following API:

Method Description
binauralFIR.connect() Connects the binauralFIRNode to the Web Audio graph
binauralFIR.disconnect() Disconnect the binauralFIRNode from the Web Audio graph
binauralFIR.HRTFDataset Set HRTF Dataset to be used with the virtual source.
binauralFIR.setPosition(azimuth, elevation, distance) Set position of the virtual source.
binauralFIR.getPosition() Get the current position of the virtual source.
binauralFIR.setCrossfadeDuration(duration) Set the duration of crossfading in miliseconds.
binauralFIR.getCrossfadeDuration() Get the duration of crossfading in miliseconds.

License

This module is released under the BSD-3-Clause license.

Acknowledgments

This code has been developed from both Acoustic And Cognitive Spaces and Analysis of Musical Practices IRCAM research teams. It is also part of the WAVE project (http://wave.ircam.fr), funded by ANR (The French National Research Agency), ContInt program, 2012-2015.

binauralfir's People

Contributors

narnau avatar nicola avatar ouhouhsami avatar

Watchers

 avatar  avatar

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.