Pro 3 Wavetable SysEx Message

chysn

  • *****
  • 1812
Pro 3 Wavetable SysEx Message
« on: October 10, 2020, 07:37:34 PM »
For any developers who are interested, a description of the Pro 3's wavetable system exclusive format follows. I've got a ton of ideas for composing with generated wavetables, but I probably won't have my Pro 3 until later this month or next.

Thanks to composerjk for his help to verify this information on real hardware. That said, any mistakes here are mine alone.

Wavetable Message: 112,368 Bytes

Header: 17 bytes

F0 (start of sysex)
01 (Sequential)
31 (Pro 3)
6a 6c 01 6b
Wavetable Number: nn (range of 20-3f, for wavetables 33-64)
Wavetable Name: 8 x {nn (ASCII character, range of 01-7f, with 00 terminating the name)}
00 force end of wavetable name

Packed PCM Data: 98,304 bytes packed to 112,348 bytes

Reference Wave PCM: 16 x {
  1024-word big-endian 16-bit signed PCM
  512-word down-sampled PCM
  2 x {256-word down-sampled PCM}
  8 x {128-word down-sampled PCM}
}

This is 3072 words, or 6144 bytes, of PCM per reference wave x 16 waves = 98,304 bytes, which is then packed into 8-byte packets, yielding 112,348 bytes. There's a detailed discussion of data packing here (https://forum.sequential.com/index.php/topic,43.msg106.html#msg106), and the Tenth Anniversary Edition of my C packing library is available here (https://github.com/Chysn/sequential_packing).

Checksum: 2 bytes

Checksum is a 16-bit unsigned integer initialized to 0. For each 2-byte word in the PCM data, convert it to a little-endian 16-bit unsigned integer and add it to checksum. Then, unset bits 7 and 15 of checksum (mask with 0xf7f7). Then append checksum as a 2-byte little-endian value to the sysex message.

End of sysex: 1 byte

F0
« Last Edit: October 10, 2020, 07:41:10 PM by chysn »
Prophet 5 Rev 4 #2711

MPC One+ ∙ MuseScore 4

www.wav2pro3.comwww.soundcloud.com/beige-mazewww.github.com/chysnwww.beigemaze.com

he/him/his

chysn

  • *****
  • 1812
Re: Pro 3 Wavetable SysEx Message
« Reply #1 on: October 11, 2020, 11:56:26 AM »
Error #1: End of sysex is F7, not F0
Prophet 5 Rev 4 #2711

MPC One+ ∙ MuseScore 4

www.wav2pro3.comwww.soundcloud.com/beige-mazewww.github.com/chysnwww.beigemaze.com

he/him/his