This document discusses working with sound in Matlab and Cogent. It covers loading and playing sounds, creating sounds of different frequencies and amplitudes, combining sounds, and plotting sound waves. Key steps include reading and writing .wav files, configuring sound in Cogent, generating sine waves of different frequencies to create melodies, and manipulating amplitude to make sounds louder or quieter. Functions mentioned include wavread, sound, wavwrite, config_sound, loadsound, playsound, waitsound, sin, and plot.
3. 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
4. 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’)
5. 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)
8. making a sound louder/quieter
• f = sin(2*pi*freq*t)
– standardise sound
• f = f-mean(f);
• f = f/std(f);
• scale sound
– amplitude = .2;
– f = amplitude * f;
• 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
10. 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)
11. 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)
12. square wave
• x = square(t,duty cycle)
– duty cycle = % of signal that’s positive
• freq = 10;
• fsq = square(2*pi*freq*t);
• fsq = square(2*pi*freq*t, 80);