voc / voctomix

Full-HD Software Live-Video-Mixer in python
https://c3voc.de/
MIT License
573 stars 104 forks source link

Remove Party Mode #263

Closed fightling closed 1 month ago

fightling commented 4 years ago

Pressing multiple keys at the same time can bring up the party mode where core and GUI end up in a endless loop of communication and buttons to flicker states.

This is a problem of the communication sequence that needs redesign.

derpeter commented 4 years ago

My suggestion to deal with this, at least on the long run, is switching the communication between core an gui to MQTT. By using e.g. https://pypi.org/project/paho-mqtt/ . By using the communication paradigm of this message bus the complexity of state handling can by broken down in a well readable call back structure.

Besides solving this issue, it would also make thing like tally light much more robust in terms of communication.

vale commented 6 months ago

This is still the case. Angels where able to reproduce this issue during training.

Kunsi commented 1 month ago

This is apparently an issue with out-of-order processing of messages from the core:

Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: got line: 'best transition slides cam2'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: re-starting on_loop scheduling
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: got line: 'best cut cam2 cam1'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: re-starting on_loop scheduling
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: on_loop called
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Changing new composite to 'fs(cam2,cam1)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(cam2,cam1)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Selected 'slides' for preview source A
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(slides,cam1)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,cam1)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,cam1)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Selected 'cam2' for preview source B
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(slides,cam2)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,cam2)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(slides,cam2)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PresetController: >on_best best='transition' targetA='slides' targetB='cam2' self.current_state=None
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PresetController: <on_best best='transition' targetA='slides' targetB='cam2' self.current_state=None
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG Connection: on_loop called
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Changing new composite to 'fs(slides,cam2)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,cam2)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,*)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Selected 'slides' for preview source B
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(slides,slides)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Selected 'cam2' for preview source A
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(cam2,slides)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(cam2,slides)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(cam2,slides)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Selected 'cam1' for preview source B
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(cam2,cam1)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PreviewToolbarController: current command is 'fs(cam2,cam1)
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:     INFO PreviewToolbarController: Testing transition to 'fs(cam2,cam1)'
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PresetController: >on_best best='cut' targetA='cam2' targetB='cam1' self.current_state=None
Sat 2024-05-18 15:15:49 CEST mixer96.lan.c3voc.de voctogui.py[6295]:    DEBUG PresetController: <on_best best='cut' targetA='cam2' targetB='cam1' self.current_state=None
Kunsi commented 1 month ago

fixed in https://github.com/voc/voctomix/commit/3c7bde8b7ae75d0c9e7dee79ca850c9facb582a9