Fix for Android's HORRIBLE volume control...

Nazo

2[H]4U
Joined
Apr 2, 2002
Messages
3,672
Ok, so I love Android and all of the openness and choices it gives its users compared to iOS, however, there is one thing and one thing only that Apple has had Google beaten on pretty much from the start, and it's one of the most senseless stupidest things possible: the volume control. Google for some reason elected to limit the number of positions the volume can be set to to a very tiny number of options (15 to be specific.) The funny thing is, it's not even something hard-coded in, just a variable that's defined during compilation and can't be externally overridden. The unfortunate result is volume that's either annoyingly quiet or painfully loud. I've tried all sorts of tricks including trying to modify the volume of my entire music collection to an arbitrary value (I tried a bunch of different things, but I think I ended up with 93.5dB being the least annoying value I could come up with, and even that just wasn't right. Even when PowerAmp implemented ReplayGain (though to be honest it seems like it doesn't work right or something to me) and I was able to set odd gain values I just couldn't get the volume quite right. I've also tried third party apps that pretend to try to give you precise volume control, but in the end they just don't work at all or do a horrible job (or in one case, would work at first and then the moment you played anything else it would just reset -- I'm guessing it used the ALSA mixer method, but that sadly isn't a very good method.)

So finally it seems I've found a fix thanks to a couple of kind users of Head-Fi.org: http://chrisdube.com/increase-number-of-volume-steps-in-android/ Basically the idea is to use Baksmali to "decompile" the framework jar, you edit the /android/media/AudioService.smali file it produces and search for a variable array with some four or so 0xft values and change the first of those 0xft values to something more (I started out with 0x21t for 33 positions, but in the end I found that 50 -- eg 0x32t works best with the best balance of control and getting to the volume you want quickly when holding the up or down.) Then just "Smali" it to "recompile" essentially and overwrite the classes.dex file it produces in the original framework.jar file and replace that on your Android device, then rebooting to apply the change.

It's a bit of a pain to do -- especially annoying for me is how long it takes for the Smali recompile to run (but I have a weak CPU in this minimal computer after all) -- it requires a PC as there seems to be no way that I can find at least to do this from a tablet/phone, and finally and most importantly, you must do this again every single time you update the OS since it will change the framework.jar file to whatever is in the updater files though. Honestly, I'm considering trying to figure out how to submit a patch to the CyanogenMod team as at least, but I'm really not very good with that stuff. (I don't suppose anyone here is?) It's my hope that if CyanogenMod should fix such a basic bug, maybe people might start to realize and fix it properly for a change. (Given the rather painful results of the built-in 15-position volume control and the way it kind of encourages many people to listen too loud rather than just right I maintain that a higher number still makes more sense as a default regardless of whatever theoretical reasons they might have had behind setting the volume control to such a coarse value. Really though, the best long-term solution would be some way for the user to change it rather than some default being forced on them, but, if there MUST be a default it should be reasonable IMO...) Eventually it would presumably make it into the stock OS once people realized what a difference it makes...
 
I'm not sure I share your sentiment with the volume problem, I will say that iOS controls the different volume levels much better then the clunky way Android does but the actual volume controls has always seemed fine to me. Glad you were able to find a solution to the problem though, Head-Fi is an awesome place.




oh and you write too much :D i keed.
 
Clunky how? The nature of the control seems smooth and everything to me, it just has too few positions and you can't get it quite in the right place. (Well, maybe on slower devices the overlay and fade out cause slowdowns? I only have a Samsung Galaxy S3 and a Google Nexus 7 to compare with and while there may technically be more powerful systems out there neither is a slouch.)

Anyway, even if you don't personally have troubles getting the volume just right, you have to admit that a lot of people listen with sensitive things such as IEMs and more and more headphones these days are design with low impedances and high sensitivities to deal with devices like these, so I really doubt my HD555s are in the minority there either.

Well, all that said, I'm hoping this solution will help more than just myself. There have to be others out there using Android devices to listen to music -- especially these days where many of them actually have high quality outputs (I can understand with something that doesn't -- such as, to be honest, that Nexus 7 -- but with something like this SGS3 it seems downright silly for me to use anything else to play my music when to my ears at least its sound rivals even the expensive DAP with a Wolfsen DAC and all I used to have.)
 
Nexus 4 here....no issues with the "very tiny number" of 15 positions :p
 
Clunky how? The nature of the control seems smooth and everything to me, it just has too few positions and you can't get it quite in the right place. (Well, maybe on slower devices the overlay and fade out cause slowdowns? I only have a Samsung Galaxy S3 and a Google Nexus 7 to compare with and while there may technically be more powerful systems out there neither is a slouch.)

Anyway, even if you don't personally have troubles getting the volume just right, you have to admit that a lot of people listen with sensitive things such as IEMs and more and more headphones these days are design with low impedances and high sensitivities to deal with devices like these, so I really doubt my HD555s are in the minority there either.

Well, all that said, I'm hoping this solution will help more than just myself. There have to be others out there using Android devices to listen to music -- especially these days where many of them actually have high quality outputs (I can understand with something that doesn't -- such as, to be honest, that Nexus 7 -- but with something like this SGS3 it seems downright silly for me to use anything else to play my music when to my ears at least its sound rivals even the expensive DAP with a Wolfsen DAC and all I used to have.)

This is possibly the first time I've heard of anyone hooking up a pair of $200 sennheisers to their phone. It is very interesting to hear that your phone playback sounds just as good as a stand alone Wolfsen DAC. Honestly I did not expect to hear this, haven't even considered trying it out with my own pair of 555's w/ amp.

Its clunky as in the iOS seems to have better seperate controls for individual volume levels between media, notification and even phone calls when compared to Android. This is of course extremely nit picky on my part and not really ever considered except randomly then forgot a moment later.
 
I switched over to using Google Play for my music after getting the Galaxy Note 2. With 40 ohm A900 Senns and probably the same audio output as the S3, yeah its definitely acceptable quality.

Btw the S3 has a Wolfson DAC. This one: http://www.wolfsonmicro.com/products/audio_hubs/WM1811/

As for the volume I haven't really noticed. But now I probably will. Look what you did.
 
I think I remember now hearing about the wolfson going to the s3. Probably forgot since I don't have one.
 
Nexus 4 here....no issues with the "very tiny number" of 15 positions :p
It's actually less which device you're using and more what you're using with it. Certain IEMs or headphones at least are going to be more inclined to fall in just the wrong position. It also depends on the sensitivity of your own ears. Still, my real point here is that even where 15 is sufficient, there's absolutely no harm in more. I just hold the volume button until it's where I want (which is another handy thing about it -- if I hold it whether accidentally or intentionally it's at least not instantaneously dangerously loud or too quiet to hear.)

It is very interesting to hear that your phone playback sounds just as good as a stand alone Wolfson DAC.
Just to be clear, that's my personal opinion that it does. (And the DAP in question was the Cowon D2/D2+ which at least used to be high end. The particular Wolfson DAC was designed with an amp built in, so there was no separate OPAMP either. It was impressive though because it could even handle some 600 ohm headphones from what people were telling me.) As they say, your mileage may vary, and we're talking about sound after all. I do think you'll at least agree that it's not bad per se at the very least though.

Honestly I did not expect to hear this, haven't even considered trying it out with my own pair of 555's w/ amp.
It's worth noting that I haven't tested high impedance headphones. I did try a volume pot to try to get the volume right with bad results, but it wasn't until the impedance was up to well past 200 ohms at least that the sound started to suffer. Given that high impedance headphones tend to require less current, it's still very possible that it can handle maybe 300 ohm headphones ok, but I'm not really 100% sure. (Oh, and to be clear, my HD555s are the 50 ohm model.) I'm not sure what will happen with the higher impedance models, but I will say that with these 50 ohm modified HD555s it has everything. Soundstage, deep and well controlled bass, mids, highs, and so on. Nothing suffers that I can detect at least.

Its clunky as in the iOS seems to have better seperate controls for individual volume levels between media, notification and even phone calls when compared to Android. This is of course extremely nit picky on my part and not really ever considered except randomly then forgot a moment later.
...
It has separate controls. By default it only shows the most relevant one (eg if you're listening to music or in a game it does the media volume and if you're not doing anything it does ring volume) but you can go into the settings and change the volume panel style. If you put it on expanded it always shows all volumes, but my favorite setting is expandable which puts a button on the right side of the panel that, if you tap, will show the full panel (thus by default you just see the current, but then can tap that to get the rest easily.) You can also always change the volume settings in the settings and there are likely apps and possibly even widgets for doing so if you do so on a frequent basis (though I suspect media volume is the only one anyone would normally ever change frequently enough to matter.) Also, if you're just trying to turn off the ringer, there are numerous shortcuts to switching straight to vibrate or silent mode (my favorite being the option in the relatively new shortcut bar -- which if you haven't used recently first showed up in the notifications bar, but was then moved to its own separate bar where you can toggle between them with an icon or, better, if you set it to quick pulldown then you get the notifications if you pull from the left and the shortcuts if you pull from the right. This much can even be done on the lockscreen without unlocking first. I believe this stuff was added with Android 4.1 rather than 4.0 though -- but there were widgets that could do it on earlier versions.)

I guess I'm just someone who can't help but to go through every single setting I can find when I get some new OS, software, etc, but I noticed that option a long time ago. I really could have sworn it was even on my old Archos 43 (which ran Android 2.2) but I can't be absolutely certain. I can tell you beyond a doubt that it was in 4.0 though because I've always had that option on my SGS3 and I've had it set to an expandable panel since day one.

Well..... The problem is, the international models have the Wolfson, but the US models don't. At the same time, I think whatever DAC they've come up with still sounds absolutely amazing (and, what's more, I'm personally convinced that, given that multi-threading is barely even being used well in desktops and almost not at all in mobile platforms, that the CPU is overall better with its higher speed and all.) Well, I've heard some people complain about noise in the US models, so I'm thinking that there are two possibilities. First, it may only be at really low impedances (after all, typical IEMs are 16 ohms or so) or second there may be some variance in the design of the US models. I'm just not sure which, but I guess the former is more likely. Either way, my 50 ohm HD555s sound great.

As for the volume I haven't really noticed. But now I probably will. Look what you did.
Lol, sorry, but hey, at least I posted the info on how to fix it!


BTW, I really don't suppose anyone here knows about creating and submitting patches for a thing like this? Even if people can get by with fewer steps, I just absolutely can't see any reason why the rest should be punished and there's absolutely no harm in having more steps after all... (Though really I still maintain that it should be user configurable. I think it should default to more, but let people set basically whatever they want.)
 
No, I'm just required to silence my phone many times over during the day. I have a meeting probably 5-6 times a day and I have to turn off all volumes constantly because I'm paranoid. I would just like a mute-all options, which actually I have been just leaving my phone behind now.
 
Wow....its a phone dude....:eek::D

Seriously though...its awesome that you found a fix for your problem. Kudos! As much as I love my phone and use it as my portable music player, theres no way I would have be as inclined to go this deep to make it sound better...I would have just listened and blamed it on crappy headphones...:p
 
No, I'm just required to silence my phone many times over during the day. I have a meeting probably 5-6 times a day and I have to turn off all volumes constantly because I'm paranoid. I would just like a mute-all options, which actually I have been just leaving my phone behind now.
As I said, it has it. Use the built-in shortcut and not only is the ringer silenced (or set to vibrate) but so are notifications. When I'm at work, my phone MUST be silenced or else and I find that shortcut to be very handy.


Wow....its a phone dude....:eek::D
Oh these are so much more than phones. If you stop and think about it they, in fact, have, more computational power and connectivity (I don't just mean Internet access, but also devices can be interacted with via WiFi, Bluetooth, or evena physical cable) than even the best supercomputers not even that very many years ago...

Seriously though...its awesome that you found a fix for your problem. Kudos! As much as I love my phone and use it as my portable music player, theres no way I would have be as inclined to go this deep to make it sound better...I would have just listened and blamed it on crappy headphones...:p
Ah, but so many would have the potential to end up being "crappy" by that definition... It's worth noting though that these HD555s MSRPed at some $150 or so at the time (and were even more than that not so very long before that) I got them and were specifically made with portable devices in mind. The HD595 equivalent was $300 or so I believe. (Same drivers, just a better headband and no "Surround Reflector" foam tape added to slightly degrade the sound.) Not the best of the best maybe, but not cheap and not bad either. I believe their more expensive successors, the HD558 and the HD598 (different drivers this time -- probably because so many people were just pulling out the foam) have a similar sensitivity and efficiency. Besides, the issue at hand is volume, not sound quality...

I'm actually shocked and a little saddened that so few people have really had trouble with it. I still maintain that people are likely rounding up, just my ears are more sensitive (hyperacusis -- when I recently tried to watch a movie in a theater no one cared that it was loud, but I found it to be unbearable, yet while I may have been bothered by it more, I know a thing or two about sound and can say beyond a doubt that it WAS past a safe range for anyone watching for that length of time) and it may bother them less when using volumes that are technically higher than they need to be to prevent long term hearing loss. (With the right setup even heavy metal sounds good without going to dangerous volumes, just, it's harder to do.) I believe that, given more choices a lot of people would at the very least use slightly safer volumes.
 
Back
Top