Логические операторы
В двоичной арифметике широко используются так называемые логические (или, иначе, булевские, поразрядные) операторы. Все очень просто: в отличие от привычных операций типа умножения и сложения, когда используется все число, в поразрядных операциях участвуют одиночные биты. В микропроцессорах наиболее распространены три операции: AND (логическое И), OR (логическое ИЛИ) и XOR (исключающее ИЛИ). Результат их применения к двум битам показан в таблице на рис. 6.
Чтобы передать звуковые данные по MIDI, их необходимо преобразовать в MIDI-байты данных (в которых, напомню, старший бит всегда нулевой). В данном случае используется левостороннее выравнивание. Например, если разрядность семпла составляет 12 бит, то один звуковой отсчет передается в виде двух байт. В первом байте содержатся биты с 11 по 5 исходного значения, во втором — с 4 по 0 (выровненные по левому краю). Например, 12-битное значение 0xFFF (в двоичном виде 1111 1111 1111) преобразуется в два байта 0111 1111 и 01111 1000. Если разрядность семпла лежит в пределах от 8 до 14 бит, то каждый звуковой отсчет передается в виде двух байт, от 15 до 21 бит — трех байт, от 21 до 28 — четырех. Таким образом, в 120-байтовый пакет в первом случае помещаются 60 отсчетов, во втором — 40, в третьем — 30. Кроме того, отсчеты представлены в беззнаковой форме. Например, при разрядности 16 бит максимальной положительной амплитуде соответствует 0xFFFF, а максимальной отрицательной — 0x0000. Нулевая амплитуда записывается как 0x8000. Во многих звуковых форматах (в частности, в формате WAVE) используется знаковое представление, когда нулевой амплитуде соответствует значение 0x0000, максимальной положительной — 0x7FFF, а максимальной отрицательной — 0x8000. Поэтому после приема семпла может потребоваться его преобразование.
|