1
0
Fork 0

Changes to go along with small interface changes in simgear/sound/libsgsound

(which is now written on top of OpenAL.)
This commit is contained in:
curt 2004-04-24 19:28:12 +00:00
parent 4e14316256
commit df472fe0f5
17 changed files with 84 additions and 69 deletions

View file

@ -314,7 +314,21 @@ esac
opengl_LIBS="$LIBS"
LIBS="$base_LIBS"
dnl check for OpenAL libraries
case "${host}" in
*)
dnl default unix style machines
AC_SEARCH_LIBS(alGenBuffers, openal)
;;
esac
openal_LIBS="$LIBS"
LIBS="$base_LIBS"
AC_SUBST(base_LIBS)
AC_SUBST(openal_LIBS)
AC_SUBST(opengl_LIBS)
AC_SUBST(thread_LIBS)
AC_SUBST(network_LIBS)

View file

@ -22,7 +22,7 @@
#include <Main/fg_props.hxx>
#include <simgear/math/point3d.hxx>
#include <simgear/debug/logstream.hxx>
#include <simgear/sound/soundmgr.hxx>
#include <simgear/sound/soundmgr_openal.hxx>
#include <math.h>
#include <string>
SG_USING_STD(string);
@ -189,7 +189,7 @@ void FGAIPlane::Render(string refname, bool repeating) {
int len;
unsigned char* buf = vPtr->WriteMessage((char*)pending_transmission.c_str(), len, voice);
if(voice) {
SGSimpleSound* simple = new SGSimpleSound(buf, len);
SGSoundSample* simple = new SGSoundSample(buf, len, 8000);
// TODO - at the moment the volume is always set off comm1
// and can't be changed after the transmission has started.
simple->set_volume(5.0 * fgGetDouble("/radios/comm[0]/volume"));

View file

@ -22,7 +22,7 @@
# include <config.h>
#endif
#include <simgear/sound/soundmgr.hxx>
#include <simgear/sound/soundmgr_openal.hxx>
#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
@ -223,7 +223,7 @@ void FGATC::Render(string msg, string refname, bool repeating) {
int len;
unsigned char* buf = vPtr->WriteMessage((char*)msg.c_str(), len, voice);
if(voice) {
SGSimpleSound* simple = new SGSimpleSound(buf, len);
SGSoundSample* simple = new SGSoundSample(buf, len, 8000);
// TODO - at the moment the volume is always set off comm1
// and can't be changed after the transmission has started.
simple->set_volume(5.0 * fgGetDouble("/radios/comm[0]/volume"));

View file

@ -37,21 +37,25 @@ FGATCVoice::FGATCVoice() {
}
FGATCVoice::~FGATCVoice() {
delete SoundData;
// delete SoundData;
}
// Load the two voice files - one containing the raw sound data (.wav) and one containing the word positions (.vce).
// Return true if successful.
bool FGATCVoice::LoadVoice(string voice) {
// FIXME CLO: disabled to try to see if this is causign problemcs
// return false;
ifstream fin;
SGPath path = globals->get_fg_root();
string soundPath = "ATC/" + voice + ".wav";
path.append(soundPath);
path.append( "ATC" );
string file = voice + ".wav";
SoundData = new slSample( (char*)path.c_str() );
rawDataSize = SoundData->getLength();
rawSoundData = (char*)SoundData->getBuffer();
SoundData = new SGSoundSample( path.c_str(), file.c_str() );
rawDataSize = SoundData->get_size();
rawSoundData = SoundData->get_data();
path = globals->get_fg_root();
string wordPath = "ATC/" + voice + ".vce";

View file

@ -21,8 +21,6 @@
#ifndef _FG_ATC_VOICE
#define _FG_ATC_VOICE
#include <plib/sl.h>
#include <simgear/compiler.h>
#if defined( SG_HAVE_STD_INCLUDES ) || defined( __BORLANDC__ ) || (__APPLE__)
@ -37,6 +35,8 @@
#include <list>
#include <string>
#include <simgear/sound/sample_openal.hxx>
SG_USING_STD(map);
SG_USING_STD(list);
SG_USING_STD(string);
@ -77,7 +77,7 @@ private:
// the sound and word position data
char* rawSoundData;
unsigned int rawDataSize;
slSample* SoundData;
SGSoundSample *SoundData;
// A map of words vs. byte position and length in rawSoundData
atc_word_map_type wordMap;

View file

@ -444,7 +444,7 @@ void FGKR_87::update( double dt ) {
// play station ident via audio system if on + ant mode,
// otherwise turn it off
if ( vol_btn >= 0.01 && audio_btn ) {
SGSimpleSound *sound;
SGSoundSample *sound;
sound = globals->get_soundmgr()->find( "adf-ident" );
if ( sound != NULL ) {
if ( !adf_btn ) {
@ -513,7 +513,7 @@ void FGKR_87::search() {
if ( globals->get_soundmgr()->exists( "adf-ident" ) ) {
globals->get_soundmgr()->remove( "adf-ident" );
}
SGSimpleSound *sound;
SGSoundSample *sound;
sound = morse.make_ident( trans_ident, LO_FREQUENCY );
sound->set_volume( 0.3 );
globals->get_soundmgr()->add( sound, "adf-ident" );

View file

@ -192,7 +192,7 @@ void FGMarkerBeacon::search()
// cout << "OUTER MARKER" << endl;
if ( last_beacon != FGMkrBeacon::OUTER ) {
if ( ! globals->get_soundmgr()->exists( "outer-marker" ) ) {
SGSimpleSound *sound = beacon.get_outer();
SGSoundSample *sound = beacon.get_outer();
sound->set_volume( 0.3 );
globals->get_soundmgr()->add( sound, "outer-marker" );
}
@ -209,7 +209,7 @@ void FGMarkerBeacon::search()
// cout << "MIDDLE MARKER" << endl;
if ( last_beacon != FGMkrBeacon::MIDDLE ) {
if ( ! globals->get_soundmgr()->exists( "middle-marker" ) ) {
SGSimpleSound *sound = beacon.get_middle();
SGSoundSample *sound = beacon.get_middle();
sound->set_volume( 0.3 );
globals->get_soundmgr()->add( sound, "middle-marker" );
}
@ -226,7 +226,7 @@ void FGMarkerBeacon::search()
// cout << "INNER MARKER" << endl;
if ( last_beacon != FGMkrBeacon::INNER ) {
if ( ! globals->get_soundmgr()->exists( "inner-marker" ) ) {
SGSimpleSound *sound = beacon.get_inner();
SGSoundSample *sound = beacon.get_inner();
sound->set_volume( 0.3 );
globals->get_soundmgr()->add( sound, "inner-marker" );
}

View file

@ -541,7 +541,7 @@ FGNavCom::update(double dt)
if ( power_btn && (bus_power->getDoubleValue() > 1.0)
&& nav_ident_btn && audio_btn )
{
SGSimpleSound *sound;
SGSoundSample *sound;
sound = globals->get_soundmgr()->find( nav_fx_name );
if ( sound != NULL ) {
sound->set_volume( nav_vol_btn );
@ -653,7 +653,7 @@ void FGNavCom::search()
if ( globals->get_soundmgr()->exists( nav_fx_name ) ) {
globals->get_soundmgr()->remove( nav_fx_name );
}
SGSimpleSound *sound;
SGSoundSample *sound;
sound = morse.make_ident( nav_trans_ident, LO_FREQUENCY );
sound->set_volume( 0.3 );
globals->get_soundmgr()->add( sound, nav_fx_name );
@ -703,7 +703,7 @@ void FGNavCom::search()
if ( globals->get_soundmgr()->exists( nav_fx_name ) ) {
globals->get_soundmgr()->remove( nav_fx_name );
}
SGSimpleSound *sound;
SGSoundSample *sound;
sound = morse.make_ident( nav_trans_ident, LO_FREQUENCY );
sound->set_volume( 0.3 );
if ( globals->get_soundmgr()->add( sound, nav_fx_name ) ) {

View file

@ -94,7 +94,7 @@ fgfs_LDADD = \
$(network_LIBS) \
-lz \
$(opengl_LIBS) \
$(audio_LIBS)
$(openal_LIBS)
metar_SOURCES = metar_main.cxx

View file

@ -1622,6 +1622,24 @@ bool fgInitSubsystems() {
}
#endif
#ifdef ENABLE_AUDIO_SUPPORT
////////////////////////////////////////////////////////////////////
// Initialize the sound subsystem.
////////////////////////////////////////////////////////////////////
globals->set_soundmgr(new SGSoundMgr);
globals->get_soundmgr()->init();
globals->get_soundmgr()->bind();
////////////////////////////////////////////////////////////////////
// Initialize the sound-effects subsystem.
////////////////////////////////////////////////////////////////////
globals->add_subsystem("fx", new FGFX);
#endif
////////////////////////////////////////////////////////////////////
// Initialise ATC display system
////////////////////////////////////////////////////////////////////
@ -1646,7 +1664,6 @@ bool fgInitSubsystems() {
globals->set_AI_mgr(new FGAIMgr);
globals->get_AI_mgr()->init();
////////////////////////////////////////////////////////////////////
// Initialise the AI Model Manager
////////////////////////////////////////////////////////////////////
@ -1655,24 +1672,6 @@ bool fgInitSubsystems() {
globals->add_subsystem("ai_model", new FGAIManager);
#ifdef ENABLE_AUDIO_SUPPORT
////////////////////////////////////////////////////////////////////
// Initialize the sound subsystem.
////////////////////////////////////////////////////////////////////
globals->set_soundmgr(new SGSoundMgr);
globals->get_soundmgr()->init();
globals->get_soundmgr()->bind();
////////////////////////////////////////////////////////////////////
// Initialize the sound-effects subsystem.
////////////////////////////////////////////////////////////////////
globals->add_subsystem("fx", new FGFX);
#endif
globals->add_subsystem("instrumentation", new FGInstrumentMgr);
globals->add_subsystem("systems", new FGSystemMgr);

View file

@ -29,7 +29,7 @@
#include <simgear/timing/sg_time.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/scene/material/matlib.hxx>
#include <simgear/sound/soundmgr.hxx>
#include <simgear/sound/soundmgr_openal.hxx>
#include STL_IOSTREAM

View file

@ -51,7 +51,7 @@ bool FGBeacon::init() {
ptr += INNER_DIT_LEN;
}
inner = new SGSimpleSound( inner_buf, INNER_SIZE );
inner = new SGSoundSample( inner_buf, INNER_SIZE, BYTES_PER_SECOND );
// Make middle marker beacon sound
len= (int)(MIDDLE_DIT_LEN / 2.0 );
@ -69,7 +69,7 @@ bool FGBeacon::init() {
ptr += MIDDLE_DIT_LEN;
memcpy( ptr, middle_dah, MIDDLE_DAH_LEN );
middle = new SGSimpleSound( middle_buf, MIDDLE_SIZE );
middle = new SGSoundSample( middle_buf, MIDDLE_SIZE, BYTES_PER_SECOND );
// Make outer marker beacon sound
len= (int)(OUTER_DAH_LEN * 3.0 / 4.0 );
@ -82,7 +82,7 @@ bool FGBeacon::init() {
ptr += OUTER_DAH_LEN;
memcpy( ptr, outer_dah, OUTER_DAH_LEN );
outer = new SGSimpleSound( outer_buf, OUTER_SIZE );
outer = new SGSoundSample( outer_buf, OUTER_SIZE, BYTES_PER_SECOND );
return true;
}

View file

@ -31,7 +31,7 @@
#endif
#include <simgear/compiler.h>
#include <simgear/sound/soundmgr.hxx>
#include <simgear/sound/soundmgr_openal.hxx>
#include <plib/sl.h>
#include <plib/sm.h>
@ -100,9 +100,9 @@ private:
unsigned char middle_buf[ MIDDLE_SIZE ] ;
unsigned char outer_buf[ OUTER_SIZE ] ;
SGSimpleSound *inner;
SGSimpleSound *middle;
SGSimpleSound *outer;
SGSoundSample *inner;
SGSoundSample *middle;
SGSoundSample *outer;
public:
@ -112,9 +112,9 @@ public:
// allocate and initialize sound samples
bool init();
SGSimpleSound *get_inner() { return inner; }
SGSimpleSound *get_middle() { return middle; }
SGSimpleSound *get_outer() { return outer; }
SGSoundSample *get_inner() { return inner; }
SGSoundSample *get_middle() { return middle; }
SGSoundSample *get_outer() { return outer; }
};

View file

@ -32,7 +32,7 @@
#endif
#include <simgear/misc/sg_path.hxx>
#include <simgear/props/props.hxx>
#include <simgear/sound/sound.hxx>
#include <simgear/sound/xmlsound.hxx>
#include <Main/fg_props.hxx>
@ -76,7 +76,7 @@ FGFX::init()
node = root.getNode("fx");
for (i = 0; i < node->nChildren(); i++) {
SGSound *sound = new SGSound();
SGXmlSound *sound = new SGXmlSound();
sound->init(globals->get_props(), node->getChild(i),
globals->get_soundmgr(), globals->get_fg_root());

View file

@ -26,7 +26,7 @@
#include <simgear/structure/subsystem_mgr.hxx>
class SGSound;
class SGXmlSound;
/**
* Generator for FlightGear sound effects.
@ -51,7 +51,7 @@ public:
private:
vector<SGSound *> _sound;
vector<SGXmlSound *> _sound;
};

View file

@ -87,7 +87,7 @@ void make_tone( unsigned char *buf, int freq,
int i, j;
for ( i = 0; i < trans_len; ++i ) {
float level = ( sin( (double) i * 2.0 * SGD_PI / (8000.0 / freq) ) )
float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
* ((double)i / trans_len) / 2.0 + 0.5;
/* Convert to unsigned byte */
@ -95,7 +95,7 @@ void make_tone( unsigned char *buf, int freq,
}
for ( i = trans_len; i < len - trans_len; ++i ) {
float level = ( sin( (double) i * 2.0 * SGD_PI / (8000.0 / freq) ) )
float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
/ 2.0 + 0.5;
/* Convert to unsigned byte */
@ -103,7 +103,7 @@ void make_tone( unsigned char *buf, int freq,
}
j = trans_len;
for ( i = len - trans_len; i < len; ++i ) {
float level = ( sin( (double) i * 2.0 * SGD_PI / (8000.0 / freq) ) )
float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
* ((double)j / trans_len) / 2.0 + 0.5;
--j;
@ -165,8 +165,8 @@ bool FGMorse::cust_init(const int freq ) {
}
// make a SGSimpleSound morse code transmission for the specified string
SGSimpleSound *FGMorse::make_ident( const string& id, const int freq ) {
// make a SGSoundSample morse code transmission for the specified string
SGSoundSample *FGMorse::make_ident( const string& id, const int freq ) {
char *idptr = (char *)id.c_str();
int length = 0;
@ -260,7 +260,8 @@ SGSimpleSound *FGMorse::make_ident( const string& id, const int freq ) {
buf_ptr += SPACE_SIZE;
// 4. create the simple sound and return
SGSimpleSound *sample = new SGSimpleSound( buffer, length );
SGSoundSample *sample = new SGSoundSample( buffer, length,
BYTES_PER_SECOND );
return sample;
}

View file

@ -29,10 +29,7 @@
#endif
#include <simgear/compiler.h>
#include <simgear/sound/soundmgr.hxx>
#include <plib/sl.h>
#include <plib/sm.h>
#include <simgear/sound/soundmgr_openal.hxx>
// Quoting from http://www.kluft.com/~ikluft/ham/morse-intro.html by
@ -88,7 +85,7 @@ static const char DA = '2';
static const char DAH = '2';
static const char end = '0';
static const int BYTES_PER_SECOND = 8000;
static const int BYTES_PER_SECOND = 22050;
// static const int BEAT_LENGTH = 240; // milleseconds (5 wpm)
static const int BEAT_LENGTH = 92; // milleseconds (13 wpm)
static const int TRANSITION_BYTES = (int)(0.005 * BYTES_PER_SECOND);
@ -124,8 +121,8 @@ public:
bool init();
// make a SimpleSound morse code transmission for the specified string
SGSimpleSound *make_ident( const string& id,
const int freq = LO_FREQUENCY );
SGSoundSample *make_ident( const string& id,
const int freq = LO_FREQUENCY );
};