summaryrefslogtreecommitdiffstats
path: root/README
blob: f43333d7b3f5b5f54f8da7942b6975e286eaa558 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
This tool will help you to determine the volume scaling factors of your sound
card. If your sound card/chip manufacturer did not provide you with
documentation to which attenuation specific volume settings belong this tool
can help you to measure them.

What you need: 

a) A sound card where input and output are synchronous

b) A feedback cable that allows you to feed sound card output back into the input

c) Some time

In this is how you do it: 

1) You plug in your feedback cable in the line out and line in of your soundcard

2) You open the low-level ALSA mixer and mute/set to 0 everything you can
mute/set to 0, except what is necessary to get a PCM signal out of your machine
and back into the machine. The slider you want to measure you set the highest
possible value. The other sliders that are in our pipeline you set to some
'sensible' value, in the middle of its range somewhere. What does 'sensible'
mean? Something where neither clipping happens nor where the signal is too
faint. In 'alsamixer -c0' those points are usually near 0dB or a bit lower. If
you are not sure what to pick don't despair, our little tool will tell you if
you picked a good value. 'Inner' sliders should always be kept near to 0dB.

3) You run our little tool like this:

     make && ./dbmeasure plughw:0 log.csv

This will now measure a few things and then ask you to lower the volume one
step. Please comply and press return. It will now measure a little bit more,
and ask again and so on. When you went through all volume levels successfully
press C-D instead of return.

If the volume levels mentioned in step 2 were not set up correctly the tool will
fail and ask you to adjust them a little. Then repeat step 3.

The first argument to the tool is the device to use. It will be opened for both
capturing and playback. The second argument is the filename of a CSV file where
the tool will place its results. The first column of that file is the numer of
the volume step we are looking at. Starting with the highest one. The last
column is the attenuation in dB relative to the highest volume level (and hence
is always at 0dB on the first line). You can then load the CSV output into
Gnumeric to draw pretty graphs.

If you want to use the output of this tool in low-level drivers, keep in mind
that there volume level 0 is usally the lowest one, while in our CSV it is the
highest. You might hence want to invert the order of the CSV file before you
make use of it.

Lennart Poettering, 2009