Main | Wiinstrument Linux release up ahead »

A new way to control MIDI with your Wii remote

Update: 0.1 is an old release. A newer one is available here: The Wiinstrument 0.2b713. Be also sure to check out our GarageBand+Wiinstrument tutorial!

Hi everybody.

Ever wanted to have a cheap external MIDI controller that's wireless? Or to play a groovy drum loop in your sequencer without having to set note delays manually? Then the following blog entry may be for you.

Having released the Wiinstrument on Breakpoint '07 in Bingen am Rhein, we decided to share a preliminary version of the software with you.

The configuration screen. The percussion mode screen.

The Wiinstrument is basically a MIDI instrument that is controlled by a connected Nintendo Wii remote (with a Nunchuk controller, if available). The controller is available separately and can be connected to your computer via Bluetooth.

It features:

  • A graphical interface with OpenGL graphics.
  • Two modes (with awful puns in their namings! \o/)
  • Percussion mode: Smack both controllers to trigger MIDI notes (with velocity recognition)
  • Keyboard mode: button presses are mapped directly to MIDI notes. Various scales (chromatic, blues, minor, major) are available so that you're even able to play melodies on it.
  • Open Source: It doesn't cost anything and everyone can implement new features!
  • It's designed to be portable, so it should be easy to port it onto other platforms like Linux or Windows.

Connect your Wii remote by pressing 1 and 2 simultaneously right after the program started.

Application examples:

  • Record groovy MIDI drum patterns directly in your software sequencer! (using a loopback MIDI device)
  • Control your MIDI compatible VJ or lighting setup with it!
  • Tape it onto your e-guitar and control your guitar effects hardware by tilting your guitar!
  • Use it for whatever you would use a hardware MIDI controller - but cheaper (a Wii remote costs about 40 EUR/USD)—and it's wireless :)

It's currently available for MacOS X 10.4.9—We're already porting it to Linux...

Known Issues:

  • The Wii remote may not always be recognized, as it identifies itself as Bluetooth HID device, but doesn't follow the HID specs. Apple's Bluetooth department seems to be working on making the Bluetooth implementation compatible to Wii remotes so that the OSX kernel driver doesn't try to make a concurrent connection to the Wii remote to an application. The result has been announced to be included in Leopard, so stay tuned :)
  • If you don't get a connection to the Wii remote when starting the Wiinstrument, don't panic: Just go to your Bluetooth system preferences, remove the connection to "RVL-CNT-01" manually and retry the connection (We're working on a simpler connection procedure...)
  • The graphical user interface is preliminary, a better looking one is in development.
  • Sometimes the MIDI output lags. We're working on a fix for that.
  • Mapping acceleration sensor axes to MIDI control change instruction isn't implemented yet.
  • If the application closes unexpectedly, please report it together with the content of your ~/Library/Logs/CrashReporter/The Wiinstrument.crash.log file so we can fix the problem.

Just download it and enjoy.

To connect it to your sequencer/sampler, start Apple's Audio/MIDI Setup tool (you can find it in the Utilities subfolder of your Applications folder), activate the IAC device (Apple's loopback MIDI device) and drag it to the first place of the shown device list. You'll see a new IAC MIDI input device in your sequencer then.

Any comments and reports are appreciated :) If you have a problem that's not addressed in the known issues above, please write us which platform you are working on.

Additional credits go to: survivor/screenfashion for the Gosu library. Hiroaki for the Darwiin Remote framework. Tobias Moebert for porting the application to Linux. The PortMidi and Boost library staff. Rest of the Breakpoint '07 staff for the wonderful party. Bye .o/ [Update on Apr 16, 2007] Linked 0.1.1 (bugfix release).

TrackBack

TrackBack URL for this entry:
http://screenfashion.org/cgi-bin/mt/mt-tb.cgi/4

Listed below are links to weblogs that reference A new way to control MIDI with your Wii remote:

» Wiinstrument from [ arnaldo giacomitti junior ]
O Wiinstrument é basicamente um instrumento MIDI que é controlado por um controle de Nintendo Wii. O controle pode ser comprado separadamente e conectado via bluetooth com o computador. O programa é para MacOS e está sendo portado para linux e é OpenSo... [Read More]

» We're back from IFA 2007 from screenfashion
Hi, Tobias and myself are back from IFA 2007 fair in Berlin. We were not really prepared for the interest that The Wiinstrument has produced, but everything went very well—The software appears to be really stable once a Wii remote... [Read More]

Comments (67)

Anthony:

Amazing idea - implementation is still pretty sketchy though. I use Reason 3 on an intel mac and can't get connected at all when Reason is running. I haven't been able to make a sound with this yet.... but I'm hopeful.

hypo:

Can you connect the Wii remote to it? If not, does the problem only exist when Reason is running or always?

Maybe it helps to connect directly when the program is started, because about 20 secs later DarwiinRemote doesn't sync anymore.

Did you delete all Bluetooth connections to the Wii remote ("RVL-CNT-1") manually in the Bluetooth preferences before trying to connect?

I can't get this to run -- The error was that it could not locate /usr/local/lib/libpng.3.dylib

I installed libpng3 from fink and put a symlink in the location The Wiinstrument wanted, however I now get the error "Incompatible library version: The Wiinstrument requires version 20.0.0 or later, but libpng.3.dylib provides version 3.0.0"

I will try from the sources I suppose, but I wanted to let you know about this.

hypo:

Strange that it doesn't work with the fink version.

I have uploaded my version of the lib to fix this until the next release is out.

The next release will have the problem fixed by linking the library statically into the app. I have not run into this bug as all macs that I tested it on seem to have the library already installed...

Thanks for your feedback! :)

hypo / screenfashion

mayhem:

It still doesn't work for me :(
I got the same error like John Laur and after downloading your version of the lib i get this Error message:

Library not loaded: /usr/local/lib/libpng12.0.dylib

and this message seems like an error too :
Referenced from: /Applications/The Wiinstrument.app/Contents/MacOS/The Wiinstrument
Reason: image not found

I got an PPC Mac with 10.4.9
But if this software works on my machine .... YEAH :)

Dragonpme:

Hi, this sounds like a MINT idea! but when i download and mount the DMG i try to run your program and nothing.. :| it wont open...

im on mac osX 10.4.9 and when i launch the application it shows in the dock for a slit second then disappears.. i was so happy to find this and now... im sad.. :) please help.. thank you! :)

I coudn't get it working with Reason 3.0.5 (UB) on my Macbook either (10.4.9). It detects my Wiimote only if I launch your app and simultaneously press the red sync button on the wiimote.

It finds my M-Audio Axiom 25 midi interface, so I assume that it will use it to transmit Midi informations. But Reason tells that nothing comes in when I shake my toys.

I'm waiting for upcoming builds !

hypo:

Thanks for your feedback.

John Laur, mayhem, DragonPME: I've done a new build that includes the missing libraries (sorry, my fault...) and should be a bit faster.

willbe: I don't know if the Axiom 25 is also capable of looping MIDI output back as input, but there is another solution: Just activate your IAC device in Apples Audio/MIDI preferences app and drag it to the front like described in the article. This is a MIDI loopback device that's integrated into OSX. When activated, you should see a new output in the Wiinstrument options (like “IAC Driver Bus 1”, as seen on the first screenshot) and a new corresponding MIDI input device in Reason.

Hope that helps :)

mayhem:

The Version 0.1.1 works fine but its still buggy, maybe it would be a great idea to give the possibility to connect a second Wiimote to bind it on your foot and control the Bassdrum, the first will be the Snare and the Nunchuk will be an Crash or something.

I'm looking forward to see what your Project will become.

Thanks :)

Hi, sadly it doesen't work for me either. 10.4.9 on an intel mac. The app bounces for a split second in the dock and disappears. Thanks Stefan

hypo:

There should be an error message in your system log (you can see it e.g. by opening the Console app). It would be nice if you could copy&paste it here so I can fix the problem :)

Thanks a lot, it works !
I'm pretty impressed by velocity recognition in drum-mode, it works very well with the wiimote, althought less efficient with the nunchuk. It seems that the nunchuk's sensor is cheaper than the one built in the wiimote.

Any chance to use two wiimotes simultaneously ?

hypo:

According to my information, the Nunchuk controller has the same acceleration sensor chip that's also built into the Wiimote. The Nunchuk acceleration data is even readable with double accuracy (10 bit instead of 9).

I think the problem is rather lying in physics: The Nunchuk has less weight and is therefore more accelerated than the Wii remote when you apply the same force to both controllers. The next release will have a coefficient to balance that.

Stefan:

Hi, the error about Wiinstrument not starting up is: Error: No devices found. Begin pairing...
terminate called after throwing an instance of 'std::runtime_error' what(): Error on line 141
I tried to connect the wiimote to the mac via bluetooth to no avail. It allways says that the pairing was successfull but the wiimote device doesn't show up in the favorites. Only if I try to browse devices - there I have two wiimote entries (tried to pair two different wiimotes). Don't know how to kick them. If I add a wiimote from "browse devices" to the favorites, the only option there is to remove them from favorites - delete is greyed out.
Thanks. Stefan

hypo:

Stefan: You don't have to connect the Wii remote manually in the Bluetooth preferences. You have to delete all 'RVL-CNT-01' entries in the list - This is necessary to get the Wii remote connected to DarwiinRemote. The pairing is done in 'The Wiinstrument' itself.

I don't exactly know why your 'delete' button is greyed out - normally all entries in the list should be deletable, even if they're favorites. Can you remove them from favorites and _then_ delete? Or could you make a screenshot?

Anyways, thanks for your comment :)

damson:

Hello,
i have a macbook intel coreduo
runing os x 10.4.9.

Wiinstrument launch but no output sound !
the accelerometers works with wiimote and nunck!

Thanks for help

hypo:

The Wiinstrument doesn't output sound, but MIDI. You have to connect it to a MIDI application (e.g. Reason or Logic) to get sound.

Sound output is planned for one of the next releases.

damson:

Thanks, Hypo
Is there an application simpler than reason or logic for having sound of wiinstrument because these application are to expert for me !

Thanks

hypo:

You could also use GarageBand with The Wiinstrument. You just have to follow the above instructions to configure a IAC loopback device on your machine and know how to setup MIDI in GarageBand. Maybe you can find someone who has the time to create a little example project? :)

Having the exact same problem and console error as Stefan, when I run the app, it bounces on the dock for a split second then stops and closes.

Running it on an Intel MacBook Pro, OSX 10.4.9

When I run just the Darwiin Remote app, everything works fine, my remote is immediately recognized, so I'm not sure...really excited to get it working though, any thoughts?

Update to my last post:
Just tried it on a PowerBook G4 running 10.4.9 and it worked...so is it a problem with newer intel Macbook Pros?

I've been playing with this since I got it to work, its so cool. Its plain fun as a toy, but I think its a really viable for making music as an innovative midi controller. You can really do stuff you can't do on on a keyboard or beatpad (drumrolls!).

One thing that would be nice for the future, right now it seems in the drumstick mode you can only map 7 notes, when some drumkits are much larger. Maybe the left and right d-pad could step up or down with each press, so you could still access the full kit still.

I'm totally excited about the project, if you need any website or design help with anything for it I'd love to be a part of it!

Martin:

Hi,
I'm running on a powermac dual 1.8, the window opens up white and then the app closes, nothing, that I can tell, get written to the console.

But it does work fine on the CD MBP.

Cool app.

hypo:

Do you have a MIDI device set up, like, e.g., the IAC device (see the article for more information)? Without a MIDI device, The Wiinstrument doesn't work yet.

Andrew:

Hi hypo,

This is a great project idea! The number of applications in the live performance setting are virtually unlimited. You could do some pretty avant-garde stuff with this, if you know what I mean. :)

I am running on a first generation MacBook Pro, and am not successfully able to get this application to launch. The application will show in the dock for a half a second, and sometimes a small gray window will appear, but it shuts off immediately afterwards. Anything I can do to remedy this problem?

Thanks,
-Andrew

Martin:

Set up the device and no dice.
(i didn't mean for that to rhyme)
i managed to find out where a crash log was being written.

"Begin pairing...

terminate called after throwing an instance of 'std::runtime_error'

what(): Error on line 141"

Dave:

Runtime error here too:
=========
Begin pairing...
terminate called after throwing an instance of 'std::runtime_error'
what(): Error on line 141
=========

Same problem on an Intel Mac Mini 1.83 and on a G4 MDD.

I had deleted bluetooth devices prior. The WiiMote works with DarwinRemote and a few other Wii/Mac programs.

hypo:

I'm investigating the problem. A fix will probably go into version 0.2b.

Aaron:

Hmm.. Keyboard mode works fine for me, but drum mode doesn't seem to work at all. Using reaktor, when drum mode is on it doesn't register any midi input at all. I've tried it in other programs also with the same problems. Am I missing something?
Running a Powerbook G4 1.67 with 10.4.9

Thanks

hypo:

Do you have the MIDI input filtered by channel? The "Drumstiicks" mode is sending data on channel 10, the Kiiboard mode on channel 1.

Aaron:

Yeah thanks, that was the problem. Don't know how I missed that.

Terabanitoss:

Hello
You are The Best!!!
G'night


Pierlo:

Hi there!
I have the same problem as stefan: the app will quit immediately with the same console error. What are we doing wrong? Can u explain the exact steps to do in order to use the app? Starting from what needs to be enabled in the bluetooth preferences etc. I have enabled bt but i see no devices in the list! what's wrong? Thanks in advance

hypo:

You don't have to pair the Wii remote in the BT preferences, the pairing is done in the Wiinstrument itself. Do you have the latest version of the Wiinstrument? Do you have at least one MIDI device activated? (in the Audio and MIDI preferences)

Charles:

Hello,

This sounds exactly what I'm looking for. Can the Wiimote work concurrently with other midi triggers plugged at the same time? For instance my midi keyboard playing a melody and my wiimote playing percussion?

Thanks
Charles

hypo:

Yep, that works for every software that can read from multiple MIDI devices.

If you use a sequencer, you could e.g. select the IAC bus MIDI device (like explained in the article) as input for your percussion track. Then, select your standard MIDI input device as MIDI input for the keyboard sampler/synthesizer track and you're done :)

mcg:

where can i find the source?

hypo:

You can find the current development version on SourceForge.

Tavis:

I dont get any sound at all on 10.4.9

hypo:

Do you have a MIDI software connected to the Wiinstrument and read the instructions above?

wirelessdreamer:

how's the progress going on the linux port? just checked the subversion trunk and didn't see any makefiles. i'll go buy a wiimote and help break it in. i'm familiar with linux synth stuff from the end user side so i'll at least know how to hook it up :)

hypo:

We're on it, it's just not in the SVN yet. Maybe later this week, as it seems we have to change our license again for CWiid. Another problem is that we didn't get OpenGL drivers to work in accelerated mode on our Linux machine yet, so the Wiinstrument starts, but the GUI is updated with about 1.5 fps ;)

If you want to do it yourself, you have to do the following:

  • Install the dependencies (boost, fmod, the Gosu Library, GLUT)
  • Make a concrete LinuxMoteInput subclass of MoteInput
  • Instantiate the new class in the Core class constructor
  • Implement the methods to connect to the Wii remote via CWiid (or another API) and set up the callback to get motion and button data from the Wii remote
  • Push new data into the buffer via pushAxisValue() and pushButtonEvent() methods

This should be everything.

pandaman:

Hi

Fraid I'm getting the same eror message

Begin pairing...
terminate called after throwing an instance of 'std::runtime_error'
what(): Error on line 141
Abort trap

On intel MBP CD

rapsci:

hi, any luck getting this to work on the intel macs? i've tried all posted versions on this page and had no luck. thanks for your help.

hypo:

I have tested 0.1.1 on my gf's Intel MacBook and it works fine with GarageBand. 0.2 is not far from finished and is using other initialization routines, maybe you will have more luck with it…

Do you have a MIDI device enabled in your Audio/MIDI configuration app, like the Apple IAC device?

wirelessdreamer:

I just wanted to check in again about linux progress, i've got some time i could spend helping with the port, but your last reply said you have some linux progress that isn't updated in svn, so i really don't want to just be repeating work thats already been done.

Dying to work with this! Unfortunately got the same error as mentioned above, the app quits after a brief spawn in the dock...

hypo:

wirelessdreamer: Just take a look at this: http://screenfashion.org/2007/06/linux_release_up_ahead.html

The newest sources will be in SVN shortly.

Monokai: The problem should be fixed in the next release.

onitake:

i think i found a bug...
been using wiinstrument together with garage band, and i noticed that some note off events get "lost". happens when i play two notes at once and release one of them earlier than the other. the note gets stuck until i play the same again - the second note on stops the playing one.
or maybe that's a feature?

wirelessdreamer:

I can't wait, you guys rock! :)

hypo:

onitake,

the note-off problem happens only in Kiimote when you shift the scale with 'right' or 'left' on the D-pad while you are holding other notes. The Wiinstrument doesn't remember which notes it is playing at a given moment, it's only sending note-off/note-on events on releasing/pressing buttons, so the wrong note-off event is sent when you shift the scale while playing a note.

This will be fixed in the next release.

Bye :)

jerry:

it launches for a second when i open it but then it disappears !! help me
im running on mac os x 10.4.10 w/ 2 GHz intel core duo

Andrew Roberts:

I grabbed the most recent source just now. As a drummer by night, I've got some ( i hope ) good ideas for making this a viable instrument. I'm building on OS 10.4.10 XCode 2.4.1, and the Xcode project in the SVN package won't build (?). GCC Fails: No input files, when trying to compile Bitmap*.* files. I'm very new to XCode, so there may be some bits of configuration I'm missing, but any help you could offer would be grand, as I've got some time coming up to commit to this project. I'm a .Net developer by trade, if that point-of-reference helps. Thanks

wirelessdreamer:

this wait is killing me =P. i'm trying to hack together a makefile for linux but i can't find any reference to what package CommonMath.h is part of. if there are any changes not commited to svn they'd be great too ;)

hypo:

wirelessdreamer: Have you got our mail with the zipped KDevelop project? CommonMath.* , EyeCandy.* and all references to these files are not important for the current status - you can delete them without losing anything.

Jan:

I have the same problem on PPC OSX 10.4.10 - the application pops up for a moment and closes immediately, i can´t even see the gui.
Please help me! Any suggestions? I´m really looking forward to using the Wiinstrument für drums.

Regards,
Jan

hypo:

Jan,

thanks for your report. Could you send us a mail with the content of your ~/Library/Logs/CrashReporter/The\ Wiinstrument.crash.log file?

This would help solving the problem.

Thanks in advance,
Sebastian

wirelessdreamer:

I never recieved any email involving anything into wiinstrument =| just checked my junk mail folder, it didn't end up there either.

Wing:

I got this error as well, like Stefan:

Error: No devices found.
Begin pairing...
terminate called after throwing an instance of 'std::runtime_error'
what(): Error on line 141

=(

top idea this one, im the drummer for leeds uk band THE GOOD DIE YOUNG and hope to use this live with ABLETON.

However! i have the same problem with getting the midi into ableton. I follow all the instructions listed, ie do the iac thing, shift it to the front of the list, choose new IAC option in the WIIstrument panel, but still no midi in ableton.

Ive checked all the midi inputs outputs and remote are on in ableton and still nothing.

Ive asked loads of MAC / ABLETON people about this and still no joy.

Has anyone got this working on a 2006/7 intel imac running osx + ableton live6?

Cant wait to get it working though, the possibilities are endless.

: )


klyick:

I can't get this to work with my Macbook. I have tried everything :(

Hi there, great idea!

just tried it... software recognize my wimote, but there is no soundoutput?! any tips and tricks?

JO

Marco :

anyone tried the wiiinstrument with reaktor? thanks

joehanc,

could you provide more information about the setup you use? There's only audio output in the "DrumStiicks (Audio)" mode which you can reach via the Home button.

Marco,

the software should work with Reaktor as with every MIDI instrument :)

Jan:

10.4.10 MacBook.
Does not recognize Wiimote. Doesnt even see this Bluetooth device..

Arron:

Hi I'm starting a similar project to the wiinstrument soon and would be really greatful if you could send me some information on how the wiinstrument works.

Thanks

Aron

Just look into the sources, they're on SourceForge ;)

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on April 8, 2007 6:15 PM.

The next post in this blog is Wiinstrument Linux release up ahead.

Many more can be found on the main index page or by looking through the archives.