Adding chords to MIDI?

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*) 
}]