0% found this document useful (0 votes)
99 views

Sound in Matlab

This document discusses sound generation and playback in Matlab and Cogent. It explains how to load and play sound files, generate simple tones of different frequencies and amplitudes, combine sounds, and create more complex sounds like frequency modulated sweeps and amplitude modulated tones. Functions covered include wavread, wavwrite, sound, chirp, and square for sound generation and playback in Matlab. Cogent functions include config_sound, loadsound, playsound, and waitsound.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

Sound in Matlab

This document discusses sound generation and playback in Matlab and Cogent. It explains how to load and play sound files, generate simple tones of different frequencies and amplitudes, combine sounds, and create more complex sounds like frequency modulated sweeps and amplitude modulated tones. Functions covered include wavread, wavwrite, sound, chirp, and square for sound generation and playback in Matlab. Cogent functions include config_sound, loadsound, playsound, and waitsound.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Sound in Matlab & Cogent

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

compose & play a melody

Playing a sound in Matlab


load wavfile
y = wavread(filename.wav);

play wavfile
sound(y,Fs)
if unsure which Fs
[y, Fs, nbits, opts] = wavread(filename.wav)

write to disk
wavwrite(y,Fs,filename.wav)

Playing a sound in Cogent


config_sound(nchannels,nbits,Fs,nbuffs)
nchannels: 1 = mono, 2 = stereo nbits: e.g. 16 Fs: sampling frequency (e.g. 44100) nbuffs: number of buffers

wavfilename = [filename.wav]; loadsound(wavfilename, buffer number) playsound(buffer number) waitsound(buffer number)


otherwise next command will be executed immediately)

creating a sound in Matlab


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) sound(f2,Fs)

f2 = sin(2*pi*(2*freq)*t); period: 1/freq (*Fs) figure(1);plot(f1) figure(2);plot(f1(1:round(1/freq*Fs+1)))

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);

making a sound louder/quieter


f = sin(2*pi*freq*t)
standardise sound
f = f-mean(f); f = f/std(f);

scale sound 10^0.5 for every 10dB


e.g. 10^1.0 20 dB louder e.g. 10^-1.5 30 dB quieter
do not be put off by warning data clipped message. Wavwrite needs an input vector in the range 1 to +1, else it will clip. The warning means that you have sounds that are 1 or 1 but the clipping will leave them unaltered

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
freq = 400; % carrier frequency fm = 10; % modulation frequency f_c = sin(2*pi*freq*t); f_m = sin(2*pi*fm*t); f_mod = [f_c .* f_m]; sound(f_mod,Fs)

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)

You might also like