Hello,
I put together a file that creates Mary Had a Little Lamb using the MIDI function and the appropriate numbers associated with the correct notes.
I'm trying to add chords to this song but it doesn't seem to be playing correctly. The below version does not have the chord sections added.
My plan was to add additional notes on separate speaker channels. This worked when playing two single notes at the same time, but doesn't seem to produce a good effect with chords.
Any suggestions for how to add chords to the piece below?
(*MIDI FUNCTION*)
f[x_] := 440*2^((x - 69)/12);
(*BREAK AFTER THE NOTE*)
e4longrest = .2;
e4standardrest = .1;
c4shortrest = .1;
c4longrest = .2;
c4longlongrest = .5;
d4shortrest = .05;
d4standardrest = .1;
d4longrest = .2;
g4standardrest = .1;
g4longrest = .2;
(*DURATION OF THE NOTE*)
eduration = .3;
elongduration = .3;
cduration = .3;
dduration = .3;
dlongduration = .3;
gduration = .3;
(*MELODY/FOURTH OCTAVE*)
e4 = 64;
c4 = 60;
d4 = 62;
g4 = 67;
(*MELODY/THIRD OCTAVE*)
a3 = 57;
c3 = 48;
d3 = 50;
e3 = 52;
f3 = 53;
g3 = 55;
(*MELODY/SECOND OCTAVE*)
g2 = 43;
b2 = 47;
d3 = 50;
Sound[{
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, elongduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dlongduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4shortrest}](*d4 REST*) ,
Play[{SquareWave[f[c4] x], SquareWave[f[c4] x]}, {x, 0, cduration}](*C*) ,
Play[SquareWave[x], {x, 0, c4longrest}](*c4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}](*D4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*),
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[g4] x], SquareWave[f[g4] x]}, {x, 0, gduration}](*G*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*g4 REST*) ,
Play[{SquareWave[f[g4] x], SquareWave[f[g4] x]}, {x, 0, gduration}](*G*) ,
Play[SquareWave[x], {x, 0, g4longrest}](*g4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, elongduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dlongduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4shortrest}](*d4 REST*) ,
Play[{SquareWave[f[c4] x], SquareWave[f[c4] x]}, {x, 0, cduration}](*C*) ,
Play[SquareWave[x], {x, 0, c4longrest}](*c4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}](*D4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*),
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
(*MEASURE*)
Play[{SquareWave[f[c4] x], SquareWave[f[c4] x]}, {x, 0, cduration}](*E*) ,
Play[SquareWave[x], {x, 0, c4longlongrest}](*e4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[c3] x]}, {x, 0, elongduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dlongduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4shortrest}](*d4 REST*) ,
Play[{SquareWave[f[c4] x], SquareWave[f[a3] x]}, {x, 0, cduration}](*C*) ,
Play[SquareWave[x], {x, 0, c4longrest}](*c4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}](*D4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[c3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[a3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[d4] x], SquareWave[f[g3] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*),
Play[{SquareWave[f[d4] x], SquareWave[f[d3] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[c3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[g4] x], SquareWave[f[g4] x]}, {x, 0, gduration}](*G*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*g4 REST*) ,
Play[{SquareWave[f[g4] x], SquareWave[f[a3] x]}, {x, 0, gduration}](*G*) ,
Play[SquareWave[x], {x, 0, g4longrest}](*g4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[c3] x]}, {x, 0, elongduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dlongduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4shortrest}](*d4 REST*) ,
Play[{SquareWave[f[c4] x], SquareWave[f[a3] x]}, {x, 0, cduration}](*C*) ,
Play[SquareWave[x], {x, 0, c4longrest}](*c4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}](*D4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[e4] x], SquareWave[f[c3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[a3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[e4] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4longrest}](*e4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[d4] x], SquareWave[f[g3] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4standardrest}](*D4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
Play[{SquareWave[f[e4] x], SquareWave[f[d3] x]}, {x, 0, eduration}](*E*) ,
Play[SquareWave[x], {x, 0, e4standardrest}](*e4 REST*) ,
Play[{SquareWave[f[d4] x], SquareWave[f[d4] x]}, {x, 0, dduration}](*D*) ,
Play[SquareWave[x], {x, 0, d4longrest}] (*D4 REST*) ,
(*TWO NOTES/MEASURE*)
Play[{SquareWave[f[c4] x], SquareWave[f[c3] x]}, {x, 0, cduration}](*E*) ,
Play[SquareWave[x], {x, 0, c4longlongrest}](*e4 REST*)
}]