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

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

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

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

Прототип виртуального музыкального тренажёра

6 дн. назад авторская
68 9 4 мин



Я часто про себя шучу: «Я — разносторонне недоразвитая личность»

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

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


Но просто взять готовое приложение и заниматься по нему — это, видимо, слишком простой путь. Поэтому я решил сначала сделать собственный виртуальный тренажёр. А потом уже с его помощью учиться самому. 😄

Так появился прототип виртуального музыкального тренажёра

Сейчас я делаю веб-приложение, которое должно помочь человеку с нуля осваивать музыкальные инструменты.

Пока в прототипе три направления:

блок-флейта, гитара и пианино.

И для каждого инструмента интерфейс работает немного по-разному.

Для блок-флейты ученик видит нотный стан, текущую ноту, её длительность и аппликатуру. Рядом изображена сама флейта, на которой подсвечиваются отверстия, которые необходимо закрыть пальцами.

Для гитары показывается нотный стан, нужная струна и лад, гриф инструмента, а для созвучий и аккордов — схема постановки пальцев.

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

При этом тренажёр уже умеет работать с MIDI-файлами.

То есть мне не нужно вручную забивать в программу каждую мелодию. Загружается MIDI — программа сама разбирает последовательность нот, их длительность, темп, одновременное звучание нескольких нот и превращает всё это в интерактивное упражнение.

Но оказалось, что показать ноту — это самая простая часть

Гораздо интереснее оказалось добиться нормального звучания.

Синтезировать условное «пи-пи-пи» в браузере довольно просто. Только учиться играть под такой звук лично мне совершенно не хочется.

Поэтому сейчас постепенно перевожу тренажёр на настоящие записанные сэмплы инструментов.

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

«нажата нота До», —

но и:

«насколько сильно она была нажата».

В итоге тихое нажатие должно звучать мягко, а сильное — ярче и громче.

И вот здесь проект начинает становиться намного интереснее.

А дальше хочу научить программу СЛУШАТЬ ученика

Сейчас программа в основном показывает:

Вот нота.
Вот длительность.
Вот куда поставить пальцы.
Вот как она должна звучать.

Но конечная задумка значительно шире.

Я хочу добавить захват звука с микрофона.

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

Тренажёр знает, что в этот момент должна звучать, например, Соль.

Ученик играет.

И программа сравнивает ожидаемый результат с тем, что услышала:

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

А после упражнения хочется получать не просто:

❌ Ошибка.

А нормальную обратную связь:

Точность — 86%.
В третьем такте несколько раз сыграна неверная нота.
Четвертую ноту вы заканчиваете раньше времени.
Попробуйте повторить этот фрагмент медленнее.
Рекомендуемая скорость — 70%.

То есть задача — постепенно превратить программу из проигрывателя MIDI с красивыми подсказками в настоящего виртуального преподавателя.

С электрическими инструментами можно пойти ещё дальше

С MIDI-клавиатурой всё вообще становится особенно интересно.

Программа показывает нужную клавишу — ученик нажимает её на настоящей MIDI-клавиатуре — компьютер моментально получает номер ноты и силу нажатия.

Нажал правильно — идём дальше.

Ошибся — тренажёр показывает ошибку.

Нужно сыграть аккорд — программа ждёт, пока будут правильно нажаты все необходимые клавиши одновременно.

А потом можно убрать часть подсказок.

Сначала программа показывает и ноту, и клавишу.

Потом — только ноту.

А в конце перед тобой остаётся обычный нотный стан:

читай и играй сам.

И вот это мне кажется особенно важным. Я не хочу сделать программу, которая учит человека механически нажимать на светящиеся кнопки. Подсветка должна быть временным костылём, который постепенно исчезает по мере обучения.

И это пока только прототип

Блок-флейта, гитара и пианино — скорее полигон, на котором я сейчас проверяю саму идею.

Если она заработает так, как задумано, постепенно можно добавлять другие инструменты: духовые, струнные, ударные.

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

Для флейты важны аппликатура и дыхание.

Для гитары — струна, лад, постановка пальцев и аккорды.

Для пианино — две руки, клавиши, сила нажатия, аккорды и независимость рук.

А дальше можно добавить уровни сложности, упражнения, статистику, повтор проблемных мест, метроном и постепенное увеличение скорости произведения.

Например:

50% скорости → сыграл без ошибок → 60% → 70% → 80% → оригинальный темп.

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

«Хочу научиться это играть».

А программа сама разобьёт произведение на небольшие фрагменты и постепенно проведёт ученика от первых нот до исполнения целиком.

Вот такая очередная идея родилась из простого:

«А неплохо было бы когда-нибудь научиться играть на музыкальном инструменте…»

Правда, нормальный человек, наверное, после этой мысли покупает инструмент и идёт заниматься.

А я сначала решил написать для этого собственный тренажёр. 😄

Посмотрим, что из этого получится.

Tux Linux
Полезность 78%
· +1 высоко оценили
Интересность 75%

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

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

уровень 1 в 5 дней
Отличная идея. Мы переехали жить в деревню и тут не у кого учится. Я бы хотела скрипку когда нибудь освоить. Но говорят творческие люди с такими программами уходят, как в Китае.
Полезно
Уместно
уровень 2 в 6 дней
Когда родители оплачивают в течение многих лет уроки музыки детишкам, одна из мотиваций у них такая: "Не станет звездой, так хотя бы сможет учить других музыке. Всё же уже какая-никакая но профессия в руках". И вы теперь эту мотивацию у них хотите отнять? Если все станут учиться играть с помощью компьютера, огромная часть музыкантов лишится приработка. А значит и учить детей музыке станет мало перспективной инвестицией. Мы что-то потеряем в культуре, в части интеллегенции. Благими намерениями путь в ад выложен.
Полезно
Уместно

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

Полезность 78%
· +1 высоко оценили
Интересность 75%

Поделиться