ПрограммированиеФорумЗвук

Вопросы по использованию библиотеки BASS

#0
11:22, 13 дек 2015

Собственно, столкнулся со следующим. Нужно ПОСЛЕДОВАТЕЛЬНО проиграть несколько небольших звуковых файлов. Изначально я их загружаю и храню в массиве сэмплов
  arsmp:= BASS_SampleLoad(FALSE, PChar(FileNameI), 0, 0, 1, BASS_SAMPLE_OVER_POS);

В ходе работы задаю канал воспроизведения для первого сэмпла
chan:= BASS_SampleGetChannel(arsmp[0], False);

устанавливаю синхронизатор на данный канал
BASS_ChannelSetSync(chan, BASS_SYNC_END or BASS_SYNC_MIXTIME, 0, SyncProc, nil);

и проигрываю его
BASS_ChannelPlay(chan, FALSE);

Однако синхронизации по завершению проигрывания данного канала не происходит. Если заменить массив сэмплов (samples) на массив потоков (streams), то все прекрасно работает. Очевидно, что синхронизируемый канал в первом случае отличается от второго, но чем? Если атрибутами, то какими? Впервые работаю с библиотекой, изучение коплектной справки по BASS не внесло ясности.
Дополнительный вопрос: корректно ли хранить множество мелких файлов в виде потоков. Насколько это накладнее по сравнению с массивом сэмплов.

#1
21:41, 19 янв 2016

Судя по доке синхронизация работает только для "MOD music, stream or recording channel", так что придется использовать потоки (streams). Разница в том, что семплы сразу загружаются в память, а поток грузит файл порциями, что позволяет, например, проигрывать большие файлы. Я не знаю, конечно, их реализации, но возможно маленькие файлы в потоке сразу попадают в память и разницу вы не почувствуете.

ПрограммированиеФорумЗвук

Тема в архиве.