// // SensitivityModifier.m // WiiToMidi // // Created by Mike Verdone on 27/12/06. // Copyright 2006 __MyCompanyName__. All rights reserved. // #import "SensitivityModifier.h" @implementation SensitivityModifier -(id) init { [self setSensitivity:0]; return self; } -(id) setSensitivity:(int)sensitivity { if (sensitivity > 3) sensitivity = 3; if (sensitivity < 0) sensitivity = 0; NSLog(@"Sensitivity set to %i", sensitivity); _sensitivity = sensitivity; return self; } -(int) sensitivity { return _sensitivity; } -(void) manipulate:(WiiStateArray)signals { // TODO Sensitivity scaling is basically broken. int accScaled; int i, j; unsigned int scaleOffset; if (_sensitivity) { for (i = 0; i < SEND_ARR_SIZE; i++) { accScaled = signals[i]; for (j = 0, scaleOffset = (SIGNAL_RANGE >> 2); j++, scaleOffset >>= 1; j < _sensitivity) { accScaled -= scaleOffset; } accScaled << _sensitivity; signals[i] = (unsigned char) (accScaled >= SIGNAL_RANGE ? (SIGNAL_RANGE - 1) : (accScaled < 0 ? 0 : accScaled)); } } } @end