Rise
The Vieneo Province
Sound.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 
5 #include "bass.h" //c:\Source\BASS\c\ removed and added to the projects additional include dirs
6 #include "gui.h"
7 #include "Config/SoundConfig.h"
8 #include "GameState.h"
9 
11 {
12  int soundEnum;
13  float volume;
14  float delay;
15 };
16 
18 {
19  unsigned char array;
20  int vehicleId;
21  int soundEnum;
22 };
23 
24 enum SOUNDS // any changes to this must be done to the const char array below
25 {
29  SOUND_COCKPITLEVEL, // getting called too often
33 
34  SOUND_AURALUNITTESTA, // this is the first one
84  SOUND_AURALUNITOKAY, // this is the last one
85 
89 
90  SOUND_THUNDER, // start of thunder series
104  SOUND_THUNDER14, // end of thunder series
112 
113  SOUND_MOUSEOVER, // able to move over faster than # of instances
128  SOUND_HOLIDAYBELLS, // @todo could combine these two to just a holiday
130 
143 
144  SOUND_DOCKANNOUNCE1, // @todo only ever need to load CPOC or TAC...
158 
173 
176 
182 
183  // outside
230 
232 
235 
246 
250 
257 
270 
272 
274 };
275 
276 class Sound
277 {
278  GameClass* game = nullptr;
279 
280  const float minrate = 100, maxrate = 100000;
281 
282  HSTREAM radio = NULL;
283  HSTREAM comms = NULL;
284 
293 
296 
297  bool g_bRadioPlaying = false;
298  short oldstation = -1;
299  char oldtitle[99] = { 0 };
300  char metadata[999] = { 0 };
301  char stationIdentification = rand() % 3;
302 
303  int excludeFromGlobalAttenuate = -1; // could be ringing in ears, could be holiday effect
304  float globalAttenuate = 1.0f;
305  float gaTimer = 0.0f;
306  float gaTimeToFadeOut = 0.0f;
307  float gaTimeToHold = 0.0f;
308  float gaTimeToFadeIn = 0.0f;
309  float gaVolumeAdj = 0.0f;
310  float exTimeToFadeIn = 0.0f;
311  float exTimeToHold = 0.0f;
312  float exTimeToFadeOut = 0.0f;
313 
314  float oldvolume = 0.0f, oldFrequencyMod = 1.0f, oldPan = 0.0f;
315  float oldvolume2 = 0.0f, oldFrequencyMod2 = 1.0f, oldPan2 = 0.0f;
316  float headpan = 0.0f;
317 
318  std::vector<Sdelayedeffects> delayedeffects;
319  std::vector<Sloopingeffects> loopingeffects;
320 
321  void LoadSound(int soundEnum, SoundConfig* device = nullptr);
322  void Trace(const char* msg, Logger::Level severity = Logger::Level::Info) const;
323  void FrameMoveDelayedEffects(float elapsedTime);
324  void FrameMoveDopplerEffects(float elapsedTime);
325 
326  bool issuedWarning = false;
327 
328 public:
329  HSTREAM g_pSoundIntro = NULL;
330  HSYNC hsync = NULL;
331 
332  bool loopintro = true;
334  float musicleft = 0.0f, musicdone = 0.0f;
335  short station = 0;
336  std::vector<std::string> deviceNames;
337  std::vector<GUID> deviceGuids;
338 
339  Sound(GameClass* gameptr);
340 
341  void EnumDevices();
342  void Init();
343  void InitDevice(SoundConfig* deviceConfig);
344  void Close();
345  void PlayAudioData(unsigned char* data, size_t length);
346  void GlobalAttenuate(float prmGaTimeToFadeOut, float prmGaTimeToHold, float prmGaTimeToFadeIn, int soundEnum,
347  float prmExTimeToFadeIn, float prmExTimeToHold, float prmExTimeToFadeOut, float volumeAdj = 1.0f);
348  void ChangeVolume(SoundConfig* config, float modVolume);
349  void ChangeVolume(int soundEnum, float modVolume);
350  float Play(int soundEnum);
351  void Reset();
352  void PlayEx(int soundEnum, bool loop, float volume = 1.0f, float frequencyMod = 1.0f, float pan = 0.0f, bool restart = true);
353  void Stop(int soundEnum);
354  void AddLoopingVehicleSound(int soundEnum, unsigned char array);
355  void RemoveLoopingVehicleSound(int soundEnum, unsigned char array);
356  void LegacySoundRequestUniverse(SServerPacket datapacket);
357  void AddDelayedSound(int soundEnum, float delay, float volume = 1.0f);
358  void ChangeCockpit(bool force);
359  //static float GetProgress(HSTREAM stream);
360  void FrameMoveAAC();
361  void PrecipWindSoundBarrier(D3DXVECTOR3 relativewind, float elapsedTime);
362  void LoadSounds(short instage);
363  void ChangeVolume();
364  float GetLength(int soundEnum);
365  void LoadCockpitSound(int soundEnum, const char* path, bool force, SoundConfig* device = nullptr);
366  void FrameMove(float elapsedTime);
367  float GetAttenuation(bool applyDensity) const;
368 
369  static void CALLBACK AdvanceStage(HSYNC handle, DWORD channel, DWORD data, void* user);
370  static void CALLBACK MetaData(HSYNC handle, DWORD channel, DWORD data, void* user);
371 };
float oldPan
Definition: Sound.h:314
float musicdone
Definition: Sound.h:334
float gaTimer
Definition: Sound.h:305
float oldFrequencyMod2
Definition: Sound.h:315
float oldvolume
Definition: Sound.h:314
HCHANNEL sound_channel[SOUND_ENUMERATION]
Definition: Sound.h:286
int excludeFromGlobalAttenuate
Definition: Sound.h:303
char oldtitle[99]
Definition: Sound.h:299
Definition: Sound.h:276
float delay
Definition: Sound.h:14
void LoadCockpitSound(int soundEnum, const char *path, bool force, SoundConfig *device=nullptr)
Definition: Sound.cpp:983
float GetLength(int soundEnum)
Definition: Sound.cpp:572
float headpan
Definition: Sound.h:316
float gaTimeToHold
Definition: Sound.h:307
void EnumDevices()
Definition: Sound.cpp:218
GameClass * game
Definition: Sound.h:278
char currentRadioDevice
Definition: Sound.h:295
std::vector< GUID > deviceGuids
Definition: Sound.h:337
HSTREAM g_pSoundIntro
Definition: Sound.h:329
short station
Definition: Sound.h:335
float volume
Definition: Sound.h:13
float gaTimeToFadeIn
Definition: Sound.h:308
std::vector< Sdelayedeffects > delayedeffects
Definition: Sound.h:318
SoundConfig * sound_config[SOUND_ENUMERATION]
Definition: Sound.h:290
float oldPan2
Definition: Sound.h:315
bool g_bRadioPlaying
Definition: Sound.h:297
void FrameMoveDopplerEffects(float elapsedTime)
Definition: Sound.cpp:1531
void InitDevice(SoundConfig *deviceConfig)
Definition: Sound.cpp:274
float exTimeToFadeOut
Definition: Sound.h:312
Sound(GameClass *gameptr)
Definition: Sound.cpp:204
char currentSoundDevice
Definition: Sound.h:294
static char * sound_path[SOUND_ENUMERATION]
Definition: Sound.h:291
void Close()
Definition: Sound.cpp:375
void ChangeCockpit(bool force)
Definition: Sound.cpp:1977
const float maxrate
Definition: Sound.h:280
void PlayAudioData(unsigned char *data, size_t length)
Definition: Sound.cpp:402
std::vector< std::string > deviceNames
Definition: Sound.h:336
float oldvolume2
Definition: Sound.h:315
void LegacySoundRequestUniverse(SServerPacket datapacket)
Definition: Sound.cpp:1133
bool loopintro
Definition: Sound.h:332
unsigned char array
Definition: Sound.h:19
HSTREAM radio
Definition: Sound.h:282
float exTimeToFadeIn
Definition: Sound.h:310
void PrecipWindSoundBarrier(D3DXVECTOR3 relativewind, float elapsedTime)
Definition: Sound.cpp:1764
void AddLoopingVehicleSound(int soundEnum, unsigned char array)
Definition: Sound.cpp:1954
void LoadSound(int soundEnum, SoundConfig *device=nullptr)
Definition: Sound.cpp:911
void Reset()
Definition: Sound.cpp:583
static void CALLBACK AdvanceStage(HSYNC handle, DWORD channel, DWORD data, void *user)
Definition: Sound.cpp:797
float sound_rate[SOUND_ENUMERATION]
Definition: Sound.h:288
void ChangeVolume()
Definition: Sound.cpp:564
void AddDelayedSound(int soundEnum, float delay, float volume=1.0f)
Definition: Sound.cpp:1927
HSYNC hsync
Definition: Sound.h:330
SOUNDS
Definition: Sound.h:24
std::vector< Sloopingeffects > loopingeffects
Definition: Sound.h:319
void FrameMove(float elapsedTime)
Definition: Sound.cpp:1053
float GetAttenuation(bool applyDensity) const
Definition: Sound.cpp:1062
char metadata[999]
Definition: Sound.h:300
void GlobalAttenuate(float prmGaTimeToFadeOut, float prmGaTimeToHold, float prmGaTimeToFadeIn, int soundEnum, float prmExTimeToFadeIn, float prmExTimeToHold, float prmExTimeToFadeOut, float volumeAdj=1.0f)
Definition: Sound.cpp:489
int vehicleId
Definition: Sound.h:20
HSTREAM comms
Definition: Sound.h:283
void Trace(const char *msg, Logger::Level severity=Logger::Level::Info) const
Definition: Sound.cpp:395
int soundEnum
Definition: Sound.h:21
float gaVolumeAdj
Definition: Sound.h:309
float Play(int soundEnum)
Definition: Sound.cpp:577
float oldFrequencyMod
Definition: Sound.h:314
HSAMPLE sound_sample[SOUND_ENUMERATION]
Definition: Sound.h:285
float gaTimeToFadeOut
Definition: Sound.h:306
bool issuedWarning
Definition: Sound.h:326
char stationIdentification
Definition: Sound.h:301
float sound_volume[SOUND_ENUMERATION]
Definition: Sound.h:292
int soundEnum
Definition: Sound.h:12
float globalAttenuate
Definition: Sound.h:304
float sound_length[SOUND_ENUMERATION]
Definition: Sound.h:287
const float minrate
Definition: Sound.h:280
void FrameMoveDelayedEffects(float elapsedTime)
Definition: Sound.cpp:1372
void Stop(int soundEnum)
Definition: Sound.cpp:1946
Level
Definition: Logger.h:19
GameState musicstage
Definition: Sound.h:333
void PlayEx(int soundEnum, bool loop, float volume=1.0f, float frequencyMod=1.0f, float pan=0.0f, bool restart=true)
Definition: Sound.cpp:606
void RemoveLoopingVehicleSound(int soundEnum, unsigned char array)
Definition: Sound.cpp:1964
float musicleft
Definition: Sound.h:334
float exTimeToHold
Definition: Sound.h:311
short oldstation
Definition: Sound.h:298
char sound_device[SOUND_ENUMERATION]
Definition: Sound.h:289
void LoadSounds(short instage)
Definition: Sound.cpp:1073
void Init()
Definition: Sound.cpp:248
void FrameMoveAAC()
Definition: Sound.cpp:1285
GameState
Definition: GameState.h:3
static void CALLBACK MetaData(HSYNC handle, DWORD channel, DWORD data, void *user)
Definition: Sound.cpp:756