View Full Version : Confused - assigning midi contollers with wiimote & oscultar

11-28-2010, 09:10 PM
:confused: I'm using the Nitundo Nunchuck as my controllor - every message under the wii reveives a signal - but no sound. Under the nunchuck - no signal or sound is received. I also Ardour - I thought that I maybe able to use that program to assign these controllors - there no documention that I can find to step up the wilmote with nunchuck to get this to work. Can anyone help?

11-29-2010, 12:20 AM
Hey Gregg,

I'm sorry but I don't understand what you are trying to do.
Could you please give a more detailed description?


11-29-2010, 09:00 PM
I'm using Csound instead of Logic to play sound (s) from a nunchuck - like a instrument.
In the OScultor under the wii mess (pane) - it shows that it's receiving a signal of sound. Under the nunchuck mess (pane) there is signal. I've tried acouple different things to produce the sound - with no success.

With additional info can you help?

11-29-2010, 11:48 PM
When you connect a Wiimote, you will receive messages that represent the state of the device, i.e. its orientation, buttons, etc. It does not produce any sound on its own. What you need to do then is to map those messages to events, like MIDI Control Changes (MIDI CC) or MIDI Notes, and configure Csound to listen to those events.

I don't know Csound enough to guide you through using it with MIDI, but it seems google has results on how to control Csound from MIDI Events.

Csound also has OSC support, therefore you can use OSC Routing event to send the Wiimote messages to Csound. If you configure Csound to listen for OSC messages on port 9000, then you can use the template called "Wiimote to Max" in the Samples Library folder that comes along with OSCulator. Although this template is made to be used with Max, it is actually usable with any OSC enabled client.


11-30-2010, 12:10 AM
I'll give a try - mapping events - I've never done this before - it might challege.

I get back to you after I give it try to let you know the outcome.

11-30-2010, 04:18 PM
If you can use Csound, I'm sure selecting MIDI CC form the popup menus will be super easy.

12-03-2010, 09:12 PM
Cam - What's Up? Since our last talk I found something that maybe what I was looking for to help with listening & assigning controllors - as was mentioned before.
In Quecsound are the examples from the toolbar there was info about midi assigning & other midi - i.e. receiving notes, synth, controllor data. Here a screenshot of what midi assign has - /*Getting started.. Realtime Interaction: MIDI Assign Controllers

In the example below, instrument 100 (which is "always on") receives the MIDI control data and sends it as global k-variables (gk...). You can choose the MIDI channel number and the controller numbers via the spinboxes in the widget panel. You can even change these numbers during the performance. As they are i-values, the opcodes 'reinit' and 'rireturn' are used to put the changes into force (for another examples, see Examples->Reinit_Example).

In comparison to the example before, the sliders are not 'invalue'-ed to the instruments, so the only way to control the synth is via MIDI-CC's. The GUI is just for displaying, so 'outvalue' is used to send the CC-values to the Widget GUI.

All the note-on-/note-off-messages must be sent on MIDI channel 1 (or you have to change the massign statement in the orchestra header). The statement massign 1, 101 sends all these messages to instrument 101. Each note here is added to the global audio variable -gaOut-.

Instrument 102 adds the global feedback delay and the reverb, and finally zeros the -gaOut- variable for the next k-cycle.

--midi-key-cps=4 --midi-velocity=5

sr = 44100
ksmps = 128
nchnls = 2
0dbfs = 1

gaOut init 0.0
massign 1, 101 ; assign all incoming midi from midi-chn 1 (= keyboard) to instr 101 (Sawthooth Oscillator)

; Get information for MIDI Channel and Controller Numbers from the Widget Panel
kMidiChn_slider invalue "#midichn_slider" ; receive midi channel for the sliders
kCtrlNo_filt_freq invalue "ctrl#filt_freq" ; receive controller number for filter frequency
kCtrlNo_DelTime invalue "ctrl#_time_delay" ; receive controller number for delay time
kCtrlNo_Feedback invalue "ctrl#_feedb_delay" ; receive controller number for delay time
kCtrlNo_d_w_delay invalue "ctrl#_d_w_delay" ; receive controller number for delay wet-dry-mix
kCtrlNo_d_w_reverb invalue "ctrl#_d_w_reverb" ; receive controller number for reverb wet-dry-mix
; Receive Values from the MIDI Sliders as global k-Variables
midivalues: ;begin of a possible reinit section
gkFilterCC1 ctrl7 i(kMidiChn_slider), i(kCtrlNo_filt_freq), 10, 5000 ; read 7-bit MIDI CC data and map to a range between 10-5000
gkDelTime ctrl7 i(kMidiChn_slider), i(kCtrlNo_DelTime), 0.05, 1
gkFeedback ctrl7 i(kMidiChn_slider), i(kCtrlNo_Feedback), 0.05, 1
gkDryWetDelay ctrl7 i(kMidiChn_slider), i(kCtrlNo_d_w_delay), 0, 1
gkDryWetReverb ctrl7 i(kMidiChn_slider), i(kCtrlNo_d_w_reverb), 0, 1
rireturn; end of a possible reinit section

; Reinit the label "midivalues" only, when a MIDI Channel or any of the CC Number assignments have changed
kchanged changed kMidiChn_slider, kCtrlNo_filt_freq, kCtrlNo_DelTime, kCtrlNo_Feedback, kCtrlNo_d_w_delay, kCtrlNo_d_w_reverb
if kchanged == 1 then
reinit midivalues
; Send the MIDI-Values to the Widget Panel
outvalue "filter_freq", gkFilterCC1
outvalue "feedb_delay", gkFeedback
outvalue "d_w_delay", gkDryWetDelay
outvalue "time_delay", gkDelTime
outvalue "d_w_reverb", gkDryWetReverb

instr 101 ; Sawthooth Oscillator triggered with notes on MIDI CH: 1
icps = p4
iamp = p5/127
kFfreq port gkFilterCC1, 0.05
aSrc oscili iamp, icps, 1
aFiltered moogvcf aSrc, kFfreq, 0.1
aEnv madsr 0.01, 0.1, 0.9, 0.01
gaOut = gaOut + aFiltered*aEnv

instr 102; Global Feedback Delay and Reverb
; DELAY Section
kDelTime port gkDelTime, 0.05
aDelTime = a(kDelTime)
aDelay delayr 1
aWet deltapi aDelTime
delayw gaOut+(aWet*gkFeedback)
gaOut = (1-gkDryWetDelay) * gaOut + (gkDryWetDelay * aWet)

; REVERB Section
kroomsize init 0.4
khfdamp init 0.8
aWetL, aWetR freeverb gaOut, gaOut, kroomsize, khfdamp
aOutL = (1-gkDryWetReverb) * gaOut + (gkDryWetReverb * aWetL)
aOutR = (1-gkDryWetReverb) * gaOut + (gkDryWetReverb * aWetR)
outs aOutL, aOutR
gaOut = 0.0

f 1 0 256 7 0 128 1 0 -1 128 0
i 100 0 3600 ; the MIDI CCs will be received for one hour
i 102 0 3600 ; feedback-delay and reverb run for one hour
; written by Joachim Heintz & Alex Hofmann (Dec. 2009) - Incontri HMT-Hannover

From you see here is this what make the osc & csound talk to each other to play sounds? If, possible - from reading this - could you give the steps to correctly assign the controllors - I'm not really tech savvy as you probably guested. Thanx - Gregg