Unsupported — We cannot guarantee that this software will work properly on Mac OS 10.8 and above. Please be careful.

Release: WiiMote Control, v20080105

Release Type: Beta
Version: 20080105
Release Notes

This update includes many new stability improvements, as well as somewhat-functional Classic Controller support.

I spent a bit of time exploring the framework that this patch uses, and fixed some pieces around where it was causing some crashes. It probably leaks a bit of memory on connect/disconnect now, but I've not noticed any significant amounts yet in casual testing. This should fix 1) the NSNotification stuff, 2) the [NSNumber start] incorrect message exceptions (the framework was deallocating a live object!), as well as a couple of the unnamed bugs that have been crashing this patch since the Tiger version.

A bug where it would crash when changing the Sensors in the inspector panel while connected has (hopefully) been fixed.

The classic controller stuff basically works; The right control stick's values appear to be wrong, the L and R buttons have weird values, plus, minus, home, down, and right don't appear to work either yet. These are most likely framework bugs which will require some spelunking to figure out and address. It's a start though, right?

Please tell me which buttons work and don't work, which ones appear to be incorrect, and which CPU your mac uses (PPC or Intel). If you're not getting anything from it, unplug it and plug it back in; it seems to be way more picky about being plugged in at boot up than the nunchuk does.

WiiMoteControlPatch-20080105.zip106.35 KB

franz's picture

sorry i don't have any classic controller to test it ....

DanieleCiabba's picture

Can someone help me with the "Raw IR" structure?

DanieleCiabba's picture

ok I have found again myself no problem with the raw ir...

boya's picture
Pitch/roll values

I see the pitch/roll values have changed from -90 /+90 to a 360 in a full twist.

Nice to have the ability to do a full turn, but the value change from 0 to 360 creates some bad behaviour with the smooth patch which I find necessary to get flowing motion from the Wii. Try the test patch.

If the patch is as stable as it seems I`m going to use it in a performance on the 28th

Do you know any quick maths I could apply to get a number range that does not jump?

Or a fix to the patch. Maybe the value jumps from 359 to 0 could come when the wii is upside down instead?

Connected on first and no crashes or loss of connectivity when on full screen switch yet! Boya

Wiipatch 20080105 beta test.qtz147.49 KB

cwright's picture

The 0-359 jump comes from a misuse of angles. There isn't a "right" solution when using angles with the smooth patch, unless the patch tracked rotation enough to count turns (720°, 1080°, etc, as you kept rotating).

Shifting the angle by 180 degrees doesn't fix the problem, it just makes it more difficult to turn up, so I'm hesitant to do that (it's been proposed by a few other users).

If you want a good solution, apply some trig :)

For example, convert the unsmoothed angle to an X/Y cartesian pair (using x = cos(theta), y = sin(theta) or vice versa), and then smooth those x/y values (which won't have discontinuity to cause jumping). Then, if you really need an angle measurement, you can pass the x/y pair into a math expression patch that calculates the angle of an X/Y point (theta = atan(y/x), or theta = atan2(y, x) if you want correct signs). so, smooth the x/y pair, never theta.

[EDIT: actually, don't use atan2 in a math expression patch, you risk crashing QC due to a bug. Instead, use Math.atan2 inside a Javascript patch.]

cwright's picture
visual solution

Here's a quick image of what my described solution looks like.

Smoothing an angle using x/y pairs

The corresponding javascript code looks like this:

We need to use JavaScript because Math Expression in QC is 
buggy anddoesn't support atan2 (for full angles)

Technically, atan2 takes y, x params, not x, y.  They're 
backwards here because I'm rusty with trig, so to got 
the cos/sin backwards before the smoothers.

function (__number outputNumber) main (__number x, __number y)
   var result = new Object();
   result.outputNumber = 
      Math.atan2(x, y) * (180.0/ Math.PI);
   return result;
Picture 6.jpg
Picture 6.jpg145.55 KB

quartzsteve's picture
OSX 10.5

Hi, is this patch supposed to work with OSX 10.5.1 Leopard? My Wiimote doesn't connect :-/

cwright's picture

It's for leopard (10.5.0 and 10.5.1 at least). It's still a bit picky about connecting, you may have to try several times.

be sure to press the red sync button (in the battery compartment) or both 1 & 2 when you power up the wiimote.

Installation Instructions

Place the plugin file in
/Users/[you]/Library/Graphics/Quartz Composer Patches/
(Create the folder if it doesn't already exist.)