2011-08-24 3 views
2

Привет друзья разработчики,BASS «Play» поток

У меня есть вопрос, я делаю съемку игру, но я не уверен, как реализовать, когда произойдет взрыв, потому что взрыв всегда одинаков звук может произойти за короткое время, т. е. звук не заканчивается и происходит другой взрыв. Мой вопрос: как «играть» более одного раза в одном потоке?

Спасибо!

ответ

0

Предполагая, что мы говорим об одном и том же Bass Audio API, перейдите в онлайн-документацию для BASS\Channels\Bass_ChannelPlay(). Вызовите Bass_ChannelPlay(), пропустив существующую ручку для взрыва и настройки restart до true - см. Документацию для получения дополнительной информации.

1

Вот очень простой пример:

int device = -1; // Default Sounddevice 
int freq = 44100; // Sample rate (Hz) 
HSTREAM streamHandle; // Handle for open stream 


/* Initialize output device */ 
BASS_Init(device, freq, 0, 0, NULL); 


/* Load your soundfile and play it */ 
streamHandle = BASS_StreamCreateFile(FALSE, "your_file.mp3", 0, 0, 0); 
BASS_ChannelPlay(streamHandle, FALSE); 


/* As very last, close Bass */ 
BASS_Free(); 

Хотя этот пример воспроизводит звуковой файл только один раз, вы можете создать новый обрабатывать каждый раз, когда вам нужен звук. Но BASS_Init() и BASS_Free() должны работать только один раз.

Другим решением является воспроизведение звука в качестве образца:

HSAMPLE streamHandle; // Handle for sample 
HCHANNEL channel; // Handle for open channel of the sample 


/* Initialize output device */ 
BASS_Init(device, freq, 0, 0, NULL); 


/* Load sample and play it */ 
streamHandle = BASS_SampleLoad(FALSE, "your_file.mp3", 0, 0, 0); 
channel = BASS_SampleGetChannel(streamHandle, FALSE); 


/* Once you are done with your sample you should free it */ 
BASS_SampleFree(streamHandle); 

/* As very last, close Bass */ 
BASS_Free();