16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 04:19:19 +02:00
Files
maszyna/RealSound.h
2015-04-03 13:34:06 +00:00

67 lines
2.6 KiB
C++

//---------------------------------------------------------------------------
#ifndef RealSoundH
#define RealSoundH
#include "Sound.h"
#include "Geometry.h"
class TRealSound
{
protected:
PSound pSound;
char* Nazwa; //dla celow odwszawiania
double fDistance,fPreviousDistance; //dla liczenia Dopplera
float fFrequency; //częstotliwość samplowania pliku
int iDoppler; //Ra 2014-07: możliwość wyłączenia efektu Dopplera np. dla śpiewu ptaków
public:
vector3 vSoundPosition; //polozenie zrodla dzwieku
double dSoundAtt; //odleglosc polowicznego zaniku dzwieku
double AM; //mnoznik amplitudy
double AA; //offset amplitudy
double FM; //mnoznik czestotliwosci
double FA; //offset czestotliwosci
bool bLoopPlay; //czy zapętlony dźwięk jest odtwarzany
__fastcall TRealSound();
__fastcall ~TRealSound();
void __fastcall Free();
void __fastcall Init(char *SoundName,double SoundAttenuation,double X,double Y,double Z,bool Dynamic,bool freqmod=false,double rmin=0.0);
double __fastcall ListenerDistance(vector3 ListenerPosition);
void __fastcall Play(double Volume,int Looping,bool ListenerInside,vector3 NewPosition);
void __fastcall Start();
void __fastcall Stop();
void __fastcall AdjFreq(double Freq,double dt);
void __fastcall SetPan(int Pan);
double GetWaveTime(); //McZapkie TODO: dorobic dla roznych bps
int GetStatus();
void __fastcall ResetPosition();
//void __fastcall FreqReset(float f=22050.0) {fFrequency=f;};
};
class TTextSound : public TRealSound
{//dźwięk ze stenogramem
AnsiString asText;
float fTime; //czas trwania
public:
void __fastcall Init(char *SoundName,double SoundAttenuation,double X,double Y,double Z,bool Dynamic,bool freqmod=false,double rmin=0.0);
void __fastcall Play(double Volume,int Looping,bool ListenerInside,vector3 NewPosition);
};
class TSynthSound
{//klasa generująca sygnał odjazdu (Rp12, Rp13), potem rozbudować o pracę manewrowego...
int iIndex[44]; //indeksy początkowe, gdy mamy kilka wariantów dźwięków składowych
//0..9 - cyfry 0..9
//10..19 - liczby 10..19
//21..29 - dziesiątki (*21==*10?)
//31..39 - setki 100,200,...,800,900
//40 - "tysiąc"
//41 - "tysiące"
//42 - indeksy początkowe dla "odjazd"
//43 - indeksy początkowe dla "gotów"
PSound *sSound; //posortowana tablica dźwięków, rozmiar zależny od liczby znalezionych plików
//a może zamiast wielu plików/dźwięków zrobić jeden połączony plik i posługiwać się czasem od..do?
};
//---------------------------------------------------------------------------
#endif