2010-09-17 3 views
1

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

Я хочу загрузить один файл и изменять частоту этого файла каждый раз, когда этот файл воспроизводится. Поэтому я могу создавать мелодии из одного тона. Возможно ли это с помощью android/java?


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

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

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

+2

Что вы имеете в виду, если звучит плохо? Я ожидаю, что это будет звучать плохо, если вы случайно меняете частоту. –

ответ

0

Самый простой способ с Soundpool является для регулировки скорости на ваш призыв играть():

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

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

float rate = RATE_RANGE * pitch + MINIMUM_RATE; 
+0

У меня были трудности с использованием параметра скорости - см. Http://stackoverflow.com/questions/2291531/android-soundpool-rate-range. Кто-нибудь еще сталкивается с этим или обходным путем? – Chris