Pirate-MIDI / Pirate-MIDI-BridgeOS

Documenting Bugs & Issues - Public Collaboration
10 stars 2 forks source link

Scrolling message offset is off. #191

Closed TheGuacamoleXplosion closed 3 months ago

TheGuacamoleXplosion commented 1 year ago

BRIDGE4 Firmware 1.3.1 Hardware 1.0.1 Scrolling pairs where FS1 is Scrolling, Always, Reverse; and FS2 is Scrolling Linked, Always, Forward, Linked FS=1.

Putting a PC or CC in the Scrolling message stack with value=0 will give the expected results: The value sent is the same as the value displayed on the BRIDGE4.

Now, the 1.3.1 manual says on page 34 :

messages [will have] different starting offsets based on the value the message is entered with.

If I put a CC message into the Scrolling stack where CC value is 127, I would expect all CCs sent to be offset by 1. Tried this with Min=0 and Max=127 with different intervals. What actually happens: All scrolling steps displayed on the BRIDGE4 will still send the exact number as displayed; except step 0 will send 127. So, you will get no zero, but twice a 127.

Experiment #2: My M5 maps PC=0 to Preset #1 etc.; as quite some other MIDI devices do. So when scrolling Min=0 to Max=23, I can scroll all 24 presets of the M5, but the number on the BRIDGE4 display will always be one lower than the preset number shown on the M5. Morningstar has sort of a “display +1” compensation setting for those devices. So I had the shower thought: On the BRIDGE4, this compensation could be achieved with a PC=-1 value in the Scrolling stack, and then setting Min=1 and Max=24. But unfortunately, negative PC numbers are not allowed in the editor :-D So I put PC=127 in the Scrolling stack instead, with scrolling setting Min=1 and Max=24 — result: Same as with PC=0, the PC numbers sent are exactly the Scrolling numbers displayed on the BRIDGE4. But if I use PC=126 (!) instead, I get close to the desired result: BRIDGE4 Scrolling Step 1 will send PC=127, Scrolling Steps 2 to 24 will send PC=1 to PC=23.

Now, to my great joy, I could change the FS1 scrolling message from PC=126 to PC=-1 in the config .json file: "messages":[{"statusByte":"c4","dataByte1":"-01","dataByte2":"00","outputs":{"midi0":true,"flexi1":false,"flexi2":false,"usb":false}}]}," => and this actually worked and gave me perfect syncronicity of BRIDGE4 display and all M5 Presets 1 to 24 :-D

So, A. Somehow scrolling offsetting seems to be off by 1 in some scenarios, with Scrolling Stack PC/CC value 127 giving same results as value 0, except for scrolling step 0 (which will have PC/CC output 127). This should be fixed. B. When fixing offsetting anyhow, a optional compensation setting in the editor and on the device for the large bunch of MIDI devices with “PC=0 mapped to Preset=1” ... “PC=127 mapped to Preset=128” would be great. It does already work now with the json-hack I described above :-)

simonaglover95 commented 3 months ago

Fixed in BridgeOS 2.0 Release