Adding Potentiometers to your Raspberry Pi with RNBO

Adding Potentiometers to your Raspberry Pi with RNBO

Unlike boards like the Arduino, the Raspberry Pi doesn't have an Analogue-to-Digital (ADC) converter to convert analogue signals to digital. In this article we'll learn how to use an ADC integrated circuit chip with the RPi to read in multiple Potentiometers at once and control a RNBO patcher.

⚙️
Before attempting this tutorial, make sure you're already familiar with the basics of exporting your RNBO patchers to the RPi and that your audio interface is working correctly with it.

Things you'll need:

  • 1 x MCP3008 IC
  • 1+ x (breadboard friendly) Potentiometers*
  • Breadboard
  • Hook up wires

* linear taper :B type potentiometers can be a little more versatile than audio taper (type A) , but we'll learn a trick in RNBO for how to adapt to either.

We'll start by exporting the following patcher to the Raspberry Pi target:​

RNBO Patcher

----------begin_max5_patcher---------- 9376.3oc6cs0jaaik9Y6eEnz7fsyHqP.vaZqsREmXO61yNw1kcx7RRJUThPp 4XJRMjT8kjZ5e6KtPJw6Wj.UqVlIyD2lDMHv4C3fuyAGbve97mMZt+cjvQf+ KvuBd1y9ym+rmweD6AOK9u+rQqstagqUHuXirhhB15LZr3UN17G5O+e8ZnQx C2XEXslDQBlQ7rl6RXEQI9cdaW634Rh3UFL9gr5jWOK1F4ub4n8k0eaT9Buw JZw0NdqlEPVDIZ4H0IJiAPES9enov9CDZhB32i+cDUSz8aHhegQi.+N6M+mm +b1+YbK66K7Wul3Ekz9hH2wa.i9AqPmEf+GhGIvJx4FB3i9t2u4Zeu6KSNgS d3ReuHOpjh+p+gUj+n5DRrRuzZAI8yxJgTZRBg3BHrhA+OzRIf15YSBbc7H4 +hgN+A+YrJPhRrOes+sgfnqIfMA9aHAQNjPf+R9S9z6+gO.90a7cVP9c.Uhw 5DEEiHTsRqNJYLDiYz04+gBSxHwd6aVvGU7OYcovj2Ne6734FvRFjnHmdGFB mnMFnpx6kS4.OqGK0t2mirh11t9koj.McCd2RAOAm9eLfiA5JGUmbMILzZEo PmDpLojQgFk1ePcVAlAelIGlR+OZFzdxTVWsOTmUUWszdJVR8TLrRjq+5odj ao8gBcTWeKalP..KoCq0ggp00gSVUh2uM5s0lpnKFEX4EtwOnLUnpc.RmVSO bJl2ofXwpv3l6hNLsH69ikTbnhenrRcXxm4aih78JagD8Cl2R6GDHDQPSDeD tx9UYpRBM2xakTGHP6XA9.UOv2aIVMprw75kRM4MANVtRZ5erfPLa.hDKHga gjnDNIrAbRbYrebaP.84f26GQ.ue654jf1sVsljVTCZxDJXczD8z+ioNURop zKKcyoj.thx96t10WUkSeEZvmIfYpIFCLM6kkr00JagLHRNCkglZbZzkAWm9 0royjJquBkTeEalBtN4qSGPqdBvgMJE3wlcFxYbBDZxlcSFd0o59SKs2qUZu Wqldu5Td2NdwaEsVrF93b+eYJNrsV7PYKj0ArtQChhgZpd5c80itCbiUvt0T B7l6+PQfN8SSONtCZcvM5m.whOlsfmRnyJO1Reo+IWmvn8qGw+JjfXYPrPft LkiK4FRPnCkxw9V5yFYsYSpG+rT+JLI2+xmWQli28HGOwiz18n.xMNI+9J6d pU.suFQ6naCDx26zSzTypFep08dac3MEwCoXXbShiVLbIbSr2E3vPxu8n8hO yXFdS4hQMS9rBCTJ+HPGOrx0ewWH1oadinV3643sIfDRWCxJJWqejMYo0V2n YYVamM7qj2m3AjReYYNS4YiVE3X66wZCYfB1iS9Zz43ZhgFo6K7R3YsojeYg aIp3kBsSysBXHU7ZonjWF466l8U698bIKihe8FGOubBwH+MU+x.mUWWyu6be 5KWWWcyeS3rsdh2NiNnHZVn0MYE1QVttwyoyV82Y44r1JhD4HP.jxtWJ3Rec 3h.eW2L8Wwatoj2XSGjufbqicz07OT5wBzh6rIYLzncnrsyJRXT1mEYsJL6S BitWHzS8nsyimDOKhrdiKsWjs.zoGzo7gLOVEWvjwY6kKNQwU6VO9OaOJkrY uCVSOeOstyLOuNcn4sekNk5AflhBUDYnktLk4orhZPwYeQQx.UoIUiO2WaJe Qhov7r3qUaZlBwT0PG047u2RhaxhN0rhsbdQCIbiQx0B4uZmhrTUynjxvW3J Vwmz.hzKnkw00YgItck.QA.eOU7SQL5eZcGUKmBE699kA9qoJ5Wa4R0GYC13 e6KQ+1uMFbik6VB3an1T+J5+Eojt1YNqcgOc3VdbLMxqTIxCqD4Q0i7PCc1p m5pBS2TDqEfZB6iIAkCyb7V5mRxmRzSaUDhc3UdTkodKHWEWvTMa1hdq3qak tFRWEL.hJ.y75LuWryCeH3iA9ax00yoR4yjHJ+SmH5XOApLJWQEqBQaQkTON gTf0JLyJ1wed1ySTOjV5vULQEfV4ViXey1Zw047Qw9OGe.WIuwlPWCdAUAmc IuLArXCG1a5atN3+LQfNRIWAbslS3yKGcUrb5eVlbh13bst2OvVvYBm5s6nj jv6fJ.ZO1AqD69Dqh.hIgQ90BiGHRkENfxEN39+nZwzd8FxPV89TZgR7FlPR MoODUxYjqPYSIcr7CoqQJFqF+X0S7dZ8jrOV6Df0pq.9jVWQ38qm66VopfOt aLDSvjqXqs7ro7zCtOkYIkgMDJ5ICr4WBI.KO.q5X6SKcHNcfylsQidRi.by QqR9+NZeUnGNrAEw5UK+orFbVKGH3mDU0wn6k0bFcorTYr7nArAVK1bBwEXI 3xGVJ7KYo8jKR9MGOnYcmzlPIppiaBk0cOwlPAqFahEs0iMnZwlSHtT2DpR6 IOgmP0ifF4tM9dDuHoXo2BKWh.2BAIUL0dA26G8UfUcUCRuKQFWOJYTMJEFQ 1DJCH5sN23XS3brEL3n1zQMryBH5iL92zl0h.BemhXezupsG+ykHBxCalUCa wEUVVH8FvZ+.BHfXYyjW.V8BV5Gj0jIJhx4peWDyaqthXBjYxD4.oqmzM31g bVa8TAjsRf8shtTY1VUfMBtQ.98m+.bMKWldT5SU6lO4H+VOmH4.4h9Cy8Zh MnYtP8L6CTvcHRet8EBn9KLznAvTsZvLx+PbEX0f5O56cCIHJjttJctrad+A xckJ8so12B5j70SFcI6Oqe1GjxCoTJQAjP9lw2.roTMrkcuejLv4Ul6b4jkX Pm0hnsEA1KaD7uQE2GDFNsZHbWYNVj6CrJhod71qcVb8tcpHG.EBt0w0EPUw xBmBFEXfuGHdqoArXZdB3mYbi401BppVZQ4N8zYA8gw5po+7KewRmfvnWP0F aCdAaG+ewq9ZPCb0Tk+DEIXjW3.QSSpqwfTJvX6HoEW+Lst5iMs5wBil62LB EETnWlxdFl.4plWrrl0JWD4JIGmd0auBrv2KhEBKzYawVfRUvF+PJ0Gmv8yf mbAZJZJG4vjF+3dogHHpmzzDIsZbGGIxRNLT+6e9CumyPg9qP06GFE33shiR VzIWzej8orshr31prMj.leOm2JyGPArekE91jupIn9SwRnlvS851s5Mcbe8q wMP9rfAFXYaKljsiVp3XEx20+e8su6ie5c+3a9428VvqA+xmeG36ieiBUmZX D0H0e+IxbR3QnOcokaHols+VdfxapAMl7U9BWW4svcqM63V.9nPf2vDor6gz yKG8F43sYaTlPLrH7sKL0Ji.QCdZbO39wrDQyUvq8KKFLr2GNvY5MYP0QB+3 9jqSLt41ZJa6NvFb6iIm1Iqul3tYWySLkHST0kxqZEea1frr36YGlaVPcjeh zn3vd+Jdy60P3TMnIDg0yT4Wa4Q61eTXJyUeHaOI8ndQDeRtKJvZFS0jy7sQ YCDvzgRXpMbENISqJUrMnj8M6nHl6461EibOOIJUxr7Ydmmm8kosRHSfMl3W trEO8tbkqarW+cl5IuKgxVeIbqx9zcZexZlz9PoTYRcPRlP4sXLw1sX3UL7p WCg2cAo627.smgpJFpMqLPZQGWHTqKNBjpFxLDp+FQ3Sad3R9u4gSjXOveK0 ZNXEhcrh7k6XEwQOzTYBDhQZZpZS0QpHHdLHN0gzHLTB.zVcQwKvz54PbAzr hBitgm7Z4TAoVd19qolATAnBm1afJxvXBDqngvPESngtgNcFl9AioYABd2ZV wdPGQBd0bhfhHvbv7pfAS4e3.PhzMBBqT.FvnVBCOJGT.Zy.Ji3m9Ch3QP35 UD3krf29USNAA.7iSbU2ProSq.jzkpvVIUQWtRU5JLqVQYSKCy0Y6Sv9nlgJ 61xRS.g.alQFTMBDQRZZeQh0ELA7aQ6+22QERwugsmD1g7Mkf3Dw1PBKvsW6 6lTGiA773wX.qSx1MBV7KONSsYEBbrYAc0RGpIOyuOYyk225doCsZnUwXf6q x1RthuWyADZgoeQ+8+NiS87na8S5GzJwO5ZVGSrkKrVOsEyaiStfiaedTiKe uKvKbE14ljJOFu2h2bGl5RFexqPdXE3DFyr5QyqC70HpaJaOtpvQ3.BtR3iu YePpcO.GRDqcqRWRT16yxvJ5vbHAFqhL0LfGiCIxPXLZVQZVciqXzokwN6vn pTAawdfydBYwR3raZHcN60QYGcpormMc7jELVFP92e60+AnnySJIuy0Et6Js BNToD00vSw5JTz.oMUCCo3gf7NLIMfHIw.cYVuLw8clCubFDqlbyk7seQUuD YPq8Mv3b4rpCvek68J4n+aOeOx2k0wc6cmYYuduy.UJ2wdk6WuopPiIZJlX8 oSMnyCMMUwsUUmXA8YEgstouK2wzreU5w1DvBQcXlAfvCXRV67SQ4CvlJGkd zN1rhs+tgDrAPmFXfwAyOHpzb4TdDQW9Z8TE9kHNSV.QkmJK51r2c9UusSeh kAyJzG6FnEWMmXfKLc1eMOhoIeDCqhSgXwYwoGQ.S6vIV73.XrLnVUp7L6Ad EhDxaLdYn+XiWn5HjiOGALmTomwBHVOvDDpqldFlxiNhYTChodNgXL2YLw02 +Ka2.TnlLiAZ.CfI.VkYUHbeswhkYVURVD8noXjpeNqX2niIpo800IBkH1qH OT0thXH+cEQ.HPC0IHCSLDapqNUQWAR47oBOlcEIKnv6VyJ1I5FbHDNmFf36 X64dU.gdeMy.hPSL0PHkoHJ6OCEcCSwsgf71.9uKFGNBxbe2oBDrItQVUNcP S91.IPAC3DUjNTgZJDTGqgUo5mTQxDDDcrYE6FcCHhkOmFvXy0Vg9AOPWB1C 78rLoYkgFATs2V4PQLKQQlfQbGaVwldGCIHQ8bhfi+JPupUtg81J2Xj4DMMc c5J3nolTbfqeBc1EYJ+0YEkCcCL+qm3HRAUEVh5s4RHsIFJppPSUScMUHlci dzGQjB5vMp4jFQJar9RUf.ru.AULcsFESlmMMvJlH5+tKIle.fvIHVTjQPS3 KqLa1iSPPTbGpyDDDNdRIdc1edslS3gh.f3RXaMC.d4s6+7ITsHMI13wmrNX A0uvB5xKwqdBfEWh2JQpz9XCXnq8uEr1xicz3npZCYPzFqEe4h3XMVi7yITJ mNJVrTwGNuOOz57GhTkwe98hbJOawg+S70dG3VGJpMDnQkEnQvC83zHIU9R+ fBwTcJ8tTmTWdRCkpQsOelVKolC5LO8kZNwSYUlU3.O8kCH5hPPHFpgzzgmh S6Thxpr6y+9k.5vA3g1cmUjadWODOe4DYawZGaGwI7tJSLp93jXbjlXXhlXh UmpB0lpZ.MQJncQMyYnIFLIUxMIkDnqwO2++jn9.ePhIU4y0rEteDgcz5Xwm kTR55QjW66whFZwOtbI3krYw+WfMNzAbiA2Pb8W3Dc+qNeEqMxhsAC51vtxj Yohm3avniUnxtBlA+ej64G0ZVklHRoOarHmXeAKMiy9HhkXjg3LNqd.9QdMl HKKjqOt7kraB7WQ+rxSx9QQEFKYeBK3ZTso0xHRPj+1EWKC41aX0F3m4U2Er PiMPySj.INVIF6RrQjhdhqyuZ8vUMSuYK3Nm3IkaSkOxpLvOvNSQuTgYdFDY 7zLCqIIeToqVinmI0Y2TgxvQKJ7r3TF4+qYB+w.Xg27Z3DN1Lg9VTw2ZBmhX um9mvmlfWRpo3WiuUzxbaZesC6I4ag6vUhWwDydgrKDutjuSdRSy9f7VvgSr tIWg.6p2cxPu8f5LG.gVo2KxRq7f5FGGQR4iKYnycnoTn5nvI8lbJZTGX6sZ pSxW9ta8zCU11h0Pk+37RIH0517wPzppV8w3t0zt64.6RM6hmCvQrk5vt72q PkVjrtXrhB0NmyBwXjoFDeJbMaZJN4W1rAWwtuONqnqL6lGYSItNQNl05KD9 81NTQgca0Vg6YUOf6o1VE5sXioSlZhLvHrFTU0PUCSIBpXdTwdaaw7.xFhUz NTmcd8ZOnGK3lUP7zQDOtdNcWGt7ywU4Q.Df+Nv2yoDcsu28.bUAl0gDicZs 5lKFqNIczmpiUoCSl1s3Ocb7XiwOVYsl3iunDrTsut9ETNgWTpGeXRrdajTb o25hoohywaV1F7z4rYTxwyoydjUxQJaEd15yt8oKYwz71IgPxVBgtzjPXYKg vWZRHUYKgTuzjPZxVBocoIgzksDR+RSBYHaIjwklDxT1RHyKMIzTYKgldoIg fJRmxnxEmLR9zpu33UCkNwZ3EGyZnzoVCu33VCkN4Z3EG6ZnzoWCu33WCkNA a3EGCanzoXCu33XCkNIa3EGKanzoYCu33YijNOazEGOajz4Yit77es7cf8EG Oajz4Yit33YijNOazEGOajz4Yit33YijNOazEGOajz4Yit33YijNOazEGOaj z4Yit33YikNOa7EGOarz4Yiu33YikNOa7EAOaYEjQm2wVTyG97FEThLjuHoq KA4U5p6IeHqItDAhuCAjfvIS8cIDbj0D6iN1NhK73iN5GE0zWmmeTVTVKNAS RIOnsu1N+ma1xgXNdQj.OKW4MTaWMdAHi1c28brhFQEc9KQZ3xtb2gDPFmJ3 Ot6DG3yumHAgamuQbFelbQjA6ZH12eMrFIM65kOTrVGusHk6Wz2wqTvFRP7o 9H9nWElf.rSTpkiGwFr6F9JD7ReO26A2Pkz1.GOPxX.mEo.rvW8DGxl66613 Iq1xMjT2UAqSjqTNu7+LqhJNq3B9FPUboxV3LL9d+nOes+sW48SV2ckW3Fxh 3CPHrZTXoib.A1QFBvpL1wb002xdzfDNkMOwG9bYHo+wq8opkD2sw2ZwRloV QoUyHX7yurfWjbxzsm.dQny5MtjW.dY7LgWAt0w0EXsMxesUjyBKWpdK5+wm IbRpEVFk32hb7V3ulZvt3fAyH1ENA7YJzvdlCOif9hsgjfWHpxva4m6YVFKf +K7aQB8mwUNUEJvxylc4aEHRSnr2j7E25wNAR1SdpmsJDha1YqiIYNtjTQbc UOy8cfcfLFk8128wO8te7M+76d6DvuDFOdH9SPWWKLhXYO4hXNdc7YWPnlPK q75xa8Aw03Cw4H2PvJ1E4HaYKtmS.KC7WCr32j2OvjxN1hDra7RZ.aG1gAkN O8kroMrKpbWZuzaw8uZLKQgPmktg3Ex53hRj75wzYXzu.8w6lt4yufyES5d0 jm94FlEhC0ZJQvwMmSTi03tlfURgk4mHabsVHx3sr5jqxMKSlw.Bk5487rVM fcrZsA+E3XveAAHQKlHz4NmPGbwqoXLlUEVKV3GXy9sRtK4m707xx8b1a9.u j3Kj4loBIWq6eexGbTOm6lK0kWsN2ZT5u84w8ZexIcuCdauAYe+bS1ePiaJo 950FOVxMd7orwqJ4Fu5orwqI4FulbZ70lixKX.dl7hCyVw5xS4GPhvQUcpot gtt4oHS3jiWXB4imWjbPtUNKXK3NqDddC9xJSOuHa+1e2jVH2lzwDh9n7Ynj rlajVLw7FPLHUL+frYSpWU5rfQqs9WBX2Lmm38DOVKGY8abRpOkbL0VbsCUh EEmclGcmd1IviXHYf2VmbTFxxRXmffxgYAo7AxotGZU34iErB+lnSWwfm4VL gYSOKOaz7Ut6mfkabuGkXByU3dQbilKTjXNqyVRGKD57GB1XrOaEkYYb6txB rCl+GzYbY5XqBbr88XsoBPI6UIecZ+leWTx9uY6m7R4YsohJI1dnpKfXWdma EvP4XxkoIUOJx22M6qgYuBAVFEWjMNddkHvi72TeABbVccC0wbeZAV2z2g+1 P57RQIlQGXEMKz5lhfSD0Rs3bUTwO0cVdNqoLlibDnFRISAHdLR3WGtfolnf 7P71ap3s1zISKH25Xu6VWH6ao+ZNaRFSl8tZH0hMix1UDpDy9zvn6cIk73c1 9LKhP0PZEURgnSGoq1ERI9GFW3jwuYkgI9YdzVO9Omw0jL4HoA1lYyoTEdeS 4VJQqHIER43k+tZo5KUYg19zoNJkhur7q6g8Jnye+XaLAowt7dE2duklGwRE tGUcUOraAh74IphhmVjunRVzrXNipjpiYvF6REOewJTt5MBunkXztKnL6cZb +Cp2T5FMmtASpazr55MstQyqa1fu3A4d1LhX2m2v5hNGQrdo+ZlGGjMLQGuG R.9T1CfjuvEKVTzCkUHqSti5kof9Mf+9m+v6AhjsHyihgTdwdqR10S1Ox9rz wDVbeVwfk42y86DiBa.6WYAih7kN7Toth8NSrjx3ZMWjY7G8SwRwxpHgsY9A 1BZ13BCEdd8CMx3aqBxxpb1R4CdpwoKGlgoEBmOl7R3CbgxXtiL4J6AvpkNU X4ZMVuVhErEshMuWsxYDaIuNqoRkTfprksn8rPDbJTg9+LK7QJwn1rZiyOHn YiaKaM6DUJiJ1M2qXeznV7kyX+oi2rxo4TscnUYKJU.+7plKTmyUjJcNdRo+ AVhgkxRVqNhcnZI1gOVhclSE75zDFfYn0dhckbKnWA5I5syJu+zcDTTcmAnH amzTqC7f0BdvZAOklAOrAmGtpA+10FqWI1cQw3VHiFnbOP4dfx8.k6KRJ2sl Scg8AVlTpYtPlEjVwJbSQqV8vnUW5F7d.DtyX+QC7wKb84liPdYuOKcixJQ6 oj+ZCrlgJdpI9BiRNUrLqbRNcmQGSDedPmqNt34y1PRmN2Tw18nnNPmafN2. ctA5bCz4FnycBnyoMPmafNWLcthjbxQmCc1Pmq7kg1ym689.FCH1X9srSGR7 4w60TUkNgfqs1vB46bmjEGOvmd+O7g70oqiGYg+VgvEWiG+T5WJhpHCQ7AYH hWFnfvHii3iO+4u4AfxDTsLn0qU7fjf2rU1EjBpF8gur+FgerK1S5tUOey4f OripMtRxm7P6z3YXqM4Id7LCqd5EVIESiKsgCHr1UrEW2j.N+C.D7Rw584Ov MmD6i5aVcUkeXJ05nlYjSWFc0J5J1xlU9OSoWKZDryLbxAiIDXyN+1zoDwGs x8EIdhvDvuEs+eemE6DNJHfwNtVgr+Bf3vOUUVfau12MoNFC32VliALNerio Eio23L0lUHvwl1JbV5PWliZCffXbpV2KcnUCsJFCbeU1VxU7C9b.gehO872+ 6LN0yitMgtH8wy8iXmNSZizg1IXsdZKl2Fm7UrY64SOO8p0Aa1F0G1GvqXFM IJo+XZnmJ59xJ5Qp18I8jV0iHDQhUQUqcLUUlrLHNJKYfPLVEYpY.aioLJc0 fhXyIld77jhNKnIoTGMIidlljfYDzTeflz.MoAZRCzjFnIMPSZflzkCMIii2 qqmGzjlWGMIsSCMI3f2jpcBMS82Wwjjxm+EGnHMPQZfhz.EozpGNQ5SGnG0N 5QZMPOB+zfdjMw0595iwPk9cGRSnHog55Vj1lMGk2+lUd+n698iWamIwEJtN LC2ywEplXasUMGhKzg3BcHtPGhKzg3BcHtPOAwEJdHtPGhKzj3BEe7TvOeNl On5nyg5Y5bp7j6lJRYfN2.ctA5bCz4FnyMPm6DPmCMPmafNWBctlxCOpOUny 0vVNC62sbFh49lCpCG1x4gsbdXKmG1x4gsbdXKmG1x4m9a4L73IHcNPO56p8 fKf62caNgcDhuaynoSzNxcatqrnim124w.e2rRkNceOr+tyCGd9P8mxW090i mhikcbdMREeF5vSoy+M9l4qZiwg8qeaTN8rJp3ljOmOcDGz9loBO3D5AmPO3 D5AmPO3D5GEmPW50fnTVj670iyOzjKmenYeN+vQXXC1PUc5TJm4KOeNGmzbT kRpB8bHs4PG5+PMLpm1yQwq39gCgDYJTnjRzQcc7BEkiWuNryCJXBvYkJp59 XBNXbNj+qpYDg4oHyWEGovcwP6Nm4qjP9g6rHwW8s.HxXRMHlwIYNroHWkAO 5.w+T4ZjucVoBmtOq8aOCFDXYGF7.PCnovScczgDZ04tr5SecZ0Nj.0d0557 .8GhwcVu931cNM3c6Yk1i5NNxqrygkjstsNEvZGwzYTaU.ivMETe0fbsWULq qNqzN0Ar3ISr83idqi7WVC5odJV9L1O03mj6h+ZGamaRLFUltx7mt5sWAdue DA79pbazSaa8akiKKeqRKtC9aYNMQ1PvmolUOmJCAKCHTs.dKtezSt.knUR4 Vm+hBWX4J8Q5elVoVfvEtobHFG2ebGwCO0A.PQWOZsoej0eY95AYc1xGPVJa Y8mHKIATsFrXkgpFm4HWQbvv7i6KXJVdwdMK.mPvJmaHdWtHQS6+yde5pOsM yND7Tj5ZtN11twv0s7HZhAUKcBBi.bUe.axp.BgAVqYIxb6AzhhVJs.sXC2k Mb821M4IxGPo.PmUQmF+BA9E4OfMfQppsAbXgTbugMu7+8Od0nKz.LskKtv0 cjX5mL2HwOyUJw2Tmud2V8VuUtKcbiDa1mLwf+FuVAa8DqH.3VCFN5qunXnf xG3IJHW2aCdSSUOVKtOrsHcb66JwFxdjoRxVY35IJBbONLowkQNh3psDeekc umKs.YciWoEoCAUqNFY.0zZ2lOqzCa97dchr8B440rtU22AZlvYVotQr69Kk Kne78WJ+tLpt6d7ivgops9PriEYjbiN3ua9dTj7+agut4czYk1k5N3IjZO9n Gyv.Gu5BI29E9D96NNrb6PTY2QrSzMmUZGp6fWrPqFzKSSheocUXchrfJWzv JW8Pan+1fEIBg3fV.TTdYSWrvwyJhpUMUY0Ek8fFzcnsOyNz9fOFMPiNz.KW XuKd4fmsMbVZKrtVtxIskq2gVNa7C7DOjPW7Mamjc5ivXVsNJ.O0sO0Nz9zd DZe3tL0A9Hz.QcoEhPOByQ3ezVKCUeLjgzuIpshP3iTCD2VIn4iTCr05AwOR MvVOFD8Hz.gcgd1iwzX3AP+4z1.06plvSdKrKqFyxFwm9VHriiBO4MPktHBM dLZgcPUnw4DW6t.8pm4BV7ga9UV6wicK+r4qV36JbJ4uBTlnfgXCjl5TE3Tc ES5GaBb2e0vTECYOBAgF5pFJZllHrFdLyKgYq9LU5TzTUHZbleBqw9wR9MIt D1oaISEf0LzTULP555PcS9uuFTSSWa5TnpBT2f+HScngotgIxPEpoZTRcasX QgpVEqfUgPSUHdJRiW0J5HrhFFCo+ATWT0HjhlhoIDapYVRMyNpdaHYpYjlI FapnimpogULh6zpHZK2TAgMwph9AbJbp5TSUUrthZIU87UKcbc4U8rc9HW7k ppX8BjV3C.68u.ZmrTGGi6JJpZp75SAaZL0ngpwxakXquPFJY7jclRsIvmc9 IimpQwooUVeai7WEXY6De.rnU5yKNea2OsWcwNk.47c4dkCM3yxboPfz9esJ WMWYlCn5rFPoINBHOFb0ENVt7TFPoQZaJEeMGgskGcso0cVL0.jU+acAhPmN oj47sc0aQasaOaMo.fZ2V1p2R1Z2N1phoy5Nt+Y2slxNl+0IgQUJgq4n8Wa7 GHCIMr+kz0tqqUer8yIsK835eXx6lNh9O0jqEicibxthG+9CSv0OG49mnh6R mmV0QpuwiSesGk9zTSy.sUDpGYQ2pO170ej4OpEAp+nxWdLfTQbHjmKd0GM9 5OV70dj3a33vWY3Hz7wfugi.eZ7r4nOHMGgROx6Ubb2K9UJ+XtmgOT0ayYim t8S.kNXET5fxmRm3nI+0CiN3.itAFcCL5FXzMvn6qWFcvAFcWBL5f0vnCcXL 51gPECSs8j7Jy89on50bXoU0tMkaOEqkoYWaDlssQTnbE2rlGkFFr5FFrWZX pssgA6QXSM+VBUWi.1SMBrRaG7zmhB1Ndo1hFgdO2FvsnMn0ysATa.CydtQz lwkHidtQzpgkndrQfZq5cbe1HZqn.1qsBTKaE84HSD7b.OT5xPy9RuMr0CMU 5QYArsqvOsuaDsZgzdsUXz1oolmZZXsuogN0DwJF1asLZnjaqPqssh9j.Br0 rR6SJHv1tbiZe1HZ6pMn9TSOrsK2.6UcrJcXQuxWtYuou8WDgcXQCVeEIX8S Tf0SQ.VKh9qdMxu52n9RBQ7UyQ6U6hzqVEkWItnRryLWkZywhmkN5pOj7Tle +x9KI7HYS+V40ITo+O2u4N6cQ4nHqUYbqVYZYZQMhpqFy2uXNZi4JvEVKtlj uqsfJJWtOIZkzJR4r43Rj7EG4D9NusYc8MUwXPHQ3I+zMlX8X6ZILbKz5lzt aeD6uaybbHYQTIdrLocx82N6F3aFwKuG6GscarSHWrTe4TUs4u11TkPWDfX8 Z9ecoBzbp4R7TUC8QYaShu+tObMMAdxpvuDY091li2MNgN42PgTEv02a0N2c x.l8tHNUoBulNGn4hkLPAmSZ+7j+a7xGY8ZJuYWXor+74U6kzctVolnIOd0q 3O63C56fZ36fkz2A1v2AhjzGRooODTBeH8V7gPoH+dveHsV7gTkv2Aoeh9PY MtpdGbebenVL3dpj9NMNTPReGXK9NYGZKzEYsYS79cw+HrOwn0V+KAqHyw7+ pim3uxSR3iBHLkpwLB3OwJXw0NQzEL1FHTQdmtHYkLZsO0lWusNwl8x0xuee 4B2XsH9Rjz+tQO++77+e.ZVkBEA -----------end_max5_patcher-----------

To control the cutoff and resonance parameters of this patcher with our two potentiometers, we'll write a quick python script on the Raspberry Pi to use alongside the rnbo runner.

ssh in, or connect up a keyboard and monitor. We'll use a library that should already be on your RPi image called gpiozero and another for communicating with the runner via OSC. You can use any OSC library you like, this example will use pyliblo3. We've used this library before - so if you've done this in a previous tutorial - you can skip this step.

To install pyliblo3 run the following two commands from the terminal on your RPi.

$ sudo apt install liblo-dev
$ pip install pyliblo3

Now create a file called RNBOPi_2Pots.py by using nano or any other text editor you prefer.

$ nano RNBOPi_2Pots.py

Paste in the following script, then save the file.

from gpiozero import MCP3008
import liblo as OSC
import sys

# send all messages to port 1234 on the local machine
try:
    target = OSC.Address(1234)
except OSC.AddressError as err:
    print(err)    
    sys.exit()

# start the transport via OSC
OSC.send(target, "/rnbo/jack/transport/rolling", 1)

# read from last two channels
potA = MCP3008(channel=6)
potB = MCP3008(channel=7)

while True:
    print("Pot A", potA.value, "Pot B", potB.value)
    OSC.send(target, "/rnbo/inst/0/params/cutoff/normalized", potA.value)
    OSC.send(target, "/rnbo/inst/0/params/res/normalized", potB.value)

RNBOPi_2Pots.py

Now sudo poweroff the RPi, and disconnect the power. Let's create our circuit:

MCP3008 Pinout
  1. 3.3v (red) from the RPi connects to the +V bus rail
  2. GND (black) from the RPi connects to the ground bus rail
  3. Vdd (red) from the MCP3008 to the +V bus rail
  4. Vref (red) from the MCP3008 to the +V bus rail
  5. AGND (black) from the MCP3008 to the ground bus rail
  6. CLK (purple) from the MCP3008 to RPi SPI SCLK
  7. Dout (blue) from the MCP3008 to RPi SPI MISO
  8. Din (yellow) from the MCP3008 RPi SPI MOSI
  9. CS/SHDN (orange) from the MCP3008 to RPi SPI CE0
  10. DGND (black) from the MCP3008 to ground bus rail
  11. CH6 (white) from MCP3008 to wiper (centre pin) potA
  12. CH7 (pink) from MCP3008 to wiper (centre pin) potB
  13. GND (left pin) from PotA & PotB to ground bus rail
  14. +Vcc (right pin) from PotA & PotB to +V bus rail

The readings from the MCP3008 channels are already normalized - so we can use these directly to control the each parameter via their normalized osc addresses. If you take a look in the patcher, you will see there is some logarithmic scaling of this via @fromnormalized which makes it feel more natural for the cutoff parameter. If you're using audio taper potentiometers (type A) then you should remove this scaling (the pot's taper is doing it for you).

Switch the Pi back on and at the terminal run the script:

$ python RNBOPi_LDR.py

Now you should be able to wiggle some knobs and do some filter sweeps!

Going further

As you can see, the MCP3008 has a total of eight channels you can use to read any analogue signal into the Raspberry Pi. You're not limited to only using Potentiometers here, there's a whole world of analogue signals you can mix and match. There's also plenty of other ADC chips you can explore with greater resolution and with greater or fewer channels.

Happy patching!

lys.//

lys.//

I'm an audio programmer, data scientist, grad researcher and media artist from Melbourne, Australia. I specialise in DSP and interactive coding for sound design across a wide array of platforms.
Australia