%Scott Hamilton
%HW 1 pt 1
%9/4/08

clear
clc

% Define Sampling rate 
Sample = 1 / 44100;

%Define Pitches
%known from class that A above middle C is 440 Hz, although not used in our
%song we define it for determining the other notes
A = 440; 

%Determined from the given information one ìhalf stepî is a ratio of (16/15)
%therefore Ab can be determined from A and any sequencial notes
Hs = 16 / 15;

% Finding the frequencies below A
Ab =  A / Hs;
G = Ab / Hs;
Gb = G / Hs;
F = Gb / Hs;
E = F / Hs;
Eb = E / Hs;

% Finding the frequencies above A
Bb = A * Hs;
B = Bb * Hs;
C = B * Hs;
Db = C * Hs;
D = Db * Hs;

%Define Rest
Rest = 0;

% Define a beat, assuming the tempo is 140 bpm
Beat = (60/140); 

%Define note durations
%Quarter note
Q = Beat;
%Dotted Quarter Note
Qd = 1.5 * Beat;
%Half Note
H = 2 * Beat;
%Dotted Half Note
Hd = 3 * Beat;
%Eighth Note
Et = .5 * Beat;

%Define note progression, this is from a copy handed out it MUS 361
Notes = [ Eb, F, G Ab, Bb, C, C, Db, Db, Db, Ab, Bb, B, C, Rest, C, C, ...
    Bb, Ab, Bb, C, C, Bb, F, G, Ab, G, F, Bb, Rest, Eb, Eb, F, G, Ab,...
    Bb, C, C, C, Db, Db, Ab, Bb, C, Rest, F, G, Ab, F, Eb, Ab, C, Eb, F,...
    C, Bb, Ab, Ab];

%Define durations for the note progression
Duration = [H, Q, Q, Qd, Et, Q, Q, Q, Et, Et, Q, Et, Et, Hd, Q, H, Q, Q,...
    Qd, Et, Q, Q, Q, Et, Et, Q, Et, Et, Hd, Q, Qd, Et, Q, Q, Qd, Et, Q,...
    Et, Et, Q, Q, Q, Q, Hd, Q, Qd, Et, Q, Q, Q, Q, Q, Q, Qd, Et, Qd,...
    Et, Hd];

Music1 = [];
Music2 = [];
Music3 = [];

%Setup a loop for the notes to be played sequentially 
for x =  1 : length(Notes);
    t = 0 : Sample : Duration(x);
    Tone = sin(2 * pi * Notes(x) * t); 
    Music1 = [Music1; Tone(:)]; 
end

%Play song and write a .wav file
sound(Music1, 1 / Sample);
wavwrite(Music1, 1 / Sample, 32, 'c:\HailPurdueReg');

%define pause increments
n = 5;

pause(n);

%Playing song in cut time requires halving the value of t
for x =  1 : length(Notes);
    t = 0 : Sample : .5 * Duration(x);
    Tone = sin(2 * pi * Notes(x) * t);
    Music2 = [Music2; Tone(:)];
end

%Play song and write a .wav file
sound(Music2, 1 / Sample);
wavwrite(Music2, 1 / Sample, 32, 'c:\HailPurdueFast');

pause(n);

%Transform so that y(t)=x(2t), results in raising all pitches up 1 octave
for x =  1 : length(Notes);
    t = 0 : Sample : Duration(x);
    Tone = sin(2 * pi * Notes(x) *  2 * t);
    Music3 = [Music3; Tone(:)];
end

%Play song and write a .wav file
sound(Music3, 1 / Sample);
wavwrite(Music3, 1 / Sample, 32, 'c:\HailPurdueOctave');

Here are links to the completed sound files HailPurdueReg.wav HailPurdueFast.wav HailPurdueOctave.wav

Alumni Liaison

Recent Math PhD now doing a post-doctorate at UC Riverside.

Kuei-Nuan Lin