# MIDI Out

В дополнение к получению MIDI-событий мы также можем отправлять MIDI-события для запуска и управления внешними аппаратными синтезаторами, клавиатурами и другими устройствами. Sonic Pi предоставляет полный набор функций для отправки различных MIDI-сообщений, таких как:

1. Note on - `midi_note_on`
2. Note off - `midi_note_off`
3. Control change - `midi_cc`
4. Pitch bend - `midi_pitch_bend`
5. Clock ticks - `midi_clock_tick`

Также есть много других поддерживаемых MIDI-сообщений - ознакомьтесь с документацией API для остальных функций, начинающихся с `midi_`.

## Подсоединение MIDI-устройств

Чтобы отправить MIDI-сообщение на внешнее устройство, мы должны сначала подключить его. Ознакомьтесь с подразделом «Подключение MIDI-контроллера» в разделе 11.1 для получения более подробной информации. Обратите внимание, что если вы используете USB, подключение к устройству, на которое вы отправляете сообщение (а не получаете от него), является той же процедурой. Однако, если вы используете классические DIN-разъемы, убедитесь, что вы подключены к MIDI-выходу вашего компьютера. Вы должны увидеть ваше MIDI-устройство в списке в панели настроек.

## Отправка MIDI событий

Многие `midi_ *` функции работают так же, как `play`,`sample` и `synth`, так как они отправляют сообщение в текущее (логическое) время. Например, чтобы распределить вызовы функций `midi_ *` , вам нужно использовать `sleep`, как вы это делали с`play`. Давайте взглянем:

    midi_note_on :e3, 50

Это отправит событие MIDI-note on на подключенное MIDI-устройство со скоростью нажатия клавиши 50. (Обратите внимание, что Sonic Pi автоматически преобразует ноты в форме `: e3` в соответствующий им номер MIDI, например, 52)

Если подключенное MIDI-устройство является синтезатором, вы должны услышать, как он воспроизводит ноту. Чтобы отключить ноту, используйте `midi_note_off`:

    midi_note_off :e3

## Выбор MIDI-устройства

По умолчанию Sonic Pi отправляет каждое MIDI-сообщение на все подключенные устройства на всех MIDI-каналах. Это облегчает работу с одним подключенным устройством без необходимости что-либо настраивать. Однако иногда MIDI-устройство будет обрабатывать MIDI-каналы особым образом, к примеру, если каждая нота имеет отдельный канал, или же если вы подключили более одного MIDI-устройства одновременно. В более сложных настройках вашего оборудования, вы можете пожелать иметь больше возможности выбирать относительно того, какое MIDI-устройство будет получает то или иное сообщение и по какому каналу.

Посредством опции `port:`и имени устройства, каким оно отображается в настройках, мы можем указать, к какому устройству желаем обратиться:

    midi_note_on :e3, port: "moog_minitaur"

Мы также можем указать канал для отправки посредством опции `channel:` (используя значение в диапазоне 1-16):

    midi_note_on :e3, channel: 3

Конечно, мы также можем задействовать обе опции одновременно для отправки информации на конкретное устройство по определенному каналу:

    midi_note_on :e3, port: "moog_minitaur", channel: 5

## MIDI студия

Наконец, действительно забавная вещь - подключить аудиовыход вашего MIDI-синтезатора к одному из аудиовходов вашей звуковой карты. Тогда вы сможете управлять синтезатором с помощью кода посредством функций `midi_ *`, а также манипулировать звуком с помощью `live_audio` и FX:

    with_fx :reverb, room: 1 do
      live_audio :moog
    end
    live_loop :moog_trigger do
      use_real_time
      midi (octs :e1, 3).tick, sustain: 0.1
      sleep 0.125
    end

(Функция `midi` доступна в виде удобных сокращений для отправки событий note on и note off одной командой. Для получения дополнительной информации ознакомьтесь с документацией).