Assignment 3
Due Wednesday, March 4, in class.
Show your work. Have fun.
1) More sines and stuff, show your work
a) cos2(θ) = (1 + ??) / 2
b) ejθtcos(ωt) = exp(j Theta t) * cos(Omega t) = ??
What happens if θ = ω?
if θ = -ω?
2) Linearity and Time Invariance
For each of these, say whether the system is
linear, time-invariant, or both, and show why.
a) y(n) = x(n) + x(n-1) - 1
b) y(n) = x(n) + 0.9y(n-1)
c) y(n) = x(n)1.09
d) y(n) = x(n) * 2-n
e) y(n) = x(n) + 0.9-1x(n-1) + 0.9-2x(n-2) + ... + 0.9-kx(n-k) + ...
f) y(n) = 7.0, n>11
0.0, otherwise
g) y(n) = x(n) - x(n-1) + 0.1*x(n)*x(n-1)
3) Convoluted thinking
x(n)*x(n) = x*x(n) = SUMkx(k)x(n-k);
( here * means convolution, not multiplication)
let x(n) = [1, 1, 0, 0, 0, ...]
then x*x(n) = [1,2,1,0,0,0,...]
a) compute and write out x*x*x(n) =
x*x*x*x(n) =
x*x*x*x*x(n) =
b) repeat all operations in (a) for x(n) = [1,-1,0,0,0,...]
c) compute the mean of each (non zero) sequence segment in a) and b)
d) think (and write) a little about what's up with a) and b)
4) Filtration
a) yH(n) = (x(n) + x(n-1)) / 2.0
Find | Y/X(ω) |
(This is the magnitude of the Z transform of Y/X
Do Z transform of y as Y(Z) = X(Z)(1-Z-1)
Solve for Y/X, replace Z with ejω,
use Euler's identity for the complex exponential,
compute magnitude as sqrt(Real2 + Imag2)
b) Repeat a, but with
yL(n) = (x(n) - x(n-1)) / 2.0
c) what's up with a) and b)?
5) Beats Me!! Type in, compile, and run this code. What's up??
/****************************************************************/
/* First done by Risset at Bell Labs */
/* From Music, Cognition, and Computerized Sound:
An Introduction to PsychoAcoustics, Perry R. Cook, Editor
MIT Press, January 1999,
The code is Copyright, 1998, Perry R. Cook
Please keep the Copyright Notices if you redistribute. */
#include < math.h>
#include < stdio.h>
#define TWO_PI 6.28318530718
#define SRATE 44100
#include "waveio.h"
#define PEAKMAX 6000
void main()
{
long i,j,k,m,total,harm,freq;
double temp;
double amps[7] = {1.0, 0.5, 0.33, 0.25, 0.166, 0.143, 0.111};
double freqs[7] = {100.0,100.1,100.2,100.3,100.4,100.5,100.6};
short data[256];
FILE *fileOut;
struct soundhdr hdr;
fillheader(&hdr,SRATE);
fileOut = opensoundout("rissbeat.wav",&hdr); /* or .snd here */
total = 0;
m = 0;
for (j=0;j<4000;j++) {
for (k=0;k<256;k++,m++,total++) {
temp = 0.0;
for (freq=0;freq<7;freq++) {
for (harm=1;harm<=7;harm++) {
temp += amps[harm-1] * sin(m * TWO_PI *
freqs[freq] * harm / SRATE);
}
}
data[k] = 2000 * temp;
}
fwrite(data,256,2,fileOut);
}
closesoundout(fileOut,total);
exit(0);
}
/***********************************************************************/
Now code it in ChucK. See how few lines it might take...
6) Do a 44.1 second musical statement using only convolution. Use at most
two original soundfiles (but you can convolve them any number of times,
cut them up how you like, reverse them, etc.). Use no other fancy
tools (you may use Goldwave or other editor for trimming or editing,
but not for any effects). Name it appropriately (prcAss3.wav) and
place it in your magical assignment place, with a descriptive text
file about what you did, what happened, surprises encountered, etc.
|