2016-10-27 15 views
0

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

ответ

0

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

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

+0

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

1

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

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

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

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

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

+0

Не java, но я постараюсь понять алгоритм из кода C, спасибо: D –