LiveCode Builder is a language for extending LiveCode's capabilities, creating new object types as Widgets, and libraries that access lower-level APIs in OSes, applications, and DLLs.
That's way cool.
What was the trick to getting composite widgets to play together?
No trick at all, it's not a composed widget! I couldn't work around that bug so I made it as one big widget, with a list of Octaves that contain list of Piano-key arrays, and then I had to manually tweaked the positions of all 127 SVG paths so that they're spaced properly. Bernd sent me some code that renders the graphics with the rounded-rect paths from scratch, on the fly. His spaces evenly & looks better IMO, but I haven't figured out how to integrate that into my array based system yet (which I've settled on for other reasons).
I couldn't work around that bug so I made it as one big widget
That's depressing.
I've been playing around with the underlying C code a bit, and I've gotten it to work sometimes, just not consistently. Or reliably.
Unless your business is music education or something like that, then not likely. I don't know that there's any unique tricks in this widget, other than the hitTest function, that tests if point is within path. That clever bit of code came from Monte via LCMark. If it helps anyone else then great and you're welcome!
There's maybe a few more tricks now, or at least some examples that weren't too clear about how to do from official examples/presentations that are available. Almost ready for a vers. 1.0 release now.
That demo was actually super interesting to watch, even though I’m not doing anything music-related in my projects. I tried making a small MIDI piano app for fun a while back and actually got stuck trying to align SVG keys consistently, so I know that manual tweaking pain. Honestly, your persistence paid off, the keys look really clean in the video. On a different note, if anyone in Hamilton is ever looking to get rid of an old upright or digital piano, I know 1day junk has a specialty in piano removal and cleanup. Handy if you’re not up for wrestling one out the door yourself.