marconi |
Отправлено: 25.06.2004, 15:19 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 86
|
Добрый день,вечер всем. Подскажите (не надо исходников) с чего начать. Хочу программу для настройки гитары. На вход звуковой карты -инструмент. Далее сравнение тональности с тоном заданным для каждой струны. выше, ниже.
|
|
Георгий |
Отправлено: 25.06.2004, 21:22 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
хороший вопрос — "с чего начать"
я бы начал с рассмотрения потока данных:
аналоговый вход звуковой карты -> дискретные выборки (48kHz) -> преобразование фурье -> набор гармоник и их амплитуд -> перевод гармоник в тон (я не музыкант, поэтому это только догадка) -> сравнение с заданным тоном и соответствующее сообщение пользователю
что бы это сделать нужно:
1. уметь работать со звуковой картой (DirectSound?)
2. разобраться с Фурье
Ну как? Похоже на то, с чего начать можно?
|
|
exp |
Отправлено: 25.06.2004, 22:54 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Недавно экспериментировал с преобразованием Фурье.
Самое главное там в MainUnit.cpp — Там в разделе User procedures
спрятано прямое и обратное преобразование Фурье (Не FFT) в комплексной форме. Временная сложность О(n^2) /* что плохо :-( */
и Complex.h — Здесь класс, над которым работает преобразование.
Преобразования производятся по формулам:
S[j] = 1/sqrt(n)*sum(f[k]*exp(-i*w*k*j),k=0..(n-1))
F[j] = sum(S[j]*exp(-i*w*k*j), k=0..(n-1));
Здесь i — не индекс, а мнимая единица.
w = 2*Pi/n;
Таблично заданная функция запихивается в массив значений Complex *f. Результат преобразования — массив Complex *S.
Модуль числа S[m] — амплитуда m-той гармоники.
Модуль отношения S[m].у/S[m].x — тангенс начальной фазы m-той гармоники.
Вроде все...
Убедительная просьба критическим взором окинуть класс и сказать, в каких местах я проявляю задоручие.
Отредактировано exp — 26/06/2004, 00:13
|
|
exp |
Отправлено: 25.06.2004, 22:57 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Тьфу ты... Присоединить забыл.
Вот...
|
|
marconi |
Отправлено: 26.06.2004, 07:22 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 86
|
QUOTE (Георгий @ 25/06/2004, 22:24) | хороший вопрос — "с чего начать"
что бы это сделать нужно:
1. уметь работать со звуковой картой (DirectSound?)
2. разобраться с Фурье
Ну как? Похоже на то, с чего начать можно? |
Ну гармоники в счет наверно можно не брать. Допустим какая то струна наприер вторая (я то же не музыкант) будет "СИ" и должна иметь частоту 700 Гц. Так сравнить её со стандартной частотой 700 Гц.
Учитывать гармоники это уже "темный лес". Такую штуку я видел в виде
простой коробочки собранной на 2 микросхемах, где был вход для гитары и 2 светодиода частота "ниже" и "выше".Ну это было чисто физическое устройство(может не так сказал). Да попробую начать со звуковой карты.
|
|
Георгий |
Отправлено: 26.06.2004, 12:04 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
QUOTE | Учитывать гармоники это уже "темный лес". |
а вдруг потом захотят не просто гитары настраивать, а еще и чистоту звука оценивать?
Отредактировано Георгий — 26/06/2004, 13:06 |
|
marconi |
Отправлено: 26.06.2004, 13:43 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 86
|
Да тут точно без спецов в музыке не обойтись, кто знает как они там настраивают.Попалась ссылка на программу для настройки гитары. Я посоветовал другу(он хороший музыкант) потом скачал и говорит что там 6 клавиш соответствующих своей струне. Ничего, никуда не подключается жмешь клавишу на экране, слышишь звук, сравниваешь со струной. Туфта говорит. Хорошо ,очередное спасибо всем.
Отредактировано marconi — 26/06/2004, 14:47
|
|
Георгий |
Отправлено: 25.08.2004, 22:37 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
програмку удалось сделать или обошлись уже готовыми решениями? |
|