Формат файлу MOD

MIDI добре підходить для зберігання музики, проте у нього є кілька недоліків Найбільш очевидний повязаний з тим, що цей формат спочатку розроблявся для узгодження різного музичного обладнання Синтезатори зазвичай дозволяють використовувати фіксований набір інструментів, і для кожного синтезатора він унікальний Навіть інструменти з однаковою назвою найчастіше звучать по-різному, так що багато файли MIDI можуть правильно відтворюватися тільки на деяких синтезаторах

Один із способів рішення даної проблеми використання семплів B такому випадку музичний файл містить двійкові записи нот, характерних для кожного інструменту Синтезатор використовує цю запис як шаблон, здійснюючи зсув по висоті для формування інших нот Даний підхід використовується файловим форматом MOD Ці файли, такожзвані модулями програвача (Player modules) аботрекерна модулями(Tracker modules), містять набір записаних звуків і нотну інформацію Оскільки в тіло кожного файлу поміщена запис звучання інструментів, файли MOD стають незалежними від можливостей синтезатора або звукової карти, тому повинні звучати однаково на всіх системах

Інша відмінність форматів MOD і MIDI полягає в тому, що файли MIDI єподієво-орієнтованими:в них зберігається послідовність подій і визначаються моменти їх виникнення Програвач MIDI зчитує з файлу чергова подія і чекає, поки не настане час його виникнення Файл MIDI може встановлювати будь-яку кількість початкових моментів звучання ноти, не визначаючи відповідних кінцевих моментів B таких файлах немає вбудованого обмеження на кількість паралельно звучних нот

Файли MOD, навпаки, розбиті на такти (Вони відрізняються від використовуваних в музичній нотації іноді, щоб підкреслити різницю, краще використовувати термінділення)Кожен такт відповідає деякому інтервалу часу і повністю описує події, що відбуваються протягом даного інтервалу Як наслідок, файли MOD, на відміну від MIDI, можуть відтворювати обмежене кількість паралельних нот Для музиканта це недолік, але програміст здатний використовувати обмеження, щоб зробити механізм відтворення більш надійним

Навіть 4-канальне обмеження для початкового формату MOD не така суворе, як може здатися Наприклад, якщо в композиції дуже часто використовуються фортепіанні акорди, розумно зберегти партію як один інструмент і відтворювати його, ніби це одна нота B якості аналогії наведу такий

інструмент General MIDI, як струнна секція Пізніші варіанти MOD

допускають використання 6, 8, 16 або навіть 32 каналів

Оскільки MOD розроблявся як спеціалізований формат, використовуваний однією програмою, різні програмісти створювали нові варіанти з безліччю незначних відмінностей Простого методу розпізнавання таких варіантів не існує, через що виникає плутанина це найбільший недостатокфайлов MOD Ми з вами поговоримо про поширене форматі ProTracker, відмінності між варіантами будуть відзначені особливо

Ідентифікація файлів MOD

Формат ProTracker популярна версія MOD містить 4-байтную сигнатуру, проте розміщує її не на початку файлу Інші варіанти MOD не тільки використовують інші сигнатури, але і розміщують їх у різних місцях файлу

Базовий 31-голосний формат ProTracker можна визначити за сигнатурі

MK, або M K, Яка слід задлінной заголовної інформацією

Лістинг 231 Ідентифікація файлу MOD

bool IsModFile(istream &ampfile) { fileseekg(20+30*31+1+1+128) char marker[4] fileread(marker,4)

if (memcmp(marker,&quotMK&quot,4)==0) return true if (memcmp(marker,&quotMK&quot,4)==0) return true return false

}

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*