psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2008-07-16 10:15 pm

Вдруг кто-то знает

У меня вопрос к знатокам математики... уже - дискретной математики, еще уже - тем, кто разбирается в звуковом синтезе. Если у вас есть такие знакомые, которые, быть может, знают ответ, киньте в меня линком на них или в них - линком на меня.

Итак.

Дана некоторая волна (на практике - звуковая, но не суть). Она записана в дискретном виде - как длинный-предлинный набор отсчетов амплитуды через равные промежутки времени. Над некоторым куском этой волны волны мы можем выполнить БПФ (быстрое дискретное преобразование Фурье). Получим спектр, опять же, дискретный.

Задача первая. Взять небольшой кусочек волны длительностью dt (скажем, полсекунды звучания некой мелодии). Сгенерировать кусочек подлинее DT. Чтобы, значит, та же самая нота длилась подольше. Как это сделать? Если я просто выполню обратное БПФ, то получу тот же самый кусочек, длиной dt, а мне надо больше. Если я попробую тупо скопировать кусочек DT/dt раз, возникнут две бяки:
1. Артефакты на границе между кусочками.
2. Паразитная частота 1/dt, которая может быть слышна как пульсация громкости.
Если просто растянуть сигнал с помощью аппроксимации, то получится другая нота - более низкая в DT/dt раз.

Задача вторая. Взять кусочек dt, что-нибудь сделать с его частотами (скажем, убрать ровно одну). Потом записать его назад. То есть, речь про БПФ-фильтр. Но... что делать с артефактами на границе? Я тут придумываю разные методы сглаживания артефактов... может, кто знает уже известный хороший метод?

[identity profile] bsivko.livejournal.com 2008-07-16 07:17 pm (UTC)(link)
В любом случае тебе нужно знать период волны. Если кусочек маленький, менее 2T, то установить период не получится (название теоремы уже не помню).

Далее зная период просто берется кусочек волны равный периоду и повторяется. Если функция периодическая, но с шумами, то берется кусок длины N*T, где чем больше N тем лучше, запускается по оси времени в бесконечность и такую функцию в ряд Фурье. Обычно расчета приближения в 90% энергии волны достаточно для приемлемого результата.

[identity profile] psilogic.livejournal.com 2008-07-17 06:31 am (UTC)(link)
Волна не синусоидальная, а случайная - как в звуковой записи.

Звуковая достаточно близка к синусоидальной.

[identity profile] sanitareugen.livejournal.com 2008-07-17 06:47 am (UTC)(link)
Даже на шипящих, тем более на порождённых колебаниями голосовых связок...

[identity profile] psilogic.livejournal.com 2008-07-17 07:06 am (UTC)(link)
Близка - с огромной натяжкой :) Во-первых, там не одна синусоида, а сумма из многих. Во вторых, каждая синусоида норовит возрастать и затухать. В-третьих - биения по громкости и частоте.

Как-то вот так:



- это график записи голоса, буква "а".

Тем не менее - квазипериодика.

[identity profile] sanitareugen.livejournal.com 2008-07-17 07:33 am (UTC)(link)
Не зря Гильберт хорошо работает (О! Лично я Гильберта для этой задачи не использовал, обдумал, но и так удовлетворило, тем более требовалось попроще, для реализации на сигнальнике, но вдруг?)

Re: Тем не менее - квазипериодика.

[identity profile] psilogic.livejournal.com 2008-07-17 07:52 am (UTC)(link)
Я смотрю, ругаетесь плохими словами из Рабинера-Голда :)))) Там что-то про Гильберта было :)

Гильберт вообще интересен...

[identity profile] sanitareugen.livejournal.com 2008-07-17 10:45 am (UTC)(link)
"Преобразователь и человек".