Wiimote as temporal and dynamic controller

Mrboni's icon

Hi.

I'm just getting round to doing something that's been on my to do list for a long time.

I want to see if it's possible to use the Nintendo Wii controller as a sort of conductors baton.

The idea is that by waving the controller back and forth, exciting the accelerometer a bpm tempo and volume level could be calculated. I'm looking for suggestions on how to proceed with calculating both of these from the data available.

The tempo should be straight forward. I've made a simple tap tempo patch which uses bonk~ to detect transients and work out a tempo from the time between them. It works well although I need to find a way to use bonk~ on a float value rather than a signal.

The dynamics are a little more complex. I want to be able to control either a global volume level, or possibly volume of a group of instruments/sounds by the energy with which I move the controller back and forth. This data output by this action is obviously not smooth but a series of strong transients with peak values holding the important information. I think I need to be able to hold the peak transient values for roughly the duration of one beat (relating to tempo) then smoothly drop off. 'slide' works quite well with a fast 'slide up' and slow 'slide down' but does not hold the peaks for long enough. An intrinsic problem in this method is that there is a delay between rapid changes in dynamics.

Does anyone have any ideas on how best to implement these ideas, or links to anyone who has already done similar things?

Cheers

Mrboni's icon

Here is an image showing the kind of data that can be extracted from wiimote movements..

254.Wiimote-Accel-Data.png
png
Jagle's icon

i dont think youll be able to control everything by just waving the wiimote around, conflicting values when you wanna do one thing or another

why not use the buttons on the wiimote, so when you press one, you affect tempo, another global volume, another specific sounds volumes, stuff like that?

brendan mccloskey's icon

I disagree with Jagle (respectfully). It seems that you have described well both what you want to do and how to do it - the only challenge now being which objects best suit your needs. You could certainly use objects like peak or past or split to 'syphon off' maximums to trigger some other event, such as changes in dynamics - even using X axis acceleration data to identify different groups of instruments in your virtual orchestra. I haven't written anything this specific myself for Wiimote in a long time (used GlovePIE, now defunct), but here are some videos which may demonstrate that it IS possible to just use acceleration and orientation data:

Brendan

[edit] just noticed how old the OP was.

Ritinham4's icon

Hi i'm trying to do exactly the same thing! But I don't know how to do it. I'm very inexperiente with max and maybe you could help me. What have you done with bonk~? Are you using OSCulator? I don't know what to do and this is a work that i have to do in my course. Please help me!

5mg3's icon

Hey Mrboni would you contact me regarding what progress you made on this please? I am working on some research involving a similar method at uni and could benefit both if we share our findings.

Plus anyone else that has done any similar work with wiimote/accelerometers as controller for tempo.

aaron.smiles@ncl.ac.uk

Best