Reakcje na uderzenie basu - BASS.DLL jak wykonać?

0

Witam!

Chciałbym, aby mój program reagował na basy w odtwarzanym strumieniu (wyświetlenie odpowiedniej treści w labelu).
Chodzi o uderzenia basu.
Korzystam z biblioteki BASS.DLL.

Wie ktoś może jak się z tym uporać?

Proszę o pomoc.

0
struct TSoundFile {
HSAMPLE 	SNDHandle;
DWORD 		TWaveData[2049];
float 		Data[513];
t3dpoint 	soundpos;
AnsiString 	FileName;
float Beat;
float max;
bool Loaded;


bool global;
//-----------------------------------------------------recording routine--------
TWaveHeader		RECORD_HEADER;
TMemoryStream * RECORD_STREAM;
HRECORD 		rchan;	// recording channel
HSTREAM  		chan;	// playback channel

void init_recording_stream();
//-----------------------------------------------------recording routine--------
void Start_RECORDING();
void getinfoWAV(int od, int zakres);
void getinfoRECWAV(int od, int zakres);
void LoadFromFile(AnsiString filename);
void play3Rwave();
void stop();
};





void TSoundFile::LoadFromFile(AnsiString filename)
{
if (Loaded == true) BASS_StreamFree(SNDHandle);
FileName = filename;
   if (FileExists(filename) == false)	  {Loaded = false; return; }
SNDHandle =  BASS_StreamCreateFile(FALSE, FileName.c_str(), 0, 0, BASS_SAMPLE_FX);
Loaded = true;
}


void TSoundFile::getinfoWAV(int od, int zakres)
{
int i;
float suma;

if ( (zakres < 0) || (zakres > 512) ) return;
// if BASS_ChannelIsActive(wav.handle) <> BASS_ACTIVE_PLAYING then begin result := 0; Exit; end;
BASS_ChannelGetData(SNDHandle, Data, BASS_DATA_FFT1024);



max = 0.0f;  suma = 0.0f;

for (i = od; i <= zakres; i++) {

if (Data[i] > max)  max = Data[i];
suma = suma + Data[i];
								}


Beat     = suma;
}

pierwsze wartosci odczytane z data to bas jak pamietam zobacz se w winampie czy jak jest bas to po lewej skacza kreski w gore

1 użytkowników online, w tym zalogowanych: 0, gości: 1