Заметка юзера Gol

Щщас буду ругацо плохими словами

железки математика

Как сделать транспонирование звука? Смещение тональности, оно же Pitch Shift.

Сижу вот, пишу сервер звуковых эффектов для виртурилки, нужен для эмитации звука движка машинки (а также клаксона и прочих звуков). Всё на базе ALSA.

Есть буфер, в который помещаю сэмпл звука двигателя. С микшированием звуков (например, бибикание одновременно со звуком двигателя) разобрался — тупо побайтовое сложение двух буферов сэмплов, двигателя и клаксона (с последующим ограничением по амплитуде чтоб треска не было). А вот сделать транспонирование звука двигателя что-то не получается. Транспонирование — изменение тональности, т.е. чем быстрее машинка едет — тем выше звук. Пробовал оставлять только каждый 2-й (или 3-й, 4-й) байт из буфера сэмпла, но получается какая-то фигня.

Всё это дело должно производиться на лету. В голову лезут смутные воспоминания о FFT (быстрое преобразование Фурье), но конкретно не пойму как применить.

Если кто может помочь - велкам в комменты.

Нарытый материал:
ЕРЕСЬ ЗВУКОЗАПИСИ
http://dafx.labri.fr/main/papers/p007.pdf
http://www.dspdimension.com/admin/time-pitch-overview/
http://soundprogramming.net/programming_and_apis/calculating_sample_shift
http://gamedev.tutsplus.com/tutorials/implementation/noise-creating-a-synthesizer-for-retro-sound-effects-introduction/

Оффтоп: онлайн синтезатор
Копия в ЖЖ Gol      Суббота, 2 Февраля, 2013 22:16       4


Добавить комментарий
 

Гость Воскресенье, 3 Февраля, 2013 01:53 цитировать ссылка на коммент

так частоту увеличивать... хз как это делается..

 

 

Гость Воскресенье, 3 Февраля, 2013 01:58 цитировать ссылка на коммент

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

 

 

Gol Воскресенье, 3 Февраля, 2013 16:49 цитировать ссылка на коммент

2 Гость:
Не, частоту тут задолбаешься увеличивать, это ж не генерация звука по частоте а изменение сэмпла. Напихать сэмплов - очень коряво, не наш метод.

 

 

Gol Воскресенье, 3 Февраля, 2013 16:50 цитировать ссылка на коммент

Есть транспонирование! Честное математическое, на лету всё пересчитывается, всё ништяг.

 

Сколько букв в слове Гол?

Вы вошли как Гость      

Сейчас на сайте: 0
и 3 гостей






Страница сгенерирована за 0.0053939819335938 мкс

cached