%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

Ph.D. 2007, working on developing cool imaging technologies for digital cameras, camera phones, and video surveillance cameras.

Buyue Zhang