I would like to propose the following modification to the send method in Midi2WavRenderer: Replace: mpq = ((data[0] & 0xff) << 16) | ((data[1] & 0xff) << 8) | (data[2] & 0xff); with: mpq = ((data[0] & 0x7f) << 14) | ((data[1] & 0x7f) << 7) | (data[2] & 0x7f); The reasoning for this is that Midi messages only use 7 bits in each byte to represent data. It should also be noted that, in Java, a byte data type (of which data is an array) is a signed integer and only has room for 7 data bits. I have been...
I would like to propose the following modifications to the send method in Midi2WavRenderer: Replace: curtime += ((tick - lasttick) * mpq) / seqres; with: curtime += ((tick - lasttick) * mpq * 4) / seqres; The reasoning for this is that int seqres = seq.getResolution(); seems to return the resolution in ticks per whole note when used in conjunction with JFugue and not ticks per quarter note as documented. Replace: mpq = ((data[0] & 0xff) << 16) | ((data[1] & 0xff) << 8) | (data[2] & 0xff); with: mpq...
I would like to propose the following modifications to the send method in Midi2WavRenderer: Replace: curtime += ((tick - lasttick) * mpq) / seqres; with: curtime += ((tick - lasttick) * mpq * 4) / seqres; The reasoning for this is that int seqres = seq.getResolution(); seems to return the resolution in ticks per whole note and not ticks per quarter note as documented. Replace: mpq = ((data[0] & 0xff) << 16) | ((data[1] & 0xff) << 8) | (data[2] & 0xff); with: mpq = ((data[0] & 0x7f) << 14) | ((data[1]...