Kinect manipulation — sound synthesis (Project 2)

For my and Dan’s project, we wanted to do something with the Kinect. In particular, we wanted to be able to play a video game with sensor data from the Kinect. However, when we ran into issues with this, we decided we would create an instrument that used Kinect sensor data.

My contribution was the sound synthesis element.

Our setup was as follows– a Kinect connected to a Windows machine with a license for dp.kinect2 sends sensor data through OSC. We use multiple ports for efficiency and simplicity. On my personal laptop, I read this sensor data and perform sound synthesis.

The first step in my sound synthesis was list parsing. For each body part I read (head, left hand, right hand, left foot, right foot), I am given a list representing X, Y, Z, and certainty. I wanted to use the distances between the body parts to create my instrument, so then I made a subpatch to calculate that euclidian distance.

Once I did that, we had to do some manual testing to see the range of distance values that were possible (i.e. standing in front of the Kinect and doing a starfish pose, to get the widest distance between the body parts). Once we did that, we could scale the potential distances (0 to X, X being the max) into usable numbers for sound synthesis.

I wanted the distance from the hand to feet to correspond to pitches of two separate oscillators (left and right), and the distance from the hands to the head to correspond to the loudness of each oscillator. To make the patch more usable, I have the oscillators round to the nearest fifth, instead of just sliding up and down continuously. To do this, I created integers of multiples of 7 (the number of half steps to a fifth).

Jesse also helped me get it so that the motion speed controlled a lowpass filter. To do this, we used the “t” object to store a float. This allows us to compare it to the previous value and subtract the difference. This speed controls the cutoff frequency of the lowpass filter. I then use the distance from the hands to the head to control the resonance of the filter, keeping it between .3 and .8.

I then compress the result and add reverb, cuz why not?

We also decided that the potential pitches for the right hand/leg oscillator should be the same pitches as the left. We considered at one point having each side have different ranges of pitches to allow for more playability, but decided that ease of use and understanding was more important.

If we had more time, it would have been nice to implement some way for the contour of the oscillator to change with some other variable. However, I’m pretty proud of the work we did– our tool is interesting and usable.

The patch:

<pre><code>
----------begin_max5_patcher----------
5330.3oc6csziiibj9b2+JDJ3C6ZzchLx2oO4EvvvGl8h28f2crQAVRrphdT
IUVhpmtsgme6aj7kHUQRkRLYQ0qYMC5VMIEiL9xHi2YV+iO9g6dX6Wi2e2he
yhebwG9v+3ie3CYWxcgOT7u+vcuD80kqi1m8X2sN9KwqeINMd2ub2mxu+qQo
KeNYyS2uKdYZ96xHAhURo.iQ0TNvjeZgUqHJvZsR.zfQiWBXFB8SKTBBcweo
3ss8P553zzu8Zb9q5t6ptUxprgv1G9qeFX1Rxu4vKIavuR13C9T4Xd2OEua+
g8wYeGywmM+821CmSuOqvQzmEF7O3J7OXB7O.F9G3+xMXW7Wbeq+4G+n6O9j
mv1l3eFG1kC4z3ulAT2seYz53ETB9+pErEfrGLELRhFDLsEzBCUnL3XTvrDp
VaEfwJjk.sCTYrq.TMsBpp1QuvACae4qjkae40eYQzSK+uedW79m2tdENAP5
AOzRJgy.pPXY4hSVvRLn.lhy0FKU4.CvIbcNzXexSahVe2mp+o0I6Sq961QK
cqnEqUzRbEn0iq2huj9VlYcPfPIjHSSsbGHfelHbxBZtjKAYFJfP04EIPl8g
nMOcjYeb6tWhRqKATi8s5iCrcQYZDtOdSzCqydez9Vb1DYXiAxnkJhTZD.UI
JWWnnLBhHJ1HCL1IDX5XA1KoaerO4HNEkY3BkkwMLSNZoABXvkO4qi3rqUoB
Udm+7LLFBCVsgn3JtjI4EpEdmjEPwuaOgg8qSVEuPRVX5S8pQnIBkVxrLqJS
8plZIVTyBUY3xbkMJOfLb5IpCMnz10fxGa6Mwe80cKvG7e6W8H7m+yeZAg+u
2mgWlFYSsUCfEJVNHU.wHT.mx0PglWq8pWhXF4kH8hCIapvAyEiCbNgoEJog
U5lm5pQA6zfB6+xi+Bt3mhNgo6i8oBCQyA0QOsTVIwHU3hBEqzgC8U5uwa9T
qXDPufULhQwQUpbAseOU0LffdohvA5yettUzkLhBAPogaMhrkK.kesRJ.LM9
olt3Q7+dnOVG.BqIqKzLhDbQCoQe0JbUU3shyOU6CMs7z.QXWvZGdf0fD8vd
mFjEedwu5QVkFj0IahWt8vlz5NE6mzhDWocp1UfhKOcwSxsX3NNW9wve3xqP
3QbAtsGPgmdc.CWKHobiPx.Qw5Cz6D7ZLixnjLd90vn8jCvdKXmFV+LteZkH
CQMVTRPoKb1.4bBSpDbKCuSAjb8Ngxfow1xudg9LLNzzwTgTRrFt1hS+JZgm
o9LsmroqvTYSyj9utuDDAXnEDFFmtBidsX1UA3TNvLLqrZF2GNuO6kL9zv7N
Nse9GWwiy4F0QWoznN.tPbLDLeLRzKyKlF2qq4rfz8W.oWjPqIXnE0iTuUSl
CHsVxowcgKI6dsoJ.jDbAhRTXuafffZZ.guE83tJMPOtcS5FLL3r67CQoa6M
pcfvOZ5yXzNuuw3OfR0h1bGHEWjq1sAN11UQJqMp2m72ydkfil4Wd410a2kS
FJwfxwJbLQwoLlTXq+In1.b3Q0+5t38woU.m6esIMJMY6lZfGilEFhLK+545
Q.SsgQqKDyDAAgBMDW3HFF9uKAi5pj3qjmW9qb.laS5Smdgpu3CGd3g0wGA1
VlW38Z0tw7Bink3.UQK9AZAf51jun9Smd+pnznxphTMMj+kdHdWsWCdsiOKh
O4CaUl7lKMK6p6+tMadn7obllZ6oz1FOkn8mB.SiGS1wKS6loxGp4hXsyNrd
XG3j2c9rZObR9Cv0cyE4OAX6lAxeB0wG.x.0zsO8z53ZuBeXN9Eyb.SeN1Cb
0D5L7Wi2R6DBLmiEqM+cUkd5k386idJ9MJlgqQobqJIXllJIP0CLzPlUvEnd
HTcs5pLYw622sFq9AhD8XF8lp7mdK32yIqVEuIvF5vUbqxBPOPvJF2GwXPm.
jLcgMvBsu8ZvqybDXE9qL8nQtw..Wt8kWh2j9FDbU7xnusHM4k3yYcSjYcCg
lrxGmiJzZnxEh85SwdCPa0tWcZTCZ6nRfvkHo5mcJZHg6jGe7vdG47BsYzrn
uk7vi13kZf1sPi55EneOh1Om7zyKdbW7e6P7lkeawpnWdM4nxhyHnqyL1CE4
+HnXOm2D6aiH0E0MeOB9YCI+f5b1WoCNRqMmHk2BMpqtVdKCzk9wbFHMOvib
OZAQFxB1KOLDCWbhPZKuK+bp3XBgt3Bx1EZ9vSMhDDCCDWu5h+iYnXzqYQBR
MBktuHAgwdRPpF5j.JlEpIAw+hNIv4CbRPaLAaRP9ulSBE9wLjUBm5ux0OIX
U++mIAOZJqrtUSKTTEm4xrqqvv.ATFCSBBqjqvkHiRm3XlxtxpqPvMFfHv4G
g7RKZpUSDTFZ0WxnT.ANvkrNAQJjhF8mQFRdEkI0nG4BmzYZIjBzcFEtTSco
fBTJfgPJWUziwFpj.VgopNBWOjHuIqdJttg3pcNWBTcIShtBRrViQP47xNy4
pqdplN0cvGqTdWfhEbWUxkuepNTe21CeflR.l0nzRYdmTXbpIPQClUpjhxN6
aXswmh+8PW7gH.Qa.JUZJZdQo0PjZPTusCt5d3Sw9dnE9ZADzYy8WcW6wY2z
MsmjwIFEWIbNcTzypsnZbTaZuN58jaqd1C8MVJwnKnBJn.fyPMEJEiHXLTXA
nRQ9BjAz0d5a0l1i6.nS3cIEi1kiFarBZkdx.20dlua6Yu1jVjZMAwKNmR04
8uRnZYO8sWC6AtZbooTz6RU4Vj.88Fc+jVq83GV65wmHOvQeFTn+j1KUnfIe
6xHNx7Jsli9fbbujb0dfO58uXOPBfwTHtTH4s1aE3RGL3aFCpsWatd.AFY.I
9uuJZYeMxllqOcW3gFSc6.OW5FJKboHq7YBY6o5VcALw0jr50IeIl7TTxlJF
4KQ6pRk+auaKrIJCeBapYBh1ZbcbRosQQQUZT0XSbPfurnMahWWIvPuDWLZX
JoyMiXuITE7GdKa4o8QeId08Qoo6Rd3PZ7wOsu.mK6yBDJWeHFCPs3xG6+hi
ij8OucWZ23cimsDMnsbuCaRR2m9sblRzxC7Bxet684LmZe68wvLexywwKnDT
l6Is9hRvQRhycu7brUqEM93w+JzAAiJMHndYAvJ6IdTvKqjrgOlWo46tMwna
2Io0RFUKyRHVdgjABUyUzia6jqNKHB5sXKj63ZKkIMU63YgQPLTTBgaNtMnG
RGjKuA6ebLxu7SN.b9Ec373lTbnMLdGMWvj2v3XbXDPpQOyp0NPsrIVGZOiC
lQNYNcUh9+3eXQ51E+weeu6.Oq.Agpvw3JKQfdbaMbioLeuPg1vNJqN.5KXY
bPa.j3nUYr3en2MBjgXZ3mA24NE9C5owwyMiywipIhG+grIQGm16Z2ScJlqz
WwDobpXxeuiI+g9lFYJFwpkbATlXwqZZjOxbXH1+FBqhHZvpsl5jqeiKP4ib
diNecKKm6bSoRNS.Hm3pAL9i.kicm.GLqXjNAAfa4yYC0aWKC.Ai8ia4xx3h
FiCYCyMX4b+LxmLkgIxJwNipbqdjF7GVs0PMxcfpG0jJL9RAZoWPMBgloTtM
ACAuDnkZFMamhVIzYt7dOvHlnrof3DvckjZgCwbMQgxATn7i8JvIlVQ.vxMh
xsObXQI9DhRfEXNPRiZdbBSVtvJXNv5RQIAZhEP2kkB5QGHCKPASGPwoN8xN
jRRQ6N.JFg1MPEPcBUhdT2itUaMRpPwqbFwfJuLVTgFi5JzLy352BEwkoW7Q
q79VcEEW2NcvFkg1xrHFIPsTbgC0.oTKtFAL2YQETORjfJbomnMs+eCMsraK
Z6ZwuMZYZxWhW.8ddboIRNFkRs1M4yXLZtsFHUJUt8ytqSc.vixL2YYiTicH
pc6cee9AhKGjnifZk8nWerrimNAUovnTKyZEGCww8CnLn+StCtrt8AVxlLm7
6KPTogfN8YAslUUWYFS5NDsLLJTf.F7hZhF+woFA3V2VcuGdElHds+ftAbgL
sl68LlKDUc04TAmQjLPUa6a2ECJLSEC1mfqEkQMTzsMtlSEcviRBXj3xXCNC
msmj6gKmxDLzmq5tCqnFoVXvqNEpoI.0OiFn5K5aWiP51Bvxp7h5hKQ91bLL
rBzJfownzYXev0LOuGrO61j8c8O56A6OQGsHutH9vx0IqRh176xNiR6FIbti
9FjnsbsYzCoA.EWz4LR8wa99ytd4DeLwcBCuaeylZ+C2E85q0tbyJM9RzeMu
e2MUkpCGF4W5X061E+kjxu+wqFsCQsTDxNrKurfeUINVOvW1tJd2lCIUSgYy
eECorYJW4D2+Zzx7uraBs710hjOe+OkejLnxyPuvTSmpqo8Wuc4OkeXEWN3t
a6qwaR1bZe9Wc6UwOFcXc58mbLHz58erXD15MqJI5+wNWQMKejm1krZ6F2fn
wLg6xkjy4JT9tKpNyj8DahdskuLJtfvRG2bOxjG1+PzN2DUQpbJOXBtKc610
MuU02ac7ioE290jMaNAES29Z22bWxSO2y28gs3Meou2c1c1e+gM428dW89u2
U87lOWz50EKma95+ZzljWhRiy1zyN1kVcy7zY879k61tdcC9M+Neok6rBkwW
F+yIqReNiP0EFvGO40Rgn6plkWk7T79zlWKM5o8MuRUY2qcoCOTrF99z3Wdc
MxEMefFms30WvVWwWiqehBvbsFUqF6p0vyVcwyawDNs7OqDGOMgpx5uv17ao
MeWpcmR2upyqYzXyp3uVSQQU2.T6vo3hgfF1.NwNv1etVb5cmcLVlQNc9l2F
NUOuO556rqi5z5WWV.eePE1YvDtIeuPl2zyhvfIzuuwDlISNInXh86bHI2fc
PgDyDCIYzyykGLUOZTuP9taktzt46NT59+tvcxUDuKdyx3VU.yemALlwDb.S
DP.6+Ywuqe.iMl.V8ds7OcFjDxKSbPQRHfH4e5bhdssV8niwtbo2gGQYfg69
sCw62dX2xR9sP25hlvB5gWZxlpvD9wi1pOdDRclY3KcPXtEFDReGDzQbPH7b
PXGwwPIJedjPNliB5sfPguPgoywPwEKC2uninyiesm1g9hhyBC5+gn0EQQUo
jrkvvt9tJ95xgVKsg1aaqiAt6VT2jYO7s+VEJ7bt9ljyea8ABOmat0SYpFTm
N8G97kxsy4KcNeoy4KcNeoy4KcNeoy4KcNeoy4KcNeoy4KcNeoy4KcNeoy4K
cNeoy4K8FKeoGV8Jp0M1sA.rTpn2DHZHBoxHLPUCQ+YIQ5ZmXCWy3BgUCCXC
QxESy4PPSHf2WlD4Y+F8x8qhcZ4u9lPWCcMLOkYjVD.n5gf.vs.BvtzMCQHg
.l8V.B5auvvc+17iBFMWqsiBDnlHHXyqQK+o7sGc9+22dcmSn.tFfJE4G3l5
N1nH.EtlyVtS9Pq3zkbtkHd+ZSapQSr5FUWXD5Ra3FsI0ona5hwm642jbu6H
BCm5E3hhi+tccD3dwsd4lrVoSJnIPD9BN0wQkwbAmlK3zbAmlK3zbAmlK3zb
AmlK3zbAmlK3zbAmlK3zbAmlK3zbAmlK3zbAmlvBNcIYYFnZKQY0JNb728Dm
bD1LdIX9hNsYESDDY.i62RZMOTre+fHyDAQMJWCs2yJDEAXtypJp0VdjVExx
0LQ0r6LYh9smdsiPdnMzaxrvK3pSOjhCOuquM2rKnZfwedWqt0q+ffxOUDH7
UePOW8gdq9fhlGNO2NW9g4xOLW9g4xOLW9g4xOLW9g4xOLW9g4xOLW9g4xOL
W9g4xOLW9g4xObiV9AowRXbgBrfnLy5sbxxOdoWWo+NnBDbt8jTN9NiRB6Uh
RYurlFmxAsSW0U.cu0XTCCAcrTiWas1ald7lRJOnjE8regn5gdNY0phLMMLZ
K7gK4MdnfQatO7spKZWJmsaUdJWoi+fgI8cvveGFLBeGLr2gAC22Ay.kYXdL
X.lNDKKcjB7hTv.IkwmUgPHz0X7YxTXCAk.e3IUHnD0CJ4JnyB1PojGRDgPz
yKSOgPtKGSNKcFJ+ns9nBgFBJo8UVXnXmV4KkFLOI8YkDzP1LPVE8izzlJUB
jpdsOJEUgX4l1GEHFc6.LL9jV0A9Nv4VeXZ6TQYPOFxTJeH8Id9GHlNizmSY
aloLXT35yZ2ROZj9rZIUSFWy0S1bMWMJj1GG7LxQAv8JPgQwNkh4KoGpKfJu
rUHZepU7NP5NrUveGHMzNoYiOo01QwZgWjVLFKi8wuKQHbXNKVOuLKEbdLiz
dYVZbHsWlklFRK3igBZu.bAazH84DyDvnPZehivLFpt7hxfcxXZfMJd5J7JG
ShPn7h4KkFZz9BvWJMTGLDdEQnZLr24EoAXbDZ7sFHSBkqxnbfUP3MoCtBBt
0KZGh7Ww8JclgHmybsuTZn5C3JeozP0GvE95D5f4IupG23TKPtOZxKixaXTB
7MdhAim9Pn.PGl02fyFLkT9FA5fojzW6APvkEYdaKhEdZy8k17vSau7wI.KA
YTeCAJHTxqHdBBk7J.mgRIv3adMCtSCfw27ZNNj9r9qLJ4hwK.G3iFoYm0Ks
QizmuzevXDHB3UUCBQ5u.kuhUPHnjWRQAgRdIzLXJ4U4gYiRdz7i1cs1Xfxm
dE3VHhcB3TeqrwvIkuL0fEaX9naIHvGyGMIiRxTNMt8tIM7tvj.aTpkO3ULA
V83.wdo8lMN1GY9o7aTxjumDmNRS4Bu47gu.1KsRPP7Ef4WykFDksdEr0oHc
vl.8h3zQRunulYFZly.vqbbFFu67ycYdPjS8x8C63r12OWefwIr.+jc.aPlP
Y93EMXCxDpWsZNHBBs7aseP79BndlQoAOaQ8ZoNMDsPe0awCSRCVEFU6MsFN
F5mOE5ffg9XVWNJUZzOZyGm.G8h14lIfPWswSSVSOaosAKK4aSx0jP4aZuSN
Wrbz3jyCqSNKrd64fU2mAVmd9WksWXyOJfNYiBd7Dj5vpjs+WYmiS2+eFu4P
9NRr7zlpIR7vSOlrd8xsq29liArxsB4c42s5H2p7Y+wETByJPOIPrivAtlox
9D9Aorl7Pw2AJ+RBovRYtGUnXZgL6SFFWxcehdxWicjVTvlSAp0PE4eBuDfz
p9WKZySEmaU5ZG9Ruta6qa2Uc.dQ31pm+P51m1EsJo3DFf1Xm99oBAoc3cO8
DX5tWP.Mo76TJOzwgR1G+me7+CTIYVA.
-----------end_max5_patcher-----------
</code></pre>
view raw P2 Ken P hosted with ❤ by GitHub