Mac Mouse problems driving me mad

I don’t know others but we did in KORG Legacy Collection plugins. And I did the same thing as JUCE. It was before I met JUCE though.

I think I’ve experienced the same frustration as Jules got. I’ve also made the timer thread which is monitoring the mouse cursor using deprecated API. Because our plugins must run on prior to Mac OS X 10.3.9 (in the former version, 10.2.8 ). Apple has been added several events/APIs in Mac OS X 10.4 to prevent using deprecated APIs, but of course, we couldn’t use them.

There might be a better way if we could use the latest APIs, but it makes the plugins won’t run on older OS which is used by many professional musicians…

Best regards,
Masanao Hayashi

So, you´ve also never seen a OS X plugin where highlighting occurs on mouse hovering only ?

Since I am a 99 percent Windows user I cannot comment on Apple´s OS X API´s, but I guess everybody should have OS X 10.4 by now or not (even I do have it on my old IBook G4, and I think nobody uses an IBook G4 for making music)?

You did really cool work for Korg, did you also do the DSP math behind their product lines?

hiya, I finally (!) could get hold of a used PPC mac (G4 mini 1,42Ghz, 1Gb RAM) to do some tests with hypercyclic

results: button highlighting, mouse dragging all work fine in audiolab!

versions used
-osx 10.4.11 (clean install + all patches to date + xcode tools)
-audiolab 1.0
-hypercyclic 1.0.172 au
-juce 1.45

fwiw, on intel all runs fine as well, both on tiger & leopard and both with audiolab, Logic 7.2 express and Logic 8 express

the only special thing is that I used my own AU instrument wrapper (at the time of hc release only the juce AU FX wrapper was available, but not the AU instrument one)

zamrate, you still observe the highlighting problem with hypercyclic on your MacBook G4?

The problem has been solved now for about a month or two, look a this Thread here: http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?t=2650&start=15. It’s JUCE’s Timer class that makes problems, so I changed it to use the Carbon Timer API and that helped. So far, nobody found out why exactly the original Timer class does not work as it should (on Mac only).

thx Zamrate!

just curious why I cannot repro the highlighting problem then on my setup… I did not change any of the timer stuff yet

what could be the difference between my mac mini G4 and your macbook G4?

My G4 is only 800MHz I think, and as far as I believe, the whole thing has to do with CPU stress. Try recording automation of Hypercyclic in Logic 8 on your G4, this did not work on mine until I changed the Timer class.

zamrate, did as you say and I can reproduce the problem indeed with Logic 8 express on the G4 mini!

-mouse-over control highlighting stopped working
-observed also the strange offset problem when moving plugin window to left upper corner

I tested with Logic 7 express as well, where there seems to be no problem. Couldn’t automate the plugin though - Logic 7 doesn’t show the instrument plug’s parameters for some reason…

btw I will be switching from juce 1.45 to the trunk one of these days - any chance your timer solution will be part of that?

cheers
-Leo

PS don’t worry about supporting a 800Mhz G4 as the Logic 8 hardware requirements state at least a 1.25 Ghz G4. That being said, a 1.4Ghz clearly doesn’t cut it either with the old code base, so something needs to be done

dunno, I think Jules is still trying to find out why exactly his Timer class does sometime not behave well on OS X.

[quote=“mucoder”]
PS don’t worry about supporting a 800Mhz G4 as the Logic 8 hardware requirements state at least a 1.25 Ghz G4. That being said, a 1.4Ghz clearly doesn’t cut it either with the old code base, so something needs to be done[/quote]
I don’t get your point. The problem also happens in Logic 7 or AU Lab. And it also happens on very powerful dual G5 computers. Yeah, I had to hack Logic 8 a bit to get it working on my rubbish G4 :slight_smile:

could only reproduce the problem so far with logic 8 here. Logic 7 & aulab behave fine. I guess I need to test some more, putting more stress on it…

Btw, no disrespect for your mb - on the contrary, seems very useful for testing those CPU-related problems - sort of like a canary-in-a-coalmine-type early warning system :slight_smile:

… and recording automation movements did actually work on your G4 in Logic 8 with the original JUCE Timer class?

could not record control movements (they didn’t seem to be picked up), but i did draw the automation curve for one of the plug’s controls in Logic and played that back, which indeed moves the plug’s control. Then stopped transport and saw that mouse-over highlighting didn’t work any more, just as you said. Only closing & reopening the plug’s UI seems to fix that.

btw, with L7 express I cannot see the plug’s parameters for automation like with L8, so cannot test in the same way. Doh! Don’t know if this is a L7 express limitation (don’t have L7 Pro) or a problem with the plug. Needs some further checking there…

Drawing automation always worked for me, with any Timer class. To make the recording possible in Logic, you have to use the gesture functions, otherwise it wil not record.

Okay, I upgraded hc to the trunk now (424), throwing away my proprietary AU wrapper;
then got the UB to compile with XCode 2.5 (some gotchas there for PPC!) and run
and finally implemented the gesture handling for the rotary knobs.

results on the G4 mini:
-can now record automation both in Logic7 and Logic8 (both express)
-the mouse-over highlighting problem disappeared as did the offset problem with window in topleft position (at least it doesn’t repro any more here)
-in L7 it runs much faster than L8 (no real problems there)
-in L8 new problem: events seem to get queued up when in playback mode with some automated parameters, making plugin GUI react slower than realtime. Bizarre effect that hitting the stop button in L8 transport reacts with several seconds delay (as if it’s message queue is flooded too)
-with plugin GUI closed L8 runs fine - no delays there

I’m going to have a look at your timer now, Zamrate. But also think there is some GUI optimization to be done, like not updating on every parameter change if system is short on CPU

hi Zamrate,
this might apply to your case too (when running busy AU GUIs in Logic/Ableton/… on PPC) : these hosts use non-compositing windows which causes full-window redraws of the plugin window every time you touch even a tiny part of it

http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?p=15505#15505

[quote=“mucoder”]hi Zamrate,
this might apply to your case too (when running busy AU GUIs in Logic/Ableton/… on PPC) : these hosts use non-compositing windows which causes full-window redraws of the plugin window every time you touch even a tiny part of it

http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?p=15505#15505[/quote]

Yes, I could reproduce that bug with AU Lab on my Intel Mac. I don’t know if it’s related to the Timer issue, but since my Timer class works nice (especially because I revised it today) I won’t touch it :wink:

[quote=“mucoder”]hi Zamrate,
this might apply to your case too (when running busy AU GUIs in Logic/Ableton/… on PPC) : these hosts use non-compositing windows which causes full-window redraws of the plugin window every time you touch even a tiny part of it

http://www.rawmaterialsoftware.com/juceforum/viewtopic.php?p=15505#15505[/quote]

Yes, I could reproduce that bug with AU Lab on my Intel Mac. I don’t know if it’s related to the Timer issue, but since my Timer class works nice (especially because I revised it today) I won’t touch it :wink:

sure, don’t tempt the stability gods :slight_smile:

meanwhile I tried your timer code too. It indeed makes the rotary knobs respond a bit more smoothly when a lot of automation is going on, but the difference is not extreme on my G4, so I guess I’ll stay with the trunk version for now. In any case good to know there is a solution for the disappearing timer, should it ever resurface here

The majority of my problems were caused by the redraws though, not so much by the timer. But I guess these problems add up quickly on slower machines

Yes, I guess so too… I will try it on my G4 800MHz asap. BTW are you a student? I don’t live that far away from Leuven, and Leuven is well know to be a “student-city” :slight_smile: ?

student days are long gone - but still a happy user of the student infrastructure (indeed lots of good cafés here) :slight_smile:
do you live in Belgium too? Feel free to pm me if you’d like to grab a beer sometime

I’m from Luxembourg. Yes, will do when I drive by next time :slight_smile: