Просмотр полной версии : Как управлять проигрыванием музыки?
Есть необходимость управлять плейером при проигрывании из своей программы. т.е. получать информацию о номере проигрываемого паттерна-позиции, в нужный момент подставлять нужный паттерн, зацикливать до окончания каког-либо процесса и т.п. Помниться раньше во многих демах это видел.
У кого есть какие соображения по этому поводу?
надо хакать конкретный плеер и патчить.
есть другой вариант: разложить на OUT'ы и зацикливать как угодно (хотя бы ту часть разложить, что надо циклить). но это тоже так или иначе хакинг и патчинг плеера.
Есть необходимость управлять плейером при проигрывании из своей программы. т.е. получать информацию о номере проигрываемого паттерна-позиции, в нужный момент подставлять нужный паттерн, зацикливать до окончания каког-либо процесса и т.п. Помниться раньше во многих демах это видел.
У кого есть какие соображения по этому поводу?
это сложно
можно просто цифры посчитать для разных моментов и их уже использовать
У кого есть какие соображения по этому поводу?
Берешь исходники плеера нужной версии, анализируешь, вставляешь нужный код. А потом играешь им откомпилированные музоны без плеера.
В некоторых плеерах данные не сразу отсылаются в регистры, а накапливаются в буфере, что дает дополнительное пространство для творчества:)
А я делал так:
1. Заводим счётчик (который тикает каждый фрейм, т.е. 1/50 секунды или как там схемотехника/эмуль построен)
2. Ловим нужный момент
3. Жестко давим плеер (ну скажем вместо CALL start+5 подпихиваем свой ADR)
4. Потихоньку разбираемся что к чему (программно, т.е. до этого нужно выяснить как плеер работает, конечно)
5. Возвращаем управление.
Изврат?
Ага!
Но работает!
:)
Из минусов - нужно знать ассемблер, не сильно крепко, но достат.кол.
Из плюсов: Ой как можно извращатся (правда это никому не упало, это только самому потешится)
P.S.S. А я тут про TS ещё увидел...
Там тоже непаханое поле экспериментов...
Хм... я думал есть готовое решение... Тогда надо будет ковырять. А плейер от Vortex - трекера естественно интересует)
Хм... я думал есть готовое решение...
Что ты подразумеваешь под "готовым решением"? Вкрячивание в стандартный плеер фич по продвинутому управлению треком в ущерб размеру/скорости работы? 99.99% пользователей плеера этого не оценят.
2jerri: Вот я и спрашиваю, может у кого есть уже правленные исходники.
Вкрячивание в стандартный плеер фич по продвинутому управлению треком в ущерб размеру/скорости работы? 99.99% пользователей плеера этого не оценят.
Блин, на этом форуме что не напиши, все в штыки. Я завел этот топик с одной целью, чтобы узнать, нет ли у народа готового исправленного плейера, ибо во многих демах это уже использовалось. Конечно я могу сейчас сесть, ковырять исходники, патчить-крячить, но зачем тратить время на изобретание велосипеда, если, возможно, уже есть готовое решение. Ну раз нет, извиняйте, топик можно закрыть...
Блин, на этом форуме что не напиши, все в штыки. Я завел этот топик с одной целью, чтобы узнать, нет ли у народа готового исправленного плейера, ибо во многих демах это уже использовалось. Конечно я могу сейчас сесть, ковырять исходники, патчить-крячить, но зачем тратить время на изобретание велосипеда, если, возможно, уже есть готовое решение. Ну раз нет, извиняйте, топик можно закрыть...
Не надо закрывать. Напишешь- выложи сюда:) Можно (нужно!) даже в первый пост.
паттерны не зацикливал, но в своих интрошках последних использовал получение текущиего паттерна или какой сэмпл на каком канале играет.
тупо беру бульбовский плеер в исходнике (который pt3/vt), там даже в него влазить не надо особо, всё можно получить из переменных плеера.
с ним есть один момент - если надо будет разделить плеер и переменные, надо чтоб переменные по круглому адресу лежали, иначе плеер глючить начинает.
какой сэмпл на каком канале играет
Подскажи где искать
Подскажи где искать
При входе в метку PD_SAM в аккумуляторе содержится номер семпла.
IX+12 соотвецно равна ChanA/ChanB/ChanC
Подскажи где искать
Может и балбес, но никогда не лазил в плеер. Просто делал задержки и всего делов. Ведь не сложно и просто. Да, согласен, что именно при воспроизведении чего-о надо сделать что-то. Но если посидеть и подобрать, то можно. Примитив, но просто.
to Vitamin: выложи сюда исходник плеера
---------- Post added at 05:06 ---------- Previous post was at 05:03 ----------
Примитив, но просто.
Долго. Особенно когда разный ритм, подобрать когда допустим мигнуть экраном
to Vitamin: выложи сюда исходник плеера
http://bulba.untergrund.net/PTxTools.7z
to Vitamin: Подскажи где искать номер позиции-патерна
to Vitamin: Подскажи где искать номер позиции-патерна
{CrPsPtr}-(ModAddr+200) - текущая позиция (из содержимого CrPsPtr отнять адрес компиляции плеера, увеличенный на 200)
Соответственно, {{CrPsPtr}} - текущий паттерн.
CrPsPtr DW 0 - тобишь там адрес памяти патерна а не номер?
CrPsPtr DW 0 - тобишь там адрес памяти патерна а не номер?
Там хранится адрес ячейки, в которой находится номер текущего паттерна. Например:
Positions db 4,3,2,3,255 ;список позиций, живет внутри модуля по смещению 200.
..
CrPsPtr dw Positions+1 ; Pos - 1, Pat = 3
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot