Sound File
I will make one soon and post it.
MATLAB Code
% Ben Laskowski % September 5, 2008 % ECE301 Section 2 HW1 % % This file is supposed to play Hail Purdue. % Begin by clearing the output console and all memory. clear; clc; %Define note durations. % Take the time signature as 4/4 and let the quarter note = 172bpm. % Then we have 172 quarter notes per minute, so the quarter note duration is 60/172 minute. Q=60/172; %Use the quarter note as a reference for the other note types. H=2*Q; % Half note W=4*Q; % Whole note En=Q/2; %Eighth note DQ=Q+En;%Dotted quarter DH=H+Q; %Dotted half %Now, define frequencies for each note starting with the A below middle C and extending an octave. for note=0:12 Frequency(note+1)=220*2^(note/12); end %Define a constant for each note. % Even though this will be in the key of D, I do not like sharp keys and will therefore define all accidentals as flats. A=Frequency(1); Bb=Frequency(2); B=Frequency(3); C=Frequency(4); Db=Frequency(5); D=Frequency(6); Eb=Frequency(7); E=Frequency(8); F=Frequency(9); Gb=Frequency(10); G=Frequency(11); Ab=Frequency(12); A2=Frequency(13); %Now, define arrays of notes and durations. Notes=[A,B,Db,D,Db,D,Db,D,Db,D,E,D,A,B,Db, ... %Cheer your call once more we rally, Alma Mater hear our praise Db,D,Eb,E,Eb,E,Eb,E,Eb,E,Gb,E,A,G,Gb, ... %Where the Wabash spreads its valley, filled with joy our voices raise A,B,Db,D,Db,D,Db,D,Db,D,A2,Gb,E,D,G, ... %From the skies in swelling echoes come the cheers that tell the tale D,D,E,E,F,F,Gb,Gb,G,A2,Gb,E,D,Gb,E,E, ... %Of your vict'ries and your heroes, all hail Purdue, we sing all hail A,B,Db,D,E,Gb,Gb,G,G,G,D,E,F,Gb, ... %Hail, hail to old Purdue! All hail to our old gold and black Gb,Gb,E,D,E,Gb,Gb,E,B,Db,D,Db,B,E, ... %Hail, hail to old Purdue! Our friendship may she never lack! A,A,B,Db,D,E,Gb,Gb,Gb,G,G,D,E,Gb, ... %Ever grateful, ever true, thus we raise our song anew... B,Db,D,B,A,D,Gb,A,B,Gb,E,D,D]; %Of the days we spend with you, all hail our old Purdue! Times=[Q,Q,Q,Q,Q,Q,En,En,En,En,Q,Q,Q,Q,DH, ... Q,Q,Q,Q,Q,Q,En,En,En,En,Q,Q,Q,Q,DH, ... Q,Q,Q,Q,Q,Q,En,En,En,En,Q,Q,Q,Q,DH, ... En,En,DQ,En,DQ,En,Q,En,En,En,En,En,En,H,H,W, ... H,Q,Q,DQ,En,Q,Q,Q,En,En,Q,En,En,DH, ... H,Q,Q,DQ,En,Q,Q,Q,En,En,Q,En,En,W, ... DQ,En,Q,Q,DQ,En,Q,En,En,Q,Q,Q,Q,W, ... DQ,En,Q,Q,Q,Q,Q,Q,DQ,En,DQ,En,1.5*W]; %Let the sampling frequency be 20kHz, since this is what was used for the demo in class. delta=1/20000; %I count 116 notes in the above. %First, play the song at normal speed. for counter=1:116 t=0:delta:Times(counter); %Create a vector of times with appropriate duration d=sin(2*pi*t*Notes(counter)); %Generate a sine wave for the afmorementioned sound(d,1/delta); %Play the sound. end pause(2) %Second, play the song at double speed. for counter=1:116 t=0:delta:0.5*Times(counter); %Create a vector of times with appropriate duration: %Here, we cut the "correct" times in half to speed up the song. d=sin(2*pi*t*Notes(counter)); %Generate a sine wave for the afmorementioned sound(d,1/delta); %Play the sound. end pause(2) %Finally, play the song according to the transformation y(t)=x(2t). %This should have the effect of transposing up an octave, or doubling the %frequency. for counter=1:116 t=0:delta:Times(counter); %Create a vector of times with appropriate duration d=sin(2*2*pi*t*Notes(counter)); %Generate a sine wave for the afmorementioned sound(d,1/delta); %Play the sound. end