Автор Тема: Идея программы. Тренажер игры на гитаре, подключенной к компьютеру  (Прочитано 13037 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Понятно, изучаю сам. Портаудио удалось подключить, изучаю примеры. Когда будет готова тестовая реализация, выложу сюда по тестировать.

Первая удача - собрал пример из исходных кодов. pa_fuzz.c Код тут - http://portaudio.com/docs/v19-doxydocs/pa__fuzz_8c.html
Попробовал воткнуть гитару, звучит с эффектом :) Но есть задержка. Попробуйте кто сможет, работает на ваших компьютерах?
« Последнее редактирование: Апреля 14, 2013, 11:51:34 от Rem_ »

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
В разработке два варианта.
1. Для изучения нот на грифе. Программа показывает буквенно цифровое обозначение ноты, игрок должен её сыграть.
2. Для развития слуха. Программа проигрывает ноту на динамиках, игрок должен её повторить на гитаре.
Кто умеет прикручивать fft? Нужны подсказки. Массив звука можно создать на основе этого примера - http://portaudio.com/docs/v19-doxydocs/paex__record_8c_source.html

Оффлайн U6x1202

  • Частый посетитель
  • **
  • Сообщений: 183
затея интересная. Могу прадложить название - guitarplayer . Реклама форуму )

Оффлайн sadomazer

  • Новичок
  • *
  • Сообщений: 11
Основная техническая идея реализована в эпловском Garage Band. И применение ее, на мой взгляд, очень удачное.

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Есть замашка сделать подобное на андроид. Пара человек заинтересовалась, нашли исходный код одного из тюнеров. Будем пытаться переделать на тренажёр.
Поставил планшет перед собой, он показывает ноту, чел её должен сыграть на любом инструменте, да хоть голосом.
Заинтересованные, отзовитесь. Скептиков я уже послушал.

Оффлайн GuitarPlayingFan

  • Завсегдатай
  • ***
  • Сообщений: 454
Rem_, А что должно быть при запуске ? У меня после реагирования антивируса просто остаётся открытой командная строка... И что дальше ? Идея кстати интересная !!!

Оффлайн !nSaNE

  • Частый посетитель
  • **
  • Сообщений: 109
Rem_, Не знаю, может тут уже ссылались. Есть подобный твоей задумке веб-сервис: getinstinct.com
Плюс, учти, что в android минимальная задержка звука трудножостижима, это проблема на уровне ядра ОС, которую до сих пор не могут обойти. И пока Google это дело не поправит, решение вроде бы отсутствует. Именно поэтому под android до сих пор нет нормальных гитарных процессоров.
« Последнее редактирование: Мая 14, 2013, 15:05:56 от !nSaNE »

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Итак, первая самоделка! :)
Программа ловит звук с микрофона ноута (для акустики) или с гнезда (для электрухи). Показывает уровень громкости и частоту. Проблема в том, что пока точность составляет 5 гц. Не удивляйтесь, что прога не точно показывает.
Попробуйте, правильно ли слышит звук? Подсказывайте кто знает, как увеличить точность до десятых герца.
Задержка тут не особо важна, это не процессор, это анализатор. Вполне допустимо подождать доли секунды, поэтому для андров можно смело делать.

Оффлайн Inchart

  • Эксперт
  • *****
  • Сообщений: 1910
  • Один
Rem_, Для всех струн точность ~5Гц? Или на басовых врёт больше? На это нужно внимание обратить, потому что все тюнеры этим грешат. Сложнее им с басовыми струнами работать.

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
программно точность = частота (44100) делить на количество прочитанных семплов (у меня 8192) равно примерно 5.4, по всему диапазону. Чем больше семплов тем дольше читает и считает. Нужно придумать как точность до сотых повысить

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Люди, помогайте, пожалуйста. Скачайте прогу, запустите, проверьте правильно ли программа определяет ноты?
Пока буквенное обозначение. Октавы обозначаются цифрами. на толстых струнах цифра 2, на средних цифра 3, на тонких цифра 4.
Поиграйте в разных местах грифа, отпишитесь где возникают проблемы.
Я играю на акустике рядом с ноутбуком. Усиление микрофона сделал очень сильное. Вы можете попробовать играть через звукосниматель. На электро желательно делать чистый звук, и подавать сигнал через кабель в микр.вход или с комбика во встроенный микрофон. Пробуйте.


... и добавил:

И еще, погоняйте эту версию. Здесь рядом с нотой будет показано отклонение от теоретической частоты. На примере я немного подудел :) видно, что отклоняется на несколько центов.
Очень прошу, настройте гитары (опишите как настраивали, по эталонному звуку или по тюнеру) и погоняйте на программе. Мне  нужно больше информации об отклонениях delta, измеряется в музыкальных центах. Человек с трудом различает +-10 центов. Определенную ноту ловит, если частота попадает в +- 50 центов. Если у вас дельта от 5 до 10 , или большая но стабильная, это отлично. Если больше, значит анализатор плохо работает.
* NoteFromMicrophone.zip (51.43 КБ - загружено 53 раз.)
« Последнее редактирование: Мая 18, 2013, 14:58:09 от Rem_ »

Оффлайн CKay

  • Ветеран форума
  • ******
  • Сообщений: 4132
Считаю идею не особо перспективной, т.к. нет даже более-менее продуманной концепции приложения. Насчет тренировок:
1. Техника - это обязательно под метроном (естественно не все, но база - беглость пальцев левой руки, синхронизация левой и правой и т.д.), при этом проверка правильности выполнения упражнения кроме метронома должна осуществляться на уровне ощущений, а не по попаданию в ноты (сложно не попасть, выполняя простые упражнения, а уж не отследить косяк без помощи определителя нот - это вообще нонсенс).
2. Слух - тут инструмент вообще не является необходимым, есть мощные программы типа EarPro, а ввод определенной ноты с помощью гитары не имеет каких-либо принципиальных преимуществ.
3. Запоминание нот на грифе - это имхо единственно направление, в котором двигаться имеет хоть какой-то смысл. Но, в том же ГитарПро есть вспомогательные функции - например выбрать гамму и отобразить все ее ноты на грифе. Довольно наглядная вещь. Чтобы быть востребованной - программа должна помогать заниматься по реально хорошей действенно методике. Пока что даже самый простой софтовый тюнер даст более точную работу и более дружелюбный интерфейс. Если реализуете то о чем говорилось выше (программа выдает буквенное обозначение, человек ищет на грифе и программа определяет правильность) - то этого увы тоже мало. Опять же любой софтовый тюнер подойдет, надо только ноты придумывать от балды самому. Либо от отбратного - брать рандомную ноту и по памяти определять ее, после чего сверяться с показаниями тюнера.

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

ЗЫ Программку скачал, попробовал - на толстых струнах ошибается с октавой периодически, да и с нотами ошибки проскакивают (открытая 6ая у меня иногда как Си определялась). Плюс в высоких позициях бывают помарки - но это потому что проверял на простенькой гитаре с не особо отстроенной мензурой, правда программа расчитана на начинающих, а у них врядли будет гитара, которая идеально строит)

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Вот что получилось. В этой версии тренируется гамма до мажор малой октавы. Программа показывает буквенное обозначение ноты, игрок должен её сыграть. Ведется подсчёт нот и показывается потраченное время. Можете посчитать, сколько нот успеваете сыграть за минуту две.. :) я для примера 30 секунд сыграл 20 нот, скрин прикладываю.
Исходный код позволяет мгновенно набрать любой набор случайных нот: # define TASK_NOTES {48,50,52,53,55,57,59,60} Так массивом можно задать что угодно. Нумерацию нот брал из midi.
Пожалуйста, проверяйте.

Оффлайн Awaking

  • Завсегдатай
  • ***
  • Сообщений: 369
  • Ktulhu believer
Единственную пользу от данной программы вижу в определении попадания сыгранных нот в определенную гамму. Либо наоборот, брать предыдущие сыгранные ноты и показывать гаммы на грифе, в которые они укладываются (аналог Поиск гамм в guitarpro).

Оффлайн Rem_ Автор темы

  • Опытный
  • ****
  • Сообщений: 588
  • GuitarPlayer.Ru fan!
    • Мои музыкальные программы
Подскажите, на форуме есть где гаммы? Попробую реализовать в двух вариантах - в случайном выборе (как выше) и в игре всей последовательности вниз-вверх-вниз по нотам