Как я превратил MIDI-клавиатуру в печатную машинку и не только
Привет, Хабр! На связи Кирилл из МТС Диджитал. На днях я решил прогуляться по воскресной барахолке и наткнулся на продавца, который выложил на прилавок практически новый MIDI-контроллер Akai MPK Mini mk3. Я и раньше слышал про этот девайс, но мне все как-то не доводилось его купить. Естественно, забрал. Вернулся домой, подключил к Mac Mini M2 и на несколько часов выпал из реальности, создавая трек в стиле Sovietwave.
И тут мне в голову пришла мысль: а можно ли использовать такой контроллер для других операций? Например, вводить через него текст или забиндить часто используемые сочетания клавиш. На мой запрос Гугл выдал целую пачку интересных ссылок, одна из которых обещала превратить мою MIDI-клавиатуру в печатную машинку. В посте расскажу о результатах этого эксперимента.
Трансформация в печатную машинку
Первая мысль была такая: 25 клавиш и 8 драм-пэдов — это, наверное, маловато. С другой стороны, обходятся же стенографистки аппаратами всего с десятью клавишами. Быстрое гугление показало, что некоторые стенографические машины используют… та-дам… рояльную клавиатуру:
Текст на таких машинах набирается не отдельными символами, а аккордами, и это позволяет быстро записывать устную речь. Правда, для этого нужен специально обученный человек: он выбирает конкретные аккорды, используя набор правил сокращения слов. Конечно, сейчас у большинства стенографических машин другой тип клавиатуры — например, такой:
Рояльная клавиатура тоже вполне подойдет, так что дело за малым — найти соответствующий софт. Долго искать не пришлось: по первой же ссылке я наткнулся на сайт проекта PianoText, разработанного в Институте информатики Макса Планка.
Для запуска нужно скачать и установить актуальную версию Java Runtime Environment. Потом дважды щелкнуть на файл KeystrokeSimulator_WEB.jar. А если вы используете Linux, перейти в директорию PianoText и ввести команду:
$ java -jar KeystrokeSimulator_WEB.jar
На старте определяются все подключенные MIDI-устройства, и приложение предлагает выбрать нужное:
Дальше в трее появится иконка приложения, а вы сможете попробовать вести текст с MIDI-клавиатуры. Увы, подсказок тут нет, так что придется воспользоваться специальной PDF с подсказками символов.
Сразу понятно, что стандартная раскладка рассчитана на большие MIDI-клавиатуры, минимум с шестью октавами и подключенной педалью сустейна, которая будет играть роль пробела. Хорошо, что в приложении предусмотрен XML-файл для настройки: он позволяет создать конфигурацию, которую вы хотите. Ниже небольшой фрагмент конфига:
<mapping> <!-- nice chords left: D-FIS, GIS-C, A-C-E -->
<letter name='SPACE' >
<note name='SPACE' octave='-1' />
</letter>
<letter name='a' >
<note name='d' octave='3' />
<note name='g' octave='4' />
<note name='ais' octave='5' />
</letter>
<letter name='b' >
<note name='e' octave='4' />
</letter>
Традиционное хабраприветствие с дефолтным маппингом будет выглядеть примерно так:
Кроме единичных символов, в маппинге есть часто используемые сочетания букв и даже целые слова, такие как where, have, use. С одной стороны, штука полезная, но требующая огромной доработки напильником. А еще нужно все время держать подсказку перед глазами. Но если вы чувствуете силу вступить на путь джедая, на сайте автора доступно отдельное приложение для тренировки. А мы пока посмотрим, какие есть альтернативы.
Что там с MidiKey2Key
PianoText со своей идеей превратить набор текста в аналог музыкальной пьесы заслуживает внимания. Но для реальных задач он будет полезен только тем, кто владеет нотной грамотой и знает, как быстро строить аккорды. Так что давайте посмотрим на более простое и удобное приложение — MidiKey2Key. Оно полностью бесплатное, и тут тоже можно превратить нажатие клавиши или прокручивание энкодера MIDI-контроллера в нажатие клавиш (или их сочетаний) обычной клавиатуры.
Самый важный элемент этого приложения — лог-файл, который фиксирует нажатие каждой клавиши или энкодера. Именно он поможет создать собственную схему привязки любого MIDI-контроллера к эмуляции нажатий клавиш обычной клавиатуры:
Тут уже чувствуется, что приложение сделано с упором на программистов, а не музыкантов. Двойным щелчком выбираем зафиксированное в логе нажатие и создаем привязку:
Все предельно понятно и удобно. Посидев полчасика, можно легко составить собственную схему привязки и запустить эмуляцию нашей виртуальной клавиатуры. Если привязывается раскладка с кириллицей, система при каждом вводе сама изменяет код клавиши на английскую раскладку, а не плюет ошибкой. Сам ввод кириллических символов будет работать корректно.
Зачем это все
Окей, теперь у нас есть софт, который позволяет достаточно быстро назначить MIDI-контроллеру эмуляцию нажатия любых клавиш или даже запуск приложений. Но какая от этого реальная польза? Например, эти возможности сразу оценят стримеры, ведущие прямых эфиров. При помощи MIDI-контроллера можно управлять приложением OBS и повесить на нажатие клавиш или драм-пэдов самые полезные функции. Если у вас несколько камер, можно организовать быстрое переключение между ними.
Если ваш контроллер, как и мой, оборудован цифровыми энкодерами, при их помощи можно регулировать громкость звука, изменять параметры съемки или вообще заменить виртуальные кнопки и крутилки реальными. Кстати, именно поэтому этот софт полюбился тем, кто обожает симуляторы поездов. Имея на руках даже бюджетный MIDI-контроллер, можно превратить его в пульт управления целым поездом.
То же самое справедливо и для множества других симуляторов — например, самолетов. Обычно во время подготовки самолета ко взлету пилоты задействуют множество элементов управления, которые в симуляторе приходится нажимать мышью. Тут же вы можете заменить часть виртуальных элементов на физические кнопки и крутилки MIDI-контроллера.
Для примера я попробовал задействовать MIDI-клавиатуру для управления транспортом в PUBG, и это отлично сработало! На драм-пэды я привязал положение игрока внутри транспортного средства. По умолчанию для выбора места используются сочетания клавиш Ctrl + 1/2/3/4/5/6, где водительское сиденье всегда номер 1, а остальные места зависят от типа транспорта. Первые же тесты показали, что это работает, если само управление перемещением тоже завязано на клавиши MIDI-контроллера. Иначе движение левой руки занимает непозволительно много времени.
Профессиональные игроки на этом месте наверняка начнут говорить, что это все фигня и проще переназначить стандартные сочетания клавиш на другие. Как мне кажется, это дело привычки. Использование MIDI-контроллера вполне имеет право на жизнь.
Заглянув на YouTubе, можно найти еще более забавные варианты применения MIDI-клавиатуры. Например, если вам не хватает хардкора в играх жанра Soulslike, вот так можно получить ни с чем не сравнимые ощущения:
Вместо заключения
Признаюсь, я не ожидал, что MIDI-клавиатура окажется настолько универсальным гаджетом. Понятное дело, что тот же ввод текста на ней — удел людей, которые готовы потратить приличное количество времени на освоение техники стенографирования слов. Но вот привязка часто используемых сочетаний клавиш оказалась реально киллер-фичей. Для людей, которые редактируют тексты, даже банальный биндинг Ctrl +X / Ctrl+C / Ctrl + V может сильно ускорить работу.
Ну а если потратить время на разработку собственной схемы — например, часто используемых сочетаний клавиш текстового редактора — в какой-то момент может прийти мысль: «Как я раньше без этого жил?» К тому же MIDI-контроллеры достаточно разнообразны, их можно купить дешевле, чем те же программируемые POS-клавиатуры. Тот же Korg Nano Pad 2 на вторичном рынке можно взять за 1 500 рублей и превратить его в удобную программируемую клавиатуру.
Рассказывайте, а для чего вы пробовали использовать MIDI-клавиатуру? Жду вас в комментариях.