On Fri, Jan 08, 2016 at 03:31:18PM +0100, Markus Glugla wrote: > Hi, Hi Markus > I read the spectrogram threads and affiliate a request. I'm using > sometimes sox spectrogram to get an spectral overview of various > measurement datas. But i want to plot the spectrogram with other tools > e.g. gnuplot. > > I would be very grateful if it were possible to output the spectrogram > data as plotable values in a file or stream. Does anybody have the > same intention and more experience than me to produce a patch? I have been planning to implement an amplitude and water-fall output, that can be sent to Gnuplot. I will need these in the coming months, so perhaps it will get done. A crude way of getting the raw numbers could be to use the color values from the generated png file, e.g. with Imagemagick: sox -n -n synth 1 synth 1k:5k spectrogram -r -o - | convert png:- txt:- | # translate into Gnuplot compatible input awk -v FS='[,:() ]+' 'NR > 2 { print $1, $2, ($3+$4+$5)/3 }' | awk 'NR > 2 && $2 != prev { printf "\n" } { prev = $2 } 1' \ > spectrogram.dat Note the use of the `-r` option to sox, which omits all decorations. See `sox --help-effect spectrogram` for more. Now plot the data file with Gnuplot: echo 'splot "spectrogram.dat" with pm3d' | gnuplot --persist If you want to get at the raw spectrogram, you need to patch spectrogram.c. The attached patch works best with single channel files. Use the new `-O filename` switch to save the binary data. The default output is a sequence of floats which are 4 bytes long. This is also Gnuplots default for binary input. This means you can plot the output like this: echo 'plot "