Cómo hacer un sonido de longitud variable en Android

Estoy tratando de hacer una aplicación que reproduce un sonido como un órgano de piano. Cuando el usuario pulsa un botón, reproducirá un sonido parecido a un piano. La dificultad es que el usuario puede mantener su dedo hacia abajo durante cualquier período de tiempo. Cuando levantan el dedo de la debe atenuarse en lugar de detenerse abruptamente.

He jugado con SoundPool y Media Player, pero no parecen adecuados.

Hay un montón de aplicaciones de piano por ahí … ¿Alguien sabe cómo resolver este problema?

Deberá utilizar la clase AudioTrack. El uso básico es escribir sus datos de sonido utilizando el método write() AudioTrack durante la duración que desee que se escuche. Tendrás que usar un hilo separado para cada voz simultánea que quieras "reproducir".

Aquí está la página de referencia de AudioTrack y aquí hay una entrada de blog donde el autor hace un buen trabajo de mostrar qué hacer sin muchas distracciones.

  • Android 4.0.4 WebView MediaPlayer Error (1, -2147483648) Uso de <audio> Etiqueta y archivo de activos locales
  • Android reproduce sonidos después del retardo
  • Implementación de sonidos de pitido en la aplicación de Android
  • Android obtener frecuencias de sonido en tiempo real?
  • ¿SoundTouch en Android?
  • Android en vivo de vídeo - El audio no funciona
  • ¿Hay una manera de llamar a alguien y reproducir un archivo de audio en android?
  • Reproducir audio de un video musical usando la API de Youtube en android, cuando mi aplicación está minimizada
  • Android: ¿Por qué el constructor de SoundPool está obsoleto?
  • Imposible mezclar archivos de audio y archivos de video usando MediaMuxer?
  • Android 6.0 (Marshmallow): Cómo jugar notas de midi?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.