Revision as of 10:33, 3 September 2008 by Pjcannon (Talk)

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

Sound Files

Matlab Code

%Phil Cannon 
%pjcannon@purdue.edu
%ECE301 HW1_1

%This file takes roughly 30 seconds to compile completely and will play
%three different versions of 'Hail Purdue'.  Note: When the wave files are
%created MatLab produces a warning, but it doesn't seem to do anything.

delta=0.00005;

%Declare notes and note lengths
%Taken from:
%http://it4musos.com/audio_workshop/guitar%20note%20frequencies.jpg
Eflat=311; E=329; F=349; Gflat=370; G=392;
Aflat=415; A=440; Bflat=466; B=494; C=523; Dflat=554;

E=.125;
Q=.25;
H=.5;
HQ=H+Q;
DotQ=Q+(.5*Q);

%Array of notes for 'Hail Purdue!'
%Taken from: 
%http://www.purdue.edu/bands/media/Sounds/aamb/Hail%20Purdue%20Piano%20Sheet.pdf
Notes = [Eflat, F, G, Aflat, Bflat, C, C, Dflat, Dflat, Dflat, Aflat, Bflat, B, C];
NLength = [HQ, Q, Q, DotQ, E, Q, Q, Q, E, E, Q, E, E, HQ];

%Part A.  Compiles 'Hail Purdue'.
c1=1;
for counter=1:(length(Notes))
    
    t=0:delta:NLength(counter);
    d=sin(2*pi*t*Notes(counter));
    
    c2=1;
    while c2<length(d)
        HailPurdue(c1)=d(c2);
        c1=c1+1;
        c2=c2+1;
    end
end
fprintf('Part 1 compiled...')

%Part B.  Compiles 'Hail Purdue', but twice as fast.
c1=1;
for counter2=1:(length(Notes))
    
    t2=0:delta:.5*NLength(counter2);
    d2=sin(2*pi*t2*Notes(counter2));
    
    c2=1;
    while c2<length(d2)
        HailPurduex2(c1)=d2(c2);
        c1=c1+1;
        c2=c2+1;
    end
end
fprintf('\nPart 2 compiled...')

%Part B.  Compiles 'Hail Purdue', but twice the pitch.
c1=1;
for counter3=1:(length(Notes))
    
    t3=0:delta:NLength(counter3);
    d3=sin(2*2*pi*t3*Notes(counter3));
    
    c2=1;
    while c2<length(d3)
        HailPurdueTrans(c1)=d3(c2);
        c1=c1+1;
        c2=c2+1;
    end
end
fprintf('\nPart 3 compiled...')
fprintf('Boiler up!\n')

sound(HailPurdue,1/delta);
sound(HailPurduex2,1/delta);
sound(HailPurdueTrans,1/delta);

wavwrite(HailPurdue, 20100, 'hw1_1a.wav');
wavwrite(HailPurduex2, 20100, 'hw1_1b.wav');
wavwrite(HailPurdueTrans, 20100, 'hw1_1c.wav');


Results

This problem took some time, but it was nice learning how to make and play Hail Purdue in Matlab. The only thing that bothered me was a warning produced in Matlab when using wavwrite, however it didn't seem to be doing anything noticeable.

Alumni Liaison

Abstract algebra continues the conceptual developments of linear algebra, on an even grander scale.

Dr. Paul Garrett