Project 1 – Willow Hong

For this project I explored the connection between movement and music, and essentially created my own theremin, which is an instrument that  controls the frequency and amplitude of sounds using hand movement.

I used Leap Motion sensor to read the absolute position of my left hand along the z (vertical) axis, and the range of that data stream is translated into 8 MIDI notes from C3 to C4. The velocities of my right ring finger are normalized and then mapped onto the computer system’s volume scale, so the faster my right hand moves, the higher the volume will be.

I also added a slowly rotating noise point cloud to create some visual atmosphere. The note change will be reflected in the color change of the visualization, and volume change will alter the cloud size.

Project 1 – Adrienne

For my project I wanted to see what I could do by modifying mesh points in a 3D model. This for me was an exploration of how Max reads 3D models, and I ended up with a crashing patch that took in a model, and distorted it using a .mov file. It used the normals of the model to extrude the vertices, and each point was being modified in accordance to the video. I eventually tried to use a pfft to get it to react to sound. It created really cool textures, but unfortunately I can’t get the patch to open. Below are screenshots of what I had.

I based this off of the duck distortion patch and this one I found on the internet:

https://www.dropbox.com/s/40nyha7vm2mqheb/extrusion.maxpat?dl=0

Project 1 – Arnav Luthra

For this project I tried making reactive visuals for rave music. There are two main components, the video of a 3D model dancing and an actual 3D model jumping around in space. The video is separated into R, G and B planes which are then moved around in sync with the music. The 3D model is distorted by a jit.catch on the signal and is bounced around on beat to the incoming audio.
The beat/bpm detection was done by an external object that was rather inaccurate but still created some cool visual effects.

One thing I really wanted to add to this project that would have made it a lot more interesting is having it fade in and out of these separate visual components based on the activity of the low-end. Since rave music is largely driven by kick drums, moments in a song where the kick drum or bass is absent are generally tense and dramatic. Being able to have the visuals correspond to this moment would have been really key. I tried to start this in measuring the difference in peakamps on beat with a low pass filtered signal but couldn’t find a meaningful delta. I then tried to simply map the amplitude of the filtered signal to the alpha channels of the layers but the 3D model would respond to a change in alpha values.

Overall, I think I could greatly improve on this project by more accurately measuring beats/bpm and getting the triggering/fading working. Below is a low-res recording of the visuals as well as the pasted patch.

 

<pre><code>
———-begin_max5_patcher———-
6063.3oc6cs0iiiak94N.4+ffQ+PR1pbyKhRT4gEU1cFjEXyrAHSxtOzUPAY
aUtT2xRZjjqK8fs+sGdQ2sjLsDksmKSRWkKcwj7iGdtwy4ve729ad2hUQu5k
tv3OZ7Qi28tejck2ItF+Juq3BuawN2WWG3lJdvE67RSc25s3l7al48Zl3Ffk
kWKb+N+v.uLwafJtZZ1aAdhGs7A82H96nUe5VGX8WOZeVw6CKtbra15m7C29
Ph25LYmFYiVBtwvjZw+EAv+IhcIi+YwKI+hxdK1S9FKVX7OE25++29a3+l8q
aTdrG58Bqqd3PO84G+JqcIcC.X0..JsG.vb..vTLjwPALPrTX7m5uMzMXwMC
9oIfQ8SeLIxCp8HHOfTIt.oWTxi+cCvRmoM5IiYwADKWbH9Elpvn2OLaN..u
WiSLbWk96d+iPiaMd+ine+jfC6o.Gll7eAANyL0PuKDfKcrLwXqx6D3G5sNZ
eXVCHXT.i4X.FGIST.nZUB15hfK1TapyLfKjoPvblvk9V7D649Y2cwecRqXL
sFOgAlHXcXYqvBlGChbytdQAywSFbUfBqeacfmApaP.pHHf5ADPJ.BPhTjhJ
7NuYdVOv5Td9O68UC28a7ilFT.FA8.VPAXgDHA0QcUtlAr3S9YKedchADQAF
NVfIo.JlNBBCnsDNnB1iRFFGANXc5G14lk3+5TIQ5UTxKI9YdFItO6gVtK5Y
CLv3SwdaOByiGiByR8+hneJn2UB1fUBr3eAgt6jO6eJwmqS8oyuwDuDZYYaR
YvpIbIxFaQQLMVLkzZ3yuj4zrn3YA6PfYD6.TIe6YF0FZs41fktouEtNwycy
j3TAGCSaHSaEqlngC75XAJDR3TzSylP3XbY.lHXXAMgJax7rHEyHXU2CdEW5
LFE53bo43NRNpsuTtKo2wtpxs6YrCFbdGyG64K.pI1V6COlxeaV4FtcRCQ7n
HsECQIMskJd6PzMmkY3MItuLI.vgLhIYhbwsoU9ulwY4b16O6uwKJNvMzyXc
TPTh3ioF2sJvKbyCdgtrOX.MtaiWb1SE+Mn396h13YPMbLtS7xrGj++.KgGA
53BKezcsWC7ngHXjphfcPmtH3gD5PjXODJ0SlXZeVk3bFrZvYLVMv0PWJ.Fe
EX2PJi3SGPAcLbhk1Phj+xdNWilXrxiYH9TDyRGEiXG7RJFiHL01cHB+MZBu
PBa+fADLM0rHiwqIlDGgpF.oJGX6Km2m0.BLJh.JpjH3mGvfoyXfAH7bSHrZ
eVVT3zXrM0U8NBUwPh097edATBaSx9vOyz0n2ocU8KDdTq+MqQ8aJPCayKG0
u1.Cznbjt0R7OGAiw4+T7UEXD6xfhkx++jPCzXjShspQZ.gTAZ.tTaMYbTpe
leTnw6gFuGY7d7zBoiQYCqSM7fY7fP1A5h4kl9siUU2COFpBH1ATBCNPKgY8
lyLHvsnM9E+vMQGyx85COxXbLI.UW5.1TnY.TXSD07hrqR7A+ZdO8qF28XBy
HXtkzFHhkwcBizwJXQ9oa7MwQuFeCwLpDDfJoarEZdg.jqBKv4HrrELD.sAz
PrOoXj.lEP89TuMoYa72IbYh3SoYtIYLYUfhKvLck8vDCxrLi.sz8LhkS4LB
D3HVJaZgtZlRhhMti8u+fwcO6FvHVNZX7MRb0dVwUh0RatjBL3pAXSC7Y7Mt
S7qG1GyonkelweMz.NKTun4k5EAWhDbTvWG9za5RmMGSXERQ1kRurrcVRgXS
n0YPBsprVm1lqLlv.nNjXyP.K1+Qsq1poyEohPLtWPvpfn0eVAFYJ6D85Kxn
cuH66hBcWGcrf3ccTfb1foCzf9K1px8QTF94v2IW1hOKG6kV…yPW9tc6v9
O6Av1.+zLApdSoxSEOaRzKxtx03JS7XBYOnIDtzgo3rvJJqkNLfhAyWEqLSW
6FvzirToGNAvQECbjkp3QwSGSWZliQLSMsIXDV3qJ5Yeo5iwoa26e91rKryH
V5VBlbCAZ3OftXDxH0JLbylVgtTkBez4RPIqk7hYOkAS+4YIPdHT8p3gkSkA
hVTbo7j7.LCOqv35ncLqLx5X0bjenQrWR19jUdaLd8suX7he1SFQI9a8CYpO
mlY3xLOILJYG6uj6E7oDNykz7q1uZU.yFTIAmh9awpxUCx2uwWo5aPmcMOzQ
skNxVZbNoAvKaj3He4PhQgOZH2MKK4nLBNxn+nBL3yiO7h+lrm3WlTiqQWNv
FRp.gZxegDrZxRJtGenIGi6xVneZR9V4JnD4DdL5u7.PHKxXqW3nn8NBLaoG
hLGmJFkTrCOr8jZLJ2oTd5pLSxi2GF6t9yb6w9z9cwFDl8uO9XpW1Q8wyQ.F
6QvmyFW49WGjvamHD4m8xgslh3hBwvCo9rMwt1lLH2FtKpHXgyU4jcnbxNbe
NvRUl8NiQrJ.UQtIcOnZ7yNOtLo8JyIsdzFLlnWxAVo9lCoT8syMJoA4g1iI
5Xg1U66.0Rt6Kpl2jGHviAEd7Ezhvbaw7DAddgSKSBGSbUawDNUBRThXyYbF
C4Qi1vKIGDJPAFuQ+.um8RR8iBqOwwf333ZW+c0eIN38oHw2k8MUWyOTdMb0
0R7d1u3qvr5xtIrwaFavtOQhauVoWYN22jPFsYoiCjSmEcsJX5VjLsjwPKYD
A5jm4k7Dpqbv+tEda7y3.7pshffT9xfkN2T6GvFuwpsb263sotjHFdG6E5GF
m3wTIJyMKejUc+MdO5tOH6gdDY07AZKnq4c6Vf06VrMweSTHuizb9he8hlrH
.33+r1XR7Hgtwc85LJUFp12cSYC18oqbS3Sm4JjgJuaVTTPy6U8lAdOlke+X
+vv1.ZVT7.2kYyySC81qhX2c2fe8hak9.isu31OvVxm8Pp6ysP9L2ffbl.sZ
gWcC84bYx7kyGHP0ckwZ6SoqShBBZNtk254tt0F1hh0dkFI.ZPdvdA+3BBqE
US6a725kl05hYtaSacoC4Ewt19U4K+eHyaGS68r1OQihzPik50Yc17FCxBsc
7Oj3tyfYbBevB.3FOUmdtquwRuomw.Bg5OSdjAJF.J4YbnuoF1IduqRXSAGp
Qidsr8pk8WtrIMOin8ILy98S8LX2wXeJazXj8jmAmcYPJ+hb9oFqihR13Gxl
jSa700v9Lbuy.vSbF.z3NGZu1.1rcjjBFBA0TNfTE+t5D3GhrUh68SrhNMnh
NAZUnLZtgVxji04BRpNDh8GzFXYOcvJegMxQZx6UGXk9h+WLvlKz0RQqovKT
57Mnzw.D3UJ8k.xd8sunMLiLALSls9EPF4JEx7qEH.SWd6jgKYp6zQLTb0fV
HsgVnoyC6JGt92zF+d7jorP13qZ18rNvPqDOQFWlKFu9UR7BKiah5YKQO3QM
SH4JQ1mgBhVh+.8fToLEXWWf94JDYzZVhY.TFW20bCf9Xox.FmjxembWwV0t
BiN0.NqcEKU6JzYuqPNETYdmfvp1ULm8tB5Tlfl2tB29W0WBMuDKJ2U5f.mY
wpz2jfqgNHYfNHrWdjx+n3p5MU2ktzkwheZtqGOlTosl65cLEgQOcNKsAyef
jXao6.Igd4Bjjg14BoyhJCGrIu2qpiv1yWn5zHzOy8YG9pIuC7CeL5TB6Z0g
TpdKiQMh9IRwtlbgpiQYFqLB3+adftQjALCsw+D6pc31RZzgkJHmrfsHWxW9
44qrgryK8Ii6b2mEwHM8WKxtkD2WjEDDFsJqGDbXYDo6Y.mYfIAEn4pBRsoE
Hf8G7D9xw5pfAQxwjfOUrDpWtCMHwkk0277m8hUjyD6xgwc7glwl8hzdQDsy
fkvx+cGe2rM9N1k+KQurj8sYbWItGyM+V72UALvDCGK5npXZUQ+gC.Iy5Ryq
hviItd4E5VQUGZZkzhQnsoMFIceCVtCPcDmZ+7LRFHxhHHDIb8tkrnqaRA+Z
PI7qAkvuFTBi0erspBAsJPjWE6rqY91aSu3NuVD+nAtuISmqZO05.+3m73j8
hADzdIPWtwFOzFvgUC5JrawJOFvnGE8ZIKk8uM9q4z2tIusnkGhbybqAd0QO
IvzfBs8SjKVpjs4+4e7C+iTlrnOj9p2N5G9lnWB4kxwzO7mih1X7Mtgq4A0w
29pHvCVtKtgW9K919renD.2E8ruG+Jsepfnn31SFxDCLLiIi3ANmy5tM6vts
.zXpLUDHzej67vaN7QdnXnwP08NXB..nNlKN7Y4NyQ98bSWeU6C8+g84eQfC
uMe.IxR+deBuvs4tBj0SX5trgyf6vdw9jZN6qiuljbf4iMCGvR3mW1FR7hiF
nm7XAIAnquAt8X0FIcAEhBTPEUdOeIBi5FDvDYMSQe4Fi9FNkwDTmeQBUBqn
BXJ7rcUW.KyxxrnCBT2Jlt965e1kMhSSVO3HthTu+lPF+SMnHMMwBJRzhtgn
iLUx60BqLJBs8tlK13F2+jYyYxa3++tW.TTVbFfzYsKSZ4CUpSws34fGhMk6
kD26HRtp9gbrZPxGOIWlNu+yQACrJo4j4.CZN99Pp255KXZ7H0Ds0xO6su64
XGb+fgo1TYvYJQqCDJqEEHryIo0PsxakNwrA0xhYr6RapE0j1ezHhzlhXSIL
BPVx7PTBpcbXrbkDCT4t8fo2CudhAQDiaE+peZSqSToroD3JHY.EfkVvBMwW
vPWYPBy2CMv.ssdFNsf8QVLoIVKgXrIB2Ywb85f7iuvsVYrq+RYmp.2PKYQJ
BbTmJfSYBtaN+fWYg.TezclSgtSFNwDrYI7QruVWu1pvApuktnoHJFK8KtIC
IKfPmq0PAcJ0SdXi5IOuDxWVO44ENMdLBnXrs0oWFGXqOFUzOOfyJOctLV.Y
0CTdZVPbN7Px4TbY+OElsA8MaCjy25d1Fcxy1j4a5l.E5Ahk6JNoiB6yuflt
ES3W9o6Yb0soL2QwzeRMcuyKKIRiBAMmhkS4mvBT3Ik7H0KJ4+TUq+oj+HxC
VZLSE1ewoz+gSAmvB17CjaD3mF572vdcok5F50dczTrAHujkPvkn4k0l8gfR
gCi7DZgLvZXxIhdCs6clJw4ielkVfd1pZ.E2Yb0JZhyju4NuViVU76FSZ7.Z
aI0u.MF0DnAeuUSjxE0XTAJnszoa5ZnH8IIt7mpofRisBOOO8OreFtw60gRP
fqETbR9KhoiLjWdlOQf7jAQzYNSzbTNoqLm+D.S4zhCSl8DLxT47tBM+Y6Dm
2nhoXj072YTsu3XMhzI5r1Co4zzm8LxhqtfhK6.yeFFRNUpqNwKz0QWjbgH5
Ngt3EJM.wJm+lPz7SzoLKstVqbdlQOst3EgOxIlQtWucvtj2dVlkQpq0A5BA
hp2EQlWJTz5TYPOmcFkU..N+cFn50Rf4WTOTYjAM+JRBUl4.7RQVehcwKgH.
n5R0GtXUTKQ9KSyI2m817fLYTdfW5Y8WsOSZ7YiLP5DSThsAQqbCxSBhxsyZ
3rlnJ4Jld4FnHV++5zNfP5qF.SF7z4SleWxM7HuB+0vQB8dTkeS2epuf3uQ.
7WNScPf6WizqU.6e+8hH1+96Egr+82+MQq2y8dA6Jeez9fTOuOaTFG+2e+5H
dn6m4c+8+EO+Ug9e41+ZHmN91e2+0+3+4a91+1eG.f+9a++91+iaQ.n8s+8+
129+9m99+a+u+96A3aCxekX+u7E2k6hq6wqlg9u3bUuUn+uH0KvacifH9l1A
naYpATyqQ8lV.+XiEwxyeBdt5DUb9Acfmeh8YS0oO4+XV2gG7heXuafe1akN
XKkGC6MdhzXOuM871OxOzKB666lSO2UDKK6UqiRRZfNsYRIGer49sYOsqmP3
eQZv9jZwxd6aWKP46ZrItV19PeteEE68r4AivffnWjbFpA0ciCGYHIhd8rDO
9o00wGx0nYXu45OmtPEVjWxCPa7Xp93DjbYQdwB6Rd3YmXrJd2s6Rm1YX0XN
6WyyxVnLiorfy7IWUVz1sUbpF0bMYLy01Thb24jy0fhedzC.5puSdBxj4kjG
nLUJwn0iDYd577PRDm6qw6gyxYiIAo2BDPAzJK6kT5E7rOaavxmbC2bTBrQd
Lhn4pTQAvIChPakV5Mi0ID4YwbyPEaSzdFs9p8O9nWRYnhU7mmuCvEhlKhP1
HQ4jljW1CU5HKdNKSK7hdyJCuD2zYhxcD0DD7fGIE1xRpRsBSphvWwukC1Y.
K+AY3vgLtykoOzy8VGalHWTKMyE0BWmKZmU6hyl1H4rRS7BYVq2jgPYvN.jG
R1howGphPTv4jsfEVy0VLIYsoL7OySaoy.aAMn.r4XN+RsnfZ59cQU.NcPEf
U0J.6QTlYLwxYarTAX7LVOCYCRO2oU2FwViXHleHJjeHWXpigXuJvdXNdpxo
AnhkQHjyXLyKulPHMyinzwx1kcwLZLGS3lxrOJ+XO5rrXVGC0wv2xTFsQmyg
ZeKoW+15.OCzzvfwbtJWfAR2lpzgo7ro8p+NujIUdvPnwi.H7A0t7dQ.Q0Oc
tfgMtq+5jPAHXL0j27S8LaPmUv8Kzx5wv.i6aFd0bkXUc.HdIWZGEujKt1Oa
+FudlXMUj7dDT2EG7Qxf1kZdBphVK7wqvC460LTIywm1avVAJcXnQ1L7O5qj
Y6TaS05bBQ8FTk1iBzV6QopzflM2Y+1ap4YoKX1SW.pit.QIXudYjehMHVoF
TeSyHUZOar9ZPnRMn9V3PUZkpCReMnJsGFOmKbTpGf5oGfNa8.vLtx09byvT
zf3iRXS0aChNZCZq2FDdzFb1mUOZWvxdFWbYqDsssk9fckjA4.ahL5cLqlXP
xbNyapDrSzljXakjLZoOAU1JIYjpOAU1JIYzViMnJsGRayfVmjHfYgpUstfE
cF4WYYqLcrlfcxYlrxRsUpP80fJsR0YNYGpVWvZN0xTzEPp1EzQCBNkwrNZP
kr+jns1inD2BzbZysZcA3bRZSTSAK6KdWvbNYaSHJquilH9TRAKQ1SfzSChU
tA0ifIhZxIzmIgDkXRSzmjPSGkgTM0fTkk0Cmo0pp0EZkmf5cspo8ovtPGMn
RRlr02RGSk3FoOlQlJwLhnOq8LUiYjFmBQJ4LEy4jrUot.gLi9ITstPu6x.T
WcAk2kAczfpYmOcNgcnJv972ENNJzG8O97gBydWPIWhLaLATBDl8dvwM4XNc
SiZffnKLapwnjwsX8I.BqjHcS8YMM1TUcHziHcrRhzI5iwNVMII5yiwX03dn
woP0h5AM1fJom6LJlRoNvbFABJ0AZcf2qW9yH0bau97aORIqaf5aiMQDkGgZ
pAUhUn9XTfvJIj2VuM3wQT8YvHRIdu34zogp0EPNy39zhN2JQnlDu4LRSTad
eNMfDcJBgKdpc9apePzgAP4gUkLsDjmrBM+KnLFeMwNk+0LQEAcNyTQPkjv.
0WHU.MOyQuIDoLjpGmqCU1vRbewGaqCHZQS09fgt8gBcGGHzCbXPevAAcd0k
QFCwsiM2xbZy8wWeyiWPHxik35UN0ZXBO5kEYiWQMbf.fNVvaZ7oV0BjFYe2
GaEt00SrtOVjZcUnWdmIycUqNhWfGu60nuXRfN1N2z4mZzgZ7VV1ND.ULBHT
HVL..VPjUqWpbn+feHeNrrvbPYuEfbSmeBVOR4yGLE41TyATSPpImnUaezOH
nrW2n9xTDf1K1l3twmOiUVAeDu.rnah.lP.5FYAgG5PkCTDl+oFE3D46gJwG
pXDU+Wc73kshCmLf+jXfCEXJ+jjxn4q4FtM+fz1t9Q.cbRD+fxr3nEeI1o5M
1mEUNJE2z14fJnTODTGYVTjkKroMH0BaWmFt8b29fL+z.+MkmJ7+3gzT89kU
Me1DyN1LSqNQraBup.0Nm.jctRIvMYxUtP+ENeCicQgQow7zjM+cyO50UXUl
MECME8VaG1.T7IpIjIX8fQ43oZOcxo5D6vbDu5G8RcSsP1lxkr1.BkJ+D0DO
GzqGiX86hBcWGsnGFU.nEvQvTC.gThjUK.iIlCSd4XaynptofrzwgfsvpxbC
bSseLJhQvPDi6P.HAPP.2gIDcWutMcHCA.NRhODxT9IL.vIMaLz5lFF3.EDS
T1BMnbVmMmaQutng4yVNN1lEexAdDpYH1FHHLnHaKrYNaHJx4piZl0qnBdGH
lrxbPg.wsW2c.wLarXJDR6XSIDa4mPHH57SQyeS1u9WvO87WS
———–end_max5_patcher———–
</code></pre>

Project 1 – Kun Peng

In this project, I explored the harmony and intervals in midi files and visualized these qualities. Each midi note is represented by a cube, which is pressed down/pulled up when the note is turned on/off. A noise value relevant to the dissonance of the chord currently held is generated and applied to the position attribute of the cubes. The rendered mesh object changes its color mode when there is a root-note change detected in the chord. Unfortunately, the visualization is pretty crude and I’m still very far from what I wanted to do. I had some troubles trying to manipulate each cube independently in a more creative way under jit.gl.mult context, for example, applying a glow effect on a specific cube when a note is turned on. My major plan is to improve my methods of generating the cubes so that ultimately they can be manipulated independently.

This part of the patch evaluates the intervals in a currently-held chord and assigns a dissonance value to it. The current evaluation is subjective and cannot accommodate inversions or the subtle differences in complex chords. For future work, I will integrate the material discussed in this note and produce more robust evaluations. http://www.oneonta.edu/faculty/legnamo/theorist/density/density.html

This part of the patch generates the noise value and applies it to the position matrix.

 

A short demonstration of the patch(I know the visualization still looks too simple; I will work on more ways to integrate the signal processed into the rendered objects).

 

Project 1- Alex

I like taking digital mediums and making them more accessible for untrained artists. I think that everyone should be able to mess around with computers and make cool stuff. For this project, I decided to make a physical interface for the media lab control patch Jesse gave us.

insert photo of the arduino I forgot to take here

Arduino control code

// constants won’t change. They’re used here to set pin numbers:
const int buttonOnePin = 3; // the number of the redlight pushbutton pin
const int ledOnePin = 9; // the number of the LED pin
const int buttonTwoPin = 4; // the number of the yellowlight pushbutton pin
const int ledTwoPin = 10; // the number of the LED pin
const int buttonThreePin = 5; // the number of the bluelight pushbutton pin
const int ledThreePin = 8; // the number of the LED pin

// variable buttons
int buttonOneState = 0; // variable for reading the pushbutton status
int buttonTwoState = 0;
int buttonThreeState = 0;

//variables knob
const int potPin = 3; // select the input pin for the potentiometer
int potVal = 0; // variable to store the value coming from the sensor
int mappedPotVal = 0;

//variables slider
const int slidePin = 0;
int slideVal = 0;
int mappedSlideVal = 0;

//variables for ir detector
const int irPin = 5;
int irVal = 0;
int mappedIrVal = 0;

//joystick
const int swPin = 2; // digital pin connected to switch output
const int xPin = 2; // analog pin connected to X output
const int yPin = 1; // analog pin connected to Y output

int xState = 0;
int yState = 0;
int mappedXState = 0;
int mappedYState = 0;

void setup() {
Serial.begin(9600);
// initialize the LED pin as an output:
pinMode(ledOnePin, OUTPUT);
pinMode(ledTwoPin, OUTPUT);
pinMode(ledThreePin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonOnePin, INPUT);
pinMode(buttonTwoPin, INPUT);
pinMode(buttonThreePin, INPUT);

}

void loop() {
// read the state of the pushbutton value:
buttonOneState = digitalRead(buttonOnePin);
buttonTwoState = digitalRead(buttonTwoPin);
buttonThreeState = digitalRead(buttonThreePin);

// check if the redlight pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonOneState == HIGH) {
// turn LED on:
digitalWrite(ledOnePin, HIGH);
} else {
// turn LED off:
digitalWrite(ledOnePin, LOW);
}

// check if the yellowlight pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonTwoState == HIGH) {
// turn LED on:
digitalWrite(ledTwoPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledTwoPin, LOW);
}

// check if the bluelight pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonThreeState == HIGH) {
// turn LED on:
digitalWrite(ledThreePin, HIGH);
} else {
// turn LED off:
digitalWrite(ledThreePin, LOW);
}

//check the turn potentiometer values, map them to the bay range
potVal = analogRead(potPin); // read the value from the potentiometer
mappedPotVal = map(potVal, 0, 1023, 1, 9);

//check the slide potentiometer values, map them to the saturation range
slideVal = analogRead(slidePin);
mappedSlideVal = map(slideVal, 0, 1023, 0, 255);

//check switch
xState = analogRead(xPin);
yState = analogRead(yPin);
mappedXState = map(xState, 0, 1023, 0, 255);
mappedYState = map(yState, 0, 1023, 0, 255);

//check the ir values
irVal = analogRead(irPin);
mappedIrVal = map(irVal, 0, 550, 0, 8);

Serial.print(buttonOneState);
Serial.print(” “);
Serial.print(buttonTwoState);
Serial.print(” “);
Serial.print(buttonThreeState);
Serial.print(” “);
Serial.print(mappedPotVal);
Serial.print(” “);
Serial.print(mappedSlideVal);
Serial.print(” “);
Serial.print(mappedXState);
Serial.print(” “);
Serial.print(mappedYState);
Serial.print(” “);
Serial.println(mappedIrVal);
delay(50);
}

Control patch

bpatcher edits

video of working is too big sorry

heres the gist

Project 1 – Kevin Darr

I decided to make use of the MIDI Fighter 3D midi controller with built in accelerometer to control the lighting system in the Media Lab. The Fighter is being utilized as a drum machine which has kick, snare, hi-hats, crash, and a series of bass notes. The accelerometer channels control the lights as well as some digital effects on the drum machine, including distortion and reverb. When sent MIDI notes on the correct channel, the MIDI Fighter lights up on the appropriate button with color dependent on the velocity of the note. I used Ableton Live to send these MIDI messages, as well as play the samples for the drum machine. To get control and MIDI messages into Max, I used ctlin and notein objects. When tilted left or right, the MIDI Fighter as well as the overhead lights turn red based on how far the device is tilted. The same is true for forwards and backwards, but blue instead of red. The snare drum triggers a flash from the UV LEDs, and the bass notes trigger a green flash.

 

I had trouble screen capturing audio and video at the same time, so here is a short audio example of a drumbeat I played on the MIDI Fighter.

 

And here is a video of what the patch looks like, with added pwindows to imagine howthe lights in the media lab would react.

Continue reading

Project 1- Tanushree Mediratta

I took Project 1 as an opportunity to explore controlling systems using mere hand gestures. I used a leap motion device to detect my hand gestures and movements to control the different aspects of granular synthesis of an audio signal. While one hand controlled the pitch rate, grain size and speed of the synthesis, the motion of the other hand was used to choose an audio file on which the synthesis was done.

Here is a short video:

I created the main patch entirely from scratch. I used a modified sugarSynth patch as a sub-patch and also used the leap-motion patches for collecting and routing data.

This is the gist of my main patch:

This is the modified sugarSynth patch:

I modified the visual subpath and fingers subpath in the leap motion patch:

  1. Visual sub patch
  1. Fingers sub patch

 

 

 

Project 1 – Matthew Xie

For Project 1, I created a self-generated melody & drone patch.

First off, a wav file of single piano notes played consecutively is analyzed. While Max randomly selects portions of the wav file to play in snippets, the frequency of the audio being played is analyzed and triggers the 1st higher-pitched drones in intervals. Meanwhile, the 2nd drone patch can be triggered by using the keyboard as a midi-keyboard.

The drone is achieved via subtractive synthesis. The pink noise generator is send through filters, only letting pass certain frequency bands. Then, the subtractive synthesis is done with a handful of inline reson~ objects.

The ‘analyzer~’ object is referenced from the maxobject.com website.

Delay is added to all sound effects. Piano melody can also go through a noise gate at will. The speed of the piano sampling can also be manipulated, which will immediately also effect the speed of the self-generated higher pitched drones.

Here is an example of the music being played:

Code is Here:

Reactive Visuals in Max for Live (Project 1) — Jonathan Cavell

For our first longer term project, I created a patch which resulted in a more stylistic visual which reacted to midi and audio data from Ableton Live session information. Within the patch, gl objects are set to render and erase based of midi information from each instrument and are manipulate by the amplitude of the audio signal generated by each instrument. The end result is a set of shapes/objects, each assigned to their own instrument, which are turned on and off by that instrument and manipulated by its audio signal.

The patch automates the movement, transparency, and rotation of objects within the video window in direct proportion to the amplitude signal of each midi instrument in Live. For the shapes associate with the synth, I created an image in Adobe Illustrator which was then imported into Max and layered to create a new object. The drum kit uses clearly defined geometric shapes to contrast the more amorphous shape generated by the synth.

Midi Send Portions of the Patch

Synth Visual Portion of the Patch

Drum Visual Portion of the Patch

The patch itself, while it is rather large (and divided into a set of four patches within the Live session) is built on a series of smaller patches to execute a simple, but polished concept. My personal goal for this project was to become familiar with a set of techniques which I had not utilized in a previous project and familiarize myself with the Max for Live environment which operates with a unique set of limitations. I wanted to create a patch that generated a stylistic visual element which could be replicated for live performance which came across as a more polished visualization with smoother transitions than what I was able to achieve in previous projects.

Of these techniques, the ones I was most concerned about ended up being the easiest (ex. creating a unique shape/image in Adobe Illustrator and converting it into an .obj for use by jit.gl since I do not have a visual media background) and the ones I thought I should be able to complete easily proved more complicated when working in the Max for Live environment (ex. automating the transparency of different jit.gl objects and creating smooth movement across the video window).

I would like to experiment further with the automation to create a much more experimental version of the visual elements, but I am pleased with how this first version turned out.

Drum Visualization Patch

Synth Visualization Patch

Midi Send Patches

Project 1 – 3x Oscillator – Will Walters

For this project, I created a synthesizer instrument called a 3x Oscillator. It does more or less what it says on the tin, the user can control three oscillators which can be played via midi input. When a note is played, the oscillators produce sound in tandem, creating a far fuller sound than a single tone. The oscillators can be tuned and equalized relative to each other, and the waveform of each can be selected – sinusoid, sawtooth, or square. Other options for customization include total gain of the instrument; independent control of the attack, decay, sustain, and release; and a filter with both type and parameters customizable.

Here’s a video of me noodling around with it:

(sorry about the audio in some places, it’s my capture, not the patch itself)

The main patch can be found here.

The patch used inside poly~ can be found here.