Switch to in-place declarations and to the ISO9613 distance attenuation model for AeonWave which also calcualtes the proper sound velocity based on atmospheric properties
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
// Modified to match the new SoundSystem by Erik Hofman, October 2009
|
// Modified to match the new SoundSystem by Erik Hofman, October 2009
|
||||||
//
|
//
|
||||||
// Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
|
// Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
// Copyright (C) 2009 Erik Hofman <erik@ehofman.com>
|
// Copyright (C) 2009-2019 Erik Hofman <erik@ehofman.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU General Public License as
|
// modify it under the terms of the GNU General Public License as
|
||||||
@@ -49,24 +49,6 @@ using std::string;
|
|||||||
// empty constructor
|
// empty constructor
|
||||||
SGSoundSampleInfo::SGSoundSampleInfo() :
|
SGSoundSampleInfo::SGSoundSampleInfo() :
|
||||||
_refname(random_string()),
|
_refname(random_string()),
|
||||||
_bits(16),
|
|
||||||
_tracks(1),
|
|
||||||
_samples(0),
|
|
||||||
_frequency(22500),
|
|
||||||
_compressed(false),
|
|
||||||
_loop(false),
|
|
||||||
_static_changed(true),
|
|
||||||
_playing(false),
|
|
||||||
_pitch(1.0f),
|
|
||||||
_volume(1.0f),
|
|
||||||
_master_volume(1.0f),
|
|
||||||
_use_pos_props(false),
|
|
||||||
_out_of_range(false),
|
|
||||||
_inner_angle(360.0f),
|
|
||||||
_outer_angle(360.0f),
|
|
||||||
_outer_gain(0.0f),
|
|
||||||
_reference_dist(500.0f),
|
|
||||||
_max_dist(3000.0f),
|
|
||||||
_absolute_pos(SGVec3d::zeros()),
|
_absolute_pos(SGVec3d::zeros()),
|
||||||
_relative_pos(SGVec3d::zeros()),
|
_relative_pos(SGVec3d::zeros()),
|
||||||
_direction(SGVec3d::zeros()),
|
_direction(SGVec3d::zeros()),
|
||||||
@@ -97,27 +79,9 @@ std::string SGSoundSampleInfo::random_string()
|
|||||||
// SGSoundSample
|
// SGSoundSample
|
||||||
//
|
//
|
||||||
|
|
||||||
// empty constructor
|
|
||||||
SGSoundSample::SGSoundSample() :
|
|
||||||
_is_file(false),
|
|
||||||
_changed(true),
|
|
||||||
_valid_source(false),
|
|
||||||
_source(SGSoundMgr::NO_SOURCE),
|
|
||||||
_data(NULL),
|
|
||||||
_valid_buffer(false),
|
|
||||||
_buffer(SGSoundMgr::NO_BUFFER)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) :
|
SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) :
|
||||||
_is_file(true),
|
_is_file(true)
|
||||||
_changed(true),
|
|
||||||
_valid_source(false),
|
|
||||||
_source(SGSoundMgr::NO_SOURCE),
|
|
||||||
_data(NULL),
|
|
||||||
_valid_buffer(false),
|
|
||||||
_buffer(SGSoundMgr::NO_BUFFER)
|
|
||||||
{
|
{
|
||||||
SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir);
|
SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir);
|
||||||
_refname = p.utf8Str();
|
_refname = p.utf8Str();
|
||||||
@@ -125,13 +89,7 @@ SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) :
|
|||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
SGSoundSample::SGSoundSample( const unsigned char** data,
|
SGSoundSample::SGSoundSample( const unsigned char** data,
|
||||||
int len, int freq, int format ) :
|
int len, int freq, int format )
|
||||||
_is_file(false),
|
|
||||||
_changed(true),
|
|
||||||
_valid_source(false),
|
|
||||||
_source(SGSoundMgr::NO_SOURCE),
|
|
||||||
_valid_buffer(false),
|
|
||||||
_buffer(SGSoundMgr::NO_BUFFER)
|
|
||||||
{
|
{
|
||||||
SG_LOG( SG_SOUND, SG_DEBUG, "In memory sounds sample" );
|
SG_LOG( SG_SOUND, SG_DEBUG, "In memory sounds sample" );
|
||||||
_data = (unsigned char*)*data; *data = NULL;
|
_data = (unsigned char*)*data; *data = NULL;
|
||||||
|
|||||||
+61
-35
@@ -1,10 +1,10 @@
|
|||||||
// sample.hxx -- Audio sample encapsulation class
|
// sample.hxx -- Audio sample encapsulation class
|
||||||
//
|
//
|
||||||
// Written by Curtis Olson, started April 2004.
|
// Written by Curtis Olson, started April 2004.
|
||||||
// Modified to match the new SoundSystem by Erik Hofman, October 2009
|
// Modified to match the new SoundSystem by Erik Hofman, October 2009
|
||||||
//
|
//
|
||||||
// Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
|
// Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
// Copyright (C) 2009 Erik Hofman <erik@ehofman.com>
|
// Copyright (C) 2009-2019 Erik Hofman <erik@ehofman.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU General Public License as
|
// modify it under the terms of the GNU General Public License as
|
||||||
@@ -32,7 +32,8 @@
|
|||||||
|
|
||||||
#include <simgear/math/SGMath.hxx>
|
#include <simgear/math/SGMath.hxx>
|
||||||
#include <simgear/props/props.hxx>
|
#include <simgear/props/props.hxx>
|
||||||
|
#include "soundmgr.hxx"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SG_SAMPLE_MONO = 1,
|
SG_SAMPLE_MONO = 1,
|
||||||
SG_SAMPLE_STEREO = 2,
|
SG_SAMPLE_STEREO = 2,
|
||||||
@@ -76,7 +77,7 @@ public:
|
|||||||
* Returns the block alignment of this audio sample.
|
* Returns the block alignment of this audio sample.
|
||||||
* @return block alignment in bytes
|
* @return block alignment in bytes
|
||||||
*/
|
*/
|
||||||
inline unsigned int get_block_align() {
|
inline unsigned int get_block_align() {
|
||||||
return _block_align;
|
return _block_align;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,10 +165,22 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Get maximum distance (in meters) of this sound.
|
* Get maximum distance (in meters) of this sound.
|
||||||
* This is the distance where this sound is no longer audible.
|
* This is the distance where this sound is no longer audible.
|
||||||
* @return dist Maximum distance
|
* @return Maximum distance
|
||||||
*/
|
*/
|
||||||
inline float get_max_dist() { return _max_dist; }
|
inline float get_max_dist() { return _max_dist; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the temperature (in degrees Celsius) at the current altitude.
|
||||||
|
* @return temperature in degrees Celsius
|
||||||
|
*/
|
||||||
|
inline float get_temperature() { return _degC; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the relative humidity at the current altitude.
|
||||||
|
* @return Percent relative humidity (0.0 to 1.0)
|
||||||
|
*/
|
||||||
|
inline float get_humidity() { return _humidity; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test if static data of audio sample configuration has changed.
|
* Test if static data of audio sample configuration has changed.
|
||||||
* Calling this function will reset the flag so calling it a second
|
* Calling this function will reset the flag so calling it a second
|
||||||
@@ -181,32 +194,34 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
// static sound emitter info
|
// static sound emitter info
|
||||||
std::string _refname;
|
std::string _refname;
|
||||||
unsigned int _bits;
|
unsigned int _bits = 16;
|
||||||
unsigned int _tracks;
|
unsigned int _tracks = 1;
|
||||||
unsigned int _samples;
|
unsigned int _samples = 0;
|
||||||
unsigned int _frequency;
|
unsigned int _frequency = 22500;
|
||||||
unsigned int _block_align;
|
unsigned int _block_align = 2;
|
||||||
bool _compressed;
|
bool _compressed = false;
|
||||||
bool _loop;
|
bool _loop = false;
|
||||||
|
|
||||||
// dynamic sound emitter info (non 3d)
|
// dynamic sound emitter info (non 3d)
|
||||||
bool _static_changed;
|
bool _static_changed = true;
|
||||||
bool _playing;
|
bool _playing = false;
|
||||||
|
|
||||||
float _pitch;
|
float _pitch = 1.0f;
|
||||||
float _volume;
|
float _volume = 1.0f;
|
||||||
float _master_volume;
|
float _master_volume = 1.0f;
|
||||||
|
|
||||||
// dynamic sound emitter info (3d)
|
// dynamic sound emitter info (3d)
|
||||||
bool _use_pos_props;
|
bool _use_pos_props = false;
|
||||||
bool _out_of_range;
|
bool _out_of_range = false;
|
||||||
|
|
||||||
float _inner_angle;
|
float _inner_angle = 360.0f;
|
||||||
float _outer_angle;
|
float _outer_angle = 360.0f;
|
||||||
float _outer_gain;
|
float _outer_gain = 0.0f;
|
||||||
|
|
||||||
float _reference_dist;
|
float _reference_dist = 500.0f;
|
||||||
float _max_dist;
|
float _max_dist = 3000.0f;
|
||||||
|
float _humidity = 0.5f;
|
||||||
|
float _degC = 20.0f;
|
||||||
|
|
||||||
SGPropertyNode_ptr _pos_prop[3];
|
SGPropertyNode_ptr _pos_prop[3];
|
||||||
SGVec3d _absolute_pos; // absolute position
|
SGVec3d _absolute_pos; // absolute position
|
||||||
@@ -233,7 +248,7 @@ public:
|
|||||||
* Empty constructor, can be used to read data to the systems
|
* Empty constructor, can be used to read data to the systems
|
||||||
* memory and not to the driver.
|
* memory and not to the driver.
|
||||||
*/
|
*/
|
||||||
SGSoundSample();
|
SGSoundSample() {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@@ -307,7 +322,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline void play_once() { play(false); }
|
inline void play_once() { play(false); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Schedule this audio sample to play looped.
|
* Schedule this audio sample to play looped.
|
||||||
* @see #play
|
* @see #play
|
||||||
*/
|
*/
|
||||||
@@ -389,7 +404,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline void set_buffer(unsigned int bid) {
|
inline void set_buffer(unsigned int bid) {
|
||||||
_buffer = bid; _valid_buffer = true; _changed = true;
|
_buffer = bid; _valid_buffer = true; _changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the buffer-id of this source
|
* Get the buffer-id of this source
|
||||||
@@ -409,7 +424,7 @@ public:
|
|||||||
inline void no_valid_buffer() { _valid_buffer = false; }
|
inline void no_valid_buffer() { _valid_buffer = false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the playback pitch of this audio sample.
|
* Set the playback pitch of this audio sample.
|
||||||
* Should be between 0.0 and 2.0 for maximum compatibility.
|
* Should be between 0.0 and 2.0 for maximum compatibility.
|
||||||
* @param p Pitch
|
* @param p Pitch
|
||||||
*/
|
*/
|
||||||
@@ -540,6 +555,17 @@ public:
|
|||||||
_velocity = vel; _changed = true;
|
_velocity = vel; _changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set both the temperature and relative humidity at the current altitude.
|
||||||
|
* @param temp Temperature in degrees Celsius
|
||||||
|
* @param hum Percent relative humidity (0.0 to 1.0)
|
||||||
|
*/
|
||||||
|
inline void set_atmosphere(float temp, float hum) {
|
||||||
|
if (fabsf(_degC - temp) > 1.0f || fabsf(_humidity - hum) > 0.1f) {
|
||||||
|
_degC = temp, _humidity = hum; _static_changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set reference distance (in meters) of this sound.
|
* Set reference distance (in meters) of this sound.
|
||||||
* This is the distance where the gain will be half.
|
* This is the distance where the gain will be half.
|
||||||
@@ -563,19 +589,19 @@ public:
|
|||||||
void update_pos_and_orientation();
|
void update_pos_and_orientation();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool _is_file;
|
bool _is_file = false;
|
||||||
bool _changed;
|
bool _changed = true;
|
||||||
|
|
||||||
// Sources are points emitting sound.
|
// Sources are points emitting sound.
|
||||||
bool _valid_source;
|
bool _valid_source = false;
|
||||||
unsigned int _source;
|
unsigned int _source = SGSoundMgr::NO_SOURCE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char* _data;
|
unsigned char* _data = NULL;
|
||||||
|
|
||||||
// Buffers hold sound data.
|
// Buffers hold sound data.
|
||||||
bool _valid_buffer;
|
bool _valid_buffer = false;
|
||||||
unsigned int _buffer;
|
unsigned int _buffer = SGSoundMgr::NO_BUFFER;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _SG_SAMPLE_HXX
|
#endif // _SG_SAMPLE_HXX
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Written for the new SoundSystem by Erik Hofman, October 2009
|
// Written for the new SoundSystem by Erik Hofman, October 2009
|
||||||
//
|
//
|
||||||
// Copyright (C) 2009 Erik Hofman <erik@ehofman.com>
|
// Copyright (C) 2009-2019 Erik Hofman <erik@ehofman.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU General Public License as
|
// modify it under the terms of the GNU General Public License as
|
||||||
@@ -31,16 +31,7 @@
|
|||||||
#include "soundmgr.hxx"
|
#include "soundmgr.hxx"
|
||||||
#include "sample_group.hxx"
|
#include "sample_group.hxx"
|
||||||
|
|
||||||
SGSampleGroup::SGSampleGroup () :
|
SGSampleGroup::SGSampleGroup ()
|
||||||
_smgr(NULL),
|
|
||||||
_refname(""),
|
|
||||||
_active(false),
|
|
||||||
_changed(false),
|
|
||||||
_pause(false),
|
|
||||||
_volume(1.0),
|
|
||||||
_tied_to_listener(false),
|
|
||||||
_velocity(SGVec3d::zeros()),
|
|
||||||
_orientation(SGQuatd::zeros())
|
|
||||||
{
|
{
|
||||||
_samples.clear();
|
_samples.clear();
|
||||||
}
|
}
|
||||||
@@ -48,14 +39,7 @@ SGSampleGroup::SGSampleGroup () :
|
|||||||
SGSampleGroup::SGSampleGroup ( SGSoundMgr *smgr,
|
SGSampleGroup::SGSampleGroup ( SGSoundMgr *smgr,
|
||||||
const std::string &refname ):
|
const std::string &refname ):
|
||||||
_smgr(smgr),
|
_smgr(smgr),
|
||||||
_refname(refname),
|
_refname(refname)
|
||||||
_active(false),
|
|
||||||
_changed(false),
|
|
||||||
_pause(false),
|
|
||||||
_volume(1.0),
|
|
||||||
_tied_to_listener(false),
|
|
||||||
_velocity(SGVec3d::zeros()),
|
|
||||||
_orientation(SGQuatd::zeros())
|
|
||||||
{
|
{
|
||||||
_smgr->add(this, refname);
|
_smgr->add(this, refname);
|
||||||
_samples.clear();
|
_samples.clear();
|
||||||
@@ -318,6 +302,7 @@ void SGSampleGroup::update_pos_and_orientation() {
|
|||||||
sample->set_rotation( ec2body );
|
sample->set_rotation( ec2body );
|
||||||
sample->set_position(base_position);
|
sample->set_position(base_position);
|
||||||
sample->set_velocity( velocity );
|
sample->set_velocity( velocity );
|
||||||
|
sample->set_atmosphere( _degC, _humidity );
|
||||||
|
|
||||||
// Test if a sample is farther away than max distance, if so
|
// Test if a sample is farther away than max distance, if so
|
||||||
// stop the sound playback and free it's source.
|
// stop the sound playback and free it's source.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
//
|
//
|
||||||
// Written for the new SoundSystem by Erik Hofman, October 2009
|
// Written for the new SoundSystem by Erik Hofman, October 2009
|
||||||
//
|
//
|
||||||
// Copyright (C) 2009 Erik Hofman <erik@ehofman.com>
|
// Copyright (C) 2009-2019 Erik Hofman <erik@ehofman.com>
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -131,7 +131,7 @@ public:
|
|||||||
* @return true if the audio sample exsists and is scheduled for playing
|
* @return true if the audio sample exsists and is scheduled for playing
|
||||||
*/
|
*/
|
||||||
bool play( const std::string& refname, bool looping = false );
|
bool play( const std::string& refname, bool looping = false );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request to start playing the referred audio sample looping.
|
* Request to start playing the referred audio sample looping.
|
||||||
* @param refname Reference name of the audio sample to start playing
|
* @param refname Reference name of the audio sample to start playing
|
||||||
@@ -173,7 +173,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Set the velocity vector of this sample group.
|
* Set the velocity vector of this sample group.
|
||||||
* This is in the local frame coordinate system; x=north, y=east, z=down
|
* This is in the local frame coordinate system; x=north, y=east, z=down
|
||||||
* @param vel Velocity vector
|
* @param vel Velocity vector
|
||||||
*/
|
*/
|
||||||
void set_velocity( const SGVec3d& vel ) {
|
void set_velocity( const SGVec3d& vel ) {
|
||||||
_velocity = vel; _changed = true;
|
_velocity = vel; _changed = true;
|
||||||
@@ -196,29 +196,41 @@ public:
|
|||||||
_orientation = ori; _changed = true;
|
_orientation = ori; _changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set both the temperature and relative humidity at the current altitude.
|
||||||
|
* @param temp Temperature in degrees Celsius
|
||||||
|
* @param hum Percent relative humidity (0.0 to 1.0)
|
||||||
|
*/
|
||||||
|
void set_atmosphere(float temp, float hum ) {
|
||||||
|
_degC = temp, _humidity = hum; _changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tie this sample group to the listener position, orientation and velocity
|
* Tie this sample group to the listener position, orientation and velocity
|
||||||
*/
|
*/
|
||||||
void tie_to_listener() { _tied_to_listener = true; }
|
void tie_to_listener() { _tied_to_listener = true; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SGSoundMgr *_smgr;
|
SGSoundMgr *_smgr = NULL;
|
||||||
std::string _refname;
|
std::string _refname = "";
|
||||||
bool _active;
|
bool _active = false;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void cleanup_removed_samples();
|
void cleanup_removed_samples();
|
||||||
void start_playing_sample(SGSoundSample *sample);
|
void start_playing_sample(SGSoundSample *sample);
|
||||||
void check_playing_sample(SGSoundSample *sample);
|
void check_playing_sample(SGSoundSample *sample);
|
||||||
|
|
||||||
bool _changed;
|
|
||||||
bool _pause;
|
|
||||||
float _volume;
|
|
||||||
bool _tied_to_listener;
|
|
||||||
|
|
||||||
SGVec3d _velocity;
|
bool _changed = false;
|
||||||
|
bool _pause = false;
|
||||||
|
float _volume = 1.0f;
|
||||||
|
float _humidity = 0.5f;
|
||||||
|
float _degC = 20.0f;
|
||||||
|
|
||||||
|
bool _tied_to_listener = false;
|
||||||
|
|
||||||
|
SGVec3d _velocity = SGVec3d::zeros();
|
||||||
|
SGQuatd _orientation = SGQuatd::zeros();
|
||||||
SGGeod _base_pos;
|
SGGeod _base_pos;
|
||||||
SGQuatd _orientation;
|
|
||||||
|
|
||||||
sample_map _samples;
|
sample_map _samples;
|
||||||
std::vector< SGSharedPtr<SGSoundSample> > _removed_samples;
|
std::vector< SGSharedPtr<SGSoundSample> > _removed_samples;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
// Modified for the new SoundSystem by Erik Hofman, October 2009
|
// Modified for the new SoundSystem by Erik Hofman, October 2009
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 Curtis L. Olson - http://www.flightgear.org/~curt
|
// Copyright (C) 2001 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
// Copyright (C) 2009 Erik Hofman <erik@ehofman.com>
|
// Copyright (C) 2009-2019 Erik Hofman <erik@ehofman.com>
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -68,7 +68,7 @@ public:
|
|||||||
* Select a specific sound device.
|
* Select a specific sound device.
|
||||||
* Requires a init/reinit call before sound is actually switched.
|
* Requires a init/reinit call before sound is actually switched.
|
||||||
*/
|
*/
|
||||||
inline void select_device(const char* devname) {_device_name = devname;}
|
inline void select_device(const char* devname) { _device_name = devname; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test is the sound manager is in a working condition.
|
* Test is the sound manager is in a working condition.
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ void SGSoundMgr::init()
|
|||||||
TRY( d->_aax.set(dsp) );
|
TRY( d->_aax.set(dsp) );
|
||||||
|
|
||||||
dsp = aax::dsp(d->_aax, AAX_DISTANCE_FILTER);
|
dsp = aax::dsp(d->_aax, AAX_DISTANCE_FILTER);
|
||||||
TRY( dsp.set(AAX_AL_INVERSE_DISTANCE_CLAMPED) );
|
TRY( dsp.set(AAX_ISO9613_DISTANCE) );
|
||||||
TRY( d->_aax.set(dsp) );
|
TRY( d->_aax.set(dsp) );
|
||||||
|
|
||||||
dsp = aax::dsp(d->_aax, AAX_VELOCITY_EFFECT);
|
dsp = aax::dsp(d->_aax, AAX_VELOCITY_EFFECT);
|
||||||
@@ -313,12 +313,6 @@ void SGSoundMgr::update( double dt )
|
|||||||
TRY( dsp.set(AAX_GAIN, _volume) );
|
TRY( dsp.set(AAX_GAIN, _volume) );
|
||||||
TRY( d->_aax.set(dsp) );
|
TRY( d->_aax.set(dsp) );
|
||||||
|
|
||||||
#if 0
|
|
||||||
// TODO: altitude dependent
|
|
||||||
dsp = d->_aax.get(AAX_VELOCITY_EFFECT);
|
|
||||||
TRY( dsp.set(AAX_SOUND_VELOCITY, 340.3f) );
|
|
||||||
TRY( d->_aax.set(dsp) );
|
|
||||||
#endif
|
|
||||||
aax::Matrix64 mtx = d->_mtx;
|
aax::Matrix64 mtx = d->_mtx;
|
||||||
mtx.inverse();
|
mtx.inverse();
|
||||||
TRY( d->_aax.sensor_matrix(mtx) );
|
TRY( d->_aax.sensor_matrix(mtx) );
|
||||||
@@ -568,7 +562,7 @@ void SGSoundMgr::sample_play( SGSoundSample *sample )
|
|||||||
|
|
||||||
aax::dsp dsp = emitter.get(AAX_DISTANCE_FILTER);
|
aax::dsp dsp = emitter.get(AAX_DISTANCE_FILTER);
|
||||||
TRY( dsp.set(AAX_ROLLOFF_FACTOR, 0.3f) );
|
TRY( dsp.set(AAX_ROLLOFF_FACTOR, 0.3f) );
|
||||||
TRY( dsp.set(AAX_AL_INVERSE_DISTANCE_CLAMPED) );
|
TRY( dsp.set(AAX_ISO9613_DISTANCE) );
|
||||||
TRY( emitter.set(dsp) );
|
TRY( emitter.set(dsp) );
|
||||||
|
|
||||||
TRY( emitter.set(AAX_LOOPING, sample->is_looping()) );
|
TRY( emitter.set(AAX_LOOPING, sample->is_looping()) );
|
||||||
@@ -666,6 +660,9 @@ void SGSoundMgr::update_sample_config( SGSoundSample *sample, SGVec3d& position,
|
|||||||
dsp = emitter.get(AAX_DISTANCE_FILTER);
|
dsp = emitter.get(AAX_DISTANCE_FILTER);
|
||||||
TRY( dsp.set(AAX_REF_DISTANCE, sample->get_reference_dist()) );
|
TRY( dsp.set(AAX_REF_DISTANCE, sample->get_reference_dist()) );
|
||||||
TRY( dsp.set(AAX_MAX_DISTANCE, sample->get_max_dist()) );
|
TRY( dsp.set(AAX_MAX_DISTANCE, sample->get_max_dist()) );
|
||||||
|
TRY( dsp.set(AAX_RELATIVE_HUMIDITY, sample->get_humidity()) );
|
||||||
|
TRY( dsp.set(AAX_TEMPERATURE, sample->get_temperature(),
|
||||||
|
AAX_DEGREES_CELSIUS) );
|
||||||
TRY( emitter.set(dsp) );
|
TRY( emitter.set(dsp) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -693,6 +690,7 @@ vector<std::string> SGSoundMgr::get_available_devices()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
testForError("get_available_devices");
|
||||||
#endif
|
#endif
|
||||||
return devices;
|
return devices;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user