Mouse Sense
--------------------------------------------------------------------------------------
Mouse functions (position and buttons) can be sensed within Csound via the
Cabbage window using the predefined channels 'MOUSE_X' 'MOUSE_Y'
'MOUSE_DOWN_LEFT' 'MOUSE_DOWN_MIDDLE' and 'MOUSE_DOWN_RIGHT'.
It is worth experimenting with the value given to 'guirefresh' as an identifier
with the 'form' widget to achieve the response you require (at the expense of
efficiency). The default refresh value (30) might be a little high (slow). A
value of 10 seems adequately responsive.
The Code
--------------------------------------------------------------------------------------
form caption("Mouse Sense") size(785, 400), pluginID("SMo1"), guirefresh(16)
numberbox bounds( 55, 25, 90, 35), text("MOUSE X"), fontcolour("white"), textbox(1), channel("X"), range(0, 800, 0,1,1)
numberbox bounds(160, 25, 90, 35), text("MOUSE Y"), fontcolour("white"), textbox(1), channel("Y"), range(0, 400, 0,1,1)
numberbox bounds( 5, 70, 90, 35), text("MOUSE LEFT"), fontcolour("white"), textbox(1), channel("LEFT"), range(0, 1, 0,1,1)
numberbox bounds(105, 70, 90, 35), text("MOUSE MIDDLE"), fontcolour("white"), textbox(1), channel("MIDDLE"), range(0, 1, 0,1,1)
numberbox bounds(205, 70, 90, 35), text("MOUSE RIGHT"), fontcolour("white"), textbox(1), channel("RIGHT"), range(0, 1, 0,1,1)
textbox bounds(300, 10,475,350), file("MouseSenseInfo.txt")
-d -n
sr = 44100 ;SAMPLE RATE
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO)
0dbfs = 1
instr 1
kMOUSE_X chnget "MOUSE_X"
kMOUSE_Y chnget "MOUSE_Y"
kMOUSE_DOWN_LEFT chnget "MOUSE_DOWN_LEFT"
kMOUSE_DOWN_MIDDLE chnget "MOUSE_DOWN_MIDDLE"
kMOUSE_DOWN_RIGHT chnget "MOUSE_DOWN_RIGHT"
kmetro metro 20
if kmetro==1 then
chnset kMOUSE_X, "X"
chnset kMOUSE_Y, "Y"
chnset kMOUSE_DOWN_LEFT, "LEFT"
chnset kMOUSE_DOWN_MIDDLE, "MIDDLE"
chnset kMOUSE_DOWN_RIGHT, "RIGHT"
endif
endin
i 1 0 [3600*24*7]