Deep-Symmetry / beat-link-trigger

Trigger events and automate shows in response to events on Pioneer CDJs
Eclipse Public License 2.0
422 stars 37 forks source link

Saving phrase cues to cue library does not retain color information #143

Closed strikeout closed 1 year ago

strikeout commented 1 year ago

Expected behavior Saving a phrase cue to the cue library should retain the color information to make it visually easy to identify identical cues in the phrase trigger window.

Describe the bug Inserting a saved phrase cue from the library assigns a random color

Desktop (please complete the following information):

Screenshot (all clues are identical and should identical color, got assigned random color instead) Screen Shot 2022-12-07 at 13 20 45

brunchboy commented 1 year ago

That’s not the way cues are intended to work; they are assigned distinct colors upon creation (whether via New, of from a library) to visually distinguish them from other cues in the phrase. If you care about the color of a given cue, you can assign it using the Hue control after it is created.

If you want a mode that does preserve color like that, we’d need a user interface to control when that mode is active, and then code to implement it. The fastest way to get there would be to offer it as a pull request.

strikeout commented 1 year ago

Hey thanks for the quick reply brunchboy! Awesome project by the way!! Thank you for your work <3

On topic: When you add a cue from the library, it is (according to the manual) by default linked to the main cue:

...this new cue is linked to the library cue from which it was created. Any changes you make to this cue (apart from the location, name, and display hue of this copy) will instantly be applied to the library cue.

It would make sense that references to the same object share the same color, no? If you then manually unlink from the main library cue (with the chain-link button), the cue gets a random color assigned.

Also, from a use-case perspective, I think this makes the "creative phase" aka. designing shows a bit easier to handle as a show's complexity increases. Example: I created like 20 different cues for my phrase-show. Stuff like "red flash", "blue sweep", "white static", "blue green fade" ... and then distribute them among my many phase triggers, one for each mood. With inherited colors it would be much easier see which phrase triggers which light fx - as it gets cluttered quite quickly.

My skills in Clojure are too much lacking to contribute at this point. Just beginning to wrap my head around this weirdly beautiful lang :) Instead of an UI, would a global to change the behaviour akin to includeCueColorOnLibrarySave maybe be enough?

brunchboy commented 1 year ago

I can definitely understand why you want this feature, yes. It may be that you are using phrase cues more than anyone else at this point; the person I created them for was derailed by the pandemic and never had time to even test them for me. I would love to hear more about the kinds of shows you’re putting on.

One small clarification: linked cues aren’t shared objects, they just know they are linked, and updating one causes BLT to iterate over all of them and update the others.

I’ll leave this feature request open, but I don’t know if or when I’ll be able to do anything about it myself. Right now there is code that explicitly removes the hue information when moving a cue into the library, so it’s already too late for your existing library cues, and I have concerns about what might break in other places if I change that. My intention in creating the feature was that the library was a template for cues, and each individual cue created from that template would have its own identity, as reflected by its name and color. Making a fundamental change with lots of existing code based on the original design, and with multiple show files out there in the wild using the old approach, is risky.

brunchboy commented 1 year ago

As discussed on Zulip there is another behavior that would be nice to be able to configure on a per-cue basis; as suggested there, let’s add new entries to the Manage Cues menu that let you toggle whether an individual library cue reassigns its color when being placed, and whether it starts out linked or not.