(New page: '''ECE 301 Homework #1: Playing Sounds in Matlab''' <br> '''Matlab Program:''' <pre>%-------------------------------------------------------------------------- % ECE 301 Hom...) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | '''ECE 301 Homework #1: Playing Sounds in Matlab''' | + | == '''ECE 301 Homework #1: Playing Sounds in Matlab'''''<br>''Michael James'''<br>''' == |
− | + | ---- | |
− | '''Matlab Program:''' | + | '''Question explanations and sound files: ''' |
+ | |||
+ | #The sound file for the combined three versions of "Smoke on the Water" by Deep Purple can be found here: <br>[https://www.projectrhea.org/rhea/images/1/1a/SmokeOnTheWater_MichaelJames.wav www.projectrhea.org/rhea/images/1/1a/SmokeOnTheWater_MichaelJames.wav]<br> | ||
+ | #The forward repeated phrase is "number nine." In reverse, the message sounds like "turn me on, dead man."<br>The sound file for the reversed "Revolution 9" by the Beetles can be found here:<br>[https://www.projectrhea.org/rhea/images/8/82/BeatlesReversed_MichaelJames.wav www.projectrhea.org/rhea/images/8/82/BeatlesReversed_MichaelJames.wav] | ||
+ | |||
+ | '''Matlab Program: ''' | ||
<pre>%-------------------------------------------------------------------------- | <pre>%-------------------------------------------------------------------------- | ||
% ECE 301 Homework #1 | % ECE 301 Homework #1 | ||
Line 43: | Line 48: | ||
% Part 1B: "Smoke on the Water" played twice as fast. The signal in this | % Part 1B: "Smoke on the Water" played twice as fast. The signal in this | ||
% case is not transformed. Rather, the notes are played at half their | % case is not transformed. Rather, the notes are played at half their | ||
− | % original length. | + | % original length to play the tune at twice the original speed. |
%-------------------------------------------------------------------------- | %-------------------------------------------------------------------------- | ||
Line 58: | Line 63: | ||
% Part 1C: "Smoke on the Water" with transformation y(t) = x(2t). In This | % Part 1C: "Smoke on the Water" with transformation y(t) = x(2t). In This | ||
% case, the original song (x) is time scaled. In addition to the speed | % case, the original song (x) is time scaled. In addition to the speed | ||
− | % increasing to twice the original speed, the frequencies increase as well. | + | % increasing to twice the original speed, the frequencies of all notes |
+ | % will increase as well. | ||
%-------------------------------------------------------------------------- | %-------------------------------------------------------------------------- | ||
Latest revision as of 08:03, 19 January 2011
ECE 301 Homework #1: Playing Sounds in Matlab
Michael James
Question explanations and sound files:
- The sound file for the combined three versions of "Smoke on the Water" by Deep Purple can be found here:
www.projectrhea.org/rhea/images/1/1a/SmokeOnTheWater_MichaelJames.wav
- The forward repeated phrase is "number nine." In reverse, the message sounds like "turn me on, dead man."
The sound file for the reversed "Revolution 9" by the Beetles can be found here:
www.projectrhea.org/rhea/images/8/82/BeatlesReversed_MichaelJames.wav
Matlab Program:
%-------------------------------------------------------------------------- % ECE 301 Homework #1 % Playing Sounds in MATLAB % % Michael James % January 19th, 2011 %-------------------------------------------------------------------------- clear %This erases all previous variables in MatLab %-------------------------------------------------------------------------- % Part 1: Three renditions of "Smoke on the Water" %-------------------------------------------------------------------------- BPM = 112; % Number of beats per minute in which the song was written for MIN = 60; % Number of second in a minute (constant) FS = 8000; % Sampling Rate (Hz) delta = 1 / FS; % Seconds of each interval in the data set (1 / Hz) qn = 0: delta : (MIN / BPM); % Timing of a quarter note (sec) hn = 0: delta : (2 * (MIN / BPM)); % Timing of a a half note (sec) en = 0: delta : (.5 * (MIN / BPM)); % Timing of a an eigth note (sec) dq = 0: delta : (1.5 * (MIN / BPM)); % Timing of a a dotted quarter note (sec) fA = 440; % Frequency of A (Hz) fG = 2 ^ (-2 / 12) * fA; % Frequency of G (Hz) fBf = 2 ^ (1 / 12) * fA; % Frequency of B-flat (Hz) fC = 2 ^ (3 / 12) * fA; % Frequency of C (Hz) fDf = 2 ^ (4 / 12) * fA; % Frequency of D-flat (Hz) %-------------------------------------------------------------------------- % Part 1A: "Smoke on the Water" at original speed %-------------------------------------------------------------------------- x = .02 * [sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fC*dq),sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fDf*en),sin(2*pi*fC*hn),sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fC*dq),sin(2*pi*fBf*qn),sin(2*pi*fG*qn)]; %-------------------------------------------------------------------------- % Part 1B: "Smoke on the Water" played twice as fast. The signal in this % case is not transformed. Rather, the notes are played at half their % original length to play the tune at twice the original speed. %-------------------------------------------------------------------------- BPM = 112 * 2; % This doubles the speed of the music qn = 0: delta : (MIN / BPM); % Timing of a quarter note (sec) hn = 0: delta : (2 * (MIN / BPM)); % Timing of a a half note (sec) en = 0: delta : (.5 * (MIN / BPM)); % Timing of a an eigth note (sec) dq = 0: delta : (1.5 * (MIN / BPM)); % Timing of a a dotted quarter note (sec) x2 = .02 * [sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fC*dq),sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fDf*en),sin(2*pi*fC*hn),sin(2*pi*fG*qn),sin(2*pi*fBf*qn),sin(2*pi*fC*dq),sin(2*pi*fBf*qn),sin(2*pi*fG*qn)]; %-------------------------------------------------------------------------- % Part 1C: "Smoke on the Water" with transformation y(t) = x(2t). In This % case, the original song (x) is time scaled. In addition to the speed % increasing to twice the original speed, the frequencies of all notes % will increase as well. %-------------------------------------------------------------------------- % This loop performs the required transformation by scaling the original % signal to data points in the new signal for n = 1 : (size(x,2) / 2) y(n) = x(2 * n); % This is the matrix that holds the time scaled signal end %-------------------------------------------------------------------------- % Part 1 End: Write all three songs into a single sound file %-------------------------------------------------------------------------- total = [x, x2, y]; % This combines all three parts into one matrix sound(total, FS); % This plays all three parts at once wavwrite(total, 'SmokeOnTheWater_MichaelJames.wav'); % Writes the sound file to a .wav %-------------------------------------------------------------------------- % Part 2: Reversal of Beetles Song %-------------------------------------------------------------------------- [original, fs] = wavread('beatles.wav'); % Reads the original "Beatles.wav" file with a sampling rate of fs reversed = flipud(original); % Reverses the original matrix, thus reversing the song wavwrite(reversed,fs,'BeatlesReversed_MichaelJames.wav'); % Writes the reversed file to a .wav file