Файлове с формата Downloadable Sounds (DLS) съдържат семпли за аудио данни и информация за това, как тези семпли трябва да се свирят. По-точно, файловете DLS съдържат семпли Wave за различни ноти на различни инструменти (пиано, китара, т.н.). Тези семпли уейв са създадени за да се използват от синтезатори MIDI при синтезирането на звук за съобщения MIDI.
Например, ако един синтезатор MIDI, който използва файла DLS, получи едно съобщение свири нотата в MIDI, което казва, че синтезатора трябва да свири нотата До на пиано, синтезаторът ще намери парчето уейв за нотата До на пиано във файла DLS и ще го изсвири.
Следното са интересни аспекти на формата на файлове DLS.
- Един файл DLS не съдържа непременно отделни семпли за всички ноти на всички инструменти. Един от тези семпли може да се транспонира за да свири различни ноти. Файлът DLS определя кой от семплите може да се използва за кои от нотите.
- Семплите уейв са във формата на файловете Wave, но не са непременно създадени за да се свирят от начало до край. Ако определената нота, която се свири, трябва да се задържи, файлът DLS може да определи коя част от данните за аудио трябва да се повтаря за да се получи задържането.
- Към семплите уейв се пази и информация за това, как тези семпли трябва да се свирят. Това може да включва каква част от данните за аудио трябва да се повторят за да се получи задържането, както е обяснено по-горе. Това може също да включва информация за това, колко бързо амплитудата на нотата трябва да се увеличи или да затихне, дали трябва да има колебания в тоналността или амплитудата и други.
Основни парчета в DLS
Файлът DLS разширява структурата на файловете Resource Interchange File Format (RIFF) и следователно данните са организирани в парчета. Всяко парче съдържа информация за своя вид и размер и може лесно да се пренебрегне от софтуер, който не разбира вида на някакво парче.
Следното са основните парчета, които могат да са част от един файл DLS (т.е., парчета, които не са под-парчета на някакви други парчета).
Заглавие на сбирката
Условие
DLS ID
Сбирка от инструменти
Поредица от информация (виж Парче поредица (на файл RIFF))
Таблица на сбирката
Версия
Поредица за сбирката wave
Някои от тези парчета могат да съществуват и като под-парчета на други парчета. Парчето DLS ID например е просто една глобално уникална идентификация. Тя може да е глобално идентификация на файла DLS, ако е едно от парчетата на самия файл или пък може да е глобално уникална идентификация на някое друго парче или под-парче, ако е негово под-парче.
Други парчета DLS
Следното са други парчета, които могат да съществуват в един файл DLS, като под-парчета на горните парчета или като под-парчета на други под-парчета.
Артикулация
Поредица от артикулации
Хедър на инструмента
Инструмент
Район
Хедър на района
Поредица от райони
Връзка към wave
Поредица wave
Wave sample
Парчето поредица wave съдържа самите данни за аудио wave. Това е една поредица (парче LIST) от вид "wave", което е специфично за формата на файловете DLS. Под-парчетата на това парче обаче могат да са парчета, определени от формата на файловете Wave. Обикновено, това парче ще съдържа поне следните две парчета от формата Wave.
Използването на парчета поредица (LIST) във формата DLS
Файловете DLS използват парчетата поредица доста често. Парчетата инструмент, информация и поредица сбирки wave са парчета с идентификацията "LIST", но с различни под-идентификации.
Някои от най-горните парчета съдържат под-парчета, които също са парчета LIST и някои от под-парчетата на тези под-парчета също могат да бъдат парчета LIST. Например:
- Поредицата от инструменти е парче LIST. Съдържа списъка с инструменти, които могат да се свирят, когато се ползва файла DLS.
- Самите инструменти са парчета LIST. Те съдържат информация за инструмента, а и за нотите, които инструмента може да свири и как тези ноти трябва да се свирят.
- Едно от под-парчетата на всеки инструмент е поредица от райони. Поредицата от райони е парче LIST. Един район е интервал от ноти, които могат да се изсвирят с един и същи от семплите.
- Самият район е парче LIST. Сочи към един от семплите уейв и съдържа информация за това, как този уейв трябва да се свири (артикулация).
- Информацията за артикулацията също е парче LIST. Съдържа отделни парчета информация за артикулацията. Всяко отделно парче за артикулацията съдържа различна информация (например, скоростта на затихване на нотата).
С изключение на парчето LIST от вид INFO, което е част от определенията на формата RIFF, останалите парчета LIST в DLS се определят от формата на файловете DLS. Това включва поредицата от инструменти, инструментите, районите, артикулацията и така нататък.
Структура на файла DLS
Файловете DLS започват със следното.
Описание на поредицата от байтове | Дължина в байтове | Започва с байт | Стойност |
идентификацията RIFF | 4 | 0x00 | Поредицата от ASCII символи "RIFF" |
размер | 4 | 0x04 | Размера на файла DLS (брой байтове) минус 8 (минус размера на "RIFF" и на "размера") |
идентификация на вида RIFF | 4 | 0x08 | Поредицата от ASCII символи "DLS " (с празното пространство) |
парчета DLS | различни | 0x0C | Различни парчета. Една примерна структура е по-долу |
Следното е структурата на един примерен файл DLS. Това е само пример и не всички файлове DLS имат точно тази съща структура.
- Парче заглавие на сбирката
- Парче версия
- Парче поредица от инструменти
- Парче инструмент
- Парче DLS ID
- Парче хедър на инструмента
- Парче поредица от артикулации
- Парче артикулация
- Парче артикулация
- …
- Парче поредица от райони
- Парче район
- Парче хедър на района
- Парче връзка към wave
- Парче wave sample
- Поредица от артикулации
- Парче артикулация
- Парче артикулация
- …
- Парче район
- Парче хедър на района
- Парче връзка към wave
- Парче wave sample
- Поредица от артикулации
- Парче артикулация
- Парче артикулация
- …
- …
- Парче инструмент
- …
- Парче таблица на сбирката
- Поредица за сбирката wave
- Парче поредица wave
- Парче DLS ID
- Парче формат (формата на файла wave)
- Парче данни (данните на файла wave)
- Парче wave sample
- Парче поредица wave
- Парче DLS ID
- Парче формат (формата на файла wave)
- Парче данни (данните на файла wave)
- Парче wave sample
- …
В този файл:
- Парчето хедър на сбирката определя броят на инструментите във файла DLS.
- Парчето версия определя версията на файла DLS.
- Парчето поредица от инструменти изрежда инструментите.
- Парчето DLS ID съдържа една глобално уникална идентификация за инструмента.
- Парчето хедър на инструмента определя броя на райони, банката MIDI и номера на инструмента за съответния инструмент.
- Поредицата от артикулации изрежда артикулациите.
- Всяка артикулация съдържа нещо за това, как инструмента трябва да се свири (например, колко бързо нотите трябва да затихват или на какво ниво на амплитудата нотите трябва да се задържат).
- Поредицата от райони изрежда районите.
- Всеки район съдържа информация за това, кой от семплите уейв трябва да свири кои ноти.
- Хедъра на района съдържа групите от ноти и групите от скорости, които се покриват от района (а и друга информация).
- Парчето връзка към уейв определя номера на знака за встъпване в таблицата за сбирката, който сочи към един от семплите уейв (а и друга информация).
- Парчето wave sample описва коя нота този уейв ще свири, ако не е транспониран, дали този уейв трябва да бъде настроен, дали уейвът може да се свири от начало докрай или някаква част трябва да се повтори и друга информация.
- Поредицата от артикулации изрежда артикулациите. Тези са подобни на артикулациите за инструментите. Една поредица от артикулации може да е част от парчето инструмент и да съдържа информация за това, как инструмента ще свири всички ноти или може да е част от парчето район и да съдържа информация за това, как определени ноти ще се свирят на определения инструмент.
- Парчето таблица на сбирката съдържа знакове за встъпване, които описват къде се намират семплите уейв в поредицата за сбирката уейв. Това са знаковете за встъпване, към които сочат парчетата връзки към wave в районите.
- Парчето поредица за сбирката wave изрежда семплите уейв.
- Всеки уейв е поредица, която съдържа, допълните към другите неща, формата и данните на уейва.
- Парчето DLS ID е една глобално уникална идентификация за уейва. Такова парче може да съществува в което и да е парче във файла DLS, но не е задължително.
- Парчето формат е формата на пробите (т.е., пробна честота, пробна резолюция и така нататък).
- Парчето данни съдържа пробите, както във всеки друг файл уейв.
- Парчето wave sample съдържа същата информация, както парчето wave sample в парчето район.
Други файлове DLS може да са различни. Например, могат да съдържат условни парчета. Данните за артикулация може да са само за районите, а не за инструментите, може да няма парчета DLS ID, едно парче LIST от вида INFO може да се сложи в други (или всички) парчета и така нататък.
Пример на файла DLS
"Sound mapper" или "wave mapper" в Windows е един виртуален синтезатор, който свири файлове MIDI с помощта на един файл DLS, наречен "gm.dls". На някои компютри, този файл се намира в "c:\Windows\SysWOW64\drivers", "c:\Windows\System32\drivers" и няколко други папки. Roland държи авторските права за файла gm.dls. Файлът е интерпретацията на Roland от 1996 за това, какви звукови данни трябва да се използват в синтезаторите MIDI и как тези данни трябва да се използват.
Подреждане на байтовете и endianism
Както при всички файлове RIFF, парчетата трябва да имат четен брой байтове. Така например, ако данните в едно парче имат нечетен брой байтове, тези данни се допълват с една нула (един нулев байт се добавя). Текст, като например текста в парчето LIST от вида INFO, също трябва да са четна дължина и ще се допълват с нула, ако са от нечетна дължина. Размерът на парчето, обаче, се записва в парчетата DLS както е (без да се брои допълването, четен или нечетен) и този записан размер може да се различава от действителния размер, който винаги е четен.
Както при файловете уейв, всички данни във файловете DLS се записват с най-незначителния байт пръв (little-endian).
Файловете DLS и протокола MIDI
Тъй като файловете DLS поддържат синтезаторите MIDI, формата DLS и протокола MIDI доста се допълват. Например, форматът DLS съдържа информация за как да се интерпретира скоростта на съобщението свири в MIDI, включително и амплитудата на нотата, а и ако е определено ат артикулацията, как скоростта на нотата може да промени времето на атаката (времето, което отнема на амплитудата на нотата да стигне от нула до максимума). Доста от формата DLS дава детайли за това, за което стандарта General MIDI не дава (виж Стандарт General MIDI 1 и Стандарт General MIDI 2), най-вече за подобното третиране на семплите уейв от различните синтезатори MIDI.
Downloadable Sounds нива 1 и 2
Downloadable Sounds ниво 1 е първия стандарт, публикуван в 1997. Downloadable Sounds ниво 2 разширява ниво 1 и е издадено в 1998. Определя най-вече допълнителни парчета (например за различни видове артикулация) и допълнителни видове артикулация (например за времето, през което една нота трябва да се задържи на максималната амплитуда преди да затихне).
Добави нов коментар