изменение частоты звукового файла в Android - PullRequest
1 голос
/ 17 сентября 2010

Я пытаюсь изменить частоту одного звукового файла. Мне удалось сделать это в Android с помощью SoundPool. Но результат звучит очень плохо. Поэтому я перешел к Фурье-преобразованию - но я не уверен, что это то, что я ищу.

Я хочу загрузить один файл и изменять частоту этого файла каждый раз, когда этот файл воспроизводится. Так что я могу создавать мелодии из одного тона. Это возможно с Android / Java?


Вот так мне удалось это сделать. С "плохим" я имею в виду, что это звучит не в духе.

Если я хочу воспроизвести следующую частоту ноты в файле, я должен умножить ее на 2 ^ (1/12). Но поскольку это просто число с плавающей точкой, я думаю, что оно недостаточно точное, чтобы получить «реальную» частоту следующей ноты.

Есть ли "простой" способ достижения этой цели?

1 Ответ

0 голосов
/ 17 сентября 2010

Самый простой способ использования SoundPool - это настроить скорость вызова на игру ():

play(aSoundId, leftVolume, rightVolume, 1, 0, rate);

Скорость может варьироваться от 0,5 до 2,0f, хотя крайние значения обычно не звучатотлично, поэтому вы можете установить приемлемый диапазон (например, .4f) и минимальную скорость (например, .85f).Тогда у вас может быть переменная для управления тем, где вы находитесь в этом диапазоне (например, число с плавающей запятой, которое находится в диапазоне от .0f до 1.0f):

float rate = RATE_RANGE * pitch + MINIMUM_RATE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...