![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Структура файлов караоке - kar. Или как извлеч текст [D7, XP]
worldmen © (2010-06-08 13:08:00)Нашел струкруру kar файла:
KAR files are based on standard Midi files with the following additional events:
The KAR text meta events start with an @ followed by a character indicating the type of KAR text meta event, then followed by text for that event. The following text meta events occur embedded in regular MIDI text events:
FileType: @KMIDI KARAOKE FILE
Version: @V0100
Information: @I<text>
Language: @LENGL
Title 1: @T<title>
Title 2: @T<author>
Title 3: @T<copyright>
The following lyric text indicators are defined. A \ (backslash) in the text is to clear the screen. A / (forwardslash) in the text is a line feed (next line).
Только я это описание немойму. Как текст вытащить?
worldmen (2010-06-09 23:04:00) [21]Я разобрался!
Только вопрос по размерам. Есть запись:
MtrK 00 00 03 CB
Так вот 4 байта - 00 00 03 CB - составляют размер последующей записи. Как их переводить, по отдельности или вместе.
По отдельности 03 = 3, СВ= 203
или 03СВ = 971 ?
worldmen (2010-06-09 19:21:00) [22]> RWolf ©
> то есть число, равное количеству байтов в данной записи
Так это именно в данной записи. Или это для всех записей одинаково?
> Это мета-событие
Я уже целый день долбаюсь, не пойму как это мета-событие искать.
RWolf (2010-06-09 12:51:00) [23]
> Я не понимаю как его найти. Нужно искать идентификатор text?
> Или как?
Трек секвенсора содержит последовательность событий.
Текст
FF 01 len text
Это мета- событиесодержит любой объем текста любого назначения. Значение len содержит длинутекстового сообщения в байтах... Отметим, что величина len представляется в виде значения переменной длины.
Очевидно, нужно прочесть из трека все события и выбрать из них те, которые текст.
RWolf (2010-06-09 12:41:00) [24]
> А дальше я непонял сколько занимает байт сама музыка.
MTrk запись содержит в себе MIDI данные... Заголовок записи MTrk начинается с идентификатора записи, который представляет собой четыре ascii байта 'M', 'T', 'r', 'k', за которым следует значение длины записи, то есть число, равное количеству байтовв данной записи
worldmen (2010-06-09 11:31:00) [25]Читаю про формат MIDI - http://ru.wikipedia.org/wiki/MIDI
Получается выводить заголовки MTrkи MThd. А дальше я непонял сколько занимает байт сама музыка.
И для того, чтобы вывести текст, нужно найти:
Слова
FF 05 len text
Текстовое мета-событие, содержащее слова вокального произведения, приходящиеся на ту или иную музыкальную долю. Одно мета-событие «Слова» должно содержать один единственный слог текста.
Отметим, что величина len представляется в виде значения переменной длины.
Я не понимаю как его найти. Нужно искать идентификатор text? Или как?
RWolf (2010-06-08 14:41:00) [26]у файла MIDI есть формат, а у формата — спецификация. Вот с её чтения и надо начинать. Тогда станет ясно, что такое MIDI text events, и как их добывать из файла.
google:midi format
worldmen (2010-06-08 13:45:00) [27]Надо ведь знать с какого бита начинается эти заголовки. Или пупо считывать данные пока ненайдеш @Iи до @LENGL?
RWolf (2010-06-08 13:14:00) [28]отыскать в MIDI текстовые события и отфильтровать из них помеченные вышеприведёнными тэгами.