SysEx bug in Cantabile 4

Tags: #<Tag:0x00007f9792146d20> #<Tag:0x00007f9792146be0>

On Cantabile 4.0 Build 4048 (latest), SysEx expressions sometimes return the wrong value from the “Value” variable when invoked. In particular, “Value” always seems to return zero when the binding source is a route with “Enabled” as its trigger. Loading the same binding into Cantabile 3.0 Build 3702 (last stable) works correctly, so I’m pretty sure this must be a bug in 4.0.

Here are steps to reproduce:

  1. Create a fresh song in Cantabile 4.

  2. Make a MIDI route from any input to the on-screen keyboard.

  3. Give the route a name (by selecting the route and pressing F2).

  4. Create a new song binding as follows:

  • Source = (the route name you specified in step 3) with “Enabled” as the trigger (default)
  • Target = Output Port - Onscreen Keyboard
  • Action = SysEx
  • Value = On (default)
  1. Enter the following SysEx data: “0x90 0x3C 0x01” (which is the MIDI code for activating middle-C at velocity 1). As soon as you click OK, you should see the middle-C light up on the on-screen keyboard.

  2. Change the SysEx data to: “0x90 0x3C 0x00” (which sets middle-C velocity to 0). As soon as you click OK, middle-C should turn off on the on-screen keyboard.

  3. Change the SysEx data to: “0x90 0x3C Value” (which should send velocity 1 to middle-C, since Value=1 when the route is enabled). Before clicking OK, note that the Preview box predicts that “90 3C 01” will be sent. Click OK and observe that middle-C does not turn on as it should. This is because “90 3C 00” was sent instead.

  4. To confirm this, attach a MIDI monitor to the Onscreen Keyboard and manually trigger the binding created in step 7 (by pressing the play button next to the binding). The MIDI monitor indeed reports “60 (C4) @ 0” as sent instead of “60 (C4) @ 1”.

This has been fixed for the next build (4049) which should be up later in the week.

btw, thank you @Hamlen for your excellent reporting on these issues - it makes it so much easier to resolve issues when there’s a clear and precise set of steps to reproduce the problem.

1 Like

Thank you, @Brad! I’m glad I can help make Cantabile even better. (I’m a computer science professor when I’m not playing music, so I feel your pain wrt unreproducible bugs!)

1 Like