How do I get bit changer controls working?

0 votes
asked Oct 19, 2022 in Advanced by zappra (170 points)

2 Answers

+1 vote
I just tested EZBs DX7 layout, and I see the operator output SysEx change as expected with the operator 1-6 buttons.  The subcontrol knob does not move, but the log shows the expected output.

I built a button supercontrol, type bit changer, and both knob and button subcontrols, and the selected output bit changes in the log.

Seems that the bit changer just reaches directly in to the output control and changes the indicated bit - it does not drive the subcontrol as in most other cases.  So if you are using that bit changer output to drive other controls, you may need a different approach.
answered Oct 19, 2022 by jkhiser (19,810 points)
Ah ok so it's working as intended? Dang.

What I'm trying to setup is a control that will send one of four arbitrary cc values based on the binary on/off state of two toggle buttons. Given that it's only 4 values I could have a button group, but I'd rather have a layout that reflects the physical device if possible. This is a Chase Bliss MOOD pedal, FWIW, and it's slightly odd MIDI setup for the two bypass switches.

https://static1.squarespace.com/static/622176a9b8d15d57ffbf5700/t/622cbf20003db512efcb5324/1647099680945/MOOD_MIDI+Manual_Pedal_Chase+Bliss.pdf
+2 votes

Seems like the bit changer is not the solution, since the values are:
127 = 1111111
85 = 1010101
45 = 101101
and 
0 = 0000000

But, this is easy to implement in a StreamByter output rule, as follows:

Create two toggle buttons as follows

= Sysex, 58 00 V, no checksum, 1 byte V, MIDI off / on = 0 / 127

= Sysex, 58 01 V, no checksum, 1 byte V, MIDI off / on = 0 / 127

StreamByter output code follows

# StreamByter code to process MOOD Pedal bypass switches
# Oct 19, 2922, Red Heron Music
# 58 is currently unassigned SysEx Mfr code, using in place of (much longer) CS assigned 00 01 7E

If Load
    Ass i0 = 0 # Initialize state to off
    Ass i1 = 0 # Initialize  state to off
    Define Chan B0 # Channel 1, for channels 2-16, change B0 to B1 - BF.
End

If M0 == F0 58
    If M02 == 00
        Ass i0 = M03
    End
    If M02 == 01
        Ass i1 = M03
    End

    If i0 == 0 # Off
        If i1 == 0 # Off
            Snd Chan $103 0
        End
        If i1 == 7F # On
            Snd Chan $103 $45
        End
    End

    If i0 == 7F # On
        If i1 == 0 # Off
            Snd Chan $103 $85
        End
        If i1 == 7F # On
            Snd Chan $103 7F
        End
    End

    Block # block control message

End

answered Oct 19, 2022 by jkhiser (19,810 points)
edited Oct 19, 2022 by jkhiser
Appreciate the help! Will check out StreamByter
...