Коммутация
Последовательный интерфейс означает то, что импульсы по MIDI-кабелю передаются один за другим, подобно отряду муравьев, шагающих колонной по одному. Так что в каждый момент времени приемника достигает только один импульс. Значит, передать одновременно несколько сообщений через один MIDI-разъем невозможно. При игре аккордов ноты каждого аккорда будут передаваться последовательно. Фактически, вместо аккордов синтезатор-приемник будет исполнять только очень-очень плотное арпеджио. По одному MIDI-кабелю одновременная передача нескольких сообщений невозможна. Этот факт служит одним из главных аргументов в устах людей, критикующих протокол. На слух запаздывание каждой последующей ноты аккорда неуловимо (так как составляет менее половины миллисекунды), да и к тому же в реальной жизни ни один исполнитель не сыграет аккорд, абсолютно одновременно взяв все его ноты. Однако это не многих успокаивает — все-таки гораздо лучше иметь точную во времени систему. Итак, мы соединили два синтезатора MIDI-кабелем, по которому передаются сообщения о взятии нот (в том числе и нескольких одновременно, с поправкой на предыдущее замечание). Теперь мы хотим подключить еще два синтезатора, но управлять ими по-прежнему с первого. Для этого можно сделать в первом синтезаторе несколько MIDI-выходов и соединить их тремя MIDI-кабелями с MIDI-входами остальных, то есть, говоря компьютерным языком, организовать сеть с топологией "звезда" (рис. 4).
Это вполне возможно, но не все инструменты (хотя бы по экономическим соображениям) будут оборудоваться несколькими MIDI-выходами. А если потребуется управлять еще двумя или тремя синтезаторами, то выходов точно не напасешься. Было найдено решение: сделать дополнительный разъем MIDI Thru (сквозной). Задача синтезатора, оборудованного таким разъемом — дублировать на него все сообщения, приходящие на вход MIDI In. Тогда нашу систему из четырех синтезаторов можно соединить цепочкой (рис. 5).
Все это хорошо, но как быть, если мы хотим, чтобы каждый инструмент играл по очереди, а не со всеми сразу? Предположим, на первом синтезаторе выбран тембр флейты, на втором — рояля, на третьем — бас-гитары, а на последнем — ударных. Мы нажимаем клавиши на первом инструменте и хотим для начала только рояль, затем только ударные. Конечно, можно бегать и на ходу подключать и отключать нужный синтезатор (что полезно для собственного физического развития), но это не выход, особенно, если приборы соединены цепочкой. А если мы хотим играть левой рукой партию баса, а правой — рояля? В этом случае клавиатура первого синтезатора должна быть разделена на две зоны. Клавиши из каждой зоны должны посылать сообщения о взятии ноты своему инструменту. Как это сделать, если инструмент оборудован только одним MIDI-выходом? И, наконец, если наш синтезатор мультитембральный (то есть способен воспроизводить несколько партий одновременно разным тембром), как осуществить его коммутацию с секвенсором, в котором записаны эти партии? На поставленные вопросы, в сущности, ответа два: либо использовать столько MIDI-входов, выходов и кабелей, сколько партий звучит одновременно (рис. 6, а), либо... Сделать так, чтобы все партии передавались по одному MIDI-кабелю (рис. 6, б). Нужно ли пояснять, почему был выбран второй вариант?!
Понятно, что при последовательной передаче в каждый момент времени приемника будет достигать сообщение только для одного канала. Так что абсолютной ритмической согласованности в игре, например, бочки и бас-гитары при передаче данных по одному MIDI-кабелю добиться нельзя. Но опять же, покажите басиста, который идеально "попадает" в бочку барабанщика. Многих критиков протокола подобные фразы не утешают, хотя разница в приходе сообщений практически неощутима — все в том же порядке долей миллисекунды. Каждый тон-генератор может быть настроен на прием сообщений по одному или нескольким MIDI-каналам. Данные тех каналов, по которым прием не идет, просто игнорируются. В нашем примере пусть первый синтезатор играет на MIDI-канале 3, второй настроен на прием по каналу 4, третий — по каналу 8 и последний — по каналу 10. Тогда для переключения тембров нужно переключать каналы, по которым передает информацию первый синтезатор: включили на канал 3 — звучит его же флейта, на канал 8 — бас с третьего синтезатора, на канал 10 — барабаны с последнего. Но тогда клавиатуры на втором, третьем и четвертом синтезаторах вообще не нужны. Это соображение привело к широкому распространению звуковых модулей — синтезаторов без клавиатуры. С другой стороны, первый синтезатор может вообще не производить звук, а только служить центром управления для всех остальных. Это соображение привело к появлению MIDI-клавиатур — устройств, которые звуков не содержат, а служат для управления другими синтезаторами или звуковыми модулями. Если первый синтезатор позволяет разделить клавиатуру на две зоны, то можно назначить зону для левой руки на передачу по каналу 8, а для правой — по каналу 4. Тогда мы сможем одновременно исполнять партии баса и рояля. При этом на первом синтезаторе потребуется только один MIDI-выход (рис. 7).
Каждый синтезатор при наличии выхода MIDI Thru обязан дублировать на него всю приходящую информацию, в том числе и по тем каналам, на прием которых он сам настроен. Это позволяет передавать партию дальше, на другие синтезаторы, настроенные на тот же канал, для создания, например, жирного звучания в унисон.
|