HW1, ECE301, Prof. Boutin

In this homework assignment, we were asked to write a Matlab code to play the "Hail Purdue" song with different speeds and pitch. I thought in class that we were supposed to do a song "such as" Hail Purdue, but it seems like I'm the only one who didn't do Hail Purdue... I hope this is OK.

This is the first part of 'Autumn Leaves':

Audio Files

M-File

% Nicholas Browdues
% Ece 301 HW1--Song
% 9/5/08


% The notes 
A= 220; B= 220*2^(2/12); C= 220*2^(3/12); Cs= 220*2^(4/12);
D= 220*2^(5/12); Ds= 220*2^(5/12); E= 220*2^(7/12); Fs= 220*2^(9/12);
G= 220*2^(10/12);

A1= 440; B1=440*2^(2/12); C1= 440*2^(3/12); Cs1= 440*2^(4/12);
D1= 440*2^(5/12); Ds1= 440*2^(5/12); E1= 440*2^(7/12); Fs1= 440*2^(9/12);
G1= 440*2^(10/12);

% The sampling Rate 
delta_t=1/20000;

% I define note durations (tempo 108 bpm). 
Eth=30/108;
Q=2*Eth;
DQ=3*Eth;

H=4*Eth;
DH= H+Q;
W=8*Eth;

% Here goes the Melody

Melody  =[E,Fs,G,  C1, D,E,Fs ,B1,B1,  C,D,E, A1,  B,Cs,Ds, G];
Mel_Rthm=[Q,Q ,Q, W+Q,Q,Q, Q  ,H, DH,  Q,Q,Q, W+Q, Q, Q, Q,  W*2];

% Here goes the Harmony

x=       [0;0;0;A; D ; G  ; C; Fs; B ; E  ]; 
y=       [0;0;0;C; Fs; B1 ; E; A1; Ds; G  ]; 
z=       [0;0;0;E; C1; Fs1; G; C1; Fs; B1 ];
Har_Rthm=[Q,Q,Q,W,  W,   W, W,  W,  W, W*2];

% Here I create some vectors that will ultimately vibrate the speaker box

AutumnLeaves_Harm = [];
for index = 1:length(x)
    t=0:delta_t:Har_Rthm(index);
    H=(1/3)*(sin(2*pi*x(index)*t)+sin(2*pi*y(index)*t)+sin(2*pi*z(index)*t));
    AutumnLeaves_Harm= [AutumnLeaves_Harm; H(:)];
end

Autumnhead = [];
for index = 1:length(Melody)
    t=0:delta_t:Mel_Rthm(index);
    N=sin(2*pi*Melody(index)*t);
    Autumnhead= [Autumnhead; N(:)];
end

% I resize the harmony and melody vectors (so they are equal and I can
% add them) then create a wav file.

AutumnHead=imresize(Autumnhead, [length(AutumnLeaves_Harm) 1]);
AutumnLeaves=.5*(AutumnHead+AutumnLeaves_Harm);
wavwrite(AutumnLeaves, 20000, 'Browdues_301Song.wav')

% The first 16 bars of Autumn Leaves 

sound(AutumnLeaves,1/delta_t)

pause(20)   

% Here's JUST the melody (no harmony) twice as fast
sound(Autumnhead,2/delta_t)
wavwrite(Autumnhead, 40000, 'Browdues_301Melody_2xFast.wav')
pause(10)



% Here's the transformation y(t)=x(2*t) on JUST the melody
Autumnhead2t=[];
for index = 1:length(Melody)
    t=0:delta_t:.5*Mel_Rthm(index);
    N=sin(2*pi*Melody(index)*2*t);
    Autumnhead2t= [Autumnhead2t; N(:)];
end

sound(Autumnhead2t,1/delta_t)

wavwrite(Autumnhead2t, 20000, 'Browdues_301Melody_2tTRANSFORM.wav')

Alumni Liaison

Basic linear algebra uncovers and clarifies very important geometry and algebra.

Dr. Paul Garrett