Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Автопоиск петли в треках (http://zx-pk.ru/showthread.php?t=11448)

newart 3rd December 2009 00:03

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

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

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

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

Vitamin 3rd December 2009 02: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 3rd December 2009 02:31

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

Vitamin 3rd December 2009 10:18

Quote:

Originally Posted by newart (Post 237485)
Надо учитывать что начало трека может далее не повторяться, то есть музон может быть зациклен не на начало...

Тогда как-то так:

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 3rd December 2009 14:09

Quote:

Originally Posted by Vitamin (Post 237528)
Кстати о птичках. Каким образом в формате .AY хранится дамп регистров? Или используется AMAD-формат?

А он и не хранится.

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

Vitamin 3rd December 2009 14:19

Quote:

Originally Posted by newart (Post 237579)
А он и не хранится.

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

А не проще было все в PSG хранить?

newart 3rd December 2009 15:09

Quote:

Originally Posted by Vitamin (Post 237581)
А не проще было все в PSG хранить?

Это вопрос к создателям .AY и тем кто дергал и сохранял музыку в этом формате.

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

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

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

Vitamin 3rd December 2009 15:25

Quote:

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

В каком формате дамп?

Quote:

Originally Posted by newart (Post 237587)
Занимает много места, при записе неизбежны паузы в начале или обрезнное начало, определять на слух окончание трека тоже не понятно как , не поддеживает семплы и бипер и т.д.

Зато анализируется на ура и прост для рендера.

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

Quote:

Originally Posted by newart (Post 237587)
Кстати, ZXTune поддерживает .AY?

Пока нет. Я его потихоньку практически заново пишу.

newart 3rd December 2009 15:45

Quote:

Originally Posted by Vitamin (Post 237592)
Пока нет. Я его потихоньку практически заново пишу.

Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.

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

Quote:

Originally Posted by Vitamin (Post 237592)
В каком формате дамп?

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

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

Vitamin 3rd December 2009 15:47

Quote:

Originally Posted by newart (Post 237595)
Сделай пожалуйста поддержку 128к, что бы наконец можно было играть Digital музоны.

Для AY?

Quote:

Originally Posted by newart (Post 237595)
16 байт, тут вроде без вариантов.

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

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


All times are GMT +4. The time now is 21:01.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.