- PVSM.RU - https://www.pvsm.ru -
Как отличить программиста от музыканта? Спросите у них, что такое C#.
С начала 1950-х годов, когда человечеству наконец-то удалось научить электронную машину петь [1], компьютеры постепенно превратились в полезный и универсальный инструмент звукопроизводства. Сегодня благодаря цифровым синтезаторам, 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)
Если набраться смелости, то можно даже попытаться полностью заменить [2] клавиатуру компьютера на цифровое пианино. Все, что для этого требуется, — это наличие на компьютере какого-нибудь программного обеспечения для перевода MIDI-сообщений в компьютерные команды. Это может быть драйвер, работающий в пользовательском режиме, или же можно создать плагин для своей любимой интегрированной среды разработки, который научит ее делать новые трюки.
Именно это мы и сделали. Чисто из спортивного интереса я разработал Midichlorian [3] — программное расширение Visual Studio, позволяющее писать код и автоматизировать VS с использованием MIDI-инструментов. А под влиянием музыки числа пи [4] моя коллега Лана [5] сочинила музыку, которая одновременно является мелодией в тональности до-диез минор (в латинской транскрипции — C#m) и действующей компьютерной программой на языке C#. Посмотрите, как это работает.
Что касается «начинки», то расширение связано с окном редактора [6], обрабатывает входящий MIDI-поток [7], распознает в нем ноты и аккорды [8] и выполняет соответствующие команды Visual Studio согласно настройкам, сконфигурированным через интерфейс пользователя:
Это расширение с открытым исходным кодом — любой может внести свой вклад в его доработку на GitHub [9] и создать собственную музыку.
P.S. Естественно, без нотной записи этот пост был бы неполным:
«Привет, мир» — сюита для Visual Studio в до-диез миноре [10]
Перевод выполнен ABBYY Language Services [11].
Автор: ABBYYTeam
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/70338
Ссылки в тексте:
[1] научить электронную машину петь: http://news.bbc.co.uk/2/hi/technology/7458479.stm
[2] полностью заменить: http://stackoverflow.com/questions/5928061/using-a-piano-keyboard-as-a-computer-keyboard
[3] Midichlorian: http://visualstudiogallery.msdn.microsoft.com/bdca1405-565a-472d-9ad4-af03b6df8961
[4] музыки числа пи: https://www.youtube.com/watch?v=OMq9he-5HUU
[5] Лана: https://www.youtube.com/watch?v=EdBog7aAJss
[6] связано с окном редактора: https://github.com/YuriyGuts/midichlorian/blob/master/src/Midichlorian/Midichlorian.VSPackage/TextViewAgent.cs
[7] обрабатывает входящий MIDI-поток: https://code.google.com/p/midi-dot-net/
[8] распознает в нем ноты и аккорды: https://github.com/YuriyGuts/midichlorian/blob/master/src/Midichlorian/Midichlorian.VSPackage/MidiMappingMatcher.cs
[9] GitHub: https://github.com/YuriyGuts/midichlorian
[10] «Привет, мир» — сюита для Visual Studio в до-диез миноре: http://www.scribd.com/doc/230961447/Hello-World-a-Suite-for-Visual-Studio-in-C-Minor
[11] ABBYY Language Services: http://abbyy-ls.ru/
[12] Источник: http://habrahabr.ru/post/238037/
Нажмите здесь для печати.