2008-09-12 5 views
11

Я работаю над приложением для крупных музыкальных колледжей. Функция, которую я рассматриваю, замедляет воспроизведение музыки, не изменяя ее высоту. Я видел это в коммерческом программном обеспечении, но не могу найти никаких библиотек или приложений с открытым исходным кодом, которые бы делали что-либо подобное.Замедление воспроизведения аудиофайла без изменения высоты тона?

  1. Есть ли там библиотеки?
  2. Как это можно сделать с нуля из разных форматов файлов?

Примечание: Я работаю в Java, но не перепутываю языки.

ответ

10

Временное ограничение довольно сложно. Чем больше вы замедляете или ускоряете звук, тем больше артефактов вы получаете. Если вы хотите знать, как они звучат, послушайте «Рокфеллер Сканк» от Fat Boy Slim. Есть много способов сделать это, чтобы у всех были свои сильные и слабые стороны. Математика может стать очень сложной. Вот почему так много проприетарных алгоритмов.

Эта страница объясняет вещи немного яснее, чем я могу, и ссылки на библиотеку Дирака. http://www.dspdimension.com/admin/time-pitch-overview/

Я нашел эту ссылку для Java кода, чтобы сделать шаг сдвига/timestretching http://www.adetorres.com/keychanger/KeyChangerReadme.html

+0

"Funk Soul Brother", конечно, "О Rockafeller Skank";) http://en.wikipedia.org/wiki/The_Rockafeller_Skank – moobaa 2008-09-13 03:13:54

+1

@moobaa: DOH .. глупо .. Фиксированный это! надеюсь, никто не заметил :-) – Mendelt 2008-09-14 17:09:12

2

Этот сайт объясняет, как это делается в физическом мире: http://www.wendycarlos.com/other/Eltro-1967/index.html

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

4

Я использую soundstretch, чтобы ускорить подкасты, которые работают неплохо, не пробовали его на музыку tho тьфу.

2

Один из способов сделать это - удвоить частоту дискретизации без изменения частоты дискретизации источника. (Пример низкого качества, но его легко реализовать. Примечание: вы также можете уменьшить частоту дискретизации).

Ознакомьтесь с любой математикой, связанной с фазовыми вокодерами.

Другим распространенным методом является создание массива fft-бункеров, которые хранят данные для запланированных интервалов вашего звука. Затем вы можете выбрать, как быстро итерации через бункеры, и вы можете повторно синтезировать эти аудиоданные столько, сколько вы выберете, что позволит вам растягивать один короткий сегмент вашего звука до тех пор, пока вам нравится.

1

Надежность делает это из коробки, и это бесплатно. Есть несколько плагинов для mp3-плееров, а также бесплатные. По-видимому, это довольно легко сделать с mp3, поскольку он уже закодирован в частотной области.