Thursday, October 22, 2009

Results - MIDI Interface

Our modified Arduino MIDI output code was combined with our Virtual spring code to implement a one key keyboard with haptic feedback. The tone was based on the motor position, with feedback force increasing the further the motor armature was pushed from the center position. With the armature in the correct position the player would press the blue touch button (key) for the tone to be emitted from the computer speakers. You could also flick the motor and press the button while the armature oscillated to produce a variety of tones.




The Arduino sent the serial data with a value of 0-127 (based on the Hall Effect Sensor) to the PureData software, which translated the data into a sine wave with a frequency of 440 Hz assigned to an Arduino analog value of 69. A range of 0 - 10,000 Hz coulb be achieved in this design.

The two videos below show how our sensor with force-feedback emitted tones out of the computer speakers through the midi interface. Now there is two different kinds of force feedback for tones with pitch higher than the reference (middle position of the motor) and with lower pitch than that. It would also be possible to implement a different spring stiffness for each tone which would allow to feedback every pitch seperately.




This video shows our accelerometer which replaces the motor as a sensor as shown above. Here there is one axis enabled which is the x-axis. The results were quite satisfying and it is fun playing this instrument while getting feedback to the acceleration of the hand.


While rebuilding our sensor circuits on the arduino board we faced some problems with the new hall effect sensor. These were due to the inhomogeneous magnetic field or the nonlinear sensing of the device. We tried to find different applicable positions of the magnet but found that the standard position in "pushing"-mode was actually the best because other positions made the field very inhomogeneous in normal direction. Although the sensor values on the arduino ranged from 1 to 800, the middle position had an average value of 600.

No comments:

Post a Comment