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. Here are my results:

Below is my code.


Hail Purdue Code:

%Adrian Delancy 
clear all
%Finding Frequencies (v) of notes:
for n=0:11;
    v(1+n)= 220*2.^(n/12);
end
A=v(1);
Bb=v(2);
B=v(3);
C=v(4);%Middle C
Db=v(5);
D=v(6);
Eb=v(7);
E=v(8);
F=v(9);
Gb=v(10);%(F#)
G=v(11);
Ab=v(12);%(G#)

bpm =30; %Specify beats per minute
bps=bpm/60;
delta = 0.0005;
d=1/delta;%Sampling rate
%Defining note values eg. quaver (q),half-note etc...
cr =0:delta:bps;%crotchet or quater note - 1 beat

dotcr=0:delta:bps*(3/2);%dotted quater note or crotchet - 3/2 beats

h=0:delta:bps*2;%Half note or minim - 2 beats

wh=0:delta:bpm*4;%Whole note - 4 beats

doth = 0:delta:bps*3;%dotted minim - 3 beats

q=0:delta:bps/2;%quaver or eighth note - 1/2 beat

dotq=0:delta:bps*0.75;% - dotted quaver - 3/4 beat

k=2*pi;

%Playing the first part of Hail Purdue chours in the key of A flat (Ab) in 2/4 time:
y = [sin(k*Eb*h) sin(k*F*cr) sin(k*G*cr) sin(k*Ab*dotcr) sin(k*Bb*2*q) sin(k*2*C*cr) sin(k*C*2*cr) sin(k*Db*2*cr) sin(k*Db*2*q) sin(k*Db*2*q) sin(k*Ab*cr) sin(k*Bb*2*q) sin(k*B*2*q) sin(k*C*2*doth) sin(0*cr) sin(k*C*2*h) sin(k*C*2*cr) sin(k*Bb*2*cr) sin(k*Ab*dotcr) sin(k*2*Bb*q) sin(k*2*C*cr) sin(k*2*C*cr) sin(k*2*Bb*cr) sin(k*F*q) sin(k*G*q) sin(k*Ab*cr) sin(k*G*q) sin(k*F*q) sin(k*Bb*2*doth)];
sound(y,d);
wavwrite(y,d,'HailPurdue');

%Playing the tune twice as a fast:

bpm =15;
bps=bpm/60;
delta = 0.0005;
d=1/delta;
%Defining note values eg. quaver (q),half-note etc...
cr =0:delta:bps;
dotcr=0:delta:bps*(3/2);
h=0:delta:bps*2;
wh=0:delta:bpm*4;
doth = 0:delta:bps*3;
q=0:delta:bps/2;
dotq=0:delta:bps*0.75;
k=2*pi;
%Playing in the key of A flat (Ab):
y1= [sin(k*Eb*h) sin(k*F*cr) sin(k*G*cr) sin(k*Ab*dotcr) sin(k*Bb*2*q) sin(k*2*C*cr) sin(k*C*2*cr) sin(k*Db*2*cr) sin(k*Db*2*q) sin(k*Db*2*q) sin(k*Ab*cr) sin(k*Bb*2*q) sin(k*B*2*q) sin(k*C*2*doth) sin(0*cr) sin(k*C*2*h) sin(k*C*2*cr) sin(k*Bb*2*cr) sin(k*Ab*dotcr) sin(k*2*Bb*q) sin(k*2*C*cr) sin(k*2*C*cr) sin(k*2*Bb*cr) sin(k*F*q) sin(k*G*q) sin(k*Ab*cr) sin(k*G*q) sin(k*F*q) sin(k*Bb*2*doth)];
sound(y1,d);
wavwrite(y1,d,'HailPurduefaster');

%Rescailing the original tune:
%Defining note values eg. quaver (q),half-note etc...
bpm=30;
bps=bpm/60;
cr =0:delta:bps;%crotchet or quater note - 1 beat

dotcr=0:delta:bps*(3/2);%dotted quater note or crotchet - 3/2 beats

h=0:delta:bps*2;%Half note or minim - 2 beats

wh=0:delta:bpm*4;%Whole note - 4 beats

doth = 0:delta:bps*3;%dotted minim - 3 beats

q=0:delta:bps/2;%quaver or eighth note - 1/2 beat

dotq=0:delta:bps*0.75;% - dotted quaver - 3/4 beat

y2 = [sin(k*Eb*(2*h)) sin(k*F*cr*2) sin(k*G*cr*2) sin(k*Ab*dotcr*2) sin(k*Bb*4*q) sin(k*4*C*cr) sin(k*C*4*cr) sin(k*Db*4*cr) sin(k*Db*4*q) sin(k*Db*4*q) sin(k*Ab*2*cr) sin(k*Bb*4*q) sin(k*B*4*q) sin(k*C*4*doth)];
sound(y2,d);
wavwrite(y2,d,'HailPurdueHigher')

Media:HailPurdue_ECE301Fall2008mboutin.wav Media:HailPurduefaster_ECE301Fall2008mboutin.wav Media:HailPurdueHigher_ECE301Fall2008mboutin.wav

Alumni Liaison

Prof. Math. Ohio State and Associate Dean
Outstanding Alumnus Purdue Math 2008

Jeff McNeal