Приложение возникло из моего хобби игры на пианино, точнее, из моих
попыток научиться играть. Игра на пианино оказалась одним из самых
стрессовых занятий, которыми я занимался. Чтобы сделать упражнения на
пианино более приятными, я решил разработать приложение, которое
помогало бы мне учить мелодии и тренировать пальцы.
Вот принцип работы этого приложения: вы подключаете MIDI-клавиатуру к
компьютеру (или планшету) и запускаете упражнение в приложении.
Приложение предоставляет подсказки по нажатию клавиш и соответствующих
пальцев. Кажется, получилось достаточно полезное приложение. Но стать
Приложение реализовано с использованием библиотеки
OSMD
и программы для авторов музыки MuseScore.
Работает следующим образом. Записываем ноты упражнения в MuseScore,
экспортируем в music xml формат. Парсим этот формат с помощью OSMD и
получаем последовательность «правильных» MIDI событий и номера
пальцев. Далее слушаем MIDI события с пользовательского ввода через
Web MIDI API и сравниваем пользовательские события с ожидаемыми
событиями. Страница с нотами рендерится также библиотекой OSMD.
Реализация этого приложения заняла довольно много времени, примерно
полгода. Результаты первых итераций пришлось полностью переписывать.
Например, сначала я использовал формат MIDI для входных файлов, но он
оказался слишком ограниченным для нужд данного приложения. Поэтому я
принял решение перейти на формат MusicXML, который позволяет
передавать нотную запись, MIDI-события и аппликатуру. Еще одним
фактором, который повлиял на сроки реализации, было отсутствие у меня
знаний в области музыки (знания подтягивал в процессе работы над
приложением). В целом я доволен результатом. Думаю, что еще буду
делать веб-проекты в области музыки.