Interfacing with the Sensel Morph via senselosc
. 2020, Till Bovermann (http://tai-studio.org | http://lfsaw.de)
senselosc
command-line interface, get it at https://github.com/tai-studio/senselosc .create new instance
deviceID |
the id of the sensel morph (currently only |
run the senselosc
binary in a terminal
scanDetail |
set scanning detail (0: low, 1:med, 2:high) |
binary path to the senselosc
binary.
start operating
force |
when |
stop operating
device ID
Dictionary of ControlSpecs used to normalise incoming values.
Collected values are stored in dictionaries.
Each contact has the following elements stored. Ranges are normalised (vals.c
) or raw (deviceVals.c
, in sensels or gram).
state | one of [\invalid, \start, \drag, \end] , raw values are [0, 1, 2, 3] |
x | x-pos |
y | y-pos |
force | pressure |
area | covered area |
dist | distance to center position |
wDist | distance to weighted center position |
orientation | orientation of elipsis |
majAxis | major axis length of elipsis |
minAxis | minor axis length of elipsis |
peakX | x-pos of pressure peak |
peakY | y-pos of pressure peak |
peakForce | pressure at pressure peak |
minX | upper-left x-pos of bounding box |
minY | upper-left y-pos of bounding box |
maxX | lower-right x-pos of bounding box |
maxY | lower-right y-pos of bounding box |
dX | delta x since last update |
dY | delta y since last update |
dForce | delta force since last update |
dArea | delta area since last update |
The avg
has the following elements stored. Ranges are normalised (vals.avg
) or raw (deviceVals.avg
, in sensels or gram).
\numContacts | number of contacts (normalised: i/16 ) |
\x | average x-pos |
\y | average y-pos |
\force | average pressure |
\dist | average distance between average position and all contacts |
\area | average covered area |
\wX | force-weighted x-pos |
\wY | force-weighted y-pos |
\tForce | summed forces of all contacts |
\wDist | average distance between weighted average position and all contacts |
Below you can see how the different parametes affect each other. Shown are: positions and force of two contacts, their average position and force (contantly in-between), and their weighted average position and force (moving from one to the other while force is altered).
Dictionary of all stored average values (normalised)
Array of all stored contact values (normalised)
Dictionary of all stored (previous) values (normalised)
Dictionary of all stored (previous) values (raw)
Dictionary of all contacts that were updated in the last frame
Array of states, each one of [0, 1, 2, 3]
.
actions are evaluated in the order
avgAction
contactPreAction
contactDownAction
contactDragAction
contactUpAction
contactPostAction
syncAction
remove all actions
creates a graphical display of the morph's state.
no sound example
simple sound example
visualisation