ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
Statistics: Posted by sm_jamieson — 02 May 2026, 18:56
Statistics: Posted by 23fx23 — 25 Apr 2026, 22:32
Statistics: Posted by sm_jamieson — 20 Apr 2026, 16:03
Statistics: Posted by oli_lab — 20 Apr 2026, 14:53
Statistics: Posted by sm_jamieson — 20 Apr 2026, 14:19
Statistics: Posted by sm_jamieson — 09 Apr 2026, 22:23
Statistics: Posted by oli_lab — 09 Apr 2026, 14:03
Statistics: Posted by sm_jamieson — 08 Apr 2026, 22:42
Statistics: Posted by sm_jamieson — 06 Apr 2026, 12:42
Statistics: Posted by sm_jamieson — 06 Apr 2026, 03:38
Statistics: Posted by oli_lab — 28 Mar 2026, 20:36
Statistics: Posted by grego mondo — 20 Mar 2026, 10:27
Statistics: Posted by oli_lab — 20 Mar 2026, 10:23
Statistics: Posted by grego mondo — 20 Mar 2026, 09:29
Statistics: Posted by oli_lab — 15 Feb 2026, 17:29
CODE:
//-----------------------------------------------------------------------------// mouse and multi touch//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// MouseMove callbackvoid MidiKeyboard::onMouseMoveMulti(TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize), psize);int i;char tmpstr[128];// return; // comment out routine for testingif (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventslong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval)) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);sdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);sprintf_s(tmpstr, 128, "simonj MOVE multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x", i, xval, yval, pval, pressnum, Shift);sdkTraceChar(tmpstr,true); }}//prev_mouseSize = size;//mousecount++;}void MidiKeyboard::onMouseDownMulti(TMouseButton MouseButton, TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize),psize);int i;char tmpstr[128];// Only want left mouse button. On a long touch, windows produces a right click// when the touch is removed.//if (MouseButton != mbLeft) {//return; // only want left button//}if (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventsif (MouseButton != mbLeft) return; // only want left buttonlong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);if (MouseButton != mbLeft) {sprintf_s(tmpstr, 128, "simonj IGNORED DOWN multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x",i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr, true);}else {sprintf_s(tmpstr, 128, "simonj DOWN multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x",i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr, true);//if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval) || (! prev_mouseDown[i])) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);sdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);//}}}//prev_mouseSize = size;}void MidiKeyboard::onMouseUpMulti(TMouseButton MouseButton, TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize), psize);int i;char tmpstr[128];// Only want left mouse button. On a long touch, windows produces a right click// when the touch is removed.// we seem to lose vital mouse ups so comment out checks for now//if (MouseButton != mbLeft) return; // only want left buttonif (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventslong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;if (prev_mouseDown[i] && pval < 0.00001) {//sprintf_s(tmpstr, 128, "simonj ++++ MOUSE UP on touchpoint %d", i);//sdkTraceChar(tmpstr,true);}prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);sprintf_s(tmpstr, 128, "simonj UP multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x", i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr,true);//if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval) || (prev_mouseDown[i])) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);//sdkSetEvtArrayData(Pressed, i, 0.0f); // in hh6 sometimes extra touchpoints have pressed set to 1 on mouseupsdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);//}}//prev_mouseSize = size;//updateKeyHits(parEvStore[PNUM_OWNMOUSE_X], parEvStore[PNUM_OWNMOUSE_Y], parEvStore[PNUM_OWNMOUSE_DOWN]);}Statistics: Posted by sm_jamieson — 14 Feb 2026, 22:33
Statistics: Posted by sm_jamieson — 06 Feb 2026, 13:42
Statistics: Posted by sm_jamieson — 06 Feb 2026, 00:14
Statistics: Posted by cmodica — 04 Feb 2026, 18:47
Statistics: Posted by rlgsbt — 04 Feb 2026, 18:14
Statistics: Posted by sm_jamieson — 02 May 2026, 18:56
Statistics: Posted by 23fx23 — 25 Apr 2026, 22:32
Statistics: Posted by sm_jamieson — 20 Apr 2026, 16:03
Statistics: Posted by oli_lab — 20 Apr 2026, 14:53
Statistics: Posted by sm_jamieson — 20 Apr 2026, 14:19
Statistics: Posted by sm_jamieson — 09 Apr 2026, 22:23
Statistics: Posted by oli_lab — 09 Apr 2026, 14:03
Statistics: Posted by sm_jamieson — 08 Apr 2026, 22:42
Statistics: Posted by sm_jamieson — 06 Apr 2026, 12:42
Statistics: Posted by sm_jamieson — 06 Apr 2026, 03:38
Statistics: Posted by oli_lab — 28 Mar 2026, 20:36
Statistics: Posted by grego mondo — 20 Mar 2026, 10:27
Statistics: Posted by oli_lab — 20 Mar 2026, 10:23
Statistics: Posted by grego mondo — 20 Mar 2026, 09:29
Statistics: Posted by oli_lab — 15 Feb 2026, 17:29
CODE:
//-----------------------------------------------------------------------------// mouse and multi touch//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// MouseMove callbackvoid MidiKeyboard::onMouseMoveMulti(TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize), psize);int i;char tmpstr[128];// return; // comment out routine for testingif (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventslong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval)) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);sdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);sprintf_s(tmpstr, 128, "simonj MOVE multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x", i, xval, yval, pval, pressnum, Shift);sdkTraceChar(tmpstr,true); }}//prev_mouseSize = size;//mousecount++;}void MidiKeyboard::onMouseDownMulti(TMouseButton MouseButton, TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize),psize);int i;char tmpstr[128];// Only want left mouse button. On a long touch, windows produces a right click// when the touch is removed.//if (MouseButton != mbLeft) {//return; // only want left button//}if (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventsif (MouseButton != mbLeft) return; // only want left buttonlong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);if (MouseButton != mbLeft) {sprintf_s(tmpstr, 128, "simonj IGNORED DOWN multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x",i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr, true);}else {sprintf_s(tmpstr, 128, "simonj DOWN multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x",i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr, true);//if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval) || (! prev_mouseDown[i])) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);sdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);//}}}//prev_mouseSize = size;}void MidiKeyboard::onMouseUpMulti(TMouseButton MouseButton, TShiftState Shift, UsineEventPtr X, UsineEventPtr Y, UsineEventPtr Pressed){int xsize = sdkGetEvtSize(X);int ysize = sdkGetEvtSize(Y);int psize = sdkGetEvtSize(Pressed);int size = min(min(xsize, ysize), psize);int i;char tmpstr[128];// Only want left mouse button. On a long touch, windows produces a right click// when the touch is removed.// we seem to lose vital mouse ups so comment out checks for now//if (MouseButton != mbLeft) return; // only want left buttonif (Shift >= ssTouch) return; // not handling higher level "touch" etc. eventslong pressnum = 9;for (i = 0; i < psize; i++) {TPrecision pval = sdkGetEvtArrayData(Pressed, i);pressnum = pressnum * 10 + (int)pval;if (prev_mouseDown[i] && pval < 0.00001) {//sprintf_s(tmpstr, 128, "simonj ++++ MOUSE UP on touchpoint %d", i);//sdkTraceChar(tmpstr,true);}prev_mouseDown[i] = ((pval > 0.00001));}for (i = 0; i < size; i++) {TPrecision xval = sdkGetEvtArrayData(X, i);TPrecision yval = sdkGetEvtArrayData(Y, i);TPrecision pval = sdkGetEvtArrayData(Pressed, i);sprintf_s(tmpstr, 128, "simonj UP multi %d: x=%f, y=%f, pressed=%f, mask=%d, shift=0x%x, button=0x%x", i, xval, yval, pval, pressnum, Shift, MouseButton);sdkTraceChar(tmpstr,true);//if ((prev_mouseX[i] != xval) || (prev_mouseY[i] != yval) || (prev_mouseDown[i])) {prev_mouseX[i] = xval;prev_mouseY[i] = yval;hadMouseCallback = TRUE;sdkCopyEvt(X, parEvStore[PNUM_OWNMOUSE_X]);sdkCopyEvt(Y, parEvStore[PNUM_OWNMOUSE_Y]);//sdkSetEvtArrayData(Pressed, i, 0.0f); // in hh6 sometimes extra touchpoints have pressed set to 1 on mouseupsdkCopyEvt(Pressed, parEvStore[PNUM_OWNMOUSE_DOWN]);//}}//prev_mouseSize = size;//updateKeyHits(parEvStore[PNUM_OWNMOUSE_X], parEvStore[PNUM_OWNMOUSE_Y], parEvStore[PNUM_OWNMOUSE_DOWN]);}Statistics: Posted by sm_jamieson — 14 Feb 2026, 22:33
Statistics: Posted by sm_jamieson — 06 Feb 2026, 13:42
Statistics: Posted by sm_jamieson — 06 Feb 2026, 00:14
Statistics: Posted by cmodica — 04 Feb 2026, 18:47
Statistics: Posted by rlgsbt — 04 Feb 2026, 18:14