(SOUNDS FILES)
(MATLAB CODE)
 
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/1/12/FightSong_PartA.wav Tune played at normal speed/pitch]
 
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/1/12/FightSong_PartA.wav Tune played at normal speed/pitch]
  
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/1/12/FightSong_PartB.wav Tune played @ 2X Speed]
+
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/c/c1/FightSong_PartB.wav Tune played @ 2X Speed]
  
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/1/12/FightSong_PartC.wav Tune played at higher pitch
+
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/3/3b/FightSong_PartC.wav Tune played at higher pitch]
]
+
  
 
== MATLAB CODE ==
 
== MATLAB CODE ==
 +
<pre>
 
clc
 
clc
 
clear
 
clear
Line 24: Line 24:
 
%This is the array that makes up the notes played in the song:
 
%This is the array that makes up the notes played in the song:
  
noteOrder = [DSharp, F, G, GSharp, ASharp, C, C, CSharp, CSharp, CSharp, GSharp, ASharp, ASharp, C, C, C, ASharp, GSharp, ASharp, C, C, ASharp, F, G, GSharp, G, F ,ASharp, ASharp];
+
noteOrder = [DSharp, F, G, GSharp, ASharp, C, C,  
 +
            CSharp, CSharp, CSharp, GSharp, ASharp,  
 +
            ASharp, C, C, C, ASharp, GSharp, ASharp,  
 +
            C, C, ASharp, F, G, GSharp, G, F ,ASharp, ASharp];
  
noteLength = [HLF, QTR, QTR, QTR, ETH, QTR, QTR, QTR, ETH, ETH, QTR, ETH, ETH, HLF, QTR, HLF, QTR, QTR, ETH, QTR, QTR, QTR, ETH, ETH, QTR, ETH, ETH, HLF, QTR];
+
noteLength = [HLF, QTR, QTR, QTR, ETH, QTR, QTR, QTR,  
 +
              ETH, ETH, QTR, ETH, ETH, HLF, QTR, HLF,  
 +
              QTR, QTR, ETH, QTR, QTR, QTR, ETH, ETH,  
 +
              QTR, ETH, ETH, HLF, QTR];
  
 
numNotes = 29; %Number of notes to be played
 
numNotes = 29; %Number of notes to be played
Line 96: Line 102:
 
wavwrite(writeArray2,'fightSong_PartB.wav');
 
wavwrite(writeArray2,'fightSong_PartB.wav');
 
wavwrite(writeArray3,'fightSong_PartC.wav');
 
wavwrite(writeArray3,'fightSong_PartC.wav');
 +
</pre>
 +
 +
 +
== Results ==
 +
This part of the HW was a lot of fun.  I had no idea that Matlab could generate sound files.  The project wasn't too hard, but it seemed to take a long time.  It was a great "hands on" application of the material we've been learning in class.

Latest revision as of 14:35, 4 September 2008

SOUNDS FILES

Tune played at normal speed/pitch

Tune played @ 2X Speed

Tune played at higher pitch

MATLAB CODE

clc
clear

%The frequencies (Hz) shown below were found on the NYU CS website:
%http://www.cs.nyu.edu/courses/fall03/V22.0201-003/notes.htm

C = 262; CSharp = 227; D = 294; DSharp = 311; E = 330; 
F = 349; FSharp = 370; G = 392; GSharp = 415; A = 440;
ASharp = 466; B = 494;

%Note Lengths defined below:
QTR = 0.25; HLF = 0.50; ETH = 0.125;

%This is the array that makes up the notes played in the song:

noteOrder = [DSharp, F, G, GSharp, ASharp, C, C, 
             CSharp, CSharp, CSharp, GSharp, ASharp, 
             ASharp, C, C, C, ASharp, GSharp, ASharp, 
             C, C, ASharp, F, G, GSharp, G, F ,ASharp, ASharp];

noteLength = [HLF, QTR, QTR, QTR, ETH, QTR, QTR, QTR, 
              ETH, ETH, QTR, ETH, ETH, HLF, QTR, HLF, 
              QTR, QTR, ETH, QTR, QTR, QTR, ETH, ETH, 
              QTR, ETH, ETH, HLF, QTR];

numNotes = 29; %Number of notes to be played

delta = 0.00005; %Sampling Rate
x = 1; %Counter Value
count1 = 1; %Used as counter for while loop.

%PART A

while x<= numNotes;
    t1 = 0:delta:noteLength(x);     %Helps scale the length of notes
    p1 = sin(2*pi*noteOrder(x)*t1); %Sound function
 
    count2 = 1; %While loop counter
    while count2<length(p1);  %Builds the array.
        writeArray1(count1) = p1(count2);
        count1 = count1 + 1;
        count2 = count2 + 1;
    end
        
    x = x + 1; %Increments the loop counter
end
sound(writeArray1, 1/delta); %Plays sound file

x = 1; %Counter Value
count1 = 1; %Reinitializes the counter

%PART B

while x<= numNotes;
    t2 = 0:delta:0.5*noteLength(x);  %Helps scale the length of notes
    p2 = sin(2*pi*noteOrder(x)*t2);  %Sound function
    
    count2 = 1;
    while count2<length(p2); %Builds the array
        writeArray2(count1) = p2(count2);
        count1 = count1 + 1;
        count2 = count2 + 1;
    end
    
    x = x + 1;  %Increments the loop counter
end
sound(writeArray2, 1/delta); %Plays the sound file

x = 1; %Counter Value
count1 = 1; %Reinitializes the counter

%PART C

while x<= numNotes;
    t3 = 0:delta:noteLength(x);       %Helps scale the length of notes
    p3 = sin(2*pi*noteOrder(x)*2*t3); %Sound Function
    
    count2 = 1;
    while count2<length(p3); %Builds the array
        writeArray3(count1) = p3(count2);
        count1 = count1 + 1;
        count2 = count2 + 1;
    end
        
    x = x + 1; %Increments the loop counter
end
sound(writeArray3, 1/delta);  %Plays the sounds file

%Below are the matlab commands used to write the sound files to 3 separate
%files.  The files will be written to the same director as this ".m" file.
wavwrite(writeArray1,'fightSong_PartA.wav');
wavwrite(writeArray2,'fightSong_PartB.wav');
wavwrite(writeArray3,'fightSong_PartC.wav');


Results

This part of the HW was a lot of fun. I had no idea that Matlab could generate sound files. The project wasn't too hard, but it seemed to take a long time. It was a great "hands on" application of the material we've been learning in class.

Alumni Liaison

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

Dr. Paul Garrett