What are some examples of successful UIs over cons...
# thinking-together
d
What are some examples of successful UIs over constraint solving systems? I'm about to do a bit of research on this topic but thought I'd start here. Off the dome I can think of excel (numerical constraints) and rhino grasshopper (architectural / physical constraints). I realize this is vague, but what I have in mind is a UI that allows for constraints to be defined which are then composed together and solved behind the scenes. In particular, I'm wondering how to represent the case where there are multiple valid solutions and offer cycling through them to the user.
i
This is exactly what I'm working on at Ink & Switch, but I'm not sure how much I can talk about it publicly yet. I'll get back to you in a bit!
g
parametric CAD like solidworks/fussion 360/onshape are very successful
i
So yeah! I don't have anything I can show yet, but I'll talk about some stuff that's relevant here. George mentioned parametric CAD, and that's an excellent example. I'd also point to video games — the way their physics engines work is often quite similar to a constraint solver, and the "UI" over the solver is the game itself. Some games like World of Goo or the new Legend of Zelda: Tears of the Kingdom expose the constraint system quite directly as a core part of the gameplay. I'd also point to artistic 3D modelling tools, which differ a bit from CAD in that the interface(s) to the constraint system(s) are more focused on creative expression (eg: "make this thing 'look at' that thing") rather than precision (eg: "make the angle between these two lines 90º"). For the part where you're wondering about multiple valid solutions, I think it depends on how continuous vs discrete your domain feels. If it's very continuous, you might want some of the approaches in Bret Victor's essay Ladder of Abstraction. If it's more discrete, check out the Ink & Switch essay Untangle. I hope that helps. Feel free to ask for more examples or more explanation of anything I referenced.
j
I've had some success with various flavors of heatmap ('expressive range analysis'), similar to 'three steps up' in Ladder of Abstraction but whose axes arise from either parameter space (as shown) or phase space (esp. time, in the special case where artifacts are sequences of events). If you can picture the latent space that artifacts are drawn from by queries (going through the constraint solver), that can help to discover something cleverer. Tbh, I'm abusing heatmap here to describe density distributions of artifacts in latent space (to be accessed by drilling down, although the selection can be multiple) - not the uniform parameter grid that Victor shows, although that could be understood as the empty query. (I'm assuming you do want to mingle phase space with parameter space - rather than animating the constraint like in Zelda, or building it into the user's brushes like in CAD, if I understand.)
j
Depending how you mean the question, you might want to check out the gemstone systems from Brad Myers (amethyst, garnet, &c), in which UIs are built using constraint satisfaction.
d
Thanks everyone for the interesting pointers. @Ivan Reese I'm in the domain of music composition, which has continuous and discreet aspects. The most straightforward applications of constraints would be in the discreet areas, and I'm intrigued by the untangle work.
j
Oh, fantastic. Oxman's work was not on my radar; I see why you mention them in the same breath as DeLanda. Very excited to read your thesis. I will point at the 'musical metacreation' literature over at the ICCC and AIIDE conferences, although the selective pressures are very CS and tend to screen out interface work. Here's folks using non-diatonic notes in chord progressions, from this year: HarmonyMapper: Generating Emotionally Diverse Chord Progressions for Games https://www.exag.org/papers/HarmonyMapper%20Generating%20Emotionally%20Diverse%20Chord%20Progressions%20for%20Games.pdf
and here's an incredibly search-oriented survey paper from '09 (sections 5.3 and 5.4 briefly discuss frontend): Constraint Programming Systems for Modeling Music Theories and Composition https://www.researchgate.net/publication/235925975_Constraint_Programming_Systems_for_Modeling_Music_Theories_and_Composition
d
@Jasmine Otto I'm embarrassed that you found my thesis 🙈 : ) there's some interesting conceptual stuff at the beginning but the work feels very primitive to me now. Thanks for the links - I gave a paper at ICCC/MuMe once and love a lot of the work that comes out of there. As with many areas in academia, the literature is overflowing with great ideas but I'm frustrated by the lack of a stable platform by which to compare and contrast the various approaches and expose them to non-expert users - one of the goals of this project is to reach towards a 'productization' of such research.
j
Ah, my previous answer is not germane! Can you tell us a bit about your composition system? I’ve build tools for this kind of thing in Lisp and Prolog over the years, and always enjoy hearing about others systems 🙂
d
It's something like an updated OpenMusic / OpusModus with a deeply integrated constraint system, support for continuous as well as discreet signals, 'gradual' scripting (a la blender or max for live - your basic user will have a UI but scripting is well supported), a much better score input experience (should feel more like LISP editing and less like the horror of sibelius / finale input) and that is web-first with optional local desktop (though probably non-electron - the desktop solver should be multithreaded and fast). This is enabled by a clojure DSL for representing values in time that takes the idea of proportional timing via nested sequences from tidalcycles and arbitrary series/parallel temporal composition from haskore. It compiles to musicXML, midi, and supercollider patterns - bounce to your medium of choice. I'm disappointed at the progress that has been made since Laurie Spiegel called for a program that could express transformations in musical ideas at the same level of abstraction as composers conceive of them, and am motivated by the innovation that could occur if composers had a wide array of "operations they could perform without thinking about them", a la Whitehead. The academic literature of 'how to compose via computer' is embarrassingly rich, and it offends me that those abilities aren't readily accessible to any clever 12 year old that wants to fiddle with them.
I should clarify that the above is more like the 'dream laundry list' - currently I've got most of the semantics of the dsl worked out and compiling to midi, as well as a jumble of buggy code to convert music xml to the dsl and a few concept UIs. I'm interested primarily in making new music, so this stuff gets chiseled at to the extend that I'm frustrated enough with my current tools : )
j
Do you have anything about the DSL posted anywhere?