You've just made your own desktop synthesizer with RNBO and the Raspberry Pi, you're ready to switch the lights off and jam out - but there's no visual feedback... If there's a bleep in a dark studio but there's no pulses of twinkling light - did it even happen?
Things you'll need:
- 8x through-hole LEDs
- 8x 220 ohm resistors*
- 1x 12mm push button momentary switch (optional)
- Breadboard
- Hook up wires
*this is a general approximate resistor value for these current limiting resistors (without them, you can burn out your pins on your RPi or blow the LEDs) if you really want to be precise, this tool from digikey is really handy.
We'll start by exporting the following patcher to the Raspberry Pi target:

RNBO Sequencer Patcher
<pre><code>
----------begin_max5_patcher----------
9902.3oc6ck0bbibj9YweEXauan4fhFUU3zQLQLiGIGq1vyQLZF+x3I5.cCP
RXCBzF.sD03v729VG.nwQgqtA5Cp7AQRgipxJyJyJqL+xB+6qdwhUQO5krP4
Oo7qJu3E+6qdwK3WhcgWj8+ewhGbdbcfSB+wVD58gnU+iEWKtUp2io7KGGsM
0SII0aS9s7c42f9vuBYmewvsO3GF3kxaK7tKRe65WciS5568CuaYr25TAEZZ
bi50JXcD6WFX9+g9SkeK6UDsR5G23Id9EKtl9Okeic2+yUWw9w0G1vbiRfma
9Uu2200KjccTywLwT5XFIcLq19XFg3iVroE6WD6FCZ963EmMVxFLuXws9Adu
2KNwOpLE9hENa1T5xunzqv3.+iHdCYccwk7CEWRu3Rwdu2O+8UKtpSLkxSoj
81XN2ewiFZK10LQtdwga84jh3hTYQFIw45gNO3krwYs3kYBm7aWR9qZxG9Zh
I.ZpreoYotiaPEq2EDs9e54Vl5VDswKzObSrWhWXpSZMhegq2sNaCRWdaTXZ
h+uyIADa5kj6eaFIJ8lrAAm9+lXemfhQvcw9tQgLhnhnfc47tiJn0YiF1O2M
X3OQnyFIuLcNFkuzxMSnCxsIqbhYRpUAdkzqnSlihBpdqh2Kv61zrauwOLrF
WLMZS62L1+t663cWEQu4Cc0176jrban3tKoSJRWl379pb6TmffLcypM+iNg9
O3j5k5KDAX0ha5E5PGn2mrNNJHnx3Ubm2K4NtzI4q89fua587Np7jA5i6uIe
RzhBorq+cdIoUuVpycIUuRR5GEL8RWZ6pLk3kodOrIfNJp9.T0C+jzj6i9PR
1ClOQqLCXmc7xJ0kMzU45cYvqpQuuTAU95kLxg0JeCYF2kXrCU5NRM3Q3JBX
9uv12nW0fmbK89goYF5eQtw9LiL6I+fZMJw4NOoLDpUDWkMNwTiI+o+zJmD+
0uy6e8Weyq0aiMQlA1jF2VHxlulHxhTeggVVQbRYRcLoIYSLUlbqRa7p+G21
XVnVYVnCcNkvyArp9YFyJUYkhea7C08fef6lePDycP3wnhsxI7NlCUStpVGL
FJsmFeaT7Gbhaa9RgykS37ERYcKyShpEeTzxPt8Qr5gMhM3+jnl+ydGvkt85
nGdvKr55eb5Nz06wR98Ug6ryUm.+v1V.iStr6KmskDsMdcNMkwdTpR5z0rS8
CKb76W2oYwdvAI0FKQvVZbXTAZNoBzPoB5RTJnpx6XWw1JTOsjFpo7rfzPyC
oo1fYzBWSaNkcpijAIU+5px60ZAyeZ2kh8NrjYa0eEce6I0273n7wktgqUNA
0bLUlKvWsi3F4twoDYJkTxFDu2YW2TxiBKIQdfj64Ek6GSemTpO1Bm9Kusao
6Pe0cqiBD688Wo9+iutxO1s+6UTQ5+rxihrTI1XjtgkA1TSm83FDDwDqqYqR
WTQ0hN6hu.SolQp0ZtMW5LlJMOIqULszXs50C9R0hYP0E.zz3gVvRUrC67e1
drU3tCrWwVYPRSSYRSMPZNLoIwV8rRZZHSZpCRyAJMwmW5l5xjlFfzbXRSr4
4ktolLoIBjlCTZhNujlDYRSLHMGlzLKBQmMRSrLooJHMGlz7LyIHjDgI1FDl
CzInillYf+68tIYczFumjIwLFQxryYSNqSoMZMIVg.P0lIPtdvWZ2nVztMj.
6k.VZTAELZadxmQhzuZfF.aO61wz+W1cdEkrvTRwj8q8RtjGgw5Ik+a155Go
buShRZjxJOkWFE9RkaihUR7uKzI3UTUPOWkDu+0Vuv0drGhJZicR89uxaJAC
bqH5k4RxUaWUM+nUlELQo2WLelfEHa.wY2rXwtWLHue20Ysz4r5iXNaGTqHm
bDDe5fld9OmTo4elYvT4cBoEs6U9r2FlxBrTvmKajkesJoe+u5jF0o7obl7G
sLCqlmodVTxEBvRosew1PWu37.8UtGyS1Oyv0Dxwdm+CaBnyqoJaIahhSeka
L0nPHGMN4S68Y4toI2COMyhEbDcbINBVcOmWzBxan5xRmYqNhQ.pWnEkgxFR
+PKRXaY+VfwcG3Pp3qP4qWNCWcFnDTmyyChnpBaS2rMse1RAzWtQsq3DJV3P
rsGshe1NmhSC6VRPDB5hXO2QTneuSvVunaahSocrA+P+TFSKacOcS8cwKu4i
0jqU4oBhBuSlrnxC8.URVgIU4tI2S0+5sMxYNpWUNd86Ujw6Zpzuh9MYylLN
ilMQrvmuylHS4bocBiCZ5TKMywZFEV5LJyyoYT3yV6SnxITeBlQgmlYT3S5L
JhzYTVmQynvFmw1nvS5Bd6jFG1TJxIcJklzoTjyooTpmwSozm1oTZSyTJsS5
TJcoSozNilRgzHeprtm9zLiR+jNixP5LJ7YzLpyYWywS75dFSyTJiS5TJSoS
oPmSq6QNi2s2zF6fcRiCaJk4bOkpZgNTJfaodarT9ukkzJy8HCHcDJIC9rBc
yATOe6U315ZDZJeDZMMiv7vabJGgFxGg1SzHDe5kg5xGgH0oYHlu+uS4PTS9
PTehFgpm9QHQ9HzXZFg4dGeJGgX4iPsoYDdFXoAIe.RlnIoGGIX0zOU1Gq3v
UQO0rv2Ke0xVeFQdoHcLpypxcU4UhTq4k55x+UfeRImndVVv3LwfjJFOC3BB
rsiPhzrqYeFVw3kRYMTv3PAiO6ELdpeZVytMj+2E0W47VK4O0RMMpYL80Hsg
IqxVIpZkJyUReU0XQh8K8PLqKzIZ9+qsdYj7W9zxlTM+wR7hy1UIp9sJraky
JNNEQKcH9jBtM9t9dT9rp8Tt0T6r5rs1yM6Jb8pAimwQ7CuMpzXqzfi1iddt
IuMjZYJbs2aydvRjDaED9VtSJ2BkaBVsmhpbyJ2k1.oow+P7OFGsodaWU6TL
kfUJ6obziwYDJevO8dEd0sVg4x62Dm.em5rJdWxtdt1UY9AWulNQrFzOKQpN
quuka5mviLfj635QWBaM09fqrWiWhwMG44JC4pBktYwZv0ps2gwgwsxgyXoz
YYqndlTeLvWtjJskPqS.mFM+b5BNpzA3CNgtzU+i+XkJZsI2tTEVen7apxbh
mRD0wNkpnJ6Bkul7wGVE00L0G7RclBF22n7+8te36YnKk56PJCVoowLPJtl5
KmieH6OYcEUd5vgfJiMu5iJo26o38HCbdzWYM021mErao5o+MVjWqeJ.v8Uz
YkGecwEeWFGpdCPIq.mOVTb2jJhyqjKZo1f1rMsh6JMktEq4xVPnaicS2h.Y
CmuudEQmc66ijY60c2VQpL5qH4WHBJurIEKt2KXSwvksx+hJKYxlM8C2J+lU
cOowsEflVr4txSLVjs8v2xIahollsMhXWokumgC7jeT3K5a+gpF5JKOENJQ8
bI1QRz8q6iPtV8hpiixmDEczKUbniMbW1zgnw4RGmmcDcpqsykIMso2oNgyz
e53SGB7oC7oC7oC7oC7o6SWe5PfOcOK7oSqCe5vmM9zsQYE8oR9XHc92WuIJ
3iatOJ7iJps4kGY5O46xBYZFxLD4MY+iY5b6KHyABuzovcvrV535xG5H3HRC
K3pcsh51TuofaxamIgWdLXXc4K7jrWilqPMIbiykcLrb4l3nUT6HT6BSB+pZ
Cd1x4FNGZpXLm27CwxBGzTo2G4u1SjL5ofeUt4N+MGwgoQ67FwY8fXHMELmJ
s2ygE9Zm0U3K0Trcwervwrna4aBbW53uYwyuHYzvAhWg5fSy1PbhXREmVRlB
N9a3MpBcuJJ7VVIa2II4Rfrcp6wOowEPjNQ4yhBC9nx6obZW5t4TxmC3utj.
K4yuvEYqh5eO625Dj30gLq.JHGpb5mYMTSshmww9SdPSh99nz2cezGda3247
HcKNanauJJtmHAxve2THDX66Rg0XrHZDD43t.3vkbtfYpHNJXJ3ze68QTyRI
7Y6evgEPPmzxlYDKsp3DKLPwfLlm6MJuLgeds7RkOKSS3yU9fePfhy1znGbR
8W6DPsaQ+QDi4j2Jr.O92S8CWG8.Kfje2ae8aUBiR8RtQ4cTQC6Z97fX8xsI
dwuTzjIevmpAR0HuU7B+8Tg8yrFmZBUwIjEuSm3rvdQuSdOtMjsMN2KSCjdz
0xJBNAicyvAKiyrnNgULSi+J8XJMqsZeNFSjTHrimhYYu9M+3O8lu8a94275
aT9kjr4CYcAccsjTOG2adlGoeZa3Q8UkAJ3IgkFoj0hOojAKVk67REKaIBI7
swQOn3v+5k7DiK665wuc1RZJt9rXlQ0S+LlZCcmOJLTXFt9ie90JQ7DvrwKL
gMvEOQ9sulpgQ6A5kKT2hRuO2wlKU2QJoswLrvAcdIVvgoyIZwN1WT7cShWl
+j2l.m0drvLqvZStI2pdxbsBCh7eLkEzTEVrIcU9CnqU9CXEuz02Hr4txiN4
h2RYxXVS3rdcTrK6sns7VVWbymxKKepy6SyW8XkXmdGURBwyfGVRd2dFWCaD
TI+SRbpuRJnJWIFRRA0l8H+SZZ1VFlFFV8k+I0IH+S0VqI2f1UMM3TOMc08u
rvyiq5Y+wUF4M8fX3I7Zyxl4EZbHXpr3odkBUmS0REC0VUC0H6MMqdnVpfn1
qhn9qjn1plnlFe5ophpUYQ5YkTDo0OEksVbQCn.iFRQF0agFMrhMpiBNZXEc
TOEdTuEeTuEfTOEgT+EhTuEiz.JHogTTRiovj5n3j5s.k5tHk5tPk5tXk5rf
kZqnkjW3RsT7RCp.lFXQL0SgLIuXlZt1a0712398k+9p4v+q9pmpjv9F0Epd
8a1VsN0cx6aKA9DQohhEGQ1DoIvevIwukkYniwkxGKsuXSaK3Paqx91Ww4vR
nrXlkZtdAoNO0gXCi5TrglHwFxRTgp34PrIFjKkObFujKimc5EdewSrSsrtz
4vyqNW1ojtvk.gq.Ssr6Kxz3vGtb6KNajYpHbmhMz7J1rEmf2Di7S094Sr0m
5F94jXyZdEahOFVGEwlUOhMxEhXqQwhzPlod.KuoNTUMMrU6EORqfFr4Xe.f
Grc.DJo4j.zKYOU2Pq3PwVb2QAr2HA1C.L5MhfcGUvdiLXWPIqOL.0LltsUH
JCQpf6TpzQQozaxomZID53Kg5DpGcW3JsHkjV.KGtbpuhY44jrnY5uZgW2rf
WNbF87T7KOCEOsZqnshiYPEHSuEISCmFjM0nkDmHe1Q6IPo+rMLIKx0cNIZO
eKcjwBIYsnmhpo+BqoQlMj9.cWfMcljilI5PVg1zZxNpZbt9bh9S5gL+pjV7
M0syuXw.5Y4EhSS+LG+9WqTPNmwQcv9Xr6UMUzrGzA6djYZWH6BxwMIltMHU
EjtphZmQo0nSYmdmxN7fi1GQkuSH6wGj1q4Gug8J.4i3kRGPiWui2XmAhwDm
OzUjZOj3qiGZr9xjbhXPLVI2vU.YC0kRGTiW7wYam8ROs4U5kE6nirzS6vi9
2YhzigmX1Q.qhlUWQSxXdSVhgVtf657XuOHg3PDZ4ivkxGHiWuKuAOGz8V6D
3QcaQAw9WWBPRmBPiCNDthikUBOMWVyRxtDi0kxGM6g0SdycFHC+RErVGRtY
N16HwG2SCCwWs1CV0ar6OIaegpicCHe4RoLmwOO3KOClB7PZzscLEv7nLEH6
WDxgNG3TDt+G7c8eedXalxf9yqxhuOJ0S46aK.qW1QEaPg3udgr1R3LS2xBu
3TKBdmWJ6XzvS41Xwm93ON8BgyBtbypdsE9LesqImMSaTGkj0AkBcLWteZmw
ilu3.OvY0O3rYd30+yUO.75pOer2sSMu9m7t0KlZ0viWcc7Td7g68WKJiiWx
Lr7xcVVT7STti8sV+4qjnuLktK6GF1CQ6P3nxjtlquqaPl35C2SEdbQ0s9wI
oJbSeJtd2E64wDVTkyMdtfzhJsTGfzhMcepEW+kBkmzHEpK.TsJpZ7KExupv
R+SUYil1PDNQaSmOYym8+96e9kmeSscBzrWKtvscjuwuoLk6uiaThm9yOcAf
xfA8vs9Ao0qj5CWF7W3sJqF24qHnv2MXxhO8v6SCiOnEGGzGraO38opdn63d
+.Sv0CenjsQ18h8OxMtd.veXvCG1BKGjLo2kQF2nnBJMjD7qpnzP5CTMHdRe
jgiRiWYPvlHc8gASC0Y.lF6rIhtoAsVYcqwiUCFyYoz3HN9nkxYzm8ALclqN
DQ1pf3kBwKEhWJDuTHdoP7Rg3kBQ4AhWJDuTHdoP7Rg3kBwKEhWJDuTHdoP7
Rg3kdIGuT7gix+yn3k9jh6V2nvk26D+vRwQxWGQPUclOxO33EGiDQRUyXZ.L
NDI0mcQRcvw3ChkJDKUHVpPrTgXoBwREhkJDKUHVpPrTOFwRcvm9YPzTgnoB
QS8zFMU1WjKHZpmWQScHmJYyc7TeZJBn5SOehn59Dxzrygb0oAjomCmLC2lF
8Pynlp70wQaCcURiaXqoxItg8wHBpYGu7XwWwiKyHnty9z74.58ygCnP7S6U
D7VFMl+08M+CIaVfOJrMAgTEBoJDRUHjpPHUgPpBgTEBoJDR01jMyJb.f3oB
wSEhm5EX7Ta51EK.ESsH4m3M5yVIvpng8IgfG1miSHs6JvsiHj18FFjKj.Zu
uwR3BIF2cu19ADfadXL6L.2rmnm.bKuQFd.t0M0Q1pDr1EY7s4i9kxCq63iu
sfWd5iuseXOeC45LB1pSSDrM4etKHWvwulRfy02ZtaiidPgyxed+clah2Zvr
7glSHFfuybv2YN36LG7cl6432YtIzY3o56P2vW.b.eC5N.enotJ0oGzxteUm
9j8Di.eHHSCUUSSD5Y1GRNJaYoTeMGua0LNbGNUWQBuHvOzqw75p9ZycYk8b
c6wcRz13049ll80USooartzY19gNoTQZomk84yi8v60lA1WBzZDDn4If9LGC
CjPeXsiLAZLBBjMa.cjoO8wv.Qm.IrlfoLHBT+Dv.0FCCz5Dv.wnwPg5mBJT
cDTnb9cgaMnyWJGg6lzUOtj9XsbRNxyJPiYwQ7oXwQj0HMtezIvwr5i04zry
QQ43yISBnwrhpwoXRAYLrVzY0rhwP5sX+3TMsXL1aOEKBiPm6FyF6BVcSfU2
iWVXVVt5t0QAhcY+qJp2nRPDSrtlsJx1P0h1l2fJ9ulVZDD6RXDcK2Zlp5VV
XhN4ZVZip17UZTarsFBeck+hny9SIuoWfGaGyUZ.htotlpI1vv.YXweecjtt
gtsMRSEYXxujkAxzxvzBapgz0Lkz1NqW2no0HpDMDxRCQrw57lV0.ST0IDD8
WHCQSiwp5pVVHhktkjVlEeuMdUZYrtEgXoZPr00IplYCZMLkxsTwDKhlXbfr
Q1Z1VZZDCUMIM8p6t0OHf2zKKBSjnmZ6wlEQZiN.M68.tfWZPxj6ppZ5Z71S
kXYZa1Sy3DdmHTlXS0JGFRUdpMwQrftloRQkS1s1daSitK1w0OKnNpkxW5N8
sh+ZmYgBk8ZoobmQfdRO4tTSJhpU4aUNujkCVTqeIhqkPRRo6HIYj1D7MTMC
rJ+6Is7CjHIGn6Wm8uJOVuwWqjUwEOvBANajkYsZwUxhdljHmIXQKaxPZOxY
xhZVFm93HVoc6lj6iReRQuEYqcqhVbqhVTehVwoLkE+WljAJZObQZUEmNElE
LlkMXBiSbVzPGIIp2iahehUKbgq+L+PjxWnX84sHZM2Cs1dDsDN3ALDe+ZQC
TxJA+.RwNPYQZuXFPNdAJ69yhXuDuZo6rpSTcAPfpk.AsgTbBBTnzSpmhSnq
BOiUILHa6G5mRmqHExjsmYsNypVmXvt8zk0YpxJg7NpAnEW0VVCVPmUMELMV
yLI7h1ytXmYVbeYSsTpYcUlY0XfMwmx9wAalVuoY5zzvmZCBIcAejZLJlsrg
ynvsxn3sScRuczgbgLQrCTGTdWXU3osf60pr0RIvq97qNP4Z251RgzZKI.t9
1FaIo2sPzRzJ5LQ28nQMLRrRto4KAWYeRkyLcy6V0ggl2usrRWOizzs3Q2Ij
kgUkFuS3b1iWPbZowmppQ5AjX.cb79Yy8NIQT+ePgJec.UxUAYBk88wX5cqU
36CYZ78opbHaXsrAkONIQVybjjEL0V5Fbo9D4soEof1d3Ap5v12HguiQSMoh
gws6gBfVLT0lrQ9xFCwwItxZlij35KdpMgDd50UrnaqmIkLvb4i3+LQJKegP
OoJYONN+W7zImoildltoJY1Y5cE3C7YOSWc5Y551lyNSWsClN4bmoSlgHLoY
ilalNoqXBoc1yzslA+erzmcltUGLc8ydlt4zyzwly9Bojt7823rmoOCd5iLm
8ERIc4lu4YOSWe5Y5Fy95nUo5Z7bqyDd9W8UOoX1FaWaFbZzRUbf1wKNPM7T
tsV5XYYS5dbtpSaiiHm2nMNOYNlvSleNOY+8W+3x4aK+jjYX2o5FFyOmGu+N
seb47Zsw4mgsnpoaO+bdz9649wkySZiyOC6SknimeNu59699wkyiagyimgMq
h0zmcNO1d+8g+3x4aKf83YXGqHh07y4s1eG4Otbd0137lyUtRlWFu496M+ry
3euS7NDBk5swRd1rXoElm+DKF.AaS9nuGYQA2S74wjRPzxVaDnu6nCiGIer+
1OXBvNf9q.VmNwL.9hFy.xN0HZVF70N63KUC7uMiO82jwm5nH3qgviIFBVBE
l5Xt5xGxUgryzg.+e2ycJ3UeeQqIXXdrS1ONm5lKY3D0KtqZd1Tte1IXGoA4
G2YELvm+3KpMSA+XwbnlGQmseHzTGpWTo2THa9kDF7KUXMGCzLzo3BzCs3hV
Bz7rKuD++MzwpvNbROFhMZm+ScZv+goQD7chl5Pr8xHmEOWVpLiezirA0or4
HJWPRjK4e2cjNRdV5eygKzbdbxTnDM0goP473ElBEpcYSFqsaYCtSYyQTtzk
BkzQxErB0LJzXmQYgMNe51yc5wOQwEEjgRdCS2uPvGW7Ivt5ZWH8lbdb2RIy
1kRrfUjLEhnW6+deWwWlBgGbz8zQ2XmS1A9Hy+aJYsNl53ohnS+jd+3uSBKn
tXypcwV1iNU6P5aTdHJ1SI1ywkwuTXsK+LGrxVlnRTtu5OR+a1YK2O88+4eP
gskIu8zc8pm4bmy6dpmCbvRB1WKFRx1aUCuQH8Jf+9yeAbGKWVdV5k59lO5R
9sg9oSiHWLdXgWy0iZ40ekv7LqCZDNjIW29YhP8WXRidDlZsKLSi1mPA1tP8
aiBeuWbZBccUptbP83AxCkJ8t65T9wK6MKdNGOqeNRoTDRotDE6kvJyp9Dap
sK1XmZpylfKTV3b4NKwDcNqS21Tv97VB9WXGRs6iLztih1M+YNTI2OvZHl4Q
wWIu7LUTS.kn7A+f.EpI1Dp+3LWfUhBU1HphOkfHG2aT9Yluw7VaM0TK8Q4A
8zeM8hY1po+8m8R9G1sWxKJ8WF3P+yO+SAKvs6p7OQkDLmW3Bh9Tp6XCoTAi
q+Ds356ns0bjzpSkLp4GumV9v8z59YXLj21+hkcrV45zfIJvorOA8rSQ83nf
.p1V1NPoFXytH00G+jcZv27LbqnkBjCia7s63FhuPN2zmhjdGgiqwgg+95g5
bb.3+IlCpxOb6aJOM5Ja0aFYd86HLPQruykJNttBkrB2R461f2MJ+5qeyO9S
u4a+le9MuV4UJ+x6dixWmcGUpM0jT5lT+sKDcRzAXO8VmfDuNR+8zIT9lNjF
27I9BWuMbcvVWO5ZWJ+nfg2ihDZ5O2Nj4.QOQZbmv8Gq5H5I6b73rYPbc+zZ
o81smD7vwjydbfjHTIZ6.Io4cqcpQz39C8.IAYqirPXhwgbfjL3iogcIbEU8
TWrD1FpcdLV3hXsqWjEiZWOGkJUV9rdvyqdyla8u58KuKhJ.eLOtcUe7xYAq
1vbm88JsS8PFUs8j9UDY2lcG9YdQCTrNxilD9jrizgdn+csU3h3YnZQyvRaF
XmIG5ACyP0GJl+7PxvEhTNyxl7gQdhGxXuGUzSa1C5oMYmltsIwISO5oMQF.
5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oA
zSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSC
nmFPOMfd5m8nm1b++TLbtfd5436OBx3xC8zZ6un73idZidPOsQ6mL3noG6zF
p1kvNsEfcZ.6z.1oArSCXmFvNMfcZ.6z.1oArSCXmFvNMfcZ.6z.1oArSCXm
FvNMfcZ.6z.1oArSCXmFvNMfcZ.6z.1oArSCXmFvNMfcZ.6z.1oArSCXmFvN
MfcZ.6z.1oArSCXm9YI1o653JlbYfcZ7zic5LrzdYgcZ79KJO9XmVuGrSqS0
i0ZQhirmdzSqqhgSdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.
5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oA
zSCnmFPOMfdZ.8z.5oAzSCnm9YO5o06.xsZWFnmVc5QOcFVZurPOs59KJO9n
mVqGzSqQ0iMaC8zlSO5oI1F.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8
z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfdZ.8z.5
oAzSCnmFPOMfdZ.8z.5oAzSCnmFPOMfd5m8nmVqCH2peQfdZj0zid5LrzdQg
d5p7gwIJO9nmlzC5oIT8XDtMQt9zCeZrsZI3SiTQ.9oA7SC3mFvOMfeZ.+z.
9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oA
7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfe5mi3mlzAnaM
tLvOswzie5LvzdYgeZi8WTd7wOMtG7Sio5wDRahbxzie5bfSC3mFvOMfeZ.+
z.9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9
oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oA7SC3mFvOMfeZ.+z.9oeV
ieZbGft07x.+zZSO9oyPQ6kE9o01eQ4wG+zndvOMRQsM4Md5AOsoUIrSmI6A
nSCPmFfNM.cZ.5z.zoAnSCPmFfNM.cZ.5z.zoAnSCPmFfNM.cZ.5z.zoAnSC
PmFfNM.cZ.5z.zoAnSCPmFfNM.cZ.5z.zoAnSCPmFfNM.cZ.5z.zoAnSCPmF
fNM.cZ.5zOyfNMpC71ZcY.c5oG4zBjzdYAb58WN1FtoKFIKnZbdUVCXmjky8
X2Wt7MIZa75bNDiNsWbsRUFoK0dpenSJKTO6dNDR7fCZ50XIByARDMI1BsL0
SJgQzZmxPmVJizNkgOsTFtcJibZoLT6Tl1okxTamxzOoTFtCcSiSKkY0NkYd
ZoLy1oLqYgxLFHkYNiF60FJQnQlSpfLTpP+XunyvIsi9pNZ3gRZFyorCcVPE
pmCTAw9rfJrNKnByyBpv3rfJzOKnBsgRE34jJFrA04bSNjAa6TcNohgZ6L2v
x7PEC01YtgkYgJvC01IYN8GBOTamj4TSEO3sfnOmTgwXrWflKpXn1NwypDQa
LVslMdwPsclStyCULJamyFuXn1Nwy4pYX0wXAet3EngZ6DOmqlgrFy5HyFuX
n1NQy4pYHiwrZ1rwKFpsSzbZ6DoMl0TmMdwPschlSamngZ6bNc9EM3srOmDw
XbwQ9jhc4fICRCKWc25n.Qdb+UVtNIHhIVWyVEYanZQ6vaPE+WSKMBhcILBY
ZnYppaYgI5jqY4gbWSWoAsw1ZH70U9KhN6Oq8VdAdO3ElV4kI5l5ZplXCCCj
gE+c0Q55F511HMUjgI+RVFHSKCSKroFRWyrV65rdcilUinRzPHKMDwFqyaVU
CLQUmPPzegLDMKFqpqZYgHV5V0ZUFtx13UoUw5VDhkpAwVWmnZlMP0vTJ1RE
SrHZB5GYir0rszzHFpZ0Z1U2cqeP.uYWV.b.QuH6QlbQWiFGMqsNtf2YPxju
ppZ5Z71RkXYZa1QS3Ddm..PXycIouxSrINhApuL0Cp7vVZ6rMM5tXGW+rjpS
arqJmqzE7T.+1RmgQYZoKd6OjeUF7kp9RhD512aU2lvNL7IR+agxNkHb8drZ
xlWj5bmHu0aSQK5vRy.ZUrzVEunjoipiOVleYIgdsy568pODYPAvnvrVNgTB
iThGHuOW3m7lLbUTfmAFd.R7D32rLNDJxfMuMr5qSrlfNwruNwbB5Ds95DsI
nSz6qSzmfNA0WmflfNgzWmPlfNA2Wmf2yNoppDy.Thy6KizwEIgNaRxPoVYM
KpYKuB04u0T6c4OWNcmA.qx5zL3OEEW5FEFK2AZirlo7wLyhnX+6DfihqsWf
XF4mJMKR1tp3F+B0txsTWaJPC2BuGVUEfqMFh6XxKWlTtDxK4xzxrLLU1iIY
Nac0KjYinTKUbjwodil7WyrmWSWW96o2y6ga48z1y9izy6YI+0v8QlsQmndd
Qj7WynmWyTV+sbo.RaYvShr1akIVi7JpiaFTmx8V8pUr+qipss8Jp+HqLLap
HWdpcioZq2FGSW2eY4Ii6Tfo2I1uJVkJ6hdeJisnO1kJYEsxsgo9TuHJCozx
JkChcTF9a4jJSat7MJq4V95MzYkp1VC2Y0TdqAYVYpvUzh6DCz0TmeQamCj6
Tpk1DlCpIz06pMzGTaf6rMzl.5fLn1vpql.OrgR2iEzfZDTWMgwfZBy1oi82
bQcnQxzri8ts0CszNzPEubimXIVkteR51Mu4AmGY5PMdkMNo2yekm9iuNZ8V
1tgS9iemyiJV+wbCKIMeonDARqqvLydb1CjwKnCXSrqpMhtsVSmaQqLuEYrF
Qzn6Z1VUEUlOb0Kp4zeCOVXdq3xTj8VmJAJp4NqTfi8kT9QsR4Xw1siVLUq+
K53NHA9DmnaaZ3eGs4G9d+D+5UZRoGHHJ7tB4YEOgJ+TTFdbZ+OVtgVRMN6U
4+LKJMUQIKmraDwn+8UC.Ur8Gtrrt85Q2OVGo9w7H0OFGo9Q+H0OZGo9gbj5
mp4NZ.Y0bu6IzPTgpBXmE26655EVdSbUQZ27RL03MUQR2920CREWcJ33CQI2
dJ5ngnkaMEczPTyMmhNZH54ShVwPTz0mhNBOfNRaJ5HzPzymhNR8HYibHCHr
9D0QngzQnIniv8w4ZZYP3EkylMk1kMuOV7fy+Pj1DdkLI1JNuDD3+2XOl6fk
1U9Bm3026mRc0carv4tGMDAicwCQTqrga8yLzx8OcWsSlrwYcdME+3hq9OW8
+CnEVP5D
-----------end_max5_patcher-----------
</code></pre>
We're going to use the LEDs to light up the current step of the sequence. If you've also got a momentary push button handy we'll add that as a little transport control start/stop button.
We'll write a quick python script on the Raspberry Pi to use alongside the rnbo runner that's running the sequencer patcher.
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_LEDSeq.py
by using nano
or any other text editor you prefer.
$ nano RNBOPi_LEDSeq.py
Paste in the following script, then save the file.
from gpiozero import LEDBoard, Button
import liblo as OSC
import sys
# set up OSC client - send all messages to port 1234 on the local machine (rnbo runner)
try:
target = OSC.Address(1234)
except OSC.AddressError as err:
print(err)
sys.exit()# set up OSC server - listening on port 4321
try:
server = OSC.Server(4321)
except OSC.ServerError as err:
print(err)
def update_transport_state(path, args):
i = args[0]
global transport_running
transport_running = bool(i)
def handle_step(path, args):
i = args[0]
global transport_running
print("current step:", i)
led_vals = [0] * len(leds)
led_vals[i] = 1
leds.value = tuple(led_vals)
def fallback(path, args, types, src):
print("got unknown message '%s' from '%s'" % (path, src.url))
print("don't panic - probably just the runner echoing back your changes :)")
for a, t in zip(args, types):
print("argument of type '%s': %s" % (t, a))
# register callback methods for server routes
server.add_method("/rnbo/jack/transport/rolling", None, update_transport_state)
server.add_method("/rnbo/inst/0/messages/out/step", 'i', handle_step)
# Finally add fallback method for unhandled OSC addrs
server.add_method(None, None, fallback)
# Set up RNBO OSC listener
OSC.send(target, "/rnbo/listeners/add", f"127.0.0.1:4321")
# create a button object
button = Button(21)
# create an LEDBoard object representing our array of LEDs
leds = LEDBoard(17, 27, 22, 5, 6, 13, 19, 26)
def toggle_transport():
global transport_running
transport_running = not transport_running
OSC.send(target, "/rnbo/jack/transport/rolling", transport_running)
button.when_pressed = toggle_transport
transport_running = True
OSC.send(target, "/rnbo/jack/transport/rolling", transport_running)
try:
while True:
server.recv(100)
except KeyboardInterrupt:
print("exiting cleanly..."
Now sudo poweroff
the RPi, and disconnect the power. Let's create our circuit:

Running the script
Power up the Pi again and run the script
$ python RNBOPi_LEDSeq.py
The script will start the transport rolling, you should be able to turn the transport on and off using the button. Try using rnbo.remote to toggle the transport also - you should see the state reflected in the attrui whether you use the button or the toggle.

