#c# #midi
#c# #midi
Вопрос:
Мне нужно читать только текст песни из файла .kar.
Проблема в том, что в документации по стандарту MIDI и .kar отсутствует документация по этому поводу.
Я попытался открыть файл с помощью шестнадцатеричного редактора, но многого не понял.
Итак, мои вопросы:
- Каков формат файлов .kar-файлов?
- Как я могу извлечь текст песни из файлов .kar? Мне не нужно воспроизводить аудио.
Ответ №1:
Файл KAR — это обычный MIDI-файл (в частности, файл типа 1 с несколькими инструментами), за исключением того, что способ хранения текстов песен немного отличается от обычных MIDI-файлов. Прошло некоторое время с тех пор, как я работал с KAR, но в IIRC тексты песен хранятся как события метатекста (тип 0x01) вместо событий текста (тип 0x05). Тем не менее, KAR также использует текстовые события для заголовка / исполнителя / etc, хотя они обычно имеют префикс с символом «@».
Как отметил @Vilx, вы можете анализировать KAR так же, как и обычный MIDI, поэтому, когда вы делаете это, вы можете просто сбросить все мета-события, и вы увидите, как они создаются.
Ответ №2:
У меня нет ответа, но я могу указать вам направление, в котором я бы выбрал сам.
Формат MIDI-файла довольно хорошо стандартизирован и документирован. Википедия не дает на него ссылки, но я помню, как нашел его в сети добрых 10 лет назад (еще до появления Google!), Поэтому я не ожидаю, что у вас возникнут проблемы с его поиском сегодня.
Формат является «фрагментированным», что означает, что информация о караоке, скорее всего, хранится в специальном фрагменте. Остальное — обратный инжиниринг. Возьмите файл караоке (.kar, как я понимаю, это файл .mid с фрагментами текста), отбросьте известные фрагменты, и вы скоро найдете фрагменты текста. Содержащаяся там информация не должна быть слишком сложной для расшифровки.
Добавлено: также говорится, что KMid поддерживает их, поэтому его исходный код может пролить некоторый свет.
Ответ №3:
Вы можете использовать эту бесплатную библиотеку для .NET: NAudio