User Tools

Site Tools


code:goftersysex
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


code:goftersysex [2015/11/19 15:00] (current) – created michfiel
Line 1: Line 1:
 +==== Multimode ====
 +
 +In addition to the outdated sysex documentation, at least in firmware 1.15, a protocol for the multimode is implemented
 +
 +^ Label ^ Value ^ Description   ^
 +| MULR  | 01h   | Multi Request |
 +| MULD  | 11h   | Multi Dump    |
 +
 +==== User Wavetables ====
 +
 +^ Label ^ Value ^ Description    ^
 +| WTBD  | 12h   | Wavetable Dump |
 +
 +A wavetable dump is used to transfer wavetable data to the Blofeld. Each wavetable is transferred as 64 consecutive wave dumps.
 +
 +^ WT ^ WN     ^ Location                  ^
 +| 50 | 00..3F | Wavetable 80, Wave 1..64  |
 +| 76 | 00..3F | Wavetable 118, Wave 1..64 |
 +
 +==== Sample Code ====
 +
 +Convert a 21 bit signed integer (provided in three 7-bit characters) into a 32 bit signed integer
 +
 +http://stackoverflow.com/questions/11704309/how-to-build-a-negative-32-bit-integer-from-bytes-without-a-range-check-error
 +
 +            uint32 sample =
 +            (sysex[kWavetableDataOffset + index * 3 + 0] << 14) |
 +            (sysex[kWavetableDataOffset + index * 3 + 1] << 7) |
 +            (sysex[kWavetableDataOffset + index * 3 + 2] << 0);
 +            
 +            if (sample &  0x00100000) {
 +                sample |= 0xfff00000;
 +            }
 +            
 +            curWavetable.data[wave][index] = (int)sample;
  
code/goftersysex.txt · Last modified: 2015/11/19 15:00 by michfiel