Парчето условие определя условията, при които други парчета могат да се използват.
Парчето условие във формата на файла DLS има следната структура.
Описание на поредицата от байтове | Дължина в байтове | Започва с байт в парчето | Стойност |
идентификация на парчето | 4 | 0x00 | Поредицата от ASCII символи "cld " (с празното пространство) |
размер | различни | 0x04 | Размера на парчето в брой байтове (цяло число без знак) минус 8 (минус "идентификацията на парчето" и "размера") |
операции | различни | 0x08 | Поредица от операции, както е описано по-долу |
Операции
Една операция е в един от следните три вида.
- Код на операцията (стойност от два байта без знак)
- Код на операцията (стойност от два байта без знак), DLS ID (стойност от 16 байта; виж Парче DLS ID (на файл DLS))
- Код на операцията (стойност от два байта без знак), константа без знак (цяло число от осем байта)
Кодове на операциите
Следните са кодовете на операциите.
Код на операцията | Стойност | Разбира се като (код в C) |
AND | 0x0001 | X & Y |
OR | 0x0002 | X | Y |
Ексклузивен OR | 0x0003 | X ^ Y |
Добави | 0x0004 | X + Y |
Изведи | 0x0005 | X - Y |
Умножи | 0x0006 | X * Y |
Раздели | 0x0007 | X / Y |
Логичен AND | 0x0008 | X && Y |
Логичен OR | 0x0009 | X || Y |
По-малко от | 0x000A | X $lt; Y |
По-малко или равно на | 0x000B | X <= Y |
По-голямо от | 0x000C | X > Y |
По-голямо или равно на | 0x000D | X >= Y |
Равно | 0x000E | X == Y |
NOT | 0x000F | ! X |
Константа | 0x0010 | Z |
Запитване | 0x0011 | DLS ID на запитването |
Поддържа ли се запитването | 0x0012 | DLS ID на запитването, което може да се поддържа |
Операциите се изчисляват на един стек. Всеки път, когато една операция трябва да се извърши, нужните стойности се вземат от стека и изчисления резултат се слага обратно на стека. X е най-горната стойност на стека и Y е предишната стойност на стека. Z е константа, която се слага на стека от операцията константа. Когато операцията е едно запитване, тогава устройството се запитва и върната стойност се слага на стека. Когато операцията е запитване дали нещо се поддържа, устройството се пита и върнатата стойност, TRUE или FALSE, се слага на стека.
FALSE се записва с бинарни нули, а TRUE се записва с бинарни единици. Една не нулева стойност ще се подразбере като TRUE, което означава, че една операция NOT трябва да внимава да занули единиците.
Най-малкият стек, който едно устройство трябва да осъществи за да поддържа стандарта DLS Ниво 2 е един стек от осем стойности от 32 бита.
Позиция на парчето условие
Парчето условие е определено в стандарта DLS Ниво 2. Едно парче условие не е задължително във файла DLS.
Парчето условие може да е едно от най-горните парчета в DLS или пък може да е в една поредицаt. Когато парчето условие е едно от най-горните парчета във файла DLS и едно устройство не изпълнява условията в това парче, целият файл DLS се пренебрегва и софтуера връща грешка при работата с файла DLS. Когато парчето условие е в една поредица и едно устройство не изпълнява съответните условия, тогава поредицата се пренебрегва. В една поредица се предпочита парчето условие да е първо в поредицата.
Стандартни запитвания в DLS Ниво 2
Всички устройства, които поддържат DLS Ниво 2, трябва да поддържат следните запитвания.
Запитване | Стойност UUID | Връща стойността |
Поддържа DLS 1 | 0x178F2F27, 0xC364, 0x11D1, 0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12 | Връща TRUE, ако устройството поддържа DLS Ниво 1 |
Поддържа DLS 2 | 0xF14599E5, 0x4689, 0x11D2, 0xAF, 0xA6, 0x0, 0xAA, 0x0, 0x24, 0xD8, 0xB6 | Връща TRUE, ако устройството поддържа DLS Ниво 2 |
Идентификация на производителя | 0xB03E1181, 0x8095, 0x11D2, 0xA1, 0xEF, 0x0, 0x60, 0x8, 0x33, 0xDB, 0xD8 | Връща идентификацията на производителя на MIDI в 24 бита |
Идентификация на продукта | 0xB03E1182, 0x8095, 0x11D2, 0xA1, 0xEF, 0x0, 0x60, 0x8, 0x33, 0xDB, 0xD8 | Връща идентификацията на продукта, която е специфична за производителя |
General MIDI | 0x178F2F24, 0xC364, 0x11D1, 0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12 | Връща TRUE, ако хардуера на устройството поддържа стандарта General MIDI |
Размер на паметта в семпли | 0x178F2F28, 0xC364, 0x11D1, 0xA7, 0x60, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x12 | Връща размера на паметта в устройството, в брой семпли |
Пробна честота | 0x2A91F713, 0xA4BF, 0x11D2, 0xBB, 0xDF, 0x0, 0x60, 0x8, 0x33, 0xDB, 0xD8 | Връща пробната честота в херцове |
Виж също:
Формат Downloadable Sounds (DLS)
Добави нов коментар