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

http://elekslabs.com/2014/06/programming-on-a-keyboard-a-piano-keyboard.html
  • Перевод
Как отличить программиста от музыканта? Спросите у них, что такое C#.

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

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

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



Статус-байт Байт данных 1 Байт данных 2
144 = взять ноту 60 = нота до 3-й октавы 127 = скорость (0..127): резкий удар по клавише
128 = снять ноту 60 = нота до 3-й октавы 10 = скорость (0..127): плавное отпускание клавиши

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

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


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

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

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



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


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

P.S. Естественно, без нотной записи этот пост был бы неполным:
«Привет, мир» — сюита для Visual Studio в до-диез миноре

Перевод выполнен ABBYY Language Services.
ABBYY 90,38
Action information
Поделиться публикацией
Комментарии 17
  • +3
    Про Linux-way можно почитать в посте от madprogrammer: Новая жизнь старого синтезатора
    • +31
      <off-topic>
      Как отличить физика от математика? Надо задать вопрос: «Антоним слову параллельно?»… Математик: перпендикулярно; Физик: последовательно
      </off-topic>
      • +50
        Программист: однопоточно.
        • +2
          Похоже у физика с программистом больше общего, чем у программиста с математиком.
          Хотя, как физик твердого тела, не сразу понял почему последовательно это антоним.
      • +1
        Сажать «Hello World!» со всеми кавычками на один аккорд — это нечестно:
        image
        Но вообще хорошо получилось, конечно.
        • 0
          Вот так всегда: пока ты думаешь кто-то делает. В свое время точно такая же идея реализации была.
          В целом неплохо получилось:)
          • +1
            Я — программист, который иногда сочиняет музыку. При виде этого пришел в дикий восторг. Особенно впечатляет «Сюита для Visual Studio». С этим можно выступать :)
            • +5
              Пробовал играть C# под FreeBSD, получается, но mono… Как сделать stereo?
              • +2
                А под виндами вообще звука .net
              • +15
                • +3
                  Очень круто! Правда здесь музыкальное сопровождение не зависит от того, какие именно ноты он играет.
              • +2
                Концерт для MIDI.
                Выступает заслуженный программист ABBYY.
                Прозвучит программа для Visual Studio в до-диез миноре.

                Здорово! Как говорится: «Архитектура — это застывшая музыка».
                Теперь и программистам можно расширить свои владения.
                Интересно, если перевести классическую музыку в программы, то какие они получатся?
                • +4
                  Вспомнился старый анекдот:
                  Увидел программист пианино. Он его рассмотрел и говорит: «Мда… клавиатура неудобная — в один ряд. Клавиш мало, половина из них функциональные, но вот shift ногой нажимать — это оригинально!»
                  • +4
                    Как отличить программиста от музыканта? Спросите у них, что такое C#.

                    До, шарп :)
                    • 0
                      До диез вообще-то :-)
                      • 0
                        «До диез» — это если вы только музыкант :)

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое