1. Combination
To be able to overlay two Sound objects, there must be a total time. A simple SoundNote object has its own beginning of time and, therefore, using Sound in a list of them will only concatenate them and play them in sequential order. You will have to use absolute times for each to impose them. Thus, you can create MIDI music simultaneously with several instruments.
Here is a brief example (not polished) of an overlay. Bass notes play the piano, and high notes play the clarinet.
tempo = 110; eighthNoteDuration = 60/tempo/2; trebleNotes = {"E5", "D#5", "E5", "D#5", "E5", "B", "D5", "C5", "A", None, "C", "E", "A", "B", None, "E", "G#", "B", "C5", None, "E", "E5", "D#5", "E5", "D#5", "E5", "B", "D5", "C5", "A", None, "C", "E", "A", "B", None, "E", "C5", "B", "A"}; trebleNoteDurations = {1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4} eighthNoteDuration; trebleTimings = Partition[ Accumulate@Flatten @ Transpose@ {ConstantArray[0, Length@ #], #} &@ trebleNoteDurations, 2]; bassNotes = {None, None, "A2", "E3", "A3", None, None, "E3", "G#3", "B3", None, None, "A2", "E3", "A3", None, None, None, "A2", "E3", "A3", None, None, "E3", "G#3", "B3", None, None, "A2", "E3", "A3", None}; bassNoteDurations = {2, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 6, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1} eighthNoteDuration; bassTimings = Partition[ Accumulate@Flatten @ Transpose@ {ConstantArray[0, Length@ #], #} &@ bassNoteDurations, 2]; Sound[Join[ SoundNote[#1, #2, "Piano"] & @@@ ({bassNotes, bassTimings}\[Transpose]), SoundNote[#1, #2, "Clarinet"] & @@@ ({trebleNotes, trebleTimings}\[Transpose])]]
2. Pedal effects
As for your second question, I don't think you can reproduce the effects of the pedals using MIDI. The MIDI format is quite simple and actually does not transmit any sound. All the information he carries
- Playing a note (pitch)
- Note duration (tempo)
- Trigger events to start and stop notes
The instrument you want to play depends entirely on your system and may play differently on different systems. Now, if you want to reproduce the effect of the pedal, you will need to write a function to break it into separate MIDI events, which are very similar to the actual effect of the pedal.
For example, you can change SoundNote or create a new function that, when passing the Sustain -> t option, prolongs the note for t seconds. You can make it more realistic and cut t seconds into smaller segments, and SoundVolume -> v as an additional option and v linearly / logarithmically decrease with each segment.