¿Cómo ralentizar y estirar el audio en Android?

He descubierto que la clase MediaPlayer no es compatible con el cambio de la velocidad de reproducción. He intentado Soundpool, funciona, pero cuando lo ralentizo a 0,5f de la velocidad, el tono se vuelve raro (bajo tono). Quiero cambiar la velocidad, pero mantener la misma característica de audio por lo que si lo ralentizo, se estira el audio, pero no hace que el tono más bajo. ¿Cuál es el mejor día para hacer esto? ¡Gracias de antemano por cualquier ayuda!

Echa un vistazo a este sitio web: http://www.pitchtech.ch/

"El proyecto de investigación PitchTech tiene como objetivo proporcionar transformaciones de audio de alta calidad implementadas en Java". Alberga numerosos artículos de investigación, con suficiente información para que usted construya su propia, o utilice una de sus implementadas transformaciones de audio.

Lo he encontrado usando esta búsqueda de Google: Transformaciones de audio Stretch .

Esto puede ser de alguna utilidad. Después de probar todo, decidí ir con SoundPool para cambiar el Pitch, una tasa de reproducción de 2.0 hace que el sonido toca a una frecuencia doble de su original, y una tasa de reproducción de 0.5 hace que se reproduzca a la mitad de su frecuencia original. El rango de velocidad de reproducción es de 0,5 a 2,0. Pero funcionó con freq más bajo y más alto que 0.5 y 2.0.

Estoy publicando mi código de trabajo,

Pero como su apenas para el propósito de la demostración, aquí usted necesita cambiar manualmente "tarifa de la reproducción", cada vez que usted instala la aplicación para por ejemplo: "sp.play (explosión, 1,1,0,0,1.5f)" aquí "1.5 F "es la velocidad de reproducción. Uno puede crear fácilmente un EditView, o algo similar para establecer el valor de la tasa de reproducción en tiempo de ejecución.

En esta aplicación, sólo tienes que tocar en la pantalla de la aplicación para reproducir la música a la velocidad de reproducción establecida.

import java.io.IOException; import android.app.Activity; import android.content.res.AssetFileDescriptor; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SoundPoolActivity extends Activity implements OnClickListener { SoundPool sp; int explosion = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View v = new View(this); v.setOnClickListener(this); setContentView(v); sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0); //explosion = sp.load(this, R.raw.hh,0); explosion = sp.load("/sdcard/hh.m4a",0); } public void onClick(View v){ if (explosion!=0){ sp.play(explosion, 1,1,0,0,2.3f); } } } 
  • No se puede acceder a AudioRecorder
  • Obtener la frecuencia de un archivo de audio en cada 1/4 segundos en android
  • Descifrar audio / video sobre la marcha a MediaPlayer
  • Android MediaPlayer con AudioEffect: Obtención de error (-22,0)
  • Redirigir audio / crear rutas de sonido alternativas en Android
  • Imposible mezclar archivos de audio y archivos de video usando MediaMuxer?
  • ¿Cómo grabar vídeo con sonido específico mediante programación en android?
  • Usar AudioTrack de Android para combinar bytes de muestras de sonido produce ruido
  • Reproducir archivo de audio desde el directorio de activos
  • ¿Puede Android MediaPlayer reproducir audio en un archivo comprimido?
  • Android - cómo hacer el fondo de rosca correctamente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.