Revision as of 10:52, 29 August 2008 by Blaskows (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

Alumni Liaison

Questions/answers with a recent ECE grad

Ryne Rayburn