Программно увеличивайте высоту тона массива звуковых сэмплов

Здравствуйте, добрые люди из мира аудио-вычислений,

У меня есть массив сэмплов, представляющих запись. Допустим, это 5 секунд на частоте 44100 Гц. Как мне воспроизвести это с повышенным тоном? А можно ли динамически увеличивать и уменьшать высоту звука? Например, нужно медленно увеличивать высоту тона, чтобы удвоить скорость, а затем отступить.

Другими словами, я хочу взять запись и воспроизвести ее, как если бы ее «царапал» ди-джей

Псевдокод всегда приветствуется. Я напишу это на C.

Спасибо,


РЕДАКТИРОВАТЬ 1

Позвольте мне уточнить мои намерения. Я хочу сохранить частоту воспроизведения 44100 Гц, поэтому мне нужно манипулировать семплами перед воспроизведением . Это также связано с тем, что я хотел бы микшировать звук с увеличенной высотой тона со звуком, работающим с нормальной скоростью .

Другими словами, может мне нужно как-то сжать звук по тому же количеству образцов? Таким образом, при воспроизведении он будет звучать быстрее?


РЕДАКТИРОВАТЬ 2

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


РЕДАКТИРОВАТЬ 3

Образец кода, написанный на C, который принимает 2 аргумента (массив сэмплов и коэффициент высоты тона), а затем возвращает массив нового звука, было бы фантастически!


PS Я начал награда за это не потому, что я не думаю, что уже данные ответы недействительны. Я просто подумал, что было бы хорошо получить больше отзывов по этому поводу.



НАГРАДА НАГРАДЫ

Честно говоря, я хотел бы распределить награду на несколько разных ответов, так как их было довольно много, и я считал их очень полезными. Особый привет Даниэлю за то, что он передал мне код, и AShelly и Hotpaw2 за такие подробные ответы.

В конечном итоге, хотя я использовал ответ из другого вопроса SO , на который ссылается специалист по данным, поэтому награда достается ему.

Еще раз спасибо!

12
задан Community 23 May 2017 в 11:53
поделиться