View Full Version : Request for how to use WiiMote D-Pad to switch between MIDI Channels (Ableton Live)

03-12-2012, 10:07 PM
I've tried reading the manual and searching the forums already.

What I want to do is to have 4 simultaneous MIDI (with softsynths attached) tracks playing in Ableton Live. I only want to have one of these tracks active and playing at a time.

Ideally, I want to be able to press a D-Pad button to have the corresponding one of the four tracks play. Then if I press a different button on the D-Pad to have one of the other tracks be unmuted and solo'ed (out of the 4 tracks) WITHOUT having to mute the first one again. I don't want to have to hold down the button to keep that track unmuted however.


4 channels, D-Pad to switch between them, want each D-Pad button push to unmute it's corresponding channel and mute the other 3.

Thanks for any help, really enjoyed using OSCulator so far but can't figure this one out!


03-15-2012, 12:34 AM

Although this looked like a simple question, there are many ways to solve it, and I hard a hard time to choose what is the best solution.

I will present two solution. One that is easy to understand and configure, and the other one, more involved but more flexible and cleaner.

First solution:

The idea here is to configure each button so it sends 4 MIDI control changes, but each one with a different value. Each of these control changes will be mapped to the Mute button of each track in Ableton Live.

For each button, duplicate the corresponding message (e.g. /wii/1/button/Up) and for all duplicates, assign MIDI CC events (for example 0, 1, 2 and 3). Now flip the main window to the Scalings View (Command-F) and change all Output Min and Max settings to 0.0 except the first one that you must set to 127 (min) and 127 (max). Repeat the same operation for the other buttons, but rotate the position where you set the 127 / 127 scalings.

In the end you should get something like this:

Ableton Live Mapping:

If you want to map each MIDI CC in Live to your tracks' Mute buttons, you will have a problem because a button is sending 4 MIDI CCs at once, and Live must receive only one at a time. To do this follow these steps:

- choose a message for a button of the D-Pad (for example /wii/1/button/Up) and select the first entry where you assigned the event MIDI CC 0. Now press Command-R to solo that message (pushing the button will only send one MIDI CC instead of 4).
- in Live, go in mapping mode (Command-M) and select your first track's Mute button.
- press the Up button of the D-Pad to actualize the mapping.
- back to OSCulator press Command-R again to quit solo mode, and select the next message with MIDI CC 1.
- repeat for the remaining 3 MIDI CCs and remaining tracks in Live.

The other solution:

In this solution, we will use an OSC message to keep all MIDI CC at only one place instead of spreacing them across all buttons. Because we can define OSC messages with several arguments, we won't need to use the scalings, only to define the correct message with the right values. So in short, when you press the Up button of the D-Pad, it sends the OSC message /update_tracks to OSCulator itself with the argument 127, 0, 0, 0. For the right button it would send the message /update_tracks with the argument 0, 127, 0, 0 and so on...

Follow these steps:

- Open the parameters window and go to the OSC tab.
- Click on the second target's gear wheel menu and choose "Commonly used: localhost:XYZW (this document)". This defines a OSC target at slot 2 being the current document itself.
- Create 4 OSC routings by clicking 4 times the + button at the bottom.
- Select all OSC routings, and change their target slot to 2.
- Now set the rewrite address to /update_tracks for every OSC routing.
- Finally for each OSC routing, change the arguments to 127 0 0 0, then 0 127 0 0, then 0 0 127 0 and 0 0 0 127.

You should have something like this:

- Now close the Parameters window, and assign each OSC routing to each of the D-Pad buttons.
- Press one button to register the /update_tracks message.
- Duplicate the /update_tracks message so you can assign the four MIDI CC (0, 1, 2 and 3).

And you should have this:

After this configuration is done, you can map the MIDI CC to Live as previously described.
I hope you understand both solutions and that this is what you needed.
Please let me know if you need any further info.


PS: the two examples are attached in this post, please not that I have disabled the accelerometers during the configuration so if you want to use these file directly and need the accelerometers, check that it is enabled.

03-16-2012, 12:13 AM
Hey Cam,

Thanks very much for your detailed reply - I have downloaded your zip file.

Just seen your reply at this time this evening, so I will study it properly tomorrow afternoon and apply the principles you outlined.

I'll edit this post or post again tomorrow when I can try it out :)

Cheers again, didn't expect to get so much help!

03-18-2012, 09:27 PM
As promised, I tried and got both methods working.

Brilliant, thanks for the help cam, I'm sure it'll be useful for plenty of others too :D

If I use this technique in a live version of a track I shall post it up.

03-19-2012, 10:11 AM
Thank you!
Looking forward :cool:

04-17-2012, 07:31 AM
Thank you!
Looking forward :cool:

Great Work Cam! I'm studying OSC since I just bought it. This is the only software left to figure out for me for me to control every piece of midi in my house lol.

Funny how my first post is #CyX lol