БАСС "Play" поток - PullRequest
       44

БАСС "Play" поток

3 голосов
/ 24 августа 2011

Привет друзья разработчики,

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2013

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

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();
0 голосов
/ 27 декабря 2011

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

...