Привет, добрые люди в мире звуковых вычислений,
У меня есть массив образцов, которые представляют запись. Скажем, это 5 секунд при 44100 Гц. Как я смогу сыграть на этом фоне? И можно ли динамически увеличивать и уменьшать высоту тона? Подобно тому, как шаг медленно увеличивается, чтобы удвоить скорость, а затем отступить.
Другими словами, я хочу записать и воспроизвести его, как если бы он был "поцарапан" d.j.
Псевдокод всегда приветствуется. Я напишу это в C.
Спасибо,
РЕДАКТИРОВАТЬ 1
Позвольте мне уточнить мои намерения. Я хочу сохранить воспроизведение на частоте 44100 Гц, поэтому мне нужно управлять образцами перед воспроизведением. Это также связано с тем, что я хотел бы смешивать аудио с увеличенным шагом с аудио, которое работает с нормальной скоростью.
Выраженный по-другому, может быть, мне нужно как-то сжать звук над тем же количеством образцов? Таким образом, когда он будет воспроизводиться, он будет звучать быстрее?
РЕДАКТИРОВАТЬ 2
Кроме того, я хотел бы сделать это сам. Никаких библиотек, пожалуйста, (если вы не чувствуете, что я могу выбрать код и найти что-то интересное).
РЕДАКТИРОВАТЬ 3
Образец кода, написанный на C, который принимает 2 аргумента (массив выборок и коэффициент основного тона), а затем возвращает массив нового звука, будет фантастическим!
PS Я начал щедрость на этом не потому, что не думаю, что уже предоставленные ответы недействительны. Я просто подумал, что было бы хорошо получить больше отзывов по этому вопросу.
НАГРАЖДЕНИЕ BOUNTY
Честно говоря, я хотел бы распределить награду на несколько разных ответов, поскольку их было немало, что я считал очень полезным. Специальный крик Даниэлю для передачи мне кода и AShelly и Hotpaw2 для того, чтобы вложить такие подробные ответы.
В конечном счете, хотя я использовал ответ от другого вопроса SO, на который ссылается datageist, и поэтому награда присуждается ему.
Еще раз спасибо всем!