June 24th, 2011 | No Comments

The `filledcurves`

style is only available for 2d plots. But it can be used with some limitations with splot in 3d plots as well. In this entry we want to visualize an effect known from psychoacoustics, called comodulation masking release. The effect describes the possibility of our hearing system to perceive a masked tone (in this case at 700 Hz) easier in the presence of so called comodulated maskers present in other auditory filters. Comodulation describes the fact, that all maskers have the same envelope, as can be seen in Fig. 1.

First we start with the gammatone filters. The values for them are stored in the gfb.dat file as one column per filter. In order to apply different colors to different filters the style function `sty(x)`

is defined. The `data(x)`

function is defined to be able to plot the filters in a particular order. This will result in the nice effect of overlapping filters shown in Fig. 2.

sty(x) = x<7 ? 1 : x<10 ? 2 : x<12 ? 1 : x==12 ? 3 : x<15 ? 1 : \ x==15 ? 2 : 1 data(x) = x<12 ? x : 29-x

The filter bank itself is plotted by the `gfb_loop.gnu`

function. There the data are plotted first as filledcurves and then as a line. This two step mechanism has to be used, because the `filledcurves`

style is not able to draw an extra line in 3d. Hence it has to be done in the extra `gfb_loop.gnu`

function, because the simple `for`

iteration only works for a single plot and is not able to plot the line around the filters.

# gfb_loop.gnu splot 'gfb.dat' u 2:1:(column(data(i))) w filledcurves \ ls sty(data(i)), \ '' u 2:1:(column(data(i))) ls 4 i = i+1 if (i<maxi) reread

Thereafter the modulated noise and its envelope and the signal are plotted in different parts of the graph by explicitly giving the x position.

The result is shown in Fig. 1.

splot 'noise.dat' u (300):1:2 ls 11, \ '' u (300):1:3 ls 14, \ '' u (400):1:2 ls 12, \ '' u (400):1:3 ls 14, \ '' u (700):1:2 ls 13, \ '' u (700):1:3 ls 14, \ '' u (1000):1:2 ls 12, \ '' u (1000):1:3 ls 14, \ '' u (1100):1:2 ls 11, \ '' u (1100):1:3 ls 14 splot 'sig.dat' u (700):1:2 ls 14