(New page: %NICK GENTRY %ECE301 %08/31/08 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...)
 
(MATLAB CODE)
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
%NICK GENTRY
+
== SOUNDS FILES ==
%ECE301
+
%08/31/08
+
  
 +
[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/c/c1/FightSong_PartB.wav Tune played @ 2X Speed]
 +
 +
[http://kiwi.ecn.purdue.edu/ECE301Fall2008mboutin/images/3/3b/FightSong_PartC.wav Tune played at higher pitch]
 +
 +
== MATLAB CODE ==
 +
<pre>
 
clc
 
clc
 
clear
 
clear
Line 18: 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,  
+
noteOrder = [DSharp, F, G, GSharp, ASharp, C, C,  
             CSharp, CSharp, GSharp, ASharp, ASharp, C,  
+
             CSharp, CSharp, CSharp, GSharp, ASharp,  
            C, C, ASharp, GSharp, ASharp, C, C, ASharp,  
+
            ASharp, C, C, C, ASharp, GSharp, ASharp,  
            F, G, GSharp, G, F ,ASharp, ASharp];
+
            C, C, ASharp, F, G, GSharp, G, F ,ASharp, ASharp];
  
noteLength = [HLF, QTR, QTR, QTR, ETH, QTR, QTR, QTR, ETH,  
+
noteLength = [HLF, QTR, QTR, QTR, ETH, QTR, QTR, QTR,  
               ETH, QTR, ETH, ETH, HLF, QTR, HLF, QTR, QTR,  
+
               ETH, ETH, QTR, ETH, ETH, HLF, QTR, HLF,  
              ETH, QTR, QTR, QTR, ETH, ETH, QTR, ETH, ETH,  
+
              QTR, QTR, ETH, QTR, QTR, QTR, ETH, ETH,  
              HLF, QTR];
+
              QTR, ETH, ETH, HLF, QTR];
  
 
numNotes = 29; %Number of notes to be played
 
numNotes = 29; %Number of notes to be played
  
 
delta = 0.00005; %Sampling Rate
 
delta = 0.00005; %Sampling Rate
x = 1; %Counter for main loop
+
x = 1; %Counter Value
count1 = 1; %Used as counter for nested while loop.
+
count1 = 1; %Used as counter for while loop.
%--------------------------------------------------------------------------
+
 
 
%PART A
 
%PART A
%--------------------------------------------------------------------------
+
 
 
while x<= numNotes;
 
while x<= numNotes;
 
     t1 = 0:delta:noteLength(x);    %Helps scale the length of notes
 
     t1 = 0:delta:noteLength(x);    %Helps scale the length of notes
Line 51: Line 57:
 
sound(writeArray1, 1/delta); %Plays sound file
 
sound(writeArray1, 1/delta); %Plays sound file
  
x = 1; %Coutner for main loop
+
x = 1; %Counter Value
 
count1 = 1; %Reinitializes the counter
 
count1 = 1; %Reinitializes the counter
%--------------------------------------------------------------------------
+
 
 
%PART B
 
%PART B
%--------------------------------------------------------------------------
+
 
 
while x<= numNotes;
 
while x<= numNotes;
 
     t2 = 0:delta:0.5*noteLength(x);  %Helps scale the length of notes
 
     t2 = 0:delta:0.5*noteLength(x);  %Helps scale the length of notes
Line 71: Line 77:
 
sound(writeArray2, 1/delta); %Plays the sound file
 
sound(writeArray2, 1/delta); %Plays the sound file
  
x = 1; %Counter for main loop
+
x = 1; %Counter Value
 
count1 = 1; %Reinitializes the counter
 
count1 = 1; %Reinitializes the counter
%-------------------------------------------------------------------------
+
 
 
%PART C
 
%PART C
%-------------------------------------------------------------------------
+
 
 
while x<= numNotes;
 
while x<= numNotes;
 
     t3 = 0:delta:noteLength(x);      %Helps scale the length of notes
 
     t3 = 0:delta:noteLength(x);      %Helps scale the length of notes
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

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

Buyue Zhang