#include <Binaural.h>

Public Member Functions | |
| BinauralPanner (unsigned blockSize=HRTF_BLOCK_SIZE) | |
| ~BinauralPanner () | |
| virtual void | nextBuffer (Buffer &outputBuffer, unsigned outBufNum) throw (CException) |
Public Attributes | |
| unsigned | mNumBlocks |
| # blocks per HRTF | |
| unsigned | mNumBlocksToSum |
| # blocks to include in sum per HRTF | |
| unsigned | mFramesPerBlock |
| # frames per block | |
Protected Member Functions | |
| BinauralSourceCache * | cache () |
| Returns an instance of its cache data per sound source. | |
Protected Attributes | |
| FFTWrapper | mInFFT |
| FFT Wrappers for in and out processing. | |
| FFTWrapper | mOutFFT |
| Buffer | mInBuf |
| Buffer | mTmpBuf |
| Buffer | mOutBuf |
| temp buffers for input and FFT wrappers | |
| SampleComplexVector | mHOutL |
| SampleComplexVector | mHOutR |
| buffers for the mixed HRTF & input data pre-IFFT | |
| SampleBuffer | mIFFTOutL |
| SampleBuffer | mIFFTOutR |
| outputs of the IFFT | |
| unsigned | mBlockInd |
| block index | |
BinauralPanner: place sources in 3D using block-wise convolution with an HRTF. The HRIRs (Head Related Impulse Responses) are loaded by the HRTFDatabase. The binaural panner uses these HRTFs and processes the incoming audio by frequency domain convolution in blocks of 512 samples.
| BinauralPanner::BinauralPanner | ( | unsigned | blockSize = HRTF_BLOCK_SIZE |
) |
References csl::Buffer::allocateBuffers(), csl::HRTFDatabase::Database(), csl::HRTFDatabase::hrtfLength(), csl::kIgnore, csl::kSpectra, mFramesPerBlock, mHOutL, mHOutR, mIFFTOutL, mIFFTOutR, mInBuf, mNumBlocks, mNumBlocksToSum, mTmpBuf, csl::Buffer::mType, csl::HRTFDatabase::numBlocks(), SAFE_MALLOC, csl::UnitGenerator::setCopyPolicy(), csl::UnitGenerator::setNumChannels(), SUM_DOWNS, and csl::HRTFDatabase::windowSize().
| void BinauralPanner::nextBuffer | ( | Buffer & | outputBuffer, | |
| unsigned | outBufNum | |||
| ) | throw (CException) [virtual] |
work-horse method reads & transforms input, sums previous data, and takes the IFFT for each of multiple sources
Reimplemented from csl::UnitGenerator.
References cmac, ComplexPtr, csl::HRTFDatabase::Database(), csl::HRTFDatabase::hrtfAt(), csl::HRTFDatabase::hrtfLength(), csl::UnitGenerator::isActive(), testkiss::j, csl::kLogError, LEN_DOWNS, csl::logMsg(), csl::BinauralSourceCache::mHRTF, csl::HRTF::mHrtfL, csl::HRTF::mHrtfR, csl::BinauralSourceCache::mInSpect, csl::BinauralSourceCache::mPrevOutL, csl::BinauralSourceCache::mPrevOutR, csl::SpatialSource::nextBuffer(), csl::SpatialSource::position(), csl::SpatialSource::positionChanged(), and csl::HRTFDatabase::windowSize().
| BinauralSourceCache * BinauralPanner::cache | ( | ) | [protected, virtual] |
| unsigned csl::BinauralPanner::mNumBlocks |
# blocks per HRTF
Referenced by BinauralPanner(), and csl::BinauralSourceCache::BinauralSourceCache().
| unsigned csl::BinauralPanner::mNumBlocksToSum |
| unsigned csl::BinauralPanner::mFramesPerBlock |
# frames per block
Referenced by BinauralPanner(), and csl::BinauralSourceCache::BinauralSourceCache().
FFTWrapper csl::BinauralPanner::mInFFT [protected] |
FFT Wrappers for in and out processing.
FFTWrapper csl::BinauralPanner::mOutFFT [protected] |
Buffer csl::BinauralPanner::mInBuf [protected] |
Referenced by BinauralPanner().
Buffer csl::BinauralPanner::mTmpBuf [protected] |
Referenced by BinauralPanner().
Buffer csl::BinauralPanner::mOutBuf [protected] |
temp buffers for input and FFT wrappers
SampleComplexVector csl::BinauralPanner::mHOutL [protected] |
Referenced by BinauralPanner(), and ~BinauralPanner().
SampleComplexVector csl::BinauralPanner::mHOutR [protected] |
buffers for the mixed HRTF & input data pre-IFFT
Referenced by BinauralPanner(), and ~BinauralPanner().
SampleBuffer csl::BinauralPanner::mIFFTOutL [protected] |
Referenced by BinauralPanner(), and ~BinauralPanner().
SampleBuffer csl::BinauralPanner::mIFFTOutR [protected] |
unsigned csl::BinauralPanner::mBlockInd [protected] |
block index
1.5.8