Revision as of 12:43, 31 August 2008 by Chanw (Talk)

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

MATLAB Code

I haven't fully tested this file yet, as my comp keeps dislay an error meessage in the middle of playing saying that there's something wrong with my hardware. Will try it on Tues at the Comp lab.

%Wei Jian Chan
%ECE 301 homework 1.1
%Hail Purdue based on E.J. Wotawa simplified by myself
%Score Source : http://www.sibeliusmusic.com/cgi-bin/show_score.pl?scoreid=105548

%Define the Sampling frequency and the pace of the song
Pace = 140;
Smp_fre = 1/20000;

%The delay for each note 
%since there is 140 Crotchets in a minute, therefore :
C = 60/Pace;
M = 60/(Pace/2);
B = 60 /(Pace/4);
Q = 60/(Pace*2);
SQ = 60/(Pace*4);
DM = M + C;
DC = C + Q;

%Note Frequency 
%Based on the frequency i found on the web
%Source : http://www.phy.mtu.edu/~suits/notefreqs.html

C4  = 261.63; 
Db4 = 277.18; 
D4  = 293.66;
Eb4 = 311.13; 
E4  = 329.63; 
F4  = 349.23; 
Gb4 = 369.99; 
G4  = 392.00;
Ab4 = 415.30;
A4  = 440.00;
Bb4 = 466.16;
B4  = 493.88;
C5  = 523.25;
Db5 = 554.37;
D5  = 587.33;
Eb5 = 622.25;
E5  = 659.26;
F5  = 698.46; 
Gb5 = 739.99;
G5  = 783.99;
Ab5 = 830.61;
A5  = 880.00;
Bb5 = 932.33;
B5  = 987.77;
Re  = 0;

%Set up vectors for the notes of the songs 
Notes = [Eb4 F4 G4 Ab4 G4 Ab4 G4 Ab4 G4 Ab4 Bb4 Ab4 Eb4 F4 G4 Re ...
         G4 Ab4 A4 Bb4 A4 Bb4 A4 Bb4 A4 Bb4 C5 Bb4 Eb4 Db5 C5 Re  ...
         Eb4 F4 G4 Ab4 G4 Ab4 G4 Ab4 G4 Ab4 Eb5 C5 Bb4 Ab4 Db5 Ab4 Ab4 ...
         Bb4 Bb4 B4 B4 C5 Db5 Eb5 C5 Bb4 G4 C5 Bb4 Ab4 Bb4 Bb4 Re...
         Eb4 F4 G4 Ab4 Bb4 C5 C5 Db5 Db5 Db5 Ab4 Bb4 B4 C4 C4 Re ...
         C5 C5 Bb4 Ab4 Bb4 C5 C5 Bb4 F4 G4 Ab4 G4 F4 Bb4 Bb4 Re Eb5 Re ...
         Eb4 Eb4 F4 G4 Ab4 Bb4 C5 C5 C5 Db5 Db5 Ab4 Bb4 C5 Re ...
         F4 G4 Ab4 F4 Eb4 Ab4 C5 Eb4 F4 C5 Bb4 Ab4 Ab4 Re];

%Set up time vector for the notes
Time = [C C C C C C Q Q Q Q C C C C DM C ...
        C C C C C C Q Q Q Q C C C C DM C ...
        C C C C C C Q Q Q Q C C C C DM Q Q ...
        DC Q DC Q DC Q Q Q Q Q M DC Q DM Q Q...
        M C C DC Q C C C Q Q C Q Q DM Q Q ...
        M C C DC Q C C C Q Q C Q Q M Q Q Q Q ...
        DC Q C C DC Q C Q Q C C C C DM C ...
        DC Q C C C C C C DC Q DC Q M C];

for i = 1:length(Notes)
    t = 0:Smp_fre:Time(i);
    Output = sin(2*pi*Notes(i)*t);
    Sound(Output, 1/Smp_fre);
end

pause(2)

% Song played at twice the speed
% The time is cut half
for i = 1:length(Notes)
    t = 0:Smp_fre:0.5*Time(i);
    Output = sin(2*pi*Notes(i)*t);
    Sound(Output, 1/Smp_fre);
end

pause(2)

% Song goes thru a tranformation 
% As for the same note for every octave, the note is twice the frequency of
% the previous note, thus the octave for the song is raised

for i = 1:length(Notes)
    t = 0:Smp_fre:Time(i);
    Output = sin(2*2*pi*Notes(i)*t);
    Sound(Output, 1/Smp_fre);
end

Alumni Liaison

Correspondence Chess Grandmaster and Purdue Alumni

Prof. Dan Fleetwood