реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Распознавание образа сигнала real-time
voicek
сообщение Dec 17 2010, 13:09
Сообщение #31





Группа: Участник
Сообщений: 14
Регистрация: 10-10-10
Из: Королёв Моск.обл.
Пользователь №: 60 052



Цитата(phantom @ Dec 16 2010, 21:27) *
Я поверхностно касался музыкального программирования... Поэтому могу сказать, что вы очень недооцениваете способности западных (в частности германских)разработчиков. Там софт пишут не программирующие музыканты, а музыцирующие математики и аудиоинженеры весьма высокого уровня.

Прям как при Петре 1, куда нам дуракам до немцев да англичан sm.gif. Возможно я не совсем понятно выразился. Я предположил, (предчувствуя, что злые дядьки fontp и DRUID3, начнут брыкаться и храпеть заслышав о "НС") что термин "нейронные сети" использован больше как маркетинговый ход, дабы усладить слух музыканта (обычного, не программирующего). А музыцирующие математики и аудиоинженеры весьма высокого уровня могут спать спокойно, главное результат, а прибор у немцев получился лучший в своем классе, как говорится "по плодам судите...". А мы всего лишь, пытались "дедуктивным методом" отсеять "плевелы от зерен" и предположить методы осуществления данной задачи, за что и Вам спасибо.

Цитата(phantom @ Dec 17 2010, 17:05) *
Не стану. Если инструменты изначально точно настроены, то конечно попадет туда куда надо. sm.gif есть правда инструменты (особенно электронные звуки) которые очень сильно плывут по частоте со временем (ну типа глиссандо). Такое может быть и в электрогитаре, когда тянут рычаг подтяжки струн и частоты синхронно плывут. Там весь фокус в том, что надо анализируя по фронту, пропустить переходной процесс и выделить основной тон, а следующий плывущий "хвост" опустить. А вообще я так понимаю, что этот прибор для того, чтобы аудио с гитары в midi переделывать?

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

Сообщение отредактировал voicek - Dec 17 2010, 13:12
Go to the top of the page
 
+Quote Post
alex_os
сообщение Dec 17 2010, 13:49
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(voicek @ Dec 17 2010, 19:09) *
...
Необходимо преобразовать аудио сигнал, поступающий с датчика электрогитары или бас-гитары, в сигнал midi-протокола.
...


Я правильно понимаю что на каждую струну стоит свой датчик?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
blackfin
сообщение Dec 17 2010, 14:24
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(voicek @ Dec 17 2010, 19:09) *
Уточним задачу. Необходимо преобразовать аудио сигнал, поступающий с датчика электрогитары или бас-гитары, в сигнал midi-протокола.

Тогда зачем Вам real-time? Или в Германии есть гитаристы способные выдать 100 различных нот в секунду?.. biggrin.gif
Go to the top of the page
 
+Quote Post
voicek
сообщение Dec 17 2010, 15:03
Сообщение #34





Группа: Участник
Сообщений: 14
Регистрация: 10-10-10
Из: Королёв Моск.обл.
Пользователь №: 60 052



Цитата(alex_os @ Dec 17 2010, 19:49) *
Я правильно понимаю что на каждую струну стоит свой датчик?

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

Цитата(blackfin @ Dec 17 2010, 20:24) *
Тогда зачем Вам real-time? Или в Германии есть гитаристы способные выдать 100 различных нот в секунду?.. biggrin.gif

Задержка между звукоизвлечением и звучанием ноты должна быть минимальной (>10мс на слух уже заметно).
Т.е. время обработки не должно превышать 10мс.
Go to the top of the page
 
+Quote Post
phantom
сообщение Dec 18 2010, 04:38
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Ну тогда все проще. Я то думал что надо любой инструмент анализировать в том числе и акустический. Можно наверное взять АЦП с частотой семплирования побольше (192-384кГц,) получить кучу отсчетов, сделать БПФ в формате 32 бита, и пробовать анализировать восстановленные НЧ составляющие. может быть по принципу периодомера.. Можно попробовать алгоритм на РС и оценить время задержки на обработку, и тогда станет ясно на чем его можно реализовать.


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Dec 18 2010, 05:41
Сообщение #36


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(voicek @ Dec 17 2010, 23:03) *
Задержка между звукоизвлечением и звучанием ноты должна быть минимальной (>10мс на слух уже заметно).

А для чего нужен такой преобразователь midi особенно в рилтайме?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
phantom
сообщение Dec 18 2010, 08:48
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Цитата(GetSmart @ Dec 18 2010, 12:41) *
А для чего нужен такой преобразователь midi особенно в рилтайме?

Наверное для того, чтобы тот, кто умеет играть только на гитаре, мог играть на синтезаторах на концертах. sm.gif В противном случае можно записать трек и перевести его в миди немного подождав.


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
qxov
сообщение Dec 21 2010, 04:55
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 22-03-07
Из: Санкт-Петербург
Пользователь №: 26 406



Цитата(voicek @ Dec 15 2010, 03:46) *
2.Нейронные сети.


Я вопросом не владею, посему интересуюсь: чем нейронные сети отличаются от адаптивного фильтра?
Go to the top of the page
 
+Quote Post
phantom
сообщение Dec 21 2010, 06:39
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



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


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 21 2010, 08:01
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(qxov @ Dec 21 2010, 10:55) *
Я вопросом не владею, посему интересуюсь: чем нейронные сети отличаются от адаптивного фильтра?


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


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
qxov
сообщение Dec 22 2010, 06:06
Сообщение #41


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 22-03-07
Из: Санкт-Петербург
Пользователь №: 26 406



Цитата(Oldring @ Dec 21 2010, 14:01) *
Нейросети сильно нелинейны, имеют более запутанную структуру, более непредсказуемые алгоритмы обучения и более непредсказуемое поведение.

Сплошные плюсы biggrin.gif
Go to the top of the page
 
+Quote Post
phantom
сообщение Dec 22 2010, 14:54
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Цитата(qxov @ Dec 22 2010, 13:06) *
Сплошные плюсы biggrin.gif

Но зато если повезет, то получится круче (а иногда много круче), чем обычными способами. Но с опытом и интуицией, вероятность благоприятного исхода сильно повышается...то есть уменьшается время успешной реализации прожекта sm.gif


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
Diusha
сообщение Jan 1 2011, 03:43
Сообщение #43


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(voicek @ Dec 17 2010, 19:09) *
на верхних частоту можно спокойно высчитать по периоду без всяких НС и корреляций, что и делают успешно американские и прочие европейские друзья.

Решаю задачу, сходную по сути. Не подскажет ли кто оптимальный алгоритм, по которому "прочие друзья" "спокойного высчитывают по периоду"? Учитывая, что сигнал, в частности с муз инструмента, может иметь более двух экстремумов по времени за период, максимум в одном периоде может отличаться от максимума в другом периоде и т.п., задача не так уж тривиальна, как кажется на первый взгляд. Первое, что приходит в голову, - куча сравнений со взятыми от балды порогами (в % от размаха сигнала). Но, думаю, есть что-то получше

Сообщение отредактировал Diusha - Jan 1 2011, 03:45
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jan 3 2011, 19:44
Сообщение #44


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Для определения высоты тона в реальном времени с малой задержкой хорошо работает следующий алгоритм "двойного окна". Раз у вас допустима задержка в 10 мс, то берём окно длиной 40 мс: на 10 мс вперёд по времени и на 30 мс назад. Вычисляем автокорреляцию и находим по ней высоту тона (детали — далее). Эта оценка обладает хорошей надёжностью (в т.ч. к октавным прыжкам), но отстаёт по времени от сигнала (т.к. окно сильнее простирается назад во времени). Далее берём более короткое окно, центрированное по времени, длиной 20 мс. Вычисляем автокорреляцию и ищем пик в небольшой окрестности лага, найденного с большим окном. Это и будет ответ. Кстати, во многих задачах небольшое отставание оценок высоты тона от самого сигнала не критично, если высота тона меняется медленно.

Как вычислить высоту тона по автокорреляции? В процессе вычисления автокорреляции из спектра сигнала можно извлечь квадратный корень, чтобы слегка "отбелить" спектр и обострить пики АКФ. На полученной псевдо-АКФ ищется максимум. Для повышения надёжности алгоритма можно искать максимум АКФ, сглаженной небольшим НЧ-фильтром. При поиске максимума учитываются значения АКФ с половинным лагом, чтобы избежать октавных ошибок. Далее по несглаженной АКФ производится параболическая интерполяция пика для уточнения положения максимума. Перед интерполяцией значения АКФ можно возвести в степень < 1 для увеличения точности интерполяции.
Go to the top of the page
 
+Quote Post
phantom
сообщение Jan 4 2011, 06:39
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Цитата(Alexey Lukin @ Jan 4 2011, 01:44) *
Для определения высоты тона в реальном времени с малой задержкой хорошо работает следующий алгоритм "двойного окна". Раз у вас допустима задержка в 10 мс, то берём окно длиной 40 мс: на 10 мс вперёд по времени и на 30 мс назад. Вычисляем автокорреляцию и находим по ней высоту тона (детали — далее). Эта оценка обладает хорошей надёжностью (в т.ч. к октавным прыжкам), но отстаёт по времени от сигнала (т.к. окно сильнее простирается назад во времени). Далее берём более короткое окно, центрированное по времени, длиной 20 мс. Вычисляем автокорреляцию и ищем пик в небольшой окрестности лага, найденного с большим окном. Это и будет ответ. Кстати, во многих задачах небольшое отставание оценок высоты тона от самого сигнала не критично, если высота тона меняется медленно.

Как вычислить высоту тона по автокорреляции? В процессе вычисления автокорреляции из спектра сигнала можно извлечь квадратный корень, чтобы слегка "отбелить" спектр и обострить пики АКФ. На полученной псевдо-АКФ ищется максимум. Для повышения надёжности алгоритма можно искать максимум АКФ, сглаженной небольшим НЧ-фильтром. При поиске максимума учитываются значения АКФ с половинным лагом, чтобы избежать октавных ошибок. Далее по несглаженной АКФ производится параболическая интерполяция пика для уточнения положения максимума. Перед интерполяцией значения АКФ можно возвести в степень < 1 для увеличения точности интерполяции.

Ну вот, вроде тяжелая музыкальная артиллерия подтянулась sm.gif


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 17:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016