Reshuffled some of the sound code and created a "src/Sound" subdirectory.
This commit is contained in:
parent
fbad3482fa
commit
815d49e86a
10 changed files with 66 additions and 159 deletions
|
@ -2373,6 +2373,21 @@ SOURCE=.\src\Main\options.cxx
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\src\Main\soundmgr.cxx
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "FlightGear - Win32 Release"
|
||||||
|
|
||||||
|
# PROP Intermediate_Dir "Release\main"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "FlightGear - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP Intermediate_Dir "Debug\main"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\src\Main\splash.cxx
|
SOURCE=.\src\Main\splash.cxx
|
||||||
|
|
||||||
!IF "$(CFG)" == "FlightGear - Win32 Release"
|
!IF "$(CFG)" == "FlightGear - Win32 Release"
|
||||||
|
|
|
@ -42,9 +42,7 @@ fgfs_SOURCES = \
|
||||||
fgfs.cxx fgfs.hxx \
|
fgfs.cxx fgfs.hxx \
|
||||||
globals.cxx globals.hxx \
|
globals.cxx globals.hxx \
|
||||||
keyboard.cxx keyboard.hxx \
|
keyboard.cxx keyboard.hxx \
|
||||||
morse.cxx morse.hxx \
|
|
||||||
options.cxx options.hxx \
|
options.cxx options.hxx \
|
||||||
soundmgr.cxx soundmgr.hxx \
|
|
||||||
splash.cxx splash.hxx \
|
splash.cxx splash.hxx \
|
||||||
viewer.cxx viewer.hxx \
|
viewer.cxx viewer.hxx \
|
||||||
viewer_lookat.cxx viewer_lookat.hxx \
|
viewer_lookat.cxx viewer_lookat.hxx \
|
||||||
|
@ -65,6 +63,7 @@ fgfs_LDADD = \
|
||||||
$(top_builddir)/src/GUI/libGUI.a \
|
$(top_builddir)/src/GUI/libGUI.a \
|
||||||
$(top_builddir)/src/Navaids/libNavaids.a \
|
$(top_builddir)/src/Navaids/libNavaids.a \
|
||||||
$(top_builddir)/src/Scenery/libScenery.a \
|
$(top_builddir)/src/Scenery/libScenery.a \
|
||||||
|
$(top_builddir)/src/Sound/libSound.a \
|
||||||
$(top_builddir)/src/Airports/libAirports.a \
|
$(top_builddir)/src/Airports/libAirports.a \
|
||||||
$(NETWORK_LIBS) \
|
$(NETWORK_LIBS) \
|
||||||
$(top_builddir)/src/Objects/libObjects.a \
|
$(top_builddir)/src/Objects/libObjects.a \
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include <simgear/timing/sg_time.hxx>
|
#include <simgear/timing/sg_time.hxx>
|
||||||
#include <simgear/misc/props.hxx>
|
#include <simgear/misc/props.hxx>
|
||||||
|
|
||||||
#include "soundmgr.hxx"
|
#include <Sound/soundmgr.hxx>
|
||||||
#include "viewmgr.hxx"
|
#include "viewmgr.hxx"
|
||||||
|
|
||||||
FG_USING_STD( vector );
|
FG_USING_STD( vector );
|
||||||
|
|
|
@ -83,6 +83,10 @@
|
||||||
#endif
|
#endif
|
||||||
#include <Scenery/scenery.hxx>
|
#include <Scenery/scenery.hxx>
|
||||||
#include <Scenery/tilemgr.hxx>
|
#include <Scenery/tilemgr.hxx>
|
||||||
|
#ifdef ENABLE_AUDIO_SUPPORT
|
||||||
|
# include <Sound/soundmgr.hxx>
|
||||||
|
# include <Sound/morse.hxx>
|
||||||
|
#endif
|
||||||
#include <Time/event.hxx>
|
#include <Time/event.hxx>
|
||||||
#include <Time/fg_timer.hxx>
|
#include <Time/fg_timer.hxx>
|
||||||
#include <Time/light.hxx>
|
#include <Time/light.hxx>
|
||||||
|
@ -117,13 +121,8 @@ int objc=0;
|
||||||
#include "fg_io.hxx"
|
#include "fg_io.hxx"
|
||||||
#include "globals.hxx"
|
#include "globals.hxx"
|
||||||
#include "keyboard.hxx"
|
#include "keyboard.hxx"
|
||||||
#include "morse.hxx"
|
|
||||||
#include "splash.hxx"
|
#include "splash.hxx"
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_SUPPORT
|
|
||||||
# include "soundmgr.hxx"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef macintosh
|
#ifdef macintosh
|
||||||
# include <console.h> // -dw- for command line dialog
|
# include <console.h> // -dw- for command line dialog
|
||||||
#endif
|
#endif
|
||||||
|
@ -1194,10 +1193,10 @@ static void fgIdleFunction ( void ) {
|
||||||
|
|
||||||
// s2 = new FGSimpleSound( "Sounds/corflaps.wav" );
|
// s2 = new FGSimpleSound( "Sounds/corflaps.wav" );
|
||||||
// s2->set_volume( 2.0 );
|
// s2->set_volume( 2.0 );
|
||||||
FGMorse mmm;
|
// FGMorse mmm;
|
||||||
mmm.init();
|
// mmm.init();
|
||||||
s2 = mmm.make_ident( "JLI" );
|
// s2 = mmm.make_ident( "JLI" );
|
||||||
globals->get_soundmgr()->add( s2, "flaps" );
|
// globals->get_soundmgr()->add( s2, "flaps" );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,117 +0,0 @@
|
||||||
// soundmgr.hxx -- Sound effect management class
|
|
||||||
//
|
|
||||||
// Sound manager initially written by David Findlay
|
|
||||||
// <david_j_findlay@yahoo.com.au> 2001
|
|
||||||
//
|
|
||||||
// C++-ified by Curtis Olson, started March 2001.
|
|
||||||
//
|
|
||||||
// Copyright (C) 2001 Curtis L. Olson - curt@flightgear.org
|
|
||||||
//
|
|
||||||
// This program is free software; you can redistribute it and/or
|
|
||||||
// modify it under the terms of the GNU General Public License as
|
|
||||||
// published by the Free Software Foundation; either version 2 of the
|
|
||||||
// License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful, but
|
|
||||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
//
|
|
||||||
// $Id$
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SOUNDMGR_HXX
|
|
||||||
#define _SOUNDMGR_HXX
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <simgear/compiler.h>
|
|
||||||
|
|
||||||
#include STL_STRING
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include <plib/sl.h>
|
|
||||||
#include <plib/sm.h>
|
|
||||||
|
|
||||||
FG_USING_STD(map);
|
|
||||||
FG_USING_STD(string);
|
|
||||||
|
|
||||||
|
|
||||||
// manages everything we need to know for an individual sound sample
|
|
||||||
class FGSimpleSound {
|
|
||||||
|
|
||||||
slSample *sample;
|
|
||||||
slEnvelope *pitch_envelope;
|
|
||||||
slEnvelope *volume_envelope;
|
|
||||||
double pitch;
|
|
||||||
double volume;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
FGSimpleSound( string file );
|
|
||||||
FGSimpleSound( unsigned char *buffer, int len );
|
|
||||||
~FGSimpleSound();
|
|
||||||
|
|
||||||
inline double get_pitch() const { return pitch; }
|
|
||||||
inline void set_pitch( double p ) {
|
|
||||||
pitch = p;
|
|
||||||
pitch_envelope->setStep( 0, 0.01, pitch );
|
|
||||||
}
|
|
||||||
inline double get_volume() const { return volume; }
|
|
||||||
inline void set_volume( double v ) {
|
|
||||||
volume = v;
|
|
||||||
volume_envelope->setStep( 0, 0.01, volume );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline slSample *get_sample() { return sample; }
|
|
||||||
inline slEnvelope *get_pitch_envelope() { return pitch_envelope; }
|
|
||||||
inline slEnvelope *get_volume_envelope() { return volume_envelope; }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
typedef map < string, FGSimpleSound * > sound_map;
|
|
||||||
typedef sound_map::iterator sound_map_iterator;
|
|
||||||
typedef sound_map::const_iterator const_sound_map_iterator;
|
|
||||||
|
|
||||||
|
|
||||||
class FGSoundMgr {
|
|
||||||
|
|
||||||
slScheduler *audio_sched;
|
|
||||||
smMixer *audio_mixer;
|
|
||||||
sound_map sounds;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
FGSoundMgr();
|
|
||||||
~FGSoundMgr();
|
|
||||||
|
|
||||||
// initialize the sound manager
|
|
||||||
bool init();
|
|
||||||
|
|
||||||
// run the audio scheduler
|
|
||||||
bool update();
|
|
||||||
|
|
||||||
// is audio working?
|
|
||||||
inline bool is_working() const { return !audio_sched->not_working(); }
|
|
||||||
|
|
||||||
// add a sound effect, return the index of the sound
|
|
||||||
bool add( FGSimpleSound *sound, const string& refname );
|
|
||||||
|
|
||||||
// tell the scheduler to play the indexed sample in a continuous
|
|
||||||
// loop
|
|
||||||
bool play_looped( const string& refname );
|
|
||||||
|
|
||||||
// tell the scheduler to play the indexed sample once
|
|
||||||
bool play_once( const string& refname );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _SOUNDMGR_HXX
|
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ SUBDIRS = \
|
||||||
$(NETWORK_DIRS) \
|
$(NETWORK_DIRS) \
|
||||||
Objects \
|
Objects \
|
||||||
Scenery \
|
Scenery \
|
||||||
|
Sound \
|
||||||
Time \
|
Time \
|
||||||
$(WEATHER_DIR) \
|
$(WEATHER_DIR) \
|
||||||
Main
|
Main
|
||||||
|
|
7
src/Sound/Makefile.am
Normal file
7
src/Sound/Makefile.am
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
noinst_LIBRARIES = libSound.a
|
||||||
|
|
||||||
|
libSound_a_SOURCES = \
|
||||||
|
morse.cxx morse.hxx \
|
||||||
|
soundmgr.cxx soundmgr.hxx
|
||||||
|
|
||||||
|
INCLUDES += -I$(top_srcdir) -I$(top_srcdir)/src
|
|
@ -24,6 +24,36 @@
|
||||||
#include "morse.hxx"
|
#include "morse.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
static const char alphabet[26][4] = {
|
||||||
|
{ DI, DAH, end, end }, /* A */
|
||||||
|
{ DA, DI, DI, DIT }, /* B */
|
||||||
|
{ DA, DI, DA, DIT }, /* C */
|
||||||
|
{ DA, DI, DIT, end }, /* D */
|
||||||
|
{ DIT, end, end, end }, /* E */
|
||||||
|
{ DI, DI, DA, DIT }, /* F */
|
||||||
|
{ DA, DA, DIT, end }, /* G */
|
||||||
|
{ DI, DI, DI, DIT }, /* H */
|
||||||
|
{ DI, DIT, end, end }, /* I */
|
||||||
|
{ DI, DA, DA, DAH }, /* J */
|
||||||
|
{ DA, DI, DAH, end }, /* K */
|
||||||
|
{ DI, DA, DI, DIT }, /* L */
|
||||||
|
{ DA, DAH, end, end }, /* M */
|
||||||
|
{ DA, DIT, end, end }, /* N */
|
||||||
|
{ DA, DA, DAH, end }, /* O */
|
||||||
|
{ DI, DA, DA, DIT }, /* P */
|
||||||
|
{ DA, DA, DI, DAH }, /* Q */
|
||||||
|
{ DI, DA, DIT, end }, /* R */
|
||||||
|
{ DI, DI, DIT, end }, /* S */
|
||||||
|
{ DAH, end, end, end }, /* T */
|
||||||
|
{ DI, DI, DAH, end }, /* U */
|
||||||
|
{ DI, DI, DI, DAH }, /* V */
|
||||||
|
{ DI, DA, DAH, end }, /* W */
|
||||||
|
{ DA, DI, DI, DAH }, /* X */
|
||||||
|
{ DA, DI, DA, DAH }, /* Y */
|
||||||
|
{ DA, DA, DI, DIT } /* Z */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
FGMorse::FGMorse() {
|
FGMorse::FGMorse() {
|
||||||
}
|
}
|
|
@ -91,6 +91,7 @@ static const char end = '0';
|
||||||
|
|
||||||
static const int BYTES_PER_SECOND = 8000;
|
static const int BYTES_PER_SECOND = 8000;
|
||||||
static const int BEAT_LENGTH = 240; // milleseconds (5 wpm)
|
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);
|
static const int TRANSITION_BYTES = (int)(0.005 * BYTES_PER_SECOND);
|
||||||
static const int COUNT_SIZE = BYTES_PER_SECOND * BEAT_LENGTH / 1000;
|
static const int COUNT_SIZE = BYTES_PER_SECOND * BEAT_LENGTH / 1000;
|
||||||
static const int DIT_SIZE = 2 * COUNT_SIZE; // 2 counts
|
static const int DIT_SIZE = 2 * COUNT_SIZE; // 2 counts
|
||||||
|
@ -98,35 +99,6 @@ static const int DAH_SIZE = 4 * COUNT_SIZE; // 4 counts
|
||||||
static const int SPACE_SIZE = 3 * COUNT_SIZE; // 3 counts
|
static const int SPACE_SIZE = 3 * COUNT_SIZE; // 3 counts
|
||||||
static const int FREQUENCY = 1020; // AIM 1-1-7 (f) specified in Hz
|
static const int FREQUENCY = 1020; // AIM 1-1-7 (f) specified in Hz
|
||||||
|
|
||||||
static char alphabet[26][4] = {
|
|
||||||
{ DI, DAH, end, end }, /* A */
|
|
||||||
{ DA, DI, DI, DIT }, /* B */
|
|
||||||
{ DA, DI, DA, DIT }, /* C */
|
|
||||||
{ DA, DI, DIT, end }, /* D */
|
|
||||||
{ DIT, end, end, end }, /* E */
|
|
||||||
{ DI, DI, DA, DIT }, /* F */
|
|
||||||
{ DA, DA, DIT, end }, /* G */
|
|
||||||
{ DI, DI, DI, DIT }, /* H */
|
|
||||||
{ DI, DIT, end, end }, /* I */
|
|
||||||
{ DI, DA, DA, DAH }, /* J */
|
|
||||||
{ DA, DI, DAH, end }, /* K */
|
|
||||||
{ DI, DA, DI, DIT }, /* L */
|
|
||||||
{ DA, DAH, end, end }, /* M */
|
|
||||||
{ DA, DIT, end, end }, /* N */
|
|
||||||
{ DA, DA, DAH, end }, /* O */
|
|
||||||
{ DI, DA, DA, DIT }, /* P */
|
|
||||||
{ DA, DA, DI, DAH }, /* Q */
|
|
||||||
{ DI, DA, DIT, end }, /* R */
|
|
||||||
{ DI, DI, DIT, end }, /* S */
|
|
||||||
{ DAH, end, end, end }, /* T */
|
|
||||||
{ DI, DI, DAH, end }, /* U */
|
|
||||||
{ DI, DI, DI, DAH }, /* V */
|
|
||||||
{ DI, DA, DAH, end }, /* W */
|
|
||||||
{ DA, DI, DI, DAH }, /* X */
|
|
||||||
{ DA, DI, DA, DAH }, /* Y */
|
|
||||||
{ DA, DA, DI, DIT } /* Z */
|
|
||||||
};
|
|
||||||
|
|
||||||
// manages everything we need to know for an individual sound sample
|
// manages everything we need to know for an individual sound sample
|
||||||
class FGMorse {
|
class FGMorse {
|
||||||
|
|
|
@ -27,7 +27,8 @@
|
||||||
#include <simgear/debug/logstream.hxx>
|
#include <simgear/debug/logstream.hxx>
|
||||||
#include <simgear/misc/fgpath.hxx>
|
#include <simgear/misc/fgpath.hxx>
|
||||||
|
|
||||||
#include "globals.hxx"
|
#include <Main/globals.hxx>
|
||||||
|
|
||||||
#include "soundmgr.hxx"
|
#include "soundmgr.hxx"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue