PDA

Просмотр полной версии : Автопоиск петли в треках



newart
02.12.2009, 23:03
Есть множество .AY файлов, где длительность трека проставлена от балды и ровняется 5 минутам.

Хочу обрезать лишее, в случае джинглов всё просто.

А вот у полноценных зацикленных треков надо отловить место когда начинается повтор.

Как это можно сделать? (оперируя полным дампом регистров) :v2_conf2:

Vitamin
03.12.2009, 01:04
Навскидку:

LEN- длина дампа (полного, а не только изменения)
MIN_LEN- минимальная длина трека (лучше в % от LEN)
DATA- исходный массив данных
DATA[a..b] - подмассив от a до b.

for i = (LEN-MIN_LEN)..1 #size of tail
for j = MIN_LEN..(LEN-i) #size of head
if (equal(DATA[0..j], DATA[i..LEN]) exit;#DATA[0..(i-1)] - original track

хотя квадратичная сложность- не комильфо...

newart
03.12.2009, 01:31
Надо учитывать что начало трека может далее не повторяться, то есть музон может быть зациклен не на начало...

Vitamin
03.12.2009, 09:18
Надо учитывать что начало трека может далее не повторяться, то есть музон может быть зациклен не на начало...
Тогда как-то так:

for i = 1..(LEN-MIN_LEN)#size of tail
for j = 1..(LEN-j)#check window
if (equal(DATA[(LEN-i-j)..(LEN-i)], DATA[(LEN-i)..LEN])
result=LEN-i

После всех проходов в result будет минимальная длина трека. Если подумать, то можно сделать отсечение циклов раньше- иначе очень тормозно будет.

---------- Post added at 09:18 ---------- Previous post was at 08:17 ----------

Кстати о птичках. Каким образом в формате .AY хранится дамп регистров? Или используется AMAD-формат?

newart
03.12.2009, 13:09
Кстати о птичках. Каким образом в формате .AY хранится дамп регистров? Или используется AMAD-формат?
А он и не хранится.

Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.

Vitamin
03.12.2009, 13:19
А он и не хранится.

Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.
А не проще было все в PSG хранить?

newart
03.12.2009, 14:09
А не проще было все в PSG хранить?
Это вопрос к создателям .AY и тем кто дергал и сохранял музыку в этом формате.

Вообще PSG для хранения игровых треков не очень подходит.
Занимает много места, при записе неизбежны паузы в начале или обрезнное начало, определять на слух окончание трека тоже не понятно как , не поддеживает семплы и бипер и т.д.

---------- Post added at 14:09 ---------- Previous post was at 14:07 ----------

Кстати, ZXTune поддерживает .AY?

Vitamin
03.12.2009, 14:25
Софтинка будет грузить AY, разрезать его на subtunes, рендерить в дамп регистров (через AYFLY.DLL), вычислять длинну трека и потом прописывать ее обратно в AY файлы.
В каком формате дамп?


Занимает много места, при записе неизбежны паузы в начале или обрезнное начало, определять на слух окончание трека тоже не понятно как , не поддеживает семплы и бипер и т.д.
Зато анализируется на ура и прост для рендера.

---------- Post added at 14:25 ---------- Previous post was at 14:24 ----------


Кстати, ZXTune поддерживает .AY?
Пока нет. Я его потихоньку практически заново пишу.

newart
03.12.2009, 14:45
Пока нет. Я его потихоньку практически заново пишу.
Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.

---------- Post added at 14:45 ---------- Previous post was at 14:42 ----------


В каком формате дамп?
16 байт, тут вроде без вариантов.

Файлов не много, так что производительность обработки мне не важна.

Vitamin
03.12.2009, 14:47
Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.
Для AY?


16 байт, тут вроде без вариантов.

Файлов не много, так что производительность обработки мне не важна.
Примеров можешь дать? И что требуется на выходе. Есть кое-какие идейки...

newart
03.12.2009, 15:57
Для AY?
Ага. Я думаю. это проще чем напрямую поддержать форматы Digital Studio и DMM.

newart
03.12.2009, 16:05
Примеров можешь дать? И что требуется на выходе. Есть кое-какие идейки...
Примеров необрезанных AY?

Вот:

Vitamin
03.12.2009, 16:25
Примеров необрезанных AY?
Не, дампов.


Ага. Я думаю. это проще чем напрямую поддержать форматы Digital Studio и DMM.
При наличии спека на формат- нативные дигитальные музоны играются очень просто и приятно. AY формат достаточно сложен. Хотя бы необходимостью эмулятора процессора.

newart
03.12.2009, 16:35
AY формат достаточно сложен. Хотя бы необходимостью эмулятора процессора.
Я бы с тобой согласился если бы не было 3 варианта уже написаных исходников проигрвания этого формата (AYFLY, AY Emul и что то буржуйское).

А про наличие спека, не понял что ты хотел сказать.

Vitamin
03.12.2009, 17:16
А про наличие спека, не понял что ты хотел сказать.
Наличие описания формата. Например, CHI достаточно детально описан, для PDT пришлось анализировать код трекера.

newart
03.12.2009, 23:22
Наличие описания формата. Например, CHI достаточно детально описан, для PDT пришлось анализировать код трекера.
Трекеров дигиатльных очень много, накладно каждый поддерживать, проще как я уже писал сделать 128к в .AY.