[LAD] SysEx data-conversion woes: nibbles and complements (Microwave 2)

Jeanette C. julien at mail.upb.de
Thu May 13 09:14:47 CEST 2021

Hey hey,
I have a problem. I'm trying to understand the Waldorf Microwave 2/xt's 
waveform data dump. The SysEx manual seems clear and direct enough, but I 
can't get anywhere.

In short: these synthesizers can load 8bit single cycle waveforms. Only a half 
cycle is sent, the second half is created by "mirroring"/negating the first 
Wave[64+n] = -Wave[63-n]

To store 8bit samples in the SysEx format, which can only use 7bit, the 
samples were split into nibbles. Here's what the SysEx manual says about 
conversion to a signed char:
"... Not(e) that samples are not two's complement format, to get a signed 
byte, the most significant bit must be flipped:
signed char s = Wave[n]^0x80; ..."
The whole wave dump format is defined as: "f0 3e 0e Dev_id 12 location_1 
location_2 "128 bytes of wave data" chksum f7"
Wave Data:
index	range	description
0	0-0f	sample1, most significant nibble
1	0-0f	sample 1, least significant nibble

Knowing all that, I tried a few things, but still couldn't get any sensible 
result. Here's a wave dump of wave 1, which I assume is the sine wave
Complete SysEx dump:
Only the wave data (128 bytes):

Could someone please help me on how to convert one sample from this data and 
vice versa, please?

Best wishes,


  * Website: http://juliencoder.de - for summer is a state of sound
  * Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
  * Audiobombs: https://www.audiobombs.com/users/jeanette_c
  * GitHub: https://github.com/jeanette-c

And I love the way with just one whisper
You tell me everything <3
(Britney Spears)

More information about the Linux-audio-dev mailing list