Author Archives: skrenn@andrew.cmu.edu

Expressive Guitar Controller Project 2 Steven Krenn

Howdy,

I wanted to make an expressive Guitar Controller using Max and Max 4 Live. I used an old guitar I had laying around that I wanted to create something fun and new with it. I used a bare conductive Touch Board ( https://www.bareconductive.com/shop/touch-board/ ) for the brains on the guitar, and an application called Touch OSC running on a mobile device.

Here is a picture of the guitar:

guitar

I used aluminum foil for the touch sensors which are connected to the Bare Conductive board. For this demo, the touch sensors are controlling my last project, the drum synthesizer. The sensors go from top left; Kick, Snare, Tom 1, Tom 2, Tom 3, Closed Hat, Open Hat. Then the two touch sensors near the phono jack on the guitar are mapped to stop, and record in Ableton Live. Also, there is a stand alone play button on the top right of the guitar that is unsee in the picture. I plan on using conductive paint for the touch sensors in a future generation of this device.

I also had an incredibly hard time working with a Bluetooth module. The original idea for this project was to be completely wireless (other than the guitar jack, which wireless systems already exist) and the Bare Conductive board to be running off of a LiPoly battery. I sadly, couldn’t get a head of the correct bluetooth firmware on my HC-06 module chipset to support HID interaction. Hopefully in a future generation of this device, I can make it a complete wireless system with conductive paint. I wanted to focus on the Max and Arduino plumbing for this project.

On the Touch OSC side, I created a patch that interprets the OSC data to changing the parameters on my guitar effect patch running in Max 4 Live. The Touch OSC patch looks like this:

touch_osc

The multi-sliders control the Delay and Feedback lines I used from an existing M4L patch. The first red encoder controls the first gain stage of the guitar effect. The second red encoder controls the second gain stage of the guitar effect. Together they make a distortion effect on the guitar. The red slider on the right is the amount of reverb time that the distorted guitar receives. The green encoder controls the amount of delay time that is taken in the effect. Lastly the purple encoder is the amount of feedback taken in to the effect.

 

In Ableton Live the guitar effect has this UI:

guitar_m4l

The effect parameters can be effected here as well, as well as levels, and a master out.

The drums are pretty much the same as my Project 1. Here is a link to my Project 1: https://courses.ideate.cmu.edu/18-090/f2016/2016/11/06/drum-machine-project-1-steven-krenn/

This is what it looks like in Ableton Live:

drums_m4l

Here is the code to the guitar effect:

<pre><code>
----------begin_max5_patcher----------
4618.3oc6cs0iaaiE94jeEDtOroESlHdQ2J1WZ2hTr.In.aKv9PRw.YKZOpQ
Vxqj7LIon429xKRxhxRzTdj03I0.I1dDojNmuyERd3gj+4ye1r4oejlOC78f
2Ad1y9ym+rmItD+BOq7ue1r0AebQbPtnZyVjtdMMoX1UxxJnerPb8L5czr4f
hn0zpx1DTr31njU2jQWTHeGPKx0VWAfPOwW1V7uPrOA+d0MkQyYO+fhnzD98
.Kudx10QIwzh7lWLJT7tSm+GuzlLaWMS2VTUUqxqlW7oXpn1y53MoPh1RRDc
s8U.WmcTH+19qm+b9GWYHZkPumQb6AVeG6sXYcsFfxAi3uXrEj+EwWPEnF3j
Bdf5.OPciGvdwCYkJ9zFpjDlsLNMfQNiHemwdGTvqfuJKHYkN8DaaIG6HTW7
rGL6S75l8Qly9yth8+QWpqSn65fELpmv5ffFNW6dNKzWRogyCV7Acp8Do8ls
zFzBOXH.e9I2+bLXECD1v3NMrtOV3LD5JD6tVCW3ae9w5+xu9ud4dx+W8cZf
AOrvx2VnG.IP8vPGMDPHOhv.8ygAK9hNEbGglsKVZhaW8o4RYrwsycDzebzc
zqWEDkTyC2EjkDrl1pz2A+cMLIQ511ww6ZGBzi3v3QYC9Xmg1TeGP.Bu6cmw
nsBZ1Mzjf4R9F1I7X2mrNOZURPLWhu6W7+K8CdEmoy49C02oAWGgVqraMcwq
4A2QCuInnHKZNybX2uxKkFkhCNfGukltr5xUWuIyFmlrRqPQo142llUTW82F
jytH3W1VzUcq.FqNJaMSpvK6kBeScUdfP0xoyRiRhJhXvq.tZzgOkJskUoZE
XhrbgFb0WiqCYcMEK6yQo2X6g2NDAcl6MNjFG7IsthcsDLuiTcFcDthgOhX.
mqYFXELeKswgeXaXTJ3WVtTWywjReXhgAv631XMREHxp58tLMYmk4q2VrMK.
7VZXz10U0XaNc9pzjEowoYMedc44ypAelxFMV8MwFTiPD17iZ1fWaypoBgHL
hcI1vqX+vk3ag3+.45Qvv8eARDpB3S5Vs.2qZACE1iofJOdU55pFezjT5V8h
8+njC6iGBktDjCMoKMh0ogJMAMeUafsaxJltJXwmTDDvwypOHLmwKayA42Gw
TyMPmG5x048ki+fL.mdPnu4p1OHeBJBL96JO5yRrmQ0GA10WXM9grUa4EjCJ
RAaVtr3Ke+6SfeK3EoyiiVETjl8ouETbKEjuct.QYssxp4bJf0+gPZH3Euk7
lqE9ZuVb6fWBVuMufWinDvaC93+fIXnAYKtEvt+a+12mf3O8MbkufX4y90u9
2.b9ieG4Aq2DSyAu.ZgHcVatURbvFvxfELxC7BdsvJ058yBxVk+9YfnbP.3C
zOceZVH6dCJ.bwA3SoaAgzkQITPPM+uj8rTYz2mPTdr5pK3EKRyX1UaRSBYJ
cbL5aX9I9Fz0WeMmsTq82VIGhYzvhzsIBggilQMfbkwIQLrABT7kKY.sUAwc
p49CY7NsLvHKonOZMp5i+VJSagBtM89VPVNfID+vUL0tEePTzZVWBAUnePRH
HLcKqghWtHNhUizD1+X5JKE0UpYxfAFfJzzS2PaKS3Ro..yGC39njvz6utSY
jstX+I6jLAJiAnbvONCoCE11OIDRu9vA5vyRnvhQBMUa2pQOLB8tneHB7iow
gOTbReijNX6c8YrIaMhv6uVP000ceXYrSDpYX3nAs9mNkO8fpsMY2nKQ9mDP
sRmMWaz6ktYKCKqCZzfVD4.Zsf+cQ.yw0oEmIDqc3bStaDw4eh2U.wzjnCoc
88ZBzNiGPaeN.zHEf14wvKAq+63SiaBjyikeB7H5mPDVIFYxqUGgBrxcw+g0
yBSQZ4DZfKm5uw.ocGdf.qFmQvlMrdcGjrPotcNVipoD4.No8Z.9cvjiaD.i
R9.WVzDY5ODg8HrzDkv9pUEx.0DePj1nChr0Fev8ke8GEQnAAQrqWU9FFdDG
sVTtrieOrvLJrUDNdNfkxdNoZdwfsEoqEZUkQK42xhVshloqqNNJVVxVrbFC
KKOSrrZDYmlLR2Fb8EZuCXUAQMBrt0dLXUHWr1CDKc5VGtgyD6uCa60WspfN
jFqKXm1VTlDoDzE.xNUqNMfZYezoY3cQ4QkZCnSVb52.9orsIev.C.4rpUlz
.VCHhUH+iZ3RCXB06ILUMZLWN951ZgKih4oTStpkqngqFWVUAccveHCenasP
iw9xKsSsIixkdx62t9p7PPEUvP1sYRN5idN6TC41YYIaipiMoP797pGXs4pL
ngx3HhbkeQZXvxCJJODEzvldmmwi2PTRauU0EGRWFrMt3ltQP0xWFrf16M2u
.9YyVkEEx78xnDE7le4p2Iab6h7QoI+HJOIXSG2ZY.U5tPYPYmGj0zTppvhz
zX0hpuuX5xhxh2DkjzBHKR2zegLi9a0buySYEtV2yVTRNqEVYo2vLfKtg6XU
sdAwwkVzpO9OFjDwbNSEIIFmcspKT13xs4KxRiiU3WYI20QIgL83Ez6iBKtU
0UEqDV0i1T2LPsLNLZEMuP8ZEAqxUuxdV0rKUGGraJnq2Dy3B0JnjHcMMJa5
6S45ZGGipiv+I3mEIPBCX4cfBHZgJGDkvCUWBEjy7JFSA7opVDpOlSnMaKJi
nKe9qa7PUBWGpQAZRWOGkz0yu4r21SmI1KrTVMogdGXT+CNpGASeQxqQKRUM
DM9Bk2FrA7NKd1J86.QFswCc56rtl0Lb4EloGekytrHSA1gxdGA757UH595z
L.MXwsf4Lj7JvJZBMiY1AB3PaX5ZoU.f8P1jEkSCAyoE2SoI.KgM.pNXw6q1
iOfZurSmxIS.JGHMw5HDK1eEJV94J4.2QDWzjOyHzrTWGZczJ4nu5Py2zx2b
WILlLhqky17w6g.RzidJ8E5IDDpDoh9RovpIxtdLxGEBh+5DA+QlM7APPDoA
BZe7HH5oKBJoCEbJKsHkOPuc4VG4MWKXD0d6zUFR50vpFd7V01nGBbUoUTms
niDVoLbdsodmd7orGQD+CiOntwG+GjBG5fHn9fZcp0I0fyuRDn0Cfx3lc+D6
bznr2CBkgCGkUiH+iHLu8yQbf1HbtLURsNZX18AAy3gCyyEsLr66lIc0oFzE
nwX4t0qY3iMvaqU2B.xnpDqBkmJewiJNJUjev3nM7IHPpwKPHOJ0hwCYHBJG
YoqA8jB2MBhmZOtGio+tXjxG7cOAGSfQ7x6VDjmtMaQEQT1hNPEuBo4EQI0A
M9c65YTqJdaTXHMosdYXTNO.ixPcZj9xPIYOCIY+yFJl0RC.9jihMAiwmMTL
2InQjr6YCISF.HiNKnXrgTr2HgwxTsodpwJmzY47.oYFmGz7Ubn4wpuIIaUb
57f3xYwn9AnaRO1MyHOvbin+7HRjNbFjDQUI0obAgNh4PD15LJGhvmu4PTWB
pKIPzTj.Q0H+Xm8PdtJ1TiW1CggmIYOD9qgrGps7+RpCMJoNTk1uLEqOhTGB
itj5PiepC4VZqRjQ909RpCcI0gtj5PWRcnKoNzkTG5RpCcI0gtj5PWRcnKoN
zkTG5RpCcI0gLM0gPVWRcnSepCcTn7kTGZnoNzQAyWRcnKoNzkTG5qsTGRuq
fKoNzkTG5RpCcI0gtj5PWRcnmjoNz5swEQ4wQg6xhgt1XUxeYGUr6tpbGMqH
ZQP7KWkQo06BsKBRBYWMghU1.Y8r0sq1VeSdU2DzyB6KpusqCwUrw354yun5
c1+1XAVNPJ25cykcI9if4ZuI2181z6Qm0F38.Dxv4s92VhWcaZdw7.41aa8V
dUo1lCYf6Jr0zn8A22h2PC9fY6vwGHKSVvLOBCJBZBf0zgix17KgiWnN1qeK
tMZwGXcoQQJz69QWycGxx43ApnWPKXB0xL33c6+1poNTUE7QPaGeNg4WodaY
a460y84pvU6t481ZnU0M8IPnGudPH1EYK9E+G1k2136MPjkLeE3JnLsTFjq.
eNMQDuDnuikWOB0i1w.4Qzw.anQW7LzwFnXyUF4ey8Ln+PK4mYEn6.YQl4WN
x3oKiOgm0HbJkfsO9SoDVeE2vbmciLQ.Dz4KK8KzjzxX97JhtSe1GORGvIx8
vQHguyvWFEG6l5aKhi1bSceGqfiDFWuQvY6RZsGwTorgtflrnruZMFGNJXqw
J4kM6LTYJxd49RASwlJd6s+d91VOemhOmoRXYoK+L87D5Z1kS6JTeBZZuuEn
ikgInohGJahzoGuU+xeXy8t4p5W6nSpyRqvdSsyIQ.XlHvQtbDHkGFW9VCVD
X6+2DQfnMnvF6vuJ8MM6Su5+VGJ8NylKWnbFdH6197HtiQe2bN9k2xCXgr3T
1DAB0C+7XlO8JRCMsCnoh5aJnLg5srFuEphA95seD80ycxLOHF8kC2SKaGop
Ad3NzINSl2Dzf8lb0ifekxUFh1iR0xCUTrLAvFSWKtltJeTDGPK1XTEiSDVO
lAHa..DeSjGifOIuyPWRsEj5WiOcWMS7IwaverbJgDOqC6WpqEcTdAciDZrf
S1BrqOynFaOyZsj7fxEJm7DJUpAgGk0Km2I0Rho+beEyZchstjcSuCr47X62
1DCrVmdOC1Fy2errvrMx9ZRZ2eSPBMV25yVdhMW1JiW84f5C21ndDDYoaSBk
yeFzYbNq2IkGCukG9GxUrBxS2JDkuZYTVxPCNBW6BK8FlZW05U6Zr+IPr34f
NMhEh0ITrTd7v7zUrbnSB86nYyuQrT15Wzgq1Z6KOtIcG7QPK7L7.Ae2wOaF
qI4aPZ..jr4VYTG7ICm8Im8rOT6IPrfuwGK2+Xd16xZYNOXWeo1kZwUG6v1X
lokCw12A24wHHRiZg7jYFK.FYXSvC4.TuNO6dPqK6wSkXaHyK3BJSc.3oObb
PYqUxXp36umJww5K2YDWn580PqXNVvhiU1FD93ghyi9eaCB0E9A9RJm61u7H
8lo4XqyjxoiyJDzrQKxiGAmuLJl00tUYAatUGehccq12XtpbyRoUimJ7oW0E
kO9dOmTztkdz8nJbMGWjqz3FSJkleTU28NBfas784SApjoJMetBvE+rF9E+y
AdsiqExSLu4HGHgOM1vq8crgdvqZeJR29C0mEhexABwHLR9zfVXrXdSIVdtP
j9m1woLvFgytiR4NTCJO3jvXXikNvX3s.5Yhlvxzr0AJmZuOnlgDKifCd.ca
4WoraqxximelE7tto0MisLbat0AXZnMb67n5kQajRpK7cveWWO2JCwqryKiX
HG8dTlLixC9cYyWm7.G1LxEcf2ZBbgnOk.zv21spluhNiag5tg0IaFD3mZ4B
F3KZGRfaiwD4LbiK2m.1V5hxB9zXWY+XZWUlSIOJ1UlZTAepaTAr00lkLRCx
Lsvc3VUjGeqpdS+q8KsyNKUFYLbU.xJWaqO3r.Cc7IA1IJStfkiOPZ00Aqdh
M6ZJKzO46f2PuiFepxDKs6hjCIEqd3VuzOGDt3KZOBk2MjNR8mO7txO6zM22
8o8gJ2EzTYjFfl3Intr+jXX6EvSIRpeMyoYgQUuJ01eA6r+h0YOIpoTiqATC
RYAGdRIGdNwcP5gmmE.rF5YcT3lT13uKkPd9ktO8kqMUjz0RiM6qwjCLgA7l
N.0DxgbdQNvyJxAeVQM7IM4bhbNuTcfmWpN7X4OQ9ws8M0wIZZnGjIlVtSl3
x1D3YxjVDS5Df8z0rKwjtAfmtVsHF4X1dZoGnIzCz7tk35YIBDrbgD3v5OR0
ecB5VBwDC.7z0VWq9bziA4DJgMxe0z0ZWqNA0C9LgdHLbTKSC0fMw+oXrDjy
G5QzD8DQOtlhOnyG5QfOSD83XZuklH4kIdmQSm24VMkogdll9KgIlpOeFQOB
84IhdvlhO3yG5QfOSD8bl05N1jV2wSWq6XKSomIRe1D2ySW2MP9mWcdFYR2M
ZQzmT5w0T5YZTePFo+LgxKrAMmRltlSQl3ND5Lc3CzzYg.NczCzD5AMczCxD
5AOczC1D5gLczCwD5wdZnGCTeZMSWmZxwnNic9PNDmIkbflPNvyFzYBGIH57
ZffPOSa4ZhnGSBjvz0OdiImIBcLIrFvoaZEflLr8IjbPVFMmlGx0bq4Uv2Vj
IvN9h7bvGKxmpV+kki3uJqI+uNAy4PaJuG9CMcsDBMoilS2jN.MbRIOFpQlm
RsNRM4DRqiRyVGil6eDZ1+wmY6iNS1a9ud9+Gqj7bM.
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub

Here is the drum synthesizer:

<pre><code>
----------begin_max5_patcher----------
5794.3oc68rsiajbcOK8UPL1vOjLhnN08J.N.1YCvBrvNAPF4kMBBTjsF0Vj
MmPxQdWa34aOUUMY2Mmgr4ouUcQtqVrinH6Yly860o9Gu8M28o0+Tx16l7uM
4Gm7l27Od6adi+sbuwa1+ueycql8SyWNaq+wtKK4us9S+06tO+i1k7S67u8h
Yye9va93rcy+RZ1CebSx7c4+roDEaJgPnb98SLTXplwX.69IL0Tx8SnzojIe
X+2d1SqRyVlry+6it+MSW3+0X+U+NCbW4St9ocGdTx92c6tedYh+ouy8F+y2
9V2WtGI9Me8pUIY6dEB99cIeKIaxOrIIKqFDEXJ4To8OT48S.tG6.f6QRREj
7wMIas+ZlsKccl66DNExCuF40xpP170KWuI+WLYpVRUbw8tWoHBsN+UZNCrf
vwz25oZm.DaAF9oGNB5XfB3fClXb.XT+qXRJQtG55Qd0+0iVN02Oa2j+m0Ke
ZURcrKJHJQFhn2YWhQmcgDCGQ10+wx0aSVfjgQjrAkgwGcFFRLbDYX+k0ql.
WlWY.XPYUrwlUgDAGQN06ylsIY74TzekSgQmhdYNkxZb.FPNEL1bJjH3HyoX
WlSIshbNDQqFFNEYr4THQv325GWnqfHx9lSIG8PJPhfiHm5GRm+0I+40oaQv
tXdDPmmDhh1yLqQOnBl1idrJnGI5XU+2oV1hMlcjLKJTAaz8FyBHwAyhppE8
B.y5LUkwBnIoeK44Iqlkl8QKhVWlUZB3.cklZAm7py.Dc8km4DLEg7zkmANK
sM+g18yOljCI2sM8grYKuqOoDVl2BTjg2YJpMEmp87UmYSinwDhAsLUKsr0o
KRsTo8+391rMYyVkb7G9izOTGG2gfVrx.SsZJbuQTW8b5tQTR4u0MVfZWxlO
ljM6S43KbRxB8bBC2c+j697x0yr.8GtPlyWBe1N6aIK93rc61j9om1kT9ps6
oz6I0Np4xmRV+4Cu8g2uJBsbc1CET7+XpEKt+0Oz1urdytK9TGvV3De1JKo1
+YNm.m5im4ESn7S9woYo6rxAul5epmZeoZ4GnWG8LOYelBQVR9m6kYO7WCi.
L7g5K1JcPDfElwQ.9R3yvI.+9YqdbYxkEgO+yc.iI0HDakgIPMRwPeIDWwE+
4khgtKEettgj7vlYKRpuiHLv6mUwsQ6A9vjjP8NYXmPRULpda8Jp1vDe5rZw
U+vZTgqDfHwGtKH5C8Xdy0iY0oG2bc47pYbNDa3TneIwuFc5ZezCD.5I9L62
xp8DmTWlBtR4mLKy8huai8Gp+E4pB2cR0w13d5PDxChh61jkVN35MOOgUmPq
gRxSRSTDprzTutK+DRmv3q6dQOvHzcqj9Se5ClMp9fqGoFN818JNWRm8rOV8
wRt2MKou7yJv3mkLXpqq+VxlENJwy0psxMEdZUJnTkUz3YOPPGUU1ZaHG196
T5oUP5sRwPkQUKdpEGGu5wXs.sXUx1sSH0EYHPEEyJCyv7EkAZb4GncOxv9W
Hkhs0VkLv7ILoepWnLp5tUs3XzKjlOVIJtkTIyirsEBopHTFkgsodChgTYT0
VuqY6nfxBsBcteegQ5poRKDQ4QlHZwvs89uL6Q7y11v30GLw07sM1xqHFwsK
x1NZ9uFH1lNtlxsXkskO.AWhicT60GHFlJplgfXkeUYLBtDSiQ3CNSaz8kiG
IGal1EsJJdYYh6UN03Ol1V0KWem0FKN4QRoN53T+oYa2krYR8MPmLj7oweje
8HyXyfpcHG9MaW+T1hKLlCUMmSEhoF6ejlxgMpQUZnbNbFhQc3gYoYOi08Ks
2GzRalt0UHZRsEhFe8.uOuGJWp7zWBY6wYGxJH4B+4i61j9vCIavJLQKmbsK
MzLjSPsIlQJeqyPF9T5+2SyrZUjob6+O4ct+19Ek8eTWwrzTmVNiJrjAgkjT
LQUhKPSjullvJHIedcVYK.9CapzdltWN5J+J1l92yK+uEJGBJoVN4cfmDl+J
i8UlZIlzBhIWUY7zTMmXBk8D9plZ9u7bsDLnffIo7hWS0thfznNd.kSXvUN8
5RZrJoKBrbMVioPHiSabWhfxYf7pll8uhUFSnKoWsRFScSPuxbYd9LVYLUoW
Atr4SWpPeqnWxvJkw0ETLFsERYlaEJFEIEiWwNVanXkCx6Mts+JQqwY5NY6W
B+BwVVUZFv6jsrxScyUMMa9SabG1Bxj2UmIMEqjvwpLNJplO8mfrwAy1pLS+
zrrG5UBnq4cydH4UTPecR3S.WJVTKgDXD2KArjStpL4.VaTdGxfcCjoNXZcM
vVPKh.gqKGeQlrEDKULdRel+yyWZUBYDhK+x5HEbnjTPKypTqaAoPGijBuvP
cIVKL5xnqH7N42ScaDC+14ybhOjoVR29uVWjCbszU5KAi6FCFVA0DHllWZBc
TJEsLMq1.ApRBDBkqTxZktclTzl92qUKnDe9or495DirlmupcGZVeLtZFRyq
7LGOkJefnuu7jMbradDUf9BH9rEKdbcZ1tsU5LDYpQSs+w9J62jM+DtTSTFe
WQTN6O9Ofyq9Aj7GlP1+Sv8kd1NIYpnN6jpJtJjcyNoAtUxoBpMmJghTRyHc
qdZF5MAMyQbdFKIioPmR0oxLvvt8KyM2FxxgFW5hl6fyWEoEhX2FsEX9xzGe
dx6n1nVlhkxUIrEUajzD2NFzvFqbkz14sHLGyu.5OfjU1zNIg1oLMMpeAPup
jYtjUpRxkMutsF8sO8R.pSm6pnEzqaiNCrNK4w0KSPS0rphEEer4tLoDxuLL
7WgjwEPWLjQIPLlg+EiKsJEfVItTRiiVfRnQYQCQU4dAjWpYsqTyxNU4dJQd
cV49yP.Wsa8mwJBwLkQCvawAajbkEMvYa1A314Gj7tcvmvMtRb3ds.qLHsbY
UA7lW1Z1UdyNZv7tdzwDpqC7JTtaBFiAd83i7T+Owq.WFQS75Ew1.1yafxkU
BexTrd3ZSSu4p3rmQ0h+RSkj5TkZTllGzMOJ61QC6+CvXUFPIUoDQqZ.D2bM
1.nioAUzJZSp9Bx0RGfN1kx.0BHADgs.pIX9o5ATdLeNICqrBwnA+o0wstK7
6YGxTEmKj5yz5GZOeJG9xrceb8iIYHNnCVDO+XZ4NR4z7Aql4fa21PnoG0An
GVlL2MRGeniN9tcNbJpdTCm5nih7.DNEiGSgScIrMjgSQ390gheIhHXcadnY
hquvoHRYA9KIkNQaS3TL4sP3TVaAkRDUlP9VENEScUFN0QzfJZEsIbJl9pIb
pibo7pfJ1GZsh1C1iMwXLUME8qKvJtMxDpDbSjEYJ0+MlGGkMjEvFttTDvXq
l628IXht5HRP0nqnrlGcEmDYQW0rHMcEL0sJn22iFkOHSUKhsRLjwV8om1sq
ds5C3AQUfGz7nM3MBM5t2s1a85LbzzOO42lB+9eOW869c+1T5+NYxtujj4dO
DDDslUxXEMeSTBTUTJeiWamUoVZGIlSawcs.kNth4GgLcUVmEwx5hlHqWkpz
cAd9Ua5xU2MocOa4QcaabzZVc.RVlFSaaiKgr8ZrR6VuBPX2jRj7x0CK0eUQ
XnMO9HXrVzFHu4ODe.qBELDqebfLN2AH3wrgaGj6ucuJY.0rFx8OYSuMPZyd
FGF2EMNAsBIur8GsoJNP2yZI2vVeqX9cIym8yUUJ2rd2Z2u0hmXW5Et4lA0P
qyBTL5ruZ2gYAMizezScc1P5OyIfhJ3l51cX8wkM.dZR+psml8UGea64T9N9
JI3XVec2JAtmr4WNPGtUBH818R.Ug5lI3TWpIa2k7XdIeN0uksOljrXY5p82
lQC78f0eX2tYy+ZWz5LVaSCsRG65RoCOIYD04dImuFkt7GsCZc8lR20hN24F
27I3cyqDcyMOe7byWyDbhF8Mk2LlLdySgEDwUp7yVrcyy0ekb.EHOe+E2l60
W5FaSbJj+Lkxj2lrXKek++68SEasRDJVIQQ5KQeaZQEDwqQBrJDUkI3sn1Vf
NduzbQUgqpWrIcsBWJ0XVfqithV5+BbozQT8stDt1202hhp9VBOPIHt8Iw97
i7WAyMuHWpHuFWrOfUkZPBcWONk3BOhMzk3BhnRb4N+FQbItzS4FiRHcqgwJ
K6ylG6qItqvEz9bs0Ry.qvZtxpuEdJxnWdK3WKu0XUdqtnxAxgVk6Jq5V3oH
ie0sfqppaolJtoqtUEO75xyUZa7veEVbKadF582JvjxshPKpsk4ZqzVDMuHc
q86rkb5PyKsk4loxVBd4tXQJKZWPKJuk4Zs5V4aDUujPEohVTbKy0dsspdin
14ZaIFyZaczc65.TaqX5bieIbsuqsECyLuJyKStfjOkHNmssorV73trVpOfU
aZX5HsRLJ00BOlMz00hGS00RDu00pPej6Gix1zIWkLpKmEu84VqrwDOzJplq
qjqwSRF85YwuppmkfbCUOqNnyIk7gVmSSttz4vSRF+BZw+0BZEKEzpv0tLOm
8V3ZWCWa0wp.oM9kFaaFMKM85p9UVaPjoBc94JSR8aIf1LUVZ1sQsq.q0QOM
P2oMUJn4Wk0s5fFvdIg1LKV5nbQhrE8ADCrgUexCVqo4lCTv3drZOBU51wpU
Qi3SUKqImp1pDktdpZUrn6TjibNwrQBkWJVloyh4R83JleDpzMwboIhEyglH
lWknzYwbRLJliojwZNon8ScUJebWEHGgIcTHOl2FHjFHjWklzUYbY7sPP1lM
aSBBgbaJ8mNhkluva3iaDKGgIcSHmGwArvzMPHuJMoqB47HKdEKVlj5t5.P0
IYQQkrXZeNY.k178e+3dCJbwdL6QnxB0kig.ue1L4wzxAYOmS5OfBEHJn52t
K2jAUHe8owck9Apr6DawbJbtksS+XF8rJSaWm87DAYpEXseQIpqRG5xdnqqb
S1bnI+mEa4uFaEQ+pyrflPqencJFaIkVVY00z7km4U4UQKkWdAJp3PWlaqys
d0huEmIiT1fDfjOnK4KMRYeXykFiaKSFPJ1C2.QVAmUDLKJSxTqCX+VwzeQF
LkpYBMzqKEyK4mLWl7.CqGmBKFIhbRddrLf6Y5JdJpZUnEaYZFb0sjoo7RjW
2oStEidCrgos4ebX9MOxEYK1uzL1U45klqKo.cyGIieM5ibftpNXhH2OYkTU
JWpzW5xZWwxuINb2rKlofRy496kCJHItQ+vsyGbWH7BIgHO3ubHWpzM4RpXu
9siS247gXQe9P.qPDWpLU821jTgnvsQtPfj5bvILkt7ZSZPv04MxzdjWX51s
U5UycGffVMLydL6mxkSSLcWAHxuEhztYuivd0cE.6hl0MJfSMdS01mVp.h1O
QeT+eBaJP77ol2i.84lDVDSoA4ubN45RV0vjJT97wXE8qgp+Nq3w9y5nPpxG
VlVrwht9tscp3ejpZ6PAdKjCDeechgW3erU2wNWi9GUkMhw4irkKtL8Ul6wg
JwmX2EYqR7wnDLRtGRWKc.tgIXiZlOal7a9Z57uhYEZozkMdlVFefV13iZHm
GcCU.RhffPK6DOurqyZcymofwcvYNBS53LEDwCNCS1fYJnJMoy2rHjwZmMb1
aF951nyJu.rV32HofKZcAo4yQgJxPYRs21C5xojpi3sNxvalrthUawvBo7Nh
3l3xPd15cIo0Y0Swpf6DR4Fnf0X62m6Nkl0rCxy8G8WshXLe8pUIY6dE036R
9V57jIeKYytTar7SVltJstRalea+oHESbh8uzMYK0b3m8mWmU4nosoxAa7ht
5p7SXa5eO+LmUb3zt6KoKVjjGGY+Iz73xmdvBT0lkm1He4ENmf8ppJbwZecd
Bzj+35kK5wP+Kx+4LDzdTL6OMKMax+4m+rkZs8+Mqt+6v2pKSp4qeJy+8Ch5
NGVZQQqFTLQwBjhQ84c667BoIxnxBdvmlM+qOrwUw+yu+FNu.5md3nCxplIL
beq90LMg5eggaip28Jav7JMuWUs+Aa3p0Squz+cRdACpoBOkquKAUWVBXUYS
v3MaxwgggU.FIw2NIsPqo42VoEu2.vKduadjCLyfoXtymn2OV0tPIcK708ma
wlwMD5Afa.662G25NwqJ33CpghQ7WVupCjavTicHiDJVjcTY48T.0F3fqZeR
nIjZ0fH3yHN48RZq+UTqYI50M8la3dZbaH0k2Wu+Jo9bkwyTY3k5.olouMH0
ee5jue1tIMmHyq6XmwDUHxkUG2hFNJMXZR8VJytqWozJlhJ72g2JhQS7TZug
aw.Qo+y1r0lrZVlMCV2m2qTbtMfc8IRzCbyuQio3zgQ1VJHFou9uRgfR7uRo
T.YeXiGQs8.qm.rulxGH9dr289GyB1t9oMyOjXvgUl3jRbdQx1coYEEl+GK2
rjUdnxDtNfTKR25pB+hh8q0qDFPCOJDviRGN3Qhk9.gAdDXfm.RePAOxvAOb
LviHbvCCK8IPxOTrvCMLvCAC7vCF+xcQkfCdBC+Bi4YQv3VJTTGRv3VJLjGU
37dov3sPENqOJLVCAU3LOqvXNTQCG7fwbna0zDJ3Ai4PoIbvCVuEr3Bb3AAb
jXLGJCWvXRLzGY3z1kXLGJCm4PIFsKQ3bmJLXgmvDrgPhEdHQD7PiL3ABG+R
fEdBi4YAGK7DH9ECq7Sf3WTrzm.Y+Av3OMf7KzvCDOvCMtHOATZFi2zWDv+f
CO.F3IlnOjHi9PhK5iTEWzGoJtnOtgsKjvyknOtodLjvC8RvSrwuhL6g7Hyd
HPiLE9b.JpnP7XiBwiLJDQDYTHR.ygGAAhEtfN3XRYlGN9EGSJpLUbAOTSbA
OP.oOXRgmGtbv3XRgmGtTlQwtb23DApDP3gmvThdFlRrBhvofwTXbXDtdFvD
HfGV3B4fgx.c3hhlgw.DKbUcgQQNQ.Ah7.XIOABdvDfX.ifFizCkDtVxQMHT
2CXNXTLsrLbVCoXBeFfv0w6F.PgwgJEi8GHbJXT.UUwAR.gHTgbbF3A5e3gf
IFnv4QEG7.AbLxPBQAbREnDEJGGzHCh.SzAQAb7+PBQAbhfdYnEmSNJjzHJJ
HBBHDgxfswDPHBUYNC3X0SwAPACddI23bRQj.BQZTjHQ.gHbVr0ADhjnfHU.
gHTwWGvCf.f5Dr7xndGVHhghFERHBURHFV.gH79Pf.AQn5LkNj1rQIXGroeC
PcVe.c.sOp0nsFEHoHMJ6i5.ZeTiw9X.ORK4cy.GIJTLMTlG0ALTDjPT.MXq
QYvVSCHDQPSiBkbDF.Jf7LkAMEJPtPTJzogDHdFpif3Kk9GVHRfFhBEMBSOP
BXpiRTJZAbTXAoBchZAhmIQIEICXfHRN5hz.wDDIUwFDEvi3FHQEslLf1Gk3
5WTHkrwDIBKfYNJvMEOAz.o.kIaQ.SCQnPqpEJHRhlqEHkeg.cEQCEDgyjc.
CFA0gTDB3o3DdwIp8bPTHoQnRUiGRKjXxCIfopwQYwNfmVn7eWWFhBnEatBM
MJTPDNK1gTNBklVHiEAkA6fMbO4n9EMNxBnPDCWYiBXvZLTJZr.loFCkhV.G
6ZfIPSiBEDgRSiFRIaT.T3jhPM7r.Mf7LJJ4ZZ.SBghSJJftzn3DiBXmGvMw
pgrhnTrsJNPvCpdWCAbHiAbMmIfmTuW965bRQgjqIQSiBjEa.237GPeZ.9CX
PnfHTVrg.5CAmieHfwOhx.YNDEnNgBnRTKfGLD.vFsVffGbGx.HfyIBAiteq
qHR9toe1iO9sjMa2+yzCK2sZ1eMee2qt2+OSyx+m9K0p61j7szCOu+Zf5tYa
l+kzcIy28zl7Um+OoyusCta05EIaxdJc+s+k827+7s++.ujRI1.
-----------end_max5_patcher-----------
</code></pre>

Here is the Bare Conductive board’s code:

// compiler error handling
#include "Compiler_Errors.h"
#include <MPR121.h>
#include <Wire.h>
#include "Midi_object.h"
MIDIEvent e;
#define numElectrodes 12
midi_object_t MIDIobjects[numElectrodes]; // create an array of MIDI objects to use (one for each electrode)
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
MPR121.begin(0x5C);
MPR121.setInterruptPin(4);
// *************************
// Proximity (CC) electrodes
// *************************
// set up electrode 7 as a proxmity mapped controller attached to controller 109
MIDIobjects[7].type = MIDI_CONTROL;
MIDIobjects[7].controllerNumber = 109;
MIDIobjects[7].inputMin = 520;
MIDIobjects[7].inputMax = 480;
MIDIobjects[7].outputMin = 0;
MIDIobjects[7].outputMax = 127;
// set up electrode 8 as a proxmity mapped controller attached to controller 110
MIDIobjects[8].type = MIDI_CONTROL;
MIDIobjects[8].controllerNumber = 110;
MIDIobjects[8].inputMin = 520;
MIDIobjects[8].inputMax = 480;
MIDIobjects[8].outputMin = 0;
MIDIobjects[8].outputMax = 127;
// set up electrode 9 as a proxmity mapped controller attached to controller 111
MIDIobjects[9].type = MIDI_CONTROL;
MIDIobjects[9].controllerNumber = 111;
MIDIobjects[9].inputMin = 520;
MIDIobjects[9].inputMax = 480;
MIDIobjects[9].outputMin = 0;
MIDIobjects[9].outputMax = 127;
// set up electrode 10 as a proxmity mapped controller attached to controller 112
MIDIobjects[10].type = MIDI_CONTROL;
MIDIobjects[10].controllerNumber = 112;
MIDIobjects[10].inputMin = 520;
MIDIobjects[10].inputMax = 480;
MIDIobjects[10].outputMin = 0;
MIDIobjects[10].outputMax = 127;
// set up electrode 11 as a proxmity mapped controller attached to controller 113
MIDIobjects[11].type = MIDI_CONTROL;
MIDIobjects[11].controllerNumber = 113;
MIDIobjects[11].inputMin = 0;
MIDIobjects[11].inputMax = 200;
MIDIobjects[11].outputMin = 0;
MIDIobjects[11].outputMax = 127;
// ***********************
// Touch (note) electrodes
// ***********************
// // set up electrode 0 as a touch sensitive key attached to note 60
MIDIobjects[0].type = MIDI_NOTE;
MIDIobjects[0].noteNumber = 36;
MIDIobjects[0].touchThreshold = 40; // always make sure that the touch threshold is
MIDIobjects[0].releaseThreshold = 20; // larger than the release threshold - larger values
// // are less sensitive (and more robust)
//
// // set up electrode 1 as a touch sensitive key attached to note 61
MIDIobjects[1].type = MIDI_NOTE;
MIDIobjects[1].noteNumber = 38;
MIDIobjects[1].touchThreshold = 40;
MIDIobjects[1].releaseThreshold = 20;
//
// // set up electrode 2 as a touch sensitive key attached to note 62
MIDIobjects[2].type = MIDI_NOTE;
MIDIobjects[2].noteNumber = 40;
MIDIobjects[2].touchThreshold = 40;
MIDIobjects[2].releaseThreshold = 20;
//
// // set up electrode 3 as a touch sensitive key attached to note 63
MIDIobjects[3].type = MIDI_NOTE;
MIDIobjects[3].noteNumber = 41;
MIDIobjects[3].touchThreshold = 40;
MIDIobjects[3].releaseThreshold = 20;
//
// // set up electrode 4 as a touch sensitive key attached to note 64
MIDIobjects[4].type = MIDI_NOTE;
MIDIobjects[4].noteNumber = 43;
MIDIobjects[4].touchThreshold = 40;
MIDIobjects[4].releaseThreshold = 20;
//
// // set up electrode 5 as a touch sensitive key attached to note 65
MIDIobjects[5].type = MIDI_NOTE;
MIDIobjects[5].noteNumber = 45;
MIDIobjects[5].touchThreshold = 40;
MIDIobjects[5].releaseThreshold = 20;
//
// // set up electrode 6 as a touch sensitive key attached to note 66
MIDIobjects[6].type = MIDI_NOTE;
MIDIobjects[6].noteNumber = 47;
MIDIobjects[6].touchThreshold = 40;
MIDIobjects[6].releaseThreshold = 20;
//
// set touch and release thresholds for electrodes that require it
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type == MIDI_NOTE){
MPR121.setTouchThreshold(i, MIDIobjects[i].touchThreshold);
MPR121.setReleaseThreshold(i, MIDIobjects[i].releaseThreshold);
}
}
// start with fresh data
MPR121.updateAll();
}
void loop() {
// check note electrodes
if(MPR121.touchStatusChanged()){
MPR121.updateTouchData();
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type==MIDI_NOTE){ // if this is a note type object...
e.type = 0x08;
e.m2 = MIDIobjects[i].noteNumber; // set note number
e.m3 = 127; // maximum volume
if(MPR121.isNewTouch(i)){
// if we have a new touch, turn on the onboard LED and
// send a "note on" message with the appropriate note set
digitalWrite(LED_BUILTIN, HIGH);
e.m1 = 0x90;
} else if(MPR121.isNewRelease(i)){
// if we have a new release, turn off the onboard LED and
// send a "note off" message
digitalWrite(LED_BUILTIN, LOW);
e.m1 = 0x80;
} else {
// else set a flag to do nothing...
e.m1 = 0x00;
}
// only send a USB MIDI message if we need to
if(e.m1 != 0x00){
MIDIUSB.write(e);
}
}
}
}
MPR121.updateFilteredData();
// now check controller electrodes
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type==MIDI_CONTROL){ // if we have a control type object...
Serial.print("E");
Serial.print(i);
Serial.print(":"); // this prints some Serial debug data for ease of mapping
Serial.println(MPR121.getFilteredData(i)); // e.g. E11:567 means E11 has value 567 (this is the input data)
// output the correctly mapped value from the input
e.m3 = (unsigned char)constrain(map(MPR121.getFilteredData(i), MIDIobjects[i].inputMin, MIDIobjects[i].inputMax, MIDIobjects[i].outputMin, MIDIobjects[i].outputMax), 0, 127);
if(e.m3!=MIDIobjects[i].lastOutput){ // only output a new controller value if it has changed since last time
MIDIobjects[i].lastOutput=e.m3;
e.type = 0x08;
e.m1 = 0xB0; // control change message
e.m2 = MIDIobjects[i].controllerNumber; // select the correct controller number - you should use numbers
// between 102 and 119 unless you know what you are doing
MIDIUSB.write(e);
}
}
}
// flush USB buffer to ensure all notes are sent
MIDIUSB.flush();
delay(10); // 10ms delay to give the USB MIDI target time to catch up
}

 

Also, because this project has a lot of part to it, I will upload a Zip file to google drive that includes all of the files you would need to get it up and running on your machine.

Here is the link to the zip:

https://drive.google.com/drive/folders/0B6W0i2iSS2nVWDA4SW5HS1RCV3c?usp=sharing

 

For the future iteration of the device I could imagine, Bluetooth (wireless), battery powered, conductive paint on a 3D printed overlay, and a gyroscope. I am excited to continue working on this next semester.

Have a good one,

Steven Krenn

 

Drum Machine Project 1 Steven Krenn

Hi there,

For my self guided Project 1 I made a drum machine for Max for Live. I made a synthesized Kick drum, Snare drum, Tom (1 through 3), Opened Hi Hat, and Closed Hi Hat. As well as some master distortion effects.

Here is the plugin UI in Ableton Live:

screen-shot-2016-11-06-at-5-46-22-pm

The Kick drum has many envelope shapers to achieve the 808 sound. from top left to bottom right, the ADSR of the pitched Kick sound, then the pitch envelope right underneath it. Same ADSR for the noised kick, as well as a pitch envelope. The snare has just an ADSR filter. The Toms each of their own pitches, as well as attack and decay parameters. The closed hat, and the open hat are the same synthesis engine, however the closed hat has a fast decay to 0, while the open hat has a long decay. All of the instruments have their own independent volume sliders, as well as a master out slider.

So what does it sound like?!

I made one drum beat with a Clean setting, an Overdrive setting, and a Bit Crushed setting.

 

Here is what the patch looks like in Max:

screen-shot-2016-11-06-at-6-11-21-pm-2

The Max for Live plugin works as just a normal Max patch if you plug in a MIDI controller. It is expected notes:
C-(MIDI NOTE: 36) – Kick

D-(MIDI NOTE: 38) – Snare

E-(MIDI NOTE: 40) – Tom 3

F-(MIDI NOTE: 41) – Tom 2

G-(MIDI NOTE: 43) – Tom 1

A-(MIDI NOTE: 45) – Closed Hat

B-(MIDI NOTE: 47) – Open Hat

Try it out on your machine and make a beat with it! I learned a lot about routing signals while doing the project, so if you wanted to make your own Max for Live plugin feel free to check my code out on how to grab certain notes from Live.

Have a good one,

Steven Krenn

And most importantly….The code!!

<pre><code>
----------begin_max5_patcher----------
5708.3oc6c01iaijb9y1+JDl8v8gjwBc0u2A3BvcYCvBr3tD.eHeYiggrD8X
ddjzDIMN6lC27aOrIoHolQhp3H1U2ZwZCOirDmgEepW55st5+9aeyMeZ8Oms
8lI+KS9oIu4M+829l2T9V923M0++2byxY+776mss7xtY95kKyVs6laq9rcY+
7tx2+86x9V1pI+3lrUq1+ge5t4que8lpe8roBv.R3V+qj.H3kuRn4L8sSfor
Ien9G6gY6l+k7U28wMYy2U8CCBidpt3Ob+0JMSYEeCjkey18GcS11Bpa1t70
q7+jP86u5wk4qtOa21tuY2K9b2KE6E2K+i9AOeVM2HU9mJqgor1pWYkB3vmu
7EkH15O82dmUeSKEt9wc6IQV86tc2ubeV4Uei+M9Gu8s9ub6Exq9OdnfS8Cy
1M4+Z88OtLK.rKNnZgPlJnrKNGlBZsQZ82KQPYWpXvt92te81rEgkgwzBxXX
Lssy8hGTFlLFLr+55kSffwqb.PEqxU76842pPwoDwfS89Uy1j8qCNkvaDr9V
EVif7XoSwCFmxn6BeAkSYzxxak03uUxfxofXwoDAiSoAnC7ETNkl45bqB65T
re8Y8SprcfOcH4TRcEaQTsbkgGNNkNJdT7i4y+5j+x57sgicIJ4PVcKBFHlk
vVdiDgmUIhFq5+Lu.eK7YOrLKNDdlUIqgGd8JHnV.Wk8+VbSdAup34LK+aYO
MY4r7Uer3tdSOgHYYf+I2X4EbIg.D2NwUJJyYcdjpH8c+xCYU+X2rM+tUyt+
llK3nneGfPchTB.gDHJX8KPgBuyM0V+vK4Ugw4suaMu.HN2yYP8M49Bt5zE4
E3d8utuMaypYKyN7C+I9G5ig6e.KdpbvzBQYYo9kOaPmlUeysSt4y2ud1tyv
seX1lBZYW1lOlsZ1mpdLOBBoOgJAeODM6aYK93rc61j+oG2k09ps0HSMz3e5
u+wr0ed+au+86RI2ud0cMHzeJu3Nc6KunseY8lcm8p1iHvQ9rkEvQ4m4shbr
OdVIakKO5GmuJeWAe6kv1wtpJlBWtmWbv07Xw0zHhwp97RYr8eKLBbPuBbBC
OpBbJWrD3d+rkObe14E4N80sGUX8HzUHywfdj5fwRnqyZbmVpCtbotSXMeQ1
calsH6odj03LATtLlQVX8FJcmPotvUyDGQjRExUyJUrJ7B6wSp008C6QkqJ5
+R+aXU92nNmd2Xq6ch3JDAW2643TOpe8do6wG9Q9rhejk0XWt2mYeRsylsx+
hueSwuzxWTI0dyQ0bdMV98bvfoisM69Bon0adZhnO4KGmUEsipwoQs3BUyjG
Q5ABtZ1YWbCgZF2zDGQLVdSDqk2pkwOm50Iur98npdwK1Xs5kBypWrfoYs9a
YaV3Qhm5UwR5ZV+xXfVsK3B0t3GQvgGRsqdqhTfKJQug0ONUmErMYVmE7rHv
0QHKBEVnVrLa61Ir9b3B3E5ULFWVHvJbkqAnQ3vE9DGvUwRJkG3BxzJ1T2MF
AnjzllaW3SLIjvRoUMtQYyTnqbEdbkRMwRHUD3ZQEbSotBVy96FA04HUEQAS
gnnxVsxuxo84JYbEQkwPDsomrd+Wl8PvaIqfKrZp6mHuvJu7UZa.W1GbQtwr
BEW6f9xJ3bMcsugTw0rwqp2AhgcPQuCN+RpbjxuLQt12AhoIXRBYZhhH0s0Q
tRASSGMlVnLJpp5EmvG7ZgxrmSYczvohR2E+mmscW1lIcJ663woXzvmbkd+Q
.CRDAmhqJM+2sc8iqVblhy2cwGtRM0U7Gsy2bHrAWdddXaHi6lku5IjOJkYN
ooEWPkZuaqpyvqTJ6HoSlctFPqt8a3mhRO.ZgyjH5fzqKExPdOe93tM42cW1
FrxQ717g3d8gYwNBLvbQnSW9T9+yiyJTnXSkE+ax67eu3Klh+CuGHwx8F8Db
UALnJfj8oaFpKZJ+UmuYc8a940q1sM++qJE87oGAvDM3k+ZapZvebSmhuDEj
zpm7NnDBqdkq3UtdASdCXJMssSEXnCLg1BtlDn4+zS8BXPCfo4xlWys9rebA
3Ee.3kJwvqyowZzdm2pzXctFgLI+BkwFBloSJL6eFqLlx1hWjJiYRJ7ZkOny
mvJiYZWUPpuPYLX.XlM0zKEXkxj1FDSvITJykZHFGIhI6XGiRDqsSTuRr82w
aMovFEa+Z3JyVVWLCjQwVV6N1HIvr4Otwu4.XSdWelzLhVfSzoSTL.ZfqHb0
OMa0cmosJw.fC1o1wIlSeU6lcW1KPvxzFIm.9Pr3E.IHX9WBXgSooM3.ABk2
QPsM4byEl1CZoU7FOPj11lLrdCBMpsAEnMwPI7WleegRnfw7wW1GTHgVnf2F
Uo0FBnvFKgg9BrV4rsdWwjQYcOSZ4C+14y7hOroEPW8W6yyAoU6S8kRH88+h
nAMAl6BkhzGAqrwPJ597U85HPWHPoL9rHaM1AYRo+0yNl9j0Exkm97iqlWl5
Wj477EkrvJ56otpGkusceAb3COQIel2oBHRUScgMtSzDZtSjfe4Kg752Y1hE
OrNe0tscptCapyxK9SwqJtuEwmH0VlwUVjHi29S4GHkc+.V0EyX0+F7eopU8
Gw3CT8YmzzYoBcbrS5fzyQCduXFqEyXwIeZNdRgYdv4IrPlvLdgTMfHBbhqm
zbKKbYYeMK8dysewWCiPQrzpr.yuO+gml7NdgWKSwhbcbawPoj10UjSG3qbm
v1uXkygHrcEUe.snsncZF+4QZRCdYthvqNQlqEspjRMc4s0YudvKEXNdrqJB
wqzpx.qWk8v56yPiZEphMIejtkL4L10kg+NPlTAAMkYbFjh9k1EA3c7KkM9C
..NimrYtWAUoZ15S0rNpYtmyzwIy8m..Wta8mwJBIbsdCHAxpVDmEIuANYwN
.+tkiUUsC4DoymhC+qUXkA4sSWIPZInbGoUvgCnUWOX6Lco85JnDwrWWObqY
k9M6Z281EtNdEj5HXC6rk7F3RcGumZ2KMR83OW2.oI0x2Bv0tNwzYZUnbk9b
OtkLSZS+x+.BQm9SxzJQDl5+HcIX8eNDC5nUDzB.oXQt.PGthx0UEfNX219h
MByIq.zolZPCqBPUd74uwEhJLmEJ2KM9wbQ4.9gM0HkJs8DE9gOlE9Yyju6K
y18w0OjsBw1bnb1jzrS7pZqZgmt8CAgQbiN.Jdh6LU2cY7E6LE2FUmoNXGSm
9NS0cKWizYJgLIclhIEMmCKJwKZF5w0YJgJ4blho0MO+ZV6RnAwYJg9JvYpB
SAsRDcZO9v3LkvjhNSc.FzQqHnNSIrw1YpCVQ4ENSU6XsgmrdTcvjv.uGUB2
X5QkrvkDtF7MhEaJuDwpbfpvWEnvMcshPmplWNrSv3V0A79ttUwEipaURVLr
ANLWL84I0ORmqKMioz6xWwvRmGzYCvmdb2t90m2+bvLMOGbY8QCPObydracz
mxXrpV9mm76xg+vePZ98+9eWN+ekMY2WxV4eOD.h0JZYrpWeXCGyJN2DO4a7
Z6hN4P6.wbt5UHlyiqX9AOLAVVWDSYc0Pj06hJAUfWl1wI2czod4gIG04qwA
SA1KOJ4A610AHQjFGF6VuDPXgiy78W89I2Ju7vYvwGUOY.W7Ge2+j5CXE8gX
NEuAVzNkJJOUmZwodlj2kW4POlJdMipaHtypaFZ8FYmIUGhDhbZqKGagCfEM
8muOa9reoqtyl06V6ePZthc4sm.XGMbIvDSUqWLYrJHHmtbia5KIhtbGa.Ft
R5N8.MF3TpSlu5qdzc6oTQNb16eHCpuwuu+JG9YKy9wuOazF.+bCpQv+wNnM
1tK6gpLNbr6x1GxxVbe9x5CCm.erG8G2sa17udI5FNs75W0PjrpFOmA0itQ0
kdAJGiltw0hpwo5A5I3WyznB4ZlwHXKeaEh9w20d9BJji4.9FfXT8nYK1t4o
9OgHflGdY8wyk+0C3HM41tup7eGGTTGCTznyc8HuUM6UhvHZAkpiNofLaCf3
MaCvpPzUlPpBAFXS67uz8PA4Ry+hwDyzubvwaRbS+hwFsruvQk8EUIToX9wQ
PcnR9kDF2TvXRgLvH9.Vg+nlAFajS.CjPIfQZS5DvXmJcNiR6G1dcFoiisyj
tXm+E30GioU6hod0XDioK0y9B7aYeIVYe4RzL.8UulQxm7E3pJ4KlopeUm7k
NqWZa2Kdi+5kIYtWJbt1VeHpxZ2I4iapWbIYlWXVYSLF0y4hgdXxdAYdwklI
dQIameEZcSd3CQ1WbIZxWplhjUGZ27tSjhwGAR7Tuz8nt7hS8hJlod4fCsyH
m5EczR8h.Sq8oqx2phUU6d+xhibVWjIPVWLe.qbeb66kSo1PUZWjoTZWToaZ
WZTajksJ13W4NiNxYaQ95ioz.lXpOMJUz23R7zsHupR2hh8qnzsbApFZs7pW
0vxR87sH+s7sjJ4aoYgRcUHki9BkVH8RyRyCc0IW+H2XKVdBldkBiFroJa0d
FQyK26uD0SKVQBlZEnvtdIFXC6vGDrxTLsJ60.pkDBRmrXUwYqygbKk.E9Pd
zMMmSN7ro.wcKycviRP2xbFdL2wbhgri45BJAbGyYDQSLmiZmfypxTnvcwh4
ZabEyO3QInh4ZWLEyggHl2ETBoXNKZh4XxSpUxZpNxkJkG2s4+AOIgUHOp6z
e1.Dx6hIATFWGoM6O1yDds1bbOVF9vrPFWOVN3IInB4xX5vhvN.g7tXR.Exk
h3LMzyx8SCbTE5T0jCNgsLlLfyG+4WFOnRFmsDnkOPsoXr5IDjo37wy8ri1r
ZZELmZRCGgRpNj5nWMZjj9T+.clHZuhxnepokAKrJSaWu5oIJ1zBNQwWLp9x
zgssvw1NGNECod6GGNjuDNTwdf30fI796ojltpwX0clAGAXj3khmtjbY6Yhl
QBul1JZvyCuSMHkHab3IXsk1AXU8bR0jjSyR3wJr.XMyGWfIdwT7Sbbavb23
bvRVr.b4Duqb3jOkaEJKLpC7tysNYkL4dFVBODYOfQgZHxJXo3Ljsy5EcsMD
hIHq.RsAHKW19vaG1l0Yn4GWvS+oGaQTH6axvCVnLDyNVgHEGcrRaKBPzJkg
czROvUJuxFB+cMBiejwdpAY8PWrTWtNogM0wAqoZvvpZN+kE9S2Zklwz6WvL
jSL1gL54qUs8L4KNfHQxGPDHZjt0F2Pcq.crPb3pHXHPy8qsobsq1Ej3ffj7
XVo9gW4HYlfyi94qhh20a5qfve.U0wCh0MnveN0jDYvVzqMeWZp1m0.sopI7
3RZC.RV0B7kO5IbPPGvtvcRZnhPPPU8GSgjeO396JDsp2JdJsopYYBw7dI4N
CM5r7H2fso.G7y8UPzOx57DCOa4wvbxYjfKOZZKDieIRVfOwLrowpiWYg7z0
j6.B4YjVfz0leP+czvbfq5rGi2bTYPafOal7ceMe9WwLViL11BOya8svpGy8
WmTFmlJ.IHnX71JwKaq5r0N7dJHtMNyAOIgsmBhYiyHzCnmB5hIg7TCfohxg
8beisVSo.rUUNOGAt+bzjMp8QgIFOxrdmO711tjJbO21X7bK66761pXsR4g6
AOFYvX05cY48Y0yH57ryXsCHADmyS9PCu8fug1D3oNpXEiBXLe8xkYq18Bz3
6y9V97rIeKayt7Be4mbe9x7lq5K4KVjs5PuodAbUc1dYXMMvhON0ysF2Amg6
ricFt6F5Y3dPyG5C2+3cE2qdixywqbsUyZlliJwqX+.0u5y4QN9oQtI+o02u
HjwDbJwr+7r7US92+7mKPqs+2q56u6+Q8QRMe8iqJ+4g86BpOc2AalSqP4jk
UO2JrLd4KbRNT5Vbg+wFqrAM+zr4e8tM9j2eFAZvXUMk7vHTMCLIAuLP9x1c
vHGR+OGzy+oSg4+Xg6p8i0m6uGkWHfSvK.mlUFnhUYs7pS2ul260xLdW67pR
wss4T1zVPMgRLDdADCdw688iLYLCnJNPirvdbopfmMXtH9fvH7a1wxEE6VQK
seTgVuIHGFiPYiAi3utd4E.2f63x9BlWjuEeKeEuvzD+hLD4zPyjaiqama77
BWQ74ODbCAuM+FdO.7V5jkX7qApkreCpOCTqbcZDpK.pEQwJxOjO4GlsaxvA
Y4wAYivvUkc2fg4rrRPtz3s5h.YlP0Ajay2dAyyizfdH1qO0YycXQ5+RQzZS
VNaUQDr9OezPbsh4zhpBRp3rxWYLFfU653vQaoS2zBvcCaD7MCxfQa9qRtt7
WeI.TmS48feI85e+CYAaW+3l46CDY+.6aRKUtHa6t7UMIZ+mZmqgctn1nD2S
bKx25S09hloU0KDFPSOFDziwRG8nwhO.MziBC8PH9fhdzzQORLzihN5QfEeH
R9gikd3zPOLLzijL9k+Pg.G8PC+Bi4YEYbKCJzgQF2xfAdLzs5kAypEF5r9X
vXMDLzYd1fwbngSG8fwbnezzPE8fwbn1QG8fc0BQZQNRRHGMFygZ5bFSiAez
zosqwXNTSm4PMFsKEcKmpbXoGZb1PowROrDhd3IF8.zwuTXoGZLOqjXoGh3W
BrxODwu3XwGhr+.HnGBUuvRNDwsvrZwybnM3zCfgdRI7gkX3CKsvGsIsvGsI
svGeGiQI8bN7w25dTRO7yQOoF+JwrGJSL6g.OwT3qHnjBgjoFBISLDhoRLDh
QXLpH.HAcNcHwDRnjN9kDSHXBSZQObWZQO.g3ClPTkzEClDSHpR5BgGE6xe7
HPTJNvSOzjBZAlTHBJ5TvDFLKXPWNwEJDzifNWNDnLPSmWzBLFfDzk0EAGYE
uIBd.rvCQzCFGDIzCZLRObFckbh6PntSXLXbLkjiNqgbLtOC.cUzc.DDMKnx
wX+AnSAiCnxJNvHjhP4xAczCCiOPhDid.BaSJjTjlRdlA0BG7Dih.WxQQD1d
aHoHB63km6ZwojinDi3nnHfPJBkAamiPJBUZNIrsw43HHxnmmyMNkTDiPJxh
BhTDRQ3rXaIjhznnHCgTDJ+qIrA6AT6Pim60aXoHAJLhRJBUPHNAgTD90P.h
nHTUlxRoMaTB1j0cW.p8xBXIz9n0h1ZDQRQVT1GsDZezhw9HgaYippYfChnh
ogx7nkPWQPRQDZv1hxfskSHEwPiQTIGggfHjmYbnQHhVBwXPGFBQ7LTawtmK
8GVJRglhnBivTCDBCcTiRQivVgEzFzApQDOSiRJRSniHZI5jz.oDEoMoFEQ3
V3Bzn7VSSn8QMt5EQojMFOQDDF4nBWW7PnAREJS1JBCCQYPqpQEEoQy0HR4W
oPmQTpnHblrIzYDTaBOfvcoH7rcL5onHJwHTgpIozBIl3PHLTMIJK1Dtagpt
WmmhHzhszfFinhhvYwlR4HTZZT5KBJC1zQNBLMzGHHTHRfKsQD5rl.khlfvH
0DnTzHrsqAgBMFQEEgRSiSojMJBhNoHTMOKvIjmwQIWyILHDNNoHBWRiiSLh
vJOfqiUoLinbrkJlH5AUsqABaxX.WwYHbm58760ojhnjqoQiQDYwFv0N+Dtl
FfeCFPEEgxhMgMPOfagefP+GQYfrhhHpRn.p.0Hbig..Vu0HhdvsIC.B6SDF
Fc+WcFQpl85yd3guksYa8uyRZ4lky9aUCddysk+27UU+2xei2rI6a46u9xiw
1alsY9Wx2kMe2iapFw6+rt5Du7lkqWjsY0i4kCM925uy+i29+C7n5ZsK
-----------end_max5_patcher-----------
</code></pre>

Filter Freak

Hi there,

I made a version of a famous plug in called Filter Freak. What I tried to do was make a bandpass filter, as well as a resonate filter, and overlay them on top of each other. Then I also wanted to oscillate the resonate filter so it can sweep through the band-passed signal.

The Low knob is the low end of the bandpass.

The High knob is the high end of the bandpass.

The Freq is the starting frequency of the seep.

The Degrade, degrades the signal 0 is more degradation, 1 is none.

Reso Mix is how much of a mix of the resonate sweep you want. (I usually keep it around 95)

Speed is the speed of the oscillation.

 

Here is what the filter freak sounds like:

 

Here is a link to all the code:

https://drive.google.com/open?id=0B6W0i2iSS2nVNDVodTA0VndNeU0

Here is the main patch:

<pre><code>
----------begin_max5_patcher----------
1381.3oc6Z00bZiCE8YxuBO94DvR9Knu1LY5NSxr6rc69RmNLBaAnDaIWIYR
R6z7auxx1fI0FDIrTXm7Pvfz0Rm60GctWImueVO6IrGvBaq2Y8Yqd899Y85o
apngdU+tmcJ5gnDjPalcDKMESk1mW1mD+fT29elKyxW1LMOkPSvR88.pZTHe
LAqMt1rLjLZNgNaLGGIKQguCruy4VAkW.9NEWfpOs9R0MQh0iAaxsW3BZLgr
bY8L5Tz3ON6rhON+05XbxLBEkX8QxL0kWuGB.AE9j+HfAdHz6+dO7JN9q6gG
bktkmuQtky9ysRHKv8iIqdzr.wonT75c9Y+urQerEOJD3pckxKdd5OCa2g.A
qBMb0jKw7wXJZRYbCzpyBqZsrI4iY3x4UEksrmlvPJbTOUBzBb7XjTxISxk3
UeSTEYpBMEdeRNlMst451aBrDFc1xHzGyv33JvulUh4Ltb6lUiamV5KU8fR2
We+V5kPIR0SleMN0lUkglFzo0LJWYzRVJnreMMp9xNxoxRPOlPDxmd8qK7FU
vaF52XUgaGqJ.9supvuKhhnRRp8uU7WLIRRXTD+wUboXjD8bVSTBIaYdflzl
d1SII3kzfaPQDpjIla8gKe2fOIvbw.gDu.SuiiozAWSlvUS1faXST2l0krn7
BMGw.k3ySnrrD7SuOgkGq5PL3827Iq+RQxlxRHrAWRvBq+fivma8uXdLoeZl
6RBWILtiPKiVn7XBqnkFFHvIXsytjpbdAwyanSX3JRSO6DFKaMxlx6YToBki
ERjDubkSifPO6uliRHxGqB7SPBRjciQUImRRwBIGqH.U.XstYUoQTwxYx4Mf
n5FitSr9XMkwSQz57E8WejzysTw3oypXXdqaPFQgAwbxzNFfBxcaPLkEi61+
ziZDiyWKH+LXmjvteVBaBJQhSyXsYjHImWDqZYAcQuZYlVgccDrwHCfN82TX
NUz9rTEeawapsoR7n3KUM9hzQLL2j2NmaxGBLO2jyoZtoKwy3nX71yNsACMI
+TQr7jJohu9ANvy0frJtNG8YUh44oWqjk6iHS2EI+2jxeSJ+HSJ2cmkx8fgF
KkCGdpJk2XSlaPGuKq1rHNg1sHdsDuuiiSqF7B1Eh6nvf99CggAdae2HNu9D
GFR8f6L0y002bpW3oJ06CjYy2N0qKqLh50E4pl8Ac5xheSbEvNyUfdPy4Jmr
mFx0r62NUoCiLpRyCEOXuWrID3YPwlvS+iv3R18TEcKVLv0KzG3MdbJipLfe
K5aeKonBuhVXytPhDpB95eOZwa0r9VMqGi0rpbmHImIhXY31EBf6tPPfKnTA
Pye.NcoD31tR.nSc9RO82qKVULtZguQ9H7D1GM74X3AwEo36US1u7pohQQ6A
GFFLpwqlxU68PX6tav96ESs+SAW5GaIE7+qx.G.A.+wiQYxI7wimkSjH9EEo
PeKs6aocOsOpnc9H+GNpwFv.kx1csCL2S0Mf82XAy5FxCaeWXaxRS1z9vMuk
c.3vrQsNx7kMcp7Iqqt5eFW3mTjjweR8PG5YAak3DtSIDCGpyfLp73eBFtoL
hcTiCz37IqUPfdFTKBnO+e6HMLKZe8XkfkyipG5pzaqzVriUpupU9qVMur1y
FFMmDGioM3CpLZhhECwcmZeuBmCFZJdWOGSQGyvygCNFhF+CBZJNLeifi6gA
NgFBG3gANAFBGvgANGY5NviKgGnAnI7nBMAGcnAbvPCXa7lCGwAX5x7fCCbN
xVlCNtVlCLMet2K.NkkFhxxVf4hpgTiDUAy2x3Kqx0VU1a4O00fZywKH01qO
kCaDWUwqTUtaNurV3GFVdtN5c6xo4jp+kdTy7ON6mQoDCm.
-----------end_max5_patcher-----------
</code></pre>

Here is the FFT_Resonator~ patch:

<pre><code>
----------begin_max5_patcher----------
1709.3oc4bssaiaCD8Y6uBAg9TahWwKRTpnn.sn+C8gEKBnsjczBaICI5zjt
Xy2doHkRbRjjGugghvcARbrDi04Lygblgbx9s4y7WVdeVsu2u58YuYy917Yy
TWp4ByZe+L+c76WskWqFl+176xVrgmW7n+U5aeGupfuK6U28yjuzMfhC6xK1
lITe.31KtmKVcadwlapxVIz..kDsH7JuHDcQvUdz3luiHQKB79R6uTdp5oTt
7qWGF3+zmTk7wKxptIqfubqBHnmezkGDcO6v1qpuj3g8Y5Grec9lB9V+qN9m
Z9Z81Rtn4G1lWKAYGLRyq2uk+vMU7hMseDWyBZfK4HvVyuKK8FtPTku7fH64
ept071ZearfaOjUtt6xcW+XpssrXySV4+jWjtW5P9LpyF+hwVeaYk3MCtuQ1
YBB54d6jNsl6oYVe2mqzIWi5+94E4hb9125T5aTGYD6reuXXGjCqV7f9ygpu
+2mO+4WTe+6yuBnJtH6ejhnNEjH6dkDzOuvi0qpsSO8DF78GVGGFpjt3PkhP
oKv39UwzD+dUpngTpRQn4naZ1lJdZ1i8RYxYQ4fH0b1D0KQ3Q4b7Yx414jlj
4RGcnAbzXVyBVTDCfmlMkd5ewCEDL55w.U1JBiQJoMEMJgomIgyKDFky7k0O
Z.eLKRGGRMmlvFkxgSux9merwUaBecKw0yrCGeJMZ5IdcAeuLxm3QOr4Hejx
eqeyfjGeljWmUgI49pGVsM6QO4BPgFi6sTeb+Nwh9coYS9T5dfqKq1wUHN5c
OGORqwwTcPL8aPGQ40kEh57+UmECZQXRHJl0i4HZrbRC50T04Zj4FVuh2NxE
ICFUPlL5RYZm9u.aOkr2eT0jLk4DVqWKjPvHSoHwpz5YD85IzQ0UA8qqBLXz
AQY5x2e3AbPfNwG.QDIwSYJ.J0kWPSzAo.yCsnWxGcNjGEGqx+IRQ6jjQIuc
x+QU.ZZyjfgpN83a1qeuGhRCHpn+IpUCo55SYCPznyuvT7XS26BW7gWV4emI
9zeU8voKobjANdEk5JFQA8Ww3KJxK7CqHOCMymoy8GzD+vKrI9sbGz7d5Tx8
r62W0P7q+objwb45B6YiVJ.gLkzVVdaz6mtHrZ+3HX7oKukDLk7cCWLvtXbV
onfI3E3FFqq1Y7I03noulGCwajLieFXdytX3MloBqiShAP63KGZiz6hCHZmL
8z92TaowBCTYaLRuRl5kvwINc5I9uaLhiTIpCi3gNw1yRe+wunLbCqQP1dVL
1Jwu931CCbrdsLckJgiSVzO99TL1NR3XFDjx6SPm1ffRbFCxI1HFjIh50XWX
LUZ65ibcP6B6CeeXLTLMpdANHIvfBuXhjesdkMPr9xIcUV.3zWPzKmjzCAmq
Jh3DgvIFHDNMT4qI.NKcDdhK4F+94KoshDP7EMk70XIkS63JfbSiufxImPIf
4MyENWYCj4Q7wpabxXod3.gq9jzSioKLFuQQwcGbvv7NbxOLYYpl4EqKMPuS
zlBdBqMC7Qb2CDmlNVyhbUeuXRKgvK2yDmQn18GE.XaT8OuZMZItwK2Hsdes
Xv7VNO1KU8D4+nztVhKhLZwo+XJgmZUyOHsfZVwP0ecVFjDsNPcHhHb7ng36
2VPNm9X88rvH3l8Ee9M6qRJDpO7nSzqujj++1qu8YjG4nYeiG6xteeU+xRRW
75lXWo3Zt9KU20kGpV0oDZynz6Y2XZVsbVNWjWVbzXZJc9nAcadZZVwwaLjT
izv4zg2ZDiBmPqAGFD3PcK3PrFbh..mXmBMLmBM3P2BN1SH27GuxoUxL6hGD
D7frCdf3tPVy7z7WowIwC0dK7PgDl3UZL2.O1Q9PgDnPAZKgGvK+XI7.Y9US
asaK8CEBdrWVXuZp7.3whq+fgfG6E95UTe.7Xun6PjOnDqAGRhaEcWgGGJ5N
wwBeQbrvWDHguH1qxBBjvEjDGDOVxeAY8Gh8VNj.I7EwdgKHPp1gvbL7D4X3
wdkW.Q9DZUzbpfW1SKigDaGauXoXHwtZZUcagGvkdE3P3wd4ZfibL6SDT6ik
zOf15mDGCO1aqDvTnq+D3P3wdwRwfKUF4N3QIxrDdfT5tECW.H3t8R7Ak.Ly
G6XbPQtUcWHGqtKDE5okZI7PfdXxVBOXfGPokfCB3ITZI3HeRX.KDFXMz.Js
G6AGDjrdbG3fnVU5.pOD9QfitkV362eWVUc6moBI963esrp4sp+qmweWdg9s
ptrxuJ6t7twqZ9Ied0payEYqDGpzMGz8w5tp0eWYZVUwgbUW5Lu4I+84+GTI
OhBK
-----------end_max5_patcher-----------
</code></pre>
view raw FFT_Resonator~ hosted with ❤ by GitHub

Have a good one,

 

Steven Krenn

Convolve it!

Hi there,

I created a few Impulses using Apple’s Impulse Response utility software. Which is slightly different than the balloon trick used in class. The Impulse Response utility sends a 20 Hz to 20K Hz sweep through the room, that is then recorded and flatted to an impulse.

slide

The first IR is of the Great Hall in the CFA:

great-hall

The second is through my VOX AC30 amplifier’s spring reverb. I also included another file where it was a clap. The high transients really make the spring reverb sound interesting.

vox

The experimental pieces I chose were a vinyl sound from the internet. I thought it would add that vinyl sound to a modern recording. For my last convolution, I did a Lion’s roar. Which created these very interesting sound clouds of tones from the Cherokee talking clip. Here is all of the recordings:

 

Have a good one!

 

-Steven Krenn

Super Duduk Effect!

For Assignment 2, I made a delay/pitch shifter. The usage is pretty simple. It uses only a single slider to control all of the parameters! The other faders are for the level of the dry signal, the level of the delayed signal, and the level of the pitched signal. The slider changes between how many bits the feedback is down sampled to, versus how much pitch is being added to the feedback. It sounds especially good on reeded instruments. So I used the Duduk.aif included in the demo content for Max. Check out the patch, it’s pretty fun to play with!

Here is an audio example:

Also, here is the code:

<pre><code>
----------begin_max5_patcher----------
1599.3oc6Zs0iahCF84jeEn77zHrALv9TWsc5pUZuT0t8opQUNfSF2B3rfYt
zpN+1qu.IjYRXLoPJS2VoxDrM1muCeWs4ySmLaA6FRwLqew5cVSl74oSlnZR
1vjp6mLKEeSTBtPMrYQrzTRFe1Y593ja3p1+KbAmja8Oka5JqLklkP3pmCrs
QVIutU6pVWi4QWRyV89bRDWilvv4dmY4BBmaelERcEZO215hpGgFqVV1hO7L
WP8RVvuMgnZelrguLcp7xYeih1ad6qN+0Vu7s+s04u7km+a+q0a9y+3Em+59
QNcB8kxVkfBB7ZSRcBGVI8UTA9r9cLMqtq04jBwHwbJKqApc8bTn1AI+ic0k
MP9aiRbsUThisZM78akQ7GVF4EjD7s6vHeaxFzoCxFZfks79TxzZtUBFBzpf
41OBVB8Jx7UBI3t546JbdFNkbudem6E6UFg6UF8ZwX0qoP5FnLYk1.ajxhKY
WWi.68H410.Quf7aWSzS8rB5pLbxryZ9K4+Wlvvb4ORnEBXbwFzkKVFgK22S
xvKzjX86rB7Uj32i47b5hRNY6uJpHyJ1TxWIkD1x5lqau4zmvxVsONETyo6L
Zg7myMe30xu8d5KU7lR12y7k9W1W+XkxAZu8RynbpfEUjaC8vcFToXPaTAc0
8qzAq+SGUHyHWKdK+.CMNds308cB0G6NXqANrdnumxuK.4p7hntBg62XCtIl
wRV11WM+ZtjcdDkwsp0asSaLYEzOo06DK8.vV18DagzoOXFaAGqrUJon.uh7
.5RNsVAcv+VKLEzMTmLBXtCvGJ9klrbN.YEbDjkwzjyQQSB2kBwsCJN0jjXf
zTwSJ8FM2V7uV3IfMTkyC.nhy4Aakk7OFVR3veANaU6N7sagIySwJzh5Ot8.
FrqWtTXtth9oTlHZANNkHRgKDY41OJkAHjrTfJyWnNQ4CR11Cu86wQdFmrBr
mRVA5+H4pzf1.g+vjWBpS4k7+fjRLVwCzSJdfftn4E7Cilm2O07tW7hxzEj7
iHV791OHcgydtp8Exq87RbpWyHblXlDwQ2QaXvhCKTpJhvUsMO7fgSDiSLm6
9r8PHlhDZbm361RErx50SkniCPU3Kv9.UzCQljuWkzEL21.tjkSq23ocrje.
YVYW.5yTZhIqxwwj61KW5bjbYUFLHXaEf.bGqEfvYqjpr8i1kxJ1QQKP25q6
kO7NnTSy3cN839uLUXeUTuWf4E0idhVSOrupo2aGSp1Iqmpa.BnuzrbEAJ8L
jr.vmprUeoZ43BMV0B37zisD4dJIqdltBUo4GX2FacLaWj.vQrrL0x88fvJV
tNAe6cVOGWFSYKoIDq3x3xONGSWZ87DFasEnCkMAerXhAZ8M6v1HROCpYZ2r
VeHkoKIRLaB.zR8PKvEzHtnx.4rIpJvst5BAmmjvtdUBaANgSRWyZV4hdCnD
IeyxkRXURba5MkEqQiZ5qKERly2Jp.+IjrU7KqOWIavbWjS.xWHUbZzGK1HV
aehM...2Vdzr0xyy7.P3+JwIT9s6AEbZJofmSDOaU8RVWL7ke2S0dCTVftHa
Sp8F8CSs2t+r1aCOt.Nac+rurHf9KWHTk1ZUt7Gvgk+PdPA874ovw47qoYwr
q6GdxywsAO0d9DNiOd5PUHii5hKq19bOb06riHxmuL.nWqIbYv962IZPsHBW
CY2+yfRgTY66xMErx7nZpuJVr0VnFKhbHhGUGs4caKpuwftjFGSZFMZVLsP5
1TIm6+kjovQ9EF7n3I3jAGnIv4dXdHwSfAvAMpPS3nBMxxCOUpNglfmSnpLb
bgGSdcAGWZOvSn1iiI3w+jgGvHS6A3Lxvi6nJtE.YB8HiaAZAOoz30LZFunt
3L8gWg7l6HS0wSjky162tXeGjB6tKE9URgqGpw8CgTXTfoSWTaP33BOF4pSY
eAOM3wDst6A5AEO9lfmGyVtGSQe.LJ8bczFg5OfuZSxvFUQ0eB.ZbE5ve.3S
DDc53Si7u4zMAvwCnNyGm.0Is13tAP.FYYp6Yp893ANfSWh5.Svi2oy6rQEN
brQS0auCd85qH4EUyoBJyRwefkKu0+ro5uhD8sp8uZVN4JZ83cUsfyitjxIQ
7xb8lKcSfd6yUGlQdVIUs6RSkq7Wl9UP15W9x
-----------end_max5_patcher-----------
</code></pre>

Enjoy!

-Steven Krenn

Autotune pedal feedback loop

Hi there,

After listening to Lucier’s I am sitting in a room, I wanted to do the same thing using this auto-tune pedal I have. I wanted to recursively playback and record a song through this pedal a few times to hear the auto-tune degradation. So I wrote a quick little python script to control my audio interface, and play and record a few times. It uses PortAudio (SoudDevice), SciPy, and NumPy. The song I chose was “Sam and Dave – Hold on, I’m coming” at around 45 seconds.

Here is a link to the youtube video:

https://www.youtube.com/watch?v=AREppyQf5uw

The auto-tune pedal I used was a TC Helicon VoiceTone Synth. They call it “Hard Tune” and not auto-tune (I think Antares has the copyright over the word auto-tune). The “Uni” setting is the classic auto-tune, turned to 10. All of the other filters aren’t active.

Here is a picture of the pedal:

Voicetone Synth

The Python script then controls my audio interface, which plays the audio back, and records it. The interface I am using is a Fire Studio project, but Port Audio works with any I/O device.

Here is a picture of the signal flow: (PS, don’t mind the dust, I haven’t been around all summer)

Voice Tone signal flow

So the audio file I uploaded is the first 7 iterations going through the pedal, then the last clip is after 50 iterations. Also, I used a -1 dB limiter, but I’m not sure how SoundCloud normalizes the audio.

Here is the audio file:

https://soundcloud.com/user-333984151/feedback

So, as you can hear, the signal degrades really quickly. It gets crunchy and distorted much quicker than I thought it was going to. I was expecting more of an auto-tune sound that slowly degrades to sine waves. I think it is because I used a full polyphonic mix, and not just a vocal track. However, I think it will eventually go to all sine waves if it iterates enough times.

Here is a picture of what the audio looked like in Pro Tools:

Pro Tools screen shot

You can see it gets exponentially louder with every iteration until it’s being limited.

Also, if anyone wants the source code. Here it is:


import sounddevice as sd

import numpy as np

from scipy.io.wavfile import write

fs = 44100
sd.default.samplerate = fs
sd.default.channels = 2
sd.default.device = 2 #Firestudio

duration = 15 #Seconds
myarray = sd.rec(duration * fs) #first recording

sd.wait()
myrecording = sd.playrec(myarray)
sd.wait()
for i in range(7):
myrecording = sd.playrec(my recording) #Play and record at the same time

sd.wait() #Block until done
write(‘write’ + str(i) + ‘.wav’, 44100, my recording) #Write an audio file for ever iteration

 

 

write(‘output.wav’, 44100, myrecording)


 

 

Thanks for reading!

 

-Steven Krenn