[Galaxy S II Q&A, Help & Troubleshooting] Skully☺:
I've been reading the recent posts about the analogue and digital amplifier and would like to tell you about sound reproduction:

On your hifi-rig, soudlevel is determined by turning a knob. The knob is attached to an ajustable resistance. High resistance means soft music, and low resistance means loud music. This an analogue way to control the sound level.

But you can also change the sound level digitally. This is a bit (pun intended :D) more complicated: digital sound is coded as numbers. These numbers determine how far the moving parts of your headphone (or loudspeakers) should be from their resting position.

Now lets talk about a 16bit, 44.1kHz music sample (as coded on CD's): the music-signal that is picked up by the microphone is sampled 44100 times per second. During each sample the position of the membrane in the microphone is determined. The resolution is 16 bit (that is 2^16, so 65536 different positions of the music-signal can be coded on a CD).

Since the moving parts of your headphone and loudspeakers can go either way from their resting positions, 2^15 (=32768) positions are used to code for an outward movement of the speakers, and the other 2^15 for an inward movement.

Simply put: maximum soundlevel is coded by +32768 and -32768. Zero soundlevel is coded by 0. This is not an exact representation of the music coding, but for the sake of this "lecture" I hope it is ok.

Now what if you want to lower the soundlevel digitally, say by a factor 32? Maximum soundlevel (coded binary as 111111111111111=15 times 1) will be converted to 000001111111111 (binary: 10 times 1).

And this is where the soundquality degrades, since the signal that is sent from your phone's DAC (digital-analogue-converter) to the phone's analogue amplifier is changing more from the original signal coded in your flac, wav, mp3, etc file, each time you digitally lower the volume further.

As a more extreme example: if at one moment music-signal is coded as 011001010001101, and the level is digitally lowered a factor 256 (2^8), then the signal will be transformed to 0000000001100101. The last eigth digits are lost.

All of this doesn't take place when the soundlevel is controlled in the analogue region.

If you digitally amplify the soundsignal, then a loud sound could max out, so it could become more than 32768. However, a signalstrength more than the maximum is coded as maximum. This is called distortion or clipping (in the digital region). The top of the musical soundwave is now flattened. Your ears percieve it as loud or unpleasant.

I listen to music at a soft level, so my ears won't be damaged more than they already are.

So I prefer to keep the digital amplifier set to neutral (=not louder and not softer) and control the soundlevel with the analogue amplifier.

And yes, the human ear is able to tell the difference, unless it has already been damaged by too loud noise or long exposures to just a litte too loud noise.

Of course quality earbuds or headphones really help.

A 2000mAh battery may also help, because a stronger battery enables the analogue amp to have more dynamical reserves when the music signal suddenly goes loud.

So if Gokhan in some future could add control over both digital and analogue amplifier to the kernel, I would be very gratefull. If it'll be next year with a Galaxy S4, so be it ;)

If in Siyah the digital amplification is set to 0 change from the original signal, and the sound button already controls the analogue amplifier, then more musical quality is only achieved by a stronger battery, better headphones or using a good codec like flac or wma (not mp3!) at bitrates from 192kbps and up.

Kind regards,

Skully