Изменение высоты звука с помощью Java (Android)

Я хочу изменить высоту звука без изменения скорости звука, а затем сохранить его в файл wav или mp3, идея состоит в том, чтобы сделать некоторые звуковые эффекты с помощью java на Android, я не нашел четкого способа сделать так, есть ли какие-либо учебники для чтения?


person Mahmoud Nagy    schedule 27.10.2016    source источник


Ответы (2)


Ниже приведена ссылка на простую и ценную учебную функцию на C от Stephan M. Bernsee, называемую smbPitchShift.cpp, которая может повышать или понижать высоту музыкального сигнала.

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

Похоже, что Бернси внес некоторые изменения в свой код по сравнению с версией, связанной с GitHub. Его новый код доступен для загрузки с его веб-сайта — он может увеличить диапазон отклонений от его первоначальной спецификации. Я подправил его исходный код, чтобы увеличить высоту тона в 8 раз.

https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

http://blogs.zynaptiq.com/bernsee/time-pitch-overview/

person James Paul Millard    schedule 28.10.2016
comment
Не java, но попробую понять алгоритм из кода C, спасибо :D - person Mahmoud Nagy; 28.10.2016

После небольшого исследования я обнаружил, что то, что вы пытаетесь сделать, называется «сдвигом высоты тона». Это включает в себя много математики и возни со звуковыми пакетами, очевидно, потому что изменение высоты звука автоматически меняет скорость его воспроизведения. Вернуть его к желаемой скорости, сохраняя при этом звук на уровне, который считается «нормальным», — это не прогулка в парке.

В любом случае, поскольку Unity3D использует C#, вы можете (и я подчеркиваю слово «может») использовать эту библиотеку с открытым исходным кодом для получения нужного вам звукового эффекта. Он основан на NAudio (также с открытым исходным кодом и C#), поэтому теоретически вы должны иметь возможность использовать его или его части в своем проекте.

person siddhesh    schedule 27.10.2016
comment
Я читал о смещении высоты тона, но идея в том, что я не знаю, как реализовать это в коде, в любом случае я посмотрю на эту библиотеку, спасибо. - person Mahmoud Nagy; 27.10.2016