![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Подскажите как используя BASS, можно сделать чтоб воспроизведение песни начиналось из случайного места, исключая первые 20 секунд песни и последние 20 секунд.
|
|
#2
|
||||
|
||||
|
Использовать команды:
Код:
BASS_ChannelSetPosition BASS_ChannelPlay |
|
#3
|
|||
|
|||
|
Спасибо, подскажите еще как можно извлечь длину песни загруженной в канал, я так понимаю мы указываем длину ChannelSetPosition в байтах, как можно рассчитать необходимое кол-во байт для достижения определенного значения в секундах.
Сейчас использую такой код: Код:
m:=RandomRange(2000000, 30000000); BASS_ChannelSetPosition(ch, m, BASS_POS_BYTE); BASS_ChannelPlay(Ch, False); Последний раз редактировалось Petros9n, 24.11.2011 в 22:10. |
|
#4
|
||||
|
||||
|
Для указания позиции удобно использовать "связку" из команд:
Код:
BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, I), BASS_POS_BYTE); Размер композиции в секундах: Код:
BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel, BASS_POS_BYTE)); |
|
#5
|
||||
|
||||
|
как-то так:
Код:
Min := BASS_ChannelSeconds2Bytes(Ch, 20); // 20 секунд в байтах Max := BASS_ChannelGetLength(Ch, BASS_POS_BYTE) - Min; // длина минус 20 секунд, в байтах BASS_ChannelSetPosition(Ch, RandomRange(Min, Max), BASS_POS_BYTE); |
|
#6
|
||||
|
||||
|
Совсем чего то затупил я.
Последний раз редактировалось angvelem, 24.11.2011 в 23:44. |
|
#7
|
|||
|
|||
|
Почему смесь ? Вроде все нормально, длину ChannelGetLength получаем в байтах, и в Min хранятся байты, поскольку ChannelSeconds2Bytes вроде возвращает байты...
|