¿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 mux tanto de audio como de vídeo
  • ¿Es posible interceptar datos de voz durante la llamada?
  • Androide AudioRecord lectura de amplitud de MIC
  • Multiplexación de flujos de audio y vídeo en línea en android
  • Quiero comprobar el volumen de la voz en android
  • Descodificación de archivos de audio y re-codificación al formato PCM deseado: 44,100 kHz, 2 canales, 16 bits
  • ¿Cómo agregar efectos de sonido en Android?
  • Transferencia de datos mediante ultrasonido
  • Calcular el nivel de sonoridad desde el micrófono en android
  • Cómo reproducir un flujo de audio de bytes en android?
  • ¿Cómo obtengo un InputStream para una canción comprada en la tienda de GooglePlay?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.