Chapter 5: Psychoacoustics

If there is one topic that has most deeply impacted audio and speech research over the past two decades or so, it is psychoacoustics. We now know that perceived sounds and speech owe just as much to psychology as they do to physiology. The state and activity of the human brain and nervous system have a profound influence on the characteristics of speech and sounds that are perceived by human listeners. This chapter explores precisely those aspects.

Who doesn't love an optical illusion? Well this chapter presents some auditory illustions! A good audio system and listening room are recommended for most of these.


5.2.1 Proximity

ss=0.1; %short sound length in seconds 
ls=0.4; %long sound length in seconds
Fs=8000; % sample rate 
short_a=tonegen(440,Fs,ss); % musical note A4 
short_b=tonegen(932,Fs,ss); % musical note B5
long_a=tonegen(440,Fs,ls); 
long_b=tonegen(932,Fs,ls);
%put alternating sounds into single matrix
short_mat=[short_a, short_b];
long_mat=[long_a, long_b];
%Repeat this matrix several times
long=repmat(long_mat ,1,3);
short=repmat(short_mat ,1,12);

Let us compare, in turn, the long and the short vectors.

soundsc(long, Fs);
soundsc(short, Fs);

5.2.2 Closure

gs=0.30; %gap/noise length in seconds
ls=1.50; %length of sound in seconds 
Fs=8000; % sample rate
fr =110;
to =880; 
gap_len=Fs*gs;
au_len=Fs*ls; 
gap=zeros(1,gap_len);
noise=rand(1,gap_len);
%Make a steadily rising note
note_f=[fr:(to-fr)/(au_len -1):to]; 
au=freqgen(note_f ,Fs);
au_gap=au;
au_noise=au;
%Now put the gaps 1/2 way up
au_gap(au_len/2+1:au_len/2+gap_len)=gap; 
au_noise(au_len/2+1:au_len/2+gap_len)=noise;
%Now repeat several times
au_gap=repmat(au_gap ,1,3);
au_noise=repmat(au_noise ,1,3);

Is this continuous;

soundsc(au_noise, Fs);

What about this one;

soundsc(au_gap, Fs);

Let's try everything together;

soundsc(repmat(au,1,3)+au_noise, Fs)

5.2.3 Common fate

dur =1.2; 
Fs =8000;
a=220; 
b=a*2^(3/12);
c=a*2^(7/12); 
sa=tonegen(a, Fs, dur);
sb=tonegen(b, Fs, dur); 
sc=tonegen(c, Fs, dur); 
sa2=tonegen(a*2, Fs, dur);
sb2=tonegen(b*2, Fs, dur); 
sc2=tonegen(c*2, Fs, dur);
%
sound1=sa+sb+sc; 
sound2=sound1+sa2+sb2+sc2;
%
% Now the modulation patterns
mod1=tonegen(7, Fs, dur); 
mod2=tonegen(27, Fs, dur); 
mod3=tonegen(51, Fs, dur);
am=mod1.*(sa+sa2); 
bm=mod2.*(sb+sb2);
cm=mod3.*(sc+sc2);
%
% Let us listen to it
gap=zeros(1,Fs*0.05); 
sound3=[am,gap,gap]+[gap,bm,gap]+[gap,gap,cm];
soundsc([sound1,sound2,sound3], Fs)

Try the following variation to the modulation, as suggested in the text;

am=mod1.*(sa+sa2);
bm=mod1.*(sb+sb2); 
cm=mod1.*(sc+sc2);

5.2.4 Good continuation

Fs =8000;
n1 =832; 
n2 =350;
d1=0.1*Fs; 
dm=0.04*Fs; 
d2=0.1*Fs;
a=[n1*ones(1,d1), zeros(1,dm), n2*ones(1,d2), zeros (1,dm)];
b=[n1*ones(1,d1), n1-[1:dm]*(n1-n2)/(dm), n2*ones(1, d2), n2+[1:dm]*(n1-n2)/(dm)];
sa=freqgen(a,Fs); 
sb=freqgen(b,Fs);
amp=0.4+sign(a)/2; 
sa=sa.*amp;
sb=sb.*amp;

Let's replay several repetitions of the discontinuous sound:

soundsc(repmat(sa,1,8))

and follow that with the connected sounds:

soundsc(repmat(sb,1,8))