Sound in Matlab & Cogent: Tobias Overath
Sound in Matlab & Cogent: Tobias Overath
Tobias Overath
Sound
sound = pressure wave
y (t ) A sin( 2 f t )
Overview
play sound in Matlab/Cogent
create a sound
things you can do with sound:
louder/quieter
higher/lower
combine sounds
play wavfile
sound(y,Fs)
if unsure which Fs
[y, Fs, nbits, opts] = wavread(filename.wav)
write to disk
wavwrite(y,Fs,filename.wav)
wavfilename = [filename.wav];
loadsound(wavfilename, buffer number)
playsound(buffer number)
waitsound(buffer number)
otherwise next command will be executed
immediately)
Fs = 44100;
t = [0:1/Fs:1-1/Fs]; %1 second, length 44100
freq = 400; % Hz
f1 = sin(2*pi*freq*t);
sound(f1,Fs)
f2 = sin(2*pi*(2*freq)*t);
sound(f2,Fs)
play consecutively
f12 = [f1 f2];
sound(f12,Fs)
play together/superimposed:
f_12 = [f1+f2];
or:
f_12 = sum([f1;f2]);
sound(f_12,Fs);
scale sound
amplitude = .2;
f = amplitude * f;
create noise
y = .2*randn(1,Fs);
sound(y,Fs)
FM sweep
f = chirp(t1,f1,t2,f2);
t1 = vector t = [0:1/Fs:1-1/fs];
f1 = initial frequency
f2 = final frequency
t2 = time at which f2 is reached
f = chirp(t,freq,1,2*freq);
sound(f,Fs)
AM sound
square wave
x = square(t,duty cycle)
duty cycle = % of signal thats positive
freq = 10;
fsq = square(2*pi*freq*t);
fsq = square(2*pi*freq*t, 80);
plot signal
plot(t,f)
scale
12-split equitempered octave
f(n) = sin(2*pi*freq*2^(n/12)*t)
for example
n=[0:12]; % 12 semitones
for i=1:length(n)
f(i,:) = sin(2*pi*freq*2^(n(i)/12)*t);
end
fs=[];
for i=1:13
fs = [fs f(i,:)];
end
fs=fs-mean(fs);
fs=fs/std(fs);
fs=.2*fs;
sound(fs,Fs)