[Solved] How to make Android play music reliably, without chopping?

Vi0 Asks: How to make Android play music reliably, without chopping?
When I try to play music on Android 2.3 (using various players, including PowerAmp) on Sony Ericsson Xperia X10 I get not reliable sound. Music pauses for a short time, for example, when:

  • I press the power button (especially repeatedly) (request_suspend_state: sleep;request_suspend_state: wakeup in dmesg)
  • When I see messages like send sigkill to 15497 (ndroid.settings), adj 8, size 6428 in dmesg
  • When some program reacts to changed screen orientation.
  • When wifi connection gets established, when I force it to “reassociate”
  • When I go to/from application from home screen (AWDLauncher), except of to/from WidgetLocker screen.
  • When I enable/disable Airplane Mode.
  • When the display is off (the most annoying)

When only really stable way to play music is to use StayAwake to force display on, turn off Wi-Fi, turn on Airplane Mode and don’t switch applications. Starting CPU hogs like while true; do true; done does not affect chopping.

And it was playing more or less fine on Android 2.1.

“mediaserv” process (that writes to /dev/msm_pcm_out) has realtime io and scheduling priority, but sound is choppy anyway. If I start playing from console with mplayer -ao pcm:file=/dev/msm_pcm_out the sound chop less (notably it does not get interrupted by power button / loading bunches of heavy processes), but still behave not normally when screen is off (even ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out is choppy)

When I start music A by usual way and music B using mplayer to /dev/msm_pcm_out (getting them mixed) music A chops more than usual and I usually hear B when A is in chop. When I turn off screen, both A and B chops in sync (stopping B leads to relatively more fluent playback of A this way).

How to play music on Android reliably in presence of background load? Should I report a bug somewhere?

Update Found a way of playing music. Inconvenient, but without chopping:

  1. Start WakeLock in “CPU on, Screen Off, Keyboard off” mode
  2. Use mplayer to play music bypassing Android:

ionice -c1 -n4  
  schedtool -R -p 3 -e 
  mplayer -really-quiet 
        -af volume=-26 -quiet 
        -ao pcm:file=/dev/msm_pcm_out,nowaveheader 
# (created script to start it easily, of course)

Plays without chopping no matter how much applications I start, what do with Wifi, orientation and airplane modes. Even with “powersave” cpufreq governor (everything very slow, but music plays fine). So the hardware have enough resources to play it.

Update 2 Looks like doing

for i in `pgrep ''`; do schedtool -D $i; done

i.e. “Set Idle priority for all processes” makes music play fine even when I {start programs,lock screen,rotate screen;it reconnects to other mobile network stations} at expense of some input lag in games. Don’t know exactly why it happens.

Ten-tools.com may not be responsible for the answers or solutions given to any question asked by the users. All Answers or responses are user generated answers and we do not have proof of its validity or correctness. Please vote for the answer that helped you in order to help others find out which is the most helpful answer. Questions labeled as solved may be solved or may not be solved depending on the type of question and the date posted for some posts may be scheduled to be deleted periodically. Do not hesitate to share your response here to help other visitors like you. Thank you, Ten-tools.