mcallegari / qlcplus

Q Light Controller Plus (QLC+) is a free and cross-platform software to control DMX or analog lighting systems like moving heads, dimmers, scanners etc. This project is a fork of the great QLC project written by Heikki Junnila that aims to continue the QLC development and to introduce new features.
Apache License 2.0
918 stars 349 forks source link

QLC+ 4.13.0 - OSC Header error #1546

Closed ghost closed 2 months ago

ghost commented 3 months ago

Describe the bug After opening of a saved file and start of the "Operate" mode of the "Virtual Console", this happens:

  1. Acting on a fader or button directly from QLC+, the OSC message presents the following error: (ERROR, UDP) The header of an OSC packet didn't contain an OSC address or a #bundle string. Header was:
  2. Acting on the corresponding fader or button in the OSC software (Open Stage Control), the OSC message is correctly interpreted by QLC+.
  3. Acting again on the same fader or button in QLC+, now the OSC message is generated correctly by QLC+.

To Reproduce

  1. Create a fader in QLC+.
  2. Create a fader in Open Stage Control with "test-1" ID.
  3. Create in QLC+ an input profile and map the "test-1" OSC address.
  4. Associate the "test-1" OSC address as an external input of the QLC+ fader.
  5. Save the QLC+ project.
  6. Close and reopen QLC+.
  7. Load the saved project and start the operating mode of Virtual Console.
  8. Move the fader in QLC+ and check the presence of the error message in the Open Stage Control console log.
  9. Move the fader in Open Stage Control and check in the console log that the message is generated correctly and check in QLC+ that the fader moves correctly.
  10. Now move the fader in QLC+, check in the Open Stage Control console log the correct generation of the OSC message and check the correct movement of the fader in Open Stage Control.

Expected behavior The OSC message should be immediately generated correctly.

Screenshots None

Desktop (please complete the following information):

Additional context The 4.12.7 release works perfectly.

mcallegari commented 3 months ago

(ERROR, UDP) The header of an OSC packet didn't contain an OSC address or a #bundle string. Header was:

Who prints this? What is the header? Do you have a wireshark trace of 4.12.7 and 4.13.0 to see the difference? Do you have a workspace to test?

ghost commented 3 months ago

Thanks for the immediate feedback.

Who prints this? What is the header? The log is generated directly from the Open Stage Control console, which monitors the status of the OSC communication.

Do you have a wireshark trace of 4.12.7 and 4.13.0 to see the difference? I just performed a test in QLC+ 4.13.0 of these cases with a fader having OSC ID/Address "fader-test-1":

  1. First communication from QLC+ to Open Stage Control (in Open Stage Control the fader does not move):

    • Wireshark (all lines during the fader movement are identical): 127.0.0.1 127.0.0.1 UDP 32 57573 → 9001 Len=0
    • Open Stage Control log (all lines during the fader movement are identical): (ERROR, UDP) The header of an OSC packet didn't contain an OSC address or a #bundle string. Header was:
  2. First communication from Open Stage Control to QLC+ (in QLC+ the fader moves correctly):

    • Wireshark (the first line is always the same, in the second line vary only the value "Seq=..." while in the third line vary the "Act=..." and "Win=..." values): 127.0.0.1 127.0.0.1 UDP 56 9001 → 7701 Len=24 192.168.79.130 192.168.79.130 TCP 89 58362 → 8080 [PSH, ACK] Seq=17597 Ack=41 Win=10222 Len=45 192.168.79.130 192.168.79.130 TCP 44 8080 → 58362 [ACK] Seq=41 Ack=17642 Win=10161 Len=0
    • Open Stage Control log (vary only "value:..."): (DEBUG, OSC) Out: { address: '/fader-test-1', args: [ { type: 'f', value: 0.15 } ] } To: 127.0.0.1:7701
  3. Subsequent communication from QLC+ to Open Stage Control (in Open Stage Control now the fader moves properly):

    • Wireshark (the first line is always the same, in the second line vary only the value "Seq=..." while in the third line vary the "Act=..." and "Win=..." values): 127.0.0.1 127.0.0.1 UDP 56 57573 → 9001 Len=24 192.168.79.130 192.168.79.130 TCP 146 8080 → 58362 [PSH, ACK] Seq=53264 Ack=57 Win=10152 Len=102 192.168.79.130 192.168.79.130 TCP 44 58362 → 8080 [ACK] Seq=57 Ack=53366 Win=10008 Len=0
    • Open Stage Control log (vary only "value:..."): (DEBUG, OSC) In: { address: '/fader-test-1', args: 0.1725490242242813 } From: 127.0.0.1:57573

Do you have a workspace to test? Test.zip In the test file I created a fader and a button to try the fact that, for both, the OSC communication from QLC+ begins to work only if they first receive an OSC message from Open Stage Control.