(все готовые программы выложены в облако - https://cloud.mail.ru/public/206cef9b994d/MyMusicProgramms/ )Всем привет. Для введения перечислю несколько готовых программ с открытыми кодами, которые могут понадобиться в этом проекте.
1. Редактор табулатур
http://sourceforge.net/projects/tuxguitar/. Он умеет читать и сохранять табы в форматах гитарпро. А в этом формате существует огромное множество упражнений и занятий, полезных для гитариста.
2. Примеры программ тюнеров.
http://sourceforge.net/projects/otuner/ ,
http://sourceforge.net/projects/lstune/ ,
http://sourceforge.net/projects/accordeur/ Сейчас они нужны лишь для того, чтобы раз в неделю настроить 6 струн за пару минут и всё. Но ведь они умеют определять любую частоту, любую ноту за долю секунды.
3. Тюнеры основаны на алгоритмах "быстрое преобразование фурье, fft" Для них библиотеки написаны, например
http://sourceforge.net/projects/kissfft/ ,
http://sourceforge.net/projects/fftwpp ,
http://sourceforge.net/projects/mffmfftwrapper и куча других
Теперь идея:
Человек запускает тренажер, открывает в нем файл, например гамму ля мажор. На экране появляется табулатура (в одну строчку, до упора вправо). Слева вертикальная черта. При нажатии play табулатура перемещается влево, пока очередная нота не наткнется на черту. В нашем случае 6 струна 5 лад. Останавливается.
У игрока гитара подключена к компьютеру и сигнал со входа (с микрофонного или линейного) поступает на анализ, раскладывается на частоты. Тренажер определяет, какую ноту сыграл игрок, сравнивает с текущей, и если они совпали (+- несколько центов) то табулатура смещается до следующей ноты.
Таким образом обучающийся выполняет задание с точностью 100%. Он обязан играть все ноты. Он не может пропустить или играть другую, тренажер не двинется с места. Скорость зависит только от игрока.
В продвинутом варианте можно запускать трек ударных и трек гитары. В этом случае трек не останавливается, но в те моменты, когда нота пересекает черту игрок должен взять нужную ноту в нужное время с отклонением +- доля секунды. Здесь идёт обучение одновременно и правильным нотам и правильному ритму. Сначала человек учит ноты по первому варианту, затем наращивает скорость по второму.
Кто умеет программировать или у кого есть знакомые программисты? Кто смог бы реализовать такое? Куски кода собрать воедино.
Полезна ли будет такая программа? Что бы вы потренировали на ней, если б только начинали гитарное обучение?
(проект навеян играми гитархиро и роксмит, но это не игра а тренажер)