Jump to content

Unexpected encoder behaviour


jjonas

Recommended Posts

Hi,

I have the following situation. I'm controlling the parameters of a DSI Tetra, whose patch dump uses a "packed data format" (shown here at the top of someone's JS decoding algorithm) which deals with two-byte values in a way that's not immediately comprehensible to me; and even if I took the time to understand it, it probably wouldn't be possible to syxdump_pos two separate bytes into the same event as one value. For this reason I'm picking out only one-byte values from the dump and using NRPN increment and decrement commands to change the two-byte values (mostly envelope amounts from -127 to 127).

However, the interplay between the two doesn't work as expected. When I use the setup below and turn the first encoder (sending an absolute value), the first param value changes as expected. Now I turn the second encoder (sending an increment or decrement command), and the second param value changes as expected. But when I now turn the first encoder again, it keeps changing the second param on the synth, even though on the NG it would appear that it's the first param that's being changed. On the NG it's the first param's value that's changing, but it's sent to the second param (on the synth). If I keep alternating between the first and second encoders, only the second param's value will change. The only way to break out of this is to turn a third encoder, which now changes a third parameter, and this seems to break out of the loop.

 If I turn the first encoder, then the second, the the third, then the second, then the first again, it all works as expected. But alternating between an encoder that sends an absolute value and one that sends an increment/decrement command seems to get tangled somehow.

Here's my test setup.

RESET_HW

ENC n=1   sr=1 pins=0:1   type=detented3
ENC n=2   sr=1 pins=2:3   type=detented3
ENC n=3   sr=1 pins=4:5   type=detented3

## param 4. VCF release
EVENT_ENC id=1   hw_id=1    label="@(1:1:1)Rel%B @(1:1:2) %03d "  range=0:127  type=NRPN  chn=12  nrpn="26"
## param 6. VCF env amount. RANGE 0-254
EVENT_ENC id=2   hw_id=2    label="@(1:6:1)Amt  "  enc_mode=Inc01_Dec7F  if_equal=0x01  type=SysEx stream="0xbb 99 0 98 20 96 1"
EVENT_ENC id=2   hw_id=2    label="@(1:6:1)Amt  "  enc_mode=Inc01_Dec7F  if_equal=0x7f  type=SysEx stream="0xbb 99 0 98 20 97 1"
# param 7. VCF sustain
EVENT_ENC id=3   hw_id=3    label="@(1:11:1)Sus%B @(1:11:2) %03d "  range=0:127  type=NRPN  chn=12  nrpn="25"

Link to comment
Share on other sites

It's related to the NRPN optimization which only sends out 99/98 when necessary - the SysEx stream based NRPNs bypasses it, therefore the problem.

I will think about a solution which can handle this configuration properly...

Best Regards, Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...