How do I deal with the HORRIBLE volume control in Android?
Feb 5, 2013 at 2:18 AM Thread Starter Post #1 of 5

Nazo

100+ Head-Fier
Joined
Aug 24, 2008
Posts
190
Likes
11
Ok, so I have the Samsung Galaxy SIII. The US variant may not have the Wolfson DAC, but I don't care. As much as people deify Wolfson, this thing sounds absolutely amazing all the same and I love it. In fact, I love its sound more than that of any player I've had, soundcard/DAC + amp, and so on. Not all will agree I'm sure, but to me it's just that good. The really neat thing is, it sounds amazing just on its own driving my HD555s directly (well, they are pretty sensitive.) It doesn't seem like anything is lacking in any frequency range, the soundstage is great, and so on. There's just one problem: that god-awful volume control! It only has seven or so positions so I frequently find that it's just plain wrong. It's either just quiet enough to be annoying with the balance a bit off or it's just loud enough to be physically painful to my ears. There's no in between.

I keep playing around with various solutions, but still haven't found anything that could be called 100%. Firstly, I've been using MP3Gain to change the volume level of my MP3s in a basically lossless manner (it just changes the frame volume setting without reencoding) but this is kind of a pain because I have a few other formats in my library still. Well, I primarily use PowerAmp and it recently added ReplayGain support, but... Something is just plain wrong with its ReplayGain support I think. It seems to be lowering even things that are already set to 89dB thanks to MP3Gain for starters (and the ReplayGain tag basically says +/- 0dB or at least it's no more than 1.5dB when it says to change it -- yes I remembered to remove the ReplayGain tags and rescan all of my collection after changing the volume via MP3Gain and it's worth noting that Foobar2000 on my PC has absolutely no trouble whatsoever.) Worse, the whole point of using it was to try to get it just right, so I add just a bit of gain (initially +3dB, but I think I've tried other values trying to get things just right) and it just seems to be way off. Regardless, I just haven't been able to find a value that's quite right for dealing with the issue either positive or negative. (And negative has its own troubles since it means I have the volume maxed or close to it and then something else blasts my ears at full volume...)

So more recently I got the idea to try one of those in-line volume controls. It's nothing more than an audio tapering volume pot and two 3.5mm connectors (one female with at least the decency to be gold plated but as it was soldered into the board and there was very little room to work with I left alone, the other I replaced from the original low quality connector and cable to a very short bit of Canare L-4E6S + Rean 3.5mm male connector.) The problem is, I ended up with roughly 200 ohms being the "just right" volume setting and that wasn't even far down on the pot. Unfortunately, the end result is a sound where the bass is bloated and just plain bad, the mids are recessed thanks in part to the bass, the highs are pitiful, and the soundstage is basically gone. Well, it's not meant to drive these headphones through what ends up being an impedance adapter. Regardless the result was horrible.

I've also tried third party apps that try to take over the volume control and give you a finer control including the demo version of a commercial one that people in forums such as XDA Developers have claimed actually worked. Nope. The result there was actually kind of interesting. It not only didn't work, but it seemed to actually be rounding to the OS's nearest value and pretending to give me a fine control instead... Frankly I'm just not sure that there is any way such an app can actually give one such control as it gave me the impression that basically the OS was overriding it in the end and that while it surely thought it was doing something it wasn't really.

I just can't seem to get through to any of the people on the software side of things. I've suggested to the author of PowerAmp that the program should have its own volume control to compensate for the crappy OS volume control, but no response. I've suggested in the CyanogenMod forums (I'm not sure where else) but only one person responded and that just to agree. No one seems to even be really looking at the suggestion, but then it's forums, not any proper suggestion form. Which is just pitiful because CM has generally always been good for compensating for these types of things that Google misses. Really I don't know what else to do though.

The whole situation is pitiful. How in the world have they managed to go through so many years and so many versions of Android with this horrible volume control? I know it at least dates back to Android 2.2 because I used to have an Archos 43 with the same issue. Ok, I understand that in the past people weren't really using them for music a lot, but these days a lot of people do and it can be a pain to carry an amp with you all the time. (Besides, why in the heck should I have to use an amp when it can drive my headphones directly perfectly fine AND I like the sound? It's just wasteful...)

Anyway, is there any solution left to try that I haven't thought of? My SGS3 is running CyanogenMod, so suffice it to say that it is definitely fully rooted to the point that I can even remount the root and system partitions as writable if I want to, so I can do just about anything in that respect, but at this point I can't find any other options to try.
 
Feb 13, 2013 at 7:11 PM Post #2 of 5
I actually am in the exact same situation as you are, and I've been looking around as well.
 
http://www.head-fi.org/t/575409/can-a-portable-amp-work-as-an-inline-volume-control-to-reduce-volume says the Fiio E6/some other amp can be used as a decent volume control - it is another thing to carry around and charge, but apparently it works well (and the E6 in particular has an EQ that lowers the volume). The only question I have about this is how fine the volume control is on the E6 - it has 64 volume levels, but how many of those lower the volume and how many amp the volume?
 
Also, AlsaMixer on the Play Store can adjust the volume - set the "RX0 Digital Volume" and "RX1 Digital Volume". But the problem is, starting a new song resets these volume levels, and there doesn't seem to be a good way to automatically reapply it.
 
I remember there was some mod that allowed you to add more volume levels to Android, but it involved editing some compiled JAR in the operating system...
 
Also - sorry if this is off topic - I've noticed a LOT of noise at low volume levels (to the point where it overpowers the music). Do you have this problem with CyanogenMod as well? I've been wondering whether it's intrinsic to the DAC or whether it's a software issue...
 
Feb 13, 2013 at 11:02 PM Post #3 of 5
I saw Fine Volume Control V2 (though at least 1 reviewer had issues with the GS3) and Volume+ on the market, but not sure if that's what you want.

The mod lidavidm was referring to, I think, is this one http://forum.xda-developers.com/showthread.php?t=1411317

Not tried it myself, but seems like it should work (I have a GS2 Skyrocket myself, but I also have an E6 to help with fine volume control).
 
Feb 14, 2013 at 12:07 AM Post #4 of 5
Well, I have portable amps, but I really prefer my CMoy + AD8620 if I had to choose. The thing is though, it's a pain carrying around an external amp, and what's more, I actually love the sound directly out from my phone best of all even more so than any of my headphone amps... It's massively stupid to have to use an external amplifier not to amplify, not to buffer, but to get a finer volume control anyway. IMO that's just plain wasteful besides the obvious inconvenience. (Ok, the phone itself expends less energy since it doesn't have to drive the headphones anymore, but it still takes a bit of effort outputting a line-level audio all the same and besides which these headphones are shockingly efficient so already don't really use a lot of milliwatts as it is...)

The mod lidavidm was referring to, I think, is this one http://forum.xda-developers.com/showthread.php?t=1411317

This is what I've been wanting to see! It's the perfect end-user temporary solution to the issue IMO. Assuming I can figure out exactly how to do it that is of course... I'm going to see what I can do at any rate... The thing that concerns me is it's saying you need a "deodexed ROM" and I'm not sure if CyanogenMod is. EDIT: I guess it has to be. After some googling it looks like an "odexed" ROM has .odex files which are precompiled for some performance benefit, whereas a deodexed ROM has .dex files instead. The CM10.1 build I'm using has a .dex file instead.

From what I'm seeing here, it looks like the permanent solution to the problem is for them to set a higher number there next to that one variable. This is absolutely inexcusable. For those who actually build and compile the OS, this is a matter of changing ONE number before compilation. A change that should probably require all of five seconds for them to actually do. Unfortunately, I know nothing about really building or working with Java code (and haven't done any programming in about five years besides) but it looks like CyanogenMod and presumably even Google could fix this permanently by just changing that one value in their code...

Also - sorry if this is off topic - I've noticed a LOT of noise at low volume levels (to the point where it overpowers the music). Do you have this problem with CyanogenMod as well? I've been wondering whether it's intrinsic to the DAC or whether it's a software issue...

I'm not hearing anything outside of my unfortunate case of Tinnitus (I can say that it must be very quiet or a very high frequency for me not to notice it even with that though...) Mine is the early US Verizon SCH-I535 model which may or may not mean anything (I have a suspicion that there is some variance in the hardware or something because others have reported some noise and still others have said none. One thing of note: I've disabled the built-in DSP app. Completely. At first I just froze it with TitaniumBackup, but since then I've actually removed it. I see no need for an external DSP. (I don't really like the effects of equalizers -- IMO they change the sound a bit more than they should -- but even if I did PowerAmp has a very good one built in, so I don't need an external one anyway.) One thing I've always suspected is that this could be the culprit -- especially since it's probably one of the first things that different companies mess around with (some even boast a "Beats" brand equalizer built in. Which I guess just means the bass is ramped way up so that it will clip and distort.) That said, I'm still not 100% sure there isn't maybe some variation in the hardware itself. In particular, with phones it's probably REALLY hard to deal with external noise pickup given that it's messing with radio frequencies right there next to the OPAMP portion. The Wolfsen in the International model boasted some impressive noise reduction, but from what I've seen, whatever the Qualcom SoC is using seems to be quite capable on its own. Still, if there were maybe some variance in that particular part of the setup, it could cause issues. Then too, I have no clue if the SoC has the OPAMP integrated directly as well (I know Wolfsen has done DACs with amplification built in, so I know they can be integrated and SoCs already are the very definition of integration, so I wouldn't be shocked) but if it's external it and components related to it could definitely vary... IMO someone with the real knowhow needs to look into the situation with a lot more detail than I can do because there IS something going on with the noise.

But all I know is that with my particular setup if there is noise it definitely doesn't overpower the music or otherwise is way past 16KHz (approximately the range where my hearing starts to dip off.)


EDIT2: It worked! I gave it a shot and changed it to 33 (hex 0x21) and after my phone apparently decided I upgraded the OS and rebuilt the Dalvik cache, I fired up the music player and gave it a shot. I now have a very fine volume control and am easily able to get it exactly where I want it! And OMG, this phone definitely sounds amazing when you don't change the sound with anything external and can actually get the volume right. Well, one or two songs seem a bit off so I may have to play around just a bit more with it (maybe 50 instead of 33) but already it's 100x better and I am now a very happy person.

Thank you both so much! I really hope someday CyanogenMod and even stock Android integrate this frighteningly simple fix (eg just change the default value to something higher than 15) but in the meantime I guess I can manually "hack" it to fix it every time I want to update. It's a royal pain all the more annoying on the principle that it shouldn't be needed in the first place, but, at least I can properly enjoy my music now...


EDIT3: I found a better tutorial if anyone needs it: http://chrisdube.com/increase-number-of-volume-steps-in-android/ It has a mirror of the "baksmali manager" batch file that's missing from the normal smali/baksmali download. The manager download is broken in the tutorial linked above.
 

Users who are viewing this thread

Back
Top