Мы используем файлы cookie, чтобы сайт работал и становился удобнее. Продолжая пользоваться «Думайте», вы соглашаетесь с Политикой конфиденциальности.

показать все результаты

Ничего не найдено

Tux Linux
27 · уровень 2 в

Как я понял, что музыкальный тренажёр должен дружить с духовым MIDI-контроллером

1 нед. назад авторская
31 2 4 мин

В прошлой статье я рассказывал про очередную свою затею. Решил научиться играть на музыкальном инструменте. Нормальный человек в такой ситуации покупает инструмент, открывает учебник или идёт к преподавателю.

Я же решил сначала написать программу, которая будет меня учить.

Почему просто, когда можно сложно?

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

И вот тут возникла главная проблема.

Как программе понять, что человек действительно сыграл правильно?

Первоначальная идея была очевидной: микрофон.

Человек играет — программа слушает звук, определяет частоту, сравнивает её с нужной нотой и говорит примерно следующее:

«Нет, дружок. Это должна была быть Соль. А то, что сейчас прозвучало, мы пока музыкальной нотой называть не будем».

В теории всё красиво.

На практике начинается цирк.

Микрофон слышит комнату. Слышит компьютер. Слышит отражения звука. У духового инструмента есть основная частота и куча обертонов. Добавляем сюда дыхание начинающего музыканта, неидеальную атаку ноты — и алгоритму приходится не столько слушать музыку, сколько гадать, что именно сейчас пытался изобразить человек.

Решаемо? Конечно.

Но чем дальше я копал эту тему, тем сильнее возникал вопрос: а зачем я вообще пытаюсь заставить компьютер угадывать то, что инструмент может сообщить ему напрямую?

И вот здесь я наткнулся на духовые MIDI-контроллеры.

И немного завис.

Оказывается, инструмент может сам всё рассказать

До этого MIDI у меня в голове в основном ассоциировался с клавишами: нажал клавишу — компьютер получил номер ноты, силу нажатия и что-нибудь с этим сделал.

А тут выясняется, что существуют электронные духовые инструменты и контроллеры, которые способны передавать данные об игре непосредственно компьютеру.

То есть вместо схемы:

человек → инструмент → звук → микрофон → анализ → попытка угадать ноту

можно получить:

человек → MIDI-контроллер → точные данные → программа.

И вот это уже интересно.

Потому что программа больше не пытается угадать, что произошло. Она получает событие: сыграна такая-то нота, в такой-то момент, с такими-то параметрами.

А если конкретный контроллер передаёт ещё и данные дыхания — становится совсем весело.

Я ведь первоначально хотел научить программу слушать музыканта.

А оказалось, что можно заставить инструмент разговаривать с программой.

И это немного меняет весь проект.

А вот здесь появилась новая проблема

Сначала я обрадовался и подумал: всё, теперь тренажёр будет знать буквально положение каждого пальца.

А потом начал разбираться внимательнее.

И нет. MIDI — не телепатия.

Если контроллер передал программе ноту Соль, программа прекрасно знает, что получена Соль. Но это ещё не означает, что устройство обязательно рассказало ей: первый палец лежит здесь, второй здесь, третье отверстие закрыто, четвёртое открыто.

У разных контроллеров возможности разные.

И вот здесь начинается уже нормальная инженерная работа: выяснить, какие данные реально отдаёт конкретное устройство и насколько глубоко к ним можно добраться.

То же самое касается дыхания. Возможность передавать breath/expression есть у многих духовых MIDI-контроллеров, но нельзя заранее написать для любого устройства: «CC#2 — и вопрос закрыт».

Поэтому теперь моя задача немного изменилась.

Мне нужен не просто электронный духовой инструмент.

Мне нужен контроллер, который отдаёт максимум полезной информации для обучения.

Ну и куда меня опять занесло?

Вот что мне особенно нравится во всей этой истории.

Начиналось всё примерно так:

«Хочу научиться играть на блокфлейте».

Потом:

«А напишу-ка я себе маленький тренажёр».

Потом:

«Хорошо бы он слушал микрофон».

Теперь:

«Так, какие данные отдаёт электронный духовой MIDI-контроллер и нельзя ли на этом построить полноценную систему обучения?»

Чувствую, ещё несколько таких шагов — и вместо блокфлейты у меня случайно появится небольшой образовательный стартап.

Но пока никаких громких слов.

Следующий этап вполне приземлённый: взять реальное устройство, подключить его к прототипу и посмотреть, какие данные я действительно смогу получить, а не какие красиво выглядят на бумаге.

Потому что именно на этом месте обычно заканчиваются прекрасные идеи и начинается инженерия.

Если получится — покажу результат.

Если не получится — тем более покажу. Иногда статья о том, почему хорошая идея не заработала, гораздо полезнее статьи «посмотрите, какой я молодец».

А играть я когда-нибудь всё-таки начну.

Наверное.

Tux Linux
Полезность 92%
· +2 высоко оценили
Интересность 100%

Комментарии 0

Войдите, чтобы оставить комментарий.

Будьте первым, кто прокомментирует эту запись.

Оценить запись

Полезность 92%
· +2 высоко оценили
Интересность 100%

Содержание

Поделиться