Posted
Hi,
if I switch between Synfire and another applications via Cmd + Tab on a Mac (Version 13.6 and Apple Silicon M1 to be precise), depending on how I move the cursor between the two application windows, it can happen that Synfire gets confused about the mouse clicks and after switching back from the other application, Synfire produces selections in the UI that are normally impossible.
E.g. the button for the Figure parameter and other parameters are getting selected together, which is normally impossible - only 1 parameter button can be selected and hence be highlighted.
For me this happens frequently using the Firefox internet browser, reading the online manual meanwhile exploring Synfire and switching back and forth between Synfire and Firefox, but this happens with other applications as well.
The behaviour maybe different if one uses the „button bar“ that pops up after pressing Cmd + Tab while holding the Cmd button down and clicking one of these buttons.
Ease way to reproduce this behaviour :
1) Open Synfire and Firefox and let Synfire be on top and slightly offset to the right
2) Use Cmd + Tab to make Firefox the „top most“ application while the cursor is still on top of Synfire
3) Move the Cursor over to Firefox and interact with the application
4) Move the Cursor from Firefox to Synfire and immediately click on a button in Synfire that selects something, like e.g. the Take parameter.
If the Figure Parameter was selected beforehand, now both Figure and Take are selected.
The attached screenshots shows this state.
The workaround to come out of this „invalid state“ of Synfire
1) your are in the „messy state“ in Synfire - its the application on top and has the focus
2) Switch back via Cmd + Tab to the other application and click on it
3) Stay with the mouse cursor over the other application while using Cmd + Tab to switch back to Synfire, click on a button and you will be good to go again … the click will create a new selection and the invalid state will disappear.
By the way : this drove my crazy for quite a while using the demo version and if I had not found this workaround I would not have bought the upgrade from version 1, as I thought Synfire 2 has still fundamental stability issues „by itself“ … but it has not - its the interaction with / switching to other applications that causes the problem.
… why there should be any other applications than music software on a computer anyway ;-)
Fri, 2023-10-27 - 17:59 Permalink
That selection state is not invalid. You can always select multiple parameters to show up layered in the parameter views. Switching apps probably sent an unexpected click into the window.
I haven't seen this yet. Also using Firefox, Synfire and macOS 13.
Fri, 2023-10-27 - 18:37 Permalink
Oh yes indeed multiple selections for paramenter make sense, but for this you normally have to use the Cmd key pressed while clicking additional parameter to achieve this, right?
But after the application switching described above, this multi parameter selection happens without holding Cmd down and hence its feels (and most probably is ;-) buggy, as this is a totally unusal "click & select" behavior ... also on windows you have to hold down a modifier key to get this "extended selection" behavior.
In the end its irritating ... but testing this out a little bit more, I found another workaround respectively "escape out" : hold down Cmd for the next click on another parameter button and the next click after that establishes the "expected behavior" again (single selection is back again).
Another thing that happens from time to time in the situation described above : a tooltip window of Synfire pops up, even though Firefox is the top most & active appication - which means a Synfire Tooltip windows is visible on top of Firefox.
This might depend on how fast I move the cursor from the Synfore window over to the Firefox window.
This smeels like the "mouse capture" of Synfire has problems, when another application becomes active - or in other words : Synfire does not let go / off the mouse capture when another applicaton becomes active respectively the mouse leaves the window of Synfire.
Andre, did you try the step by step workflow I described above on your Mac?
Would be very interessing if this only happens on my machine, because then there has to be some other software running in the background - that I am not aware of ! - that messes things up ... then it would be time for housekeeping on my machine ;-)
Fri, 2023-10-27 - 19:02 Permalink
this multi parameter selection happens without holding Cmd down
Ok, so the Cmd (of Cmd + Tab) somehow happens to stick around in the keyboard buffer such that Synfire thinks it's still depressed when you click the mouse.
Thanks for narrowing this down. I remember similar odd behavior, although not related to switching apps this way. Yes, it's confusing (at best).
Fri, 2023-10-27 - 19:06 Permalink
I should maybe mention that Synfire runs a windowing system that is largely independent of the operating system. Most OS behavior needs to be emulated. Since Apple changes things with the UI almost every year, this can be a game of whack-a-mole.
Mon, 2023-12-04 - 14:18 Permalink
Hi Andre,
I can imagine the „pain in the thought & development process“ this might cause ;-).
Currently I evaluate a custom UI for a Max for Live device (in Ableton Live), which means to work only with low level drawing APIs in JavaScript. Having no UI framework with the goodness of pre-made controls or conceptions of generic UI controls that can be brought to life on display in a descriptive manner at my disposal, is mind bending.
It feels like stone age … building handsome tools by knocking stones on other stones to bring them in a useful shape … ummmpf ;-).
Implementing cross platform desktop software like Synfire is (still !!) a huge challenge - to my knowledge and explorations non of the vendors really found a solution for each kind of application, respectively application domains, that really works on Windows and MacOS.
.Net MAUI (rooted in Xamarin) is one of the newest approaches, but it heavy fails in the audio domain and MacOS is only be supported via Mac Catalyst (something like running in an iOS App container), Python is a great choice for pure coding stuff, but there is no cross platform UI framework and all the Web based stacks fail when it comes to „real life“ operating system integration, beside the hell of bugs that arise from the typeless nature of JavaScript, whereby TypeScript can come to rescue … but … in the end there is no really great & seamless working solution.
Thumbs up for your courage and endurance to walk on the „tough road“ and building your own cross platform framework for Synfire … the result of which, I as user of Synfire really appreciate - thanks for doing this.
Cheers