![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Подскажите как используя BASS, можно сделать чтоб воспроизведение песни начиналось из случайного места, исключая первые 20 секунд песни и последние 20 секунд.
|
#2
|
||||
|
||||
![]() Использовать команды:
Код:
BASS_ChannelSetPosition BASS_ChannelPlay Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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)); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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
|
||||
|
||||
![]() Совсем чего то затупил я.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 24.11.2011 в 23:44. |
#7
|
|||
|
|||
![]() Почему смесь ? Вроде все нормально, длину ChannelGetLength получаем в байтах, и в Min хранятся байты, поскольку ChannelSeconds2Bytes вроде возвращает байты...
|
#8
|
||||
|
||||
![]() Точно, это я зевнул.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |