CSL
6.0
|
HRTFDatabase: has a vector of HRTFs and can access them by position – hrtfAt(CPoint) – or by index – hrtfAt(unsigned). Implemented as a Singleton because it's large (typ 188 HRTFs, 25 MB). Create it with a folder/resource name, it reads "files.txt" for a list of HRIR files to load. This has a number of file/folder/DB IO methods for load/store of bulk HRTF data sets in IRCAM format and CSL's pre-processed HRTF.dat files. More...
#include <BinauralDB.h>
Public Member Functions | |
~HRTFDatabase () | |
unsigned | numHRTFs () |
Total number of HRTFs loaded into the database. More... | |
unsigned | windowSize () |
The size of the analysis window (in samples). More... | |
unsigned | hrtfLength () |
The length (in samples) of the Transfer Function buffer. More... | |
unsigned | hrirLength () |
The length (in samples) of the impulse responses loaded. More... | |
unsigned | numBlocks () |
The length (in windows) of the impulse responses loaded. More... | |
unsigned | hrtfAt (CPoint srcPos) |
answer the index of the HRTF nearest the given point More... | |
HRTF * | hrtfAt (unsigned index) |
answer an HRTF* by index More... | |
void | dump (bool verbose=false) |
Print all the HRTFs in the database. More... | |
unsigned | size () |
returns the size on bytes of the receiver's storage More... | |
void | storeToDB (const char *filename, const char *same) throw (CException) |
Static Public Member Functions | |
static HRTFDatabase * | Database () |
accessor for the singleton instance (lazy init) More... | |
static void | Destroy () |
free the instance More... | |
static void | Reload (char *folder) |
load the singleton from the given data folder More... | |
static void | convertDB (const char *listname) throw (CException) |
bulk-convert DBs More... | |
Protected Member Functions | |
HRTFDatabase (const char *folder) | |
constructor that loads from a folder (protected) load a set of HRTFs from a folder or a file list file More... | |
void | loadFromFolder (const char *folder) throw (CException) |
void | loadFromFile (const char *filename) throw (CException) |
void | loadFromDB (const char *dbName) throw (CException) |
Protected Attributes | |
HRTFVector | mHRTFVector |
vector of the HRTFs that constitute the database More... | |
unsigned | mWindowSize |
FFT sizes (1024) More... | |
unsigned | mHRTFLength |
513 More... | |
unsigned | mHRIRLength |
The length of the Head Related Impulse Response (8192) More... | |
Static Protected Attributes | |
static HRTFDatabase * | mDatabase = 0 |
The protected single instance of the HRTF Database. More... | |
HRTFDatabase: has a vector of HRTFs and can access them by position – hrtfAt(CPoint) – or by index – hrtfAt(unsigned). Implemented as a Singleton because it's large (typ 188 HRTFs, 25 MB). Create it with a folder/resource name, it reads "files.txt" for a list of HRIR files to load. This has a number of file/folder/DB IO methods for load/store of bulk HRTF data sets in IRCAM format and CSL's pre-processed HRTF.dat files.
Definition at line 128 of file BinauralDB.h.
|
inline |
Definition at line 130 of file BinauralDB.h.
|
protected |
constructor that loads from a folder (protected) load a set of HRTFs from a folder or a file list file
Definition at line 194 of file BinauralDB.cpp.
References CSL_NAME_LEN, HRIR_SIZE, HRTF_BLOCK_SIZE, csl::kLogError, csl::logMsg(), and csl::CException::mMessage.
|
static |
accessor for the singleton instance (lazy init)
Definition at line 150 of file BinauralDB.cpp.
References csl::CGestalt::dataFolder(), and DEFAULT_HRTF_FOLDER.
Referenced by csl::BinauralPanner::BinauralPanner(), csl::BinauralSourceCache::BinauralSourceCache(), convertDB(), and csl::BinauralPanner::nextBuffer().
|
static |
free the instance
Definition at line 161 of file BinauralDB.cpp.
|
static |
load the singleton from the given data folder
Definition at line 182 of file BinauralDB.cpp.
Referenced by convertDB().
|
static |
bulk-convert DBs
Definition at line 538 of file BinauralDB.cpp.
References CSL_NAME_LEN, Database(), csl::CGestalt::dataFolder(), len, csl::logMsg(), Reload(), size, and storeToDB().
unsigned HRTFDatabase::numHRTFs | ( | ) |
Total number of HRTFs loaded into the database.
Definition at line 457 of file BinauralDB.cpp.
unsigned HRTFDatabase::windowSize | ( | ) |
The size of the analysis window (in samples).
Definition at line 463 of file BinauralDB.cpp.
Referenced by csl::BinauralPanner::BinauralPanner(), and csl::BinauralPanner::nextBuffer().
unsigned HRTFDatabase::hrtfLength | ( | ) |
The length (in samples) of the Transfer Function buffer.
Definition at line 469 of file BinauralDB.cpp.
Referenced by csl::BinauralPanner::BinauralPanner(), csl::BinauralSourceCache::BinauralSourceCache(), and csl::BinauralPanner::nextBuffer().
unsigned HRTFDatabase::hrirLength | ( | ) |
The length (in samples) of the impulse responses loaded.
Definition at line 475 of file BinauralDB.cpp.
unsigned HRTFDatabase::numBlocks | ( | ) |
The length (in windows) of the impulse responses loaded.
Definition at line 481 of file BinauralDB.cpp.
Referenced by csl::BinauralPanner::BinauralPanner().
unsigned HRTFDatabase::hrtfAt | ( | CPoint | srcPos | ) |
answer the index of the HRTF nearest the given point
Definition at line 434 of file BinauralDB.cpp.
References csl::CPoint::distance2(), csl::kLogError, csl::logMsg(), and csl::CPoint::normalize().
Referenced by csl::BinauralPanner::nextBuffer().
HRTF * HRTFDatabase::hrtfAt | ( | unsigned | index | ) |
answer an HRTF* by index
Definition at line 423 of file BinauralDB.cpp.
References csl::kLogError, and csl::logMsg().
void HRTFDatabase::dump | ( | bool | verbose = false | ) |
Print all the HRTFs in the database.
Definition at line 403 of file BinauralDB.cpp.
References csl::logMsg(), and size.
unsigned HRTFDatabase::size | ( | ) |
returns the size on bytes of the receiver's storage
dump the DB as a single binary file
Definition at line 414 of file BinauralDB.cpp.
References size.
void HRTFDatabase::storeToDB | ( | const char * | filename, |
const char * | same | ||
) | |||
throw | ( | CException | |
) |
Definition at line 495 of file BinauralDB.cpp.
References CSL_DEGS_PER_RAD, csl::HRTF::mHrtfL, and csl::HRTF::mHrtfR.
Referenced by convertDB().
|
protected |
Definition at line 240 of file BinauralDB.cpp.
References CSL_NAME_LEN, and FLIST_NAME.
|
protected |
Definition at line 249 of file BinauralDB.cpp.
References csl::CSL_FFT_COMPLEX, CSL_NAME_LEN, len, and csl::logMsg().
|
protected |
Definition at line 302 of file BinauralDB.cpp.
References CSL_DEGS_PER_RAD, CSL_LINE_LEN, CSL_NAME_LEN, csl::kLogError, kPolar, csl::logMsg(), csl::HRTF::mHrtfL, csl::HRTF::mHrtfR, csl::HRTF::mPosition, and csl::CPoint::set().
|
protected |
vector of the HRTFs that constitute the database
Definition at line 159 of file BinauralDB.h.
|
protected |
FFT sizes (1024)
Definition at line 161 of file BinauralDB.h.
|
protected |
513
Definition at line 162 of file BinauralDB.h.
|
protected |
The length of the Head Related Impulse Response (8192)
Definition at line 163 of file BinauralDB.h.
|
staticprotected |
The protected single instance of the HRTF Database.
Definition at line 165 of file BinauralDB.h.