This project was an assignment during the 3rd semester of the course “Sound and Music Production” at Hochschule Darmstadt. Every Group had to develop and build a functional arduino or teensy based midi-controller or digital sound synthesizer powered by sensors.
Senspherical is a MIDI controller in the shape of a ball that can control midi-instruments via movements and touches by the help of various sensors located inside of it.
A pressure and touch sensor are responsible for note-on and -off messages and the gyroscope can modulate the parameters aftertouch, modulation and pitchbend of the played instrument.
Over time more functions were developed, for example at a later stage the gyroscope can be used to naturally play a multi-velocity-layer midi-shaker.
The whole project was a proof of concept however the sphere was fully capable of controlling different midi parameters and generating midi-notes.
A Teensy 4.0 is used as the main microcontroller, as it already has a MIDI over USB function on board, a total of three sensors are read out via the I2C interface of the Teensy. The Advantage of the used sensor-breakoutboards is that they do a lot of smoothing themselves and are able to deliver a very reliable digital-bitstream.
The whole board is usb-powered, only one micro-usb to usb-a cable is needed for power and midi.
A vibration motor provides haptic feedback on various actions (sending a note, program change) via a time-controlled HIGH/LOW-Teensy pin. The program Teensyduino was used as the IDE.
With 12 capacitive sensors and smoothing/interpretation of the values directly on the breakout board itself, it can be read out and used directly via its own library. The sensors trigger midi notes when touched and switch between different programs.
The simpler capacitive touch sensors we used before with the analog pins of the teensy have had a hard time detecting multiple sensor states simultaneously and could be incorrectly triggered by touching the other connected sensors.
The pins are connected with several cables to the surface of the sphere, where they can be activated by the user by touching little metal rings.
At each touch a MIDI note is sent, if the sensor is no longer touched, a note-off message is sent. Melodies, polyphonic chords, etc. can be played. The velocity strength is controlled by the current inclination of the ball forward.
A function button can switch between different programs so that the different applications of the sensors do not interfere with each other. The vibration motor indicates the current program and a program change.
Also a short impulse is emitted by the vibration motor every time a note is played and provides haptic feedback for the user.
Playing a midi-piano with the touch sensors
The sensor is read out via the Wire Library, the raw data has to be smoothed and the vector and gyroscope accelerations are converted into value ranges for 7bit or 14bit midi-messages. In the end, it can control various MIDI CCs.
The x, y, z acceleration vectors are read out, smoothed and then converted into ratio values between 0 (no inclination) and 1 (maximum inclination). This allows the values to be scaled to any value range (0 – 127 for 7bit MIDI or -8192 – 8192 for 14bit high-precision pitch bend). In the code, the four inclination directions can be mapped with different functions.
The gyroscope can be used to control aftertouch, modulation, pitch bend and some generic unoccupied MIDI controllers (CCs) by tilting the sphere in different directions. Any DAW can interpret the standard messages directly and additional CCs can be manually mapped.
If the ball is moved, a motion detection is triggered via this sensor. Different movement patterns (rotating, shaking, throwing) can be recognised as a result.
Playing a midi-shaker with the gyroscope
Playing a midi-drum with the air-pressure-sensor
The ball is divided in the middle and the two hemispheres are screwed together with a thread. A plate is installed inside of the ball on which the sensors are installed, it is attached to four positions inside the housing with screws and has a cut out for proper cable management. The pressure sensor is connected with a hose to a funnel, which is located in the lid of the ball. All sensors are connected to the Teensy which sends messages via “MIDI over USB” to the PC, the USB cable is routed through an opening to the outside.
Because the sphere has a combined thread on its two hemispheres it is unscrewable which makes it very easy to maintain the cables and electrical components inside of it. It even can be upgraded with newer or better sensors.
Click here to display content from YouTube. YouTubes privacy policy.
Sebastian Hage: Product Development, Coding, Construction
Julian Herrmann: 3D-Model & -Print, Construction
Maurice Goldmann: Light, Video, Video Editing
Benjamin Müller: Actor, Songwriter, Sound Design
Anias Adrian: Time Management, Video-Assistant, Video Editing