Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Android studio воспроизведение и изменение звуков

hjyntg dfxgnb v Ученик (78), на голосовании 1 год назад
помогите в android studio воспроизводить звуки по количеству hz как на пианино, только не отдельными аудиофайлами. Желательно с кодом. Спасибо
Голосование за лучший ответ
Sergio 2.1 Оракул (67303) 1 год назад
Вы можете использовать класс SoundPool в Android для воспроизведения звуков на разных частотах. Этот класс позволяет загружать и воспроизводить короткие звуковые клипы, и вы можете указать скорость воспроизведения при воспроизведении звука, что изменит его высоту. Вот пример того, как вы можете использовать SoundPool для воспроизведения звука на разных частотах:
 import android.media.AudioAttributes; 
import android.media.SoundPool;

// Настройка AudioAttributes для SoundPool
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();

// Создание SoundPool
SoundPool soundPool = new SoundPool.Builder()
.setMaxStreams(10)
.setAudioAttributes(audioAttributes)
.build();

// Загрузка звука
int soundId = soundPool.load(this, R.raw.sound, 1);

// Воспроизведение звука на разных частотах
float[] frequencies = {0.5f, 1.0f, 1.5f, 2.0f};
for (float frequency : frequencies) {
soundPool.play(soundId, 1.0f, 1.0f, 1, 0, frequency);
Thread.sleep(1000);
}
В этом примере мы сначала настраиваем AudioAttributes для SoundPool, затем создаем SoundPool с максимумом 10 потоков и указанными AudioAttributes. Затем мы загружаем звук из папки сырых ресурсов с помощью метода load() класса SoundPool. Наконец, мы воспроизводим звук на разных частотах, вызывая метод play() класса SoundPool с разными скоростями воспроизведения.
hjyntg dfxgnb vУченик (78) 1 год назад
а можно это как-то точно измерять в гц
Sergio 2.1 Оракул (67303) hjyntg dfxgnb v, Класс SoundPool позволяет воспроизводить звуки на разных частотах, указывая скорость воспроизведения, но он не предоставляет прямого способа указать частоту в Гц. Однако вы можете рассчитать необходимую скорость воспроизведения для достижения определенной частоты, используя формулу playbackRate = targetFrequency / originalFrequency, где targetFrequency - это частота, которую вы хотите достичь в Гц, а originalFrequency - это исходная частота звука в Гц.
hjyntg dfxgnb vУченик (78) 1 год назад
спасибо
Похожие вопросы