Найти в Дзене
Habr.com

Программирование на клавиатуре… фортепиано

Как отличить программиста от музыканта? Спросите у них, что такое C#.

С начала 1950-х годов, когда человечеству наконец-то удалось
научить электронную машину петь, компьютеры постепенно превратились в полезный и универсальный инструмент звукопроизводства. Сегодня благодаря цифровым синтезаторам, VST-плагинам и цифровым звуковым рабочим станциям можно забыть о бесконечных катушках с магнитной лентой и заниматься звукозаписью дома, причем качество будет почти как в студии (при условии, что вы достаточно целеустремленны).

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

Для примера рассмотрим, что происходит при нажатии и отпускании средней клавиши до (в латинской транскрипции — С) на MIDI-клавиатуре (предположим, используется MIDI-канал № 1):

-2

Знакомо, правда?

Да, это очень похоже на принцип работы клавиатуры компьютера (с той лишь разницей, что у нее не так много функций, как у MIDI). Таким образом, можно легко интерпретировать эти сообщения и превратить устройство ввода MIDI-данных в полезный инструмент компьютерного программирования. Представьте, что MIDI-панель запуска настроена как-то так:

-3

(если сильно ударить по клавише Push, выполняется команда git push -f)

Если набраться смелости, то можно даже попытаться
полностью заменить клавиатуру компьютера на цифровое пианино. Все, что для этого требуется, — это наличие на компьютере какого-нибудь программного обеспечения для перевода MIDI-сообщений в компьютерные команды. Это может быть драйвер, работающий в пользовательском режиме, или же можно создать плагин для своей любимой интегрированной среды разработки, который научит ее делать новые трюки.

Именно это мы и сделали. Чисто из спортивного интереса я разработал
Midichlorian — программное расширение Visual Studio, позволяющее писать код и автоматизировать VS с использованием MIDI-инструментов. А под влиянием музыки числа пи моя коллега Лана сочинила музыку, которая одновременно является мелодией в тональности до-диез минор (в латинской транскрипции — C#m) и действующей компьютерной программой на языке C#. Посмотрите, как это работает.

Что касается «начинки», то расширение связано с окном редактора, обрабатывает входящий MIDI-поток, распознает в нем ноты и аккорды и выполняет соответствующие команды Visual Studio согласно настройкам, сконфигурированным через интерфейс пользователя:

-4

Это расширение с открытым исходным кодом — любой может внести свой вклад в его доработку на GitHub и создать собственную музыку.

Оригинал статьи на Хабре (2014 год)
К лучшим публикациям Хабра за сутки