I’ve recently posted about the process of multiplexing 16 potentiometers into Arduino. To start building a step sequencer, I won’t need much more hardware than that – it’s possible to program one with no hardware! I’ve gone over how I put this together here:
To start with, I use the serial input patch I covered in this post. This patch brings in 16 inputs, 8 of which I’m using to control pitches in the sequence.
Max Part 1: Pots to MIDI
The first step is to scale the potentiometer inputs to fit more neatly into MIDI notes.

I take each of these eight MIDI notes, add an index number, and put them into a coll object. A coll is a list accessible from anywhere in the patch.

Max Part 2: Sequencing MIDI Notes
Now that I have a way to control the pitches, I need to play them in sequence. The coll has index numbers, which are used to find and output the relevant MIDI note.
I’m using the counter object to send off index values. Once the counter receives a bang message, it will output the next value in a set range and then loop.
The metro object repeatedly sends bangs. By adding a speed argument, the metro can plug into the counter to change tempo.

This is now essentially a sequencer! There are many ways to use this series of MIDI notes, including linking it into your DAW of choice. For this project, I am translating them into dial-up-esque sine waves.
The mtof object ‘performs MIDI-note-number to frequency conversion.’ (mtof Reference, 2020). It takes the MIDI note I’m sending and converts it to its frequency in Hertz.
The cycle~ object then converts this frequency value into a cosine wave signal. This signal can then finally join to an ezdac~ object, which routes this output to the speakers.

I’ve included the Max patch for this sequencer below, just copy and paste it in. The sequencer is controlled either by entering the potentiometer values/MIDI notes directly or from an external source such as an Arduino. If you want to grab the Arduino code and instructions on routing this into max, please check out the links at the top!
<pre><code>
----------begin_max5_patcher----------
4869.3oc2ck0jaajj94V+JPvm1MBYN08w7zJ6Pwr6Fgmv6nYdxdhN.IQSAMn
A3B.Jq1SL929VnJP1.jEIKBVE.6UxpMZbkY9kGUVYcf+46dX1hhukTMK5OF8
yQO7v+7cO7f9TMm3g1e+gYOG+skYwU5aaVdxuVr3Kydu4R0IeqVe5s4eoHMO
Rr6B4aeNMOKoV+Pv1SltReupm+6HXPmasXa8t6U1dVyopeYShg6lM68W3eQ+
81GcSb8xOmlu9wxjk0lmFx.y4T..PEDHhRgBw6ivX4bv6if.by+CglCh96Mu
g+06dWyOd+sgHUKiyRh.pWOBGQAQBfUrgYAaPb6XC7jXyUK6HIQK6PPHjcis
Pz+QcY550IkUQeGzpvKrI7rvK7TjQwyuIgeYwyOmjWejz+8Q+Tghm2wTkIUp
6JtNsHuCiQH1XLHUyXTiVAzvXt5PAOgQCvBez8cXAzHH5w7FjCOh2FhEy1mW
jTdAvAKD1.GsIKsiEqyXy93RahKieNoNo7wj73EYIcQH0KI84sO28T8gRz62
KP6twFu6K.vVijsHNe8YMbwbrMc.3PHHTp.Hxyp.4aNU.DNsp.Ll4UU.B71y
K.AmTU.RP7qJ.9lSEfXxoUEfQ9UEfd6oBf7oss.Avup.7au1BXzIUEv8bSAj
2bZ.1D2RfmaHf9lSADrlANU+n93+0e5+7uF8o+5G+onO8w+m+1G+y+vG+K+R
9O743xzpneHtN5O7Gh9gOmlsJp3on37nOjuprHckpuIHPz+1R88sLtd9uVTt
pAJplqnz+9NxjklmrrXatlVXG0aX4E5j0wvFcNpA1PRDfg3TI48Qsc6Ta7P3
dF09Swo4WJdNCMmggPk5CyUZRFfqThPU+6z+gCoJELGqNofd0cDkg8V+PoP4
w7ojHOlOUYJeKcJcsBy98K0gcKM.PDV3Ek42bDQJkDHUvIDADcsPnaIpuMqN
UYkmmmj8UksdrwT97AJbNjPU5573rKVXML0RejjH9UAKdz5+G2VmbolRwyUd
gXFRvAD.m1vbTURlGwwDwUa7S8YQXTrTW9DnPVQSY6NGeN.n7YUjw30IGAkf
A3PXEGQx4zy09HxBNRNeQ.cuksyZ7pPSzghfUHtqH3Qq0eJK9knOk7+tMIe4
kSAzhcKQkVJTz7WgjC3Xo.1TWS3bHkxHH04DDNiBuRyXLyalwXArOa2XFyHj
qhsG.juXaccQtqCGAD6TBwNVQ5KmKq33jBDljnH69oOqGeVQ7JMS4Lbfl4YQ
tQ6dT3BgtjxTQPRebYQ9WSJqqhdNcUZTcQzSkFOsWbGFfWc5dDUqbzFIi4ip
keJYSQu3rrpnpcwNhRy2rsVIhEOGsrHKyYQDwuZQj0lnXWMImqSpEZzndWd0
IpW0nDSRW+4Z2kNxUKcPUFMG0n.mn0iBdPZo09figrIOHeN3XHhkj23lQEkf
ChS4m1jjr5RcOgvNN7HVEejJAp+J.LHiHnxgMPYPDvi4nwOlSoRzE3zPUiBo
kJkh4xi4lATwBnaig1M1qigOzXTI77xoG8W4RmcXgifCKm4AG1SIqEaRxcWZ
A9TZoM8X7PuKBUGdBSCw7VPYmpD2UtOMVf.uNaErZYSLs5vvgTh4tKwTuJw1
FfOhQVCqDybWhId0G113oMJ5Xp6RL1qRrsguZTzwD2kXjem0QzIRGicWhgdU
hsMWIFEcLxcI1qsNYa7nFEULzUAVJ8o7ZKpkos3vHtM8hM56er6To6hBrvt.
SbZNkdNg25Lham3KOJY5p3ulr5QEKodAOFWWWltXasYd19vdT3gYIpb5W0I6
YchxKSqZyRloOoFMmPLkGJL05PGzlL68HlVWrdcVxPFkHkCxQU6rag9bUUvF
dMJctGXoMihz0p0XDz4kP+YBqD6xBW6Phj36xXZW7k5HfXYXhCtMWooifmnW
IziEaA8J8YaT5cbaGjM.GKNzyc.fPxusJd4PFJVq04fn6kXyOcejm73PePrT
IQoPziO4DVe9zm0oPfmKk.AG4pCC0uoAKIy00BWKdxfzk8kurLK42cV9t1T.
aGF7q1aPP8QUTOULv5hmbdg130j.sKqF8KFElJF2rNZVE41hpvVZZH.XnKpB
HKrqoBBBOdqoBqKn.obnyfMVvl.aXv3U1X8rrXjlEsP+p.Pu0T.1qQv3o.ru
XBFrB.Kdy4AXsXqimBv9RIX3Jf2bd.1q86Hp.rtPBFtB.7lSAXsTziXa.VWF
ACVADvkSTnZCvZkwGOE.yqMA.Iu0ve1z1BfWi+idyg9gK5+IFxflIHldlg47
fjXuCOHvf2VFtl+csyYRnYV1ggziLdzuAk83AkG9ozrjulTV0Wc9vr3Ma5b5
G57HMH8WJJ6rcEXLpLmBt+TkIeceUle8FiKUxQsRH1VpQrYeisyps40TrJoL
eap9MYNoRm2xRZsatxttZS7RyC2XDr6xcWmv5JuI0S8NI2TFNy5JY2MuXcVw
x+wAEFuYpcnLNNvBe+kWk7T71r5GepHutJ82zb.rwX0x0epkCsdwFYPy9enL
MNau.rtLcUQtd9kzUSzb5cjqY13Y5fbWgQeG4war7vlgG3DWrRIjaqVDW1nn
ZiRf1cw5hhr9WZ+ykk7Tc6k2jlme.JVWr4zWrrY1Jd5KunPcwmO26VekpG2l
at5iJah5GaFJj92WbVVaHf9u9uEqB9EWmTmZTAHv9KZhT94pkkMSWztxq4Je
0xUVorwWl7qoqp+rlPcMFT2d5lcFQy1qkWktNopt+4piWW0+LU0uX.8NmZ6h
Ve3GqSddSlRJ5eCJuizp5pOW7qUs23NCst.vq6tMc8o6FOs24OWb0CJ73mUQ
6S5dIawVOp.jhCdhNAYwcth03rskoua44OYzRfNxnvL0vNXBV+5Pf8vtFY7L
3nTWu76WK1re1ic5FouzZUpWKvW.afbyn1DFvwvjWKDvjmFB.mWp3Tz7l1G6
0.IyjcAFr6m8vlckbsqaklgxWknkQnb5QDwvQDlEDgi.2Bhf.SOhvGNhPrfH
TxsYiH7HhzeP.NXf.T97JwY+Tbxc.iMb.qYDrNxoRHrV09QDCPWMFP7KFPkf
oFCfWMF.8LF.BpcPuNT6tPRm0STNYGiu1FYct4U6AYLX0gcycZgJzcIT0Fd4
tBpPr6SqJIHfPU+oUwAI3VTVGs7jvH5DVb3SGABdVX5RvS6VQBDHsMSjFA.Y
YVQUxUiGffgGTpYQJ1qbQDcIRv76nL9oCOielY2WgX5NyfyeiORsa+WJpiKe
I5i4Kap5Uz22cAZ6LbQtgjeM8EhPj2esZCgSc70cFSD9DEQ8nd+ewnGbTvhd
.fcVMyPQXBm5tyxU6kL7fJMIpcT6rsVE2Y9L3o1mgPY1vJV.8fznxIQJvIPJ
4.cTbBEfJKFbye3HBGygLtBEP7apMoouYYvf8frZUPk6xGARnbFG0r6GMX3g
N83yv6KMAPBM9fmd7AMX7ASQgFetC7uvCGe.f.iOSeUuoCubcHhHvvCe5gG5
fgGnLzQmuCBNO7BdCIgN37cPr4g2GRYvCMO4nCA64LeLU9cv.Ba5QDpmy04F
QDxjiHXtmyt4FQDzziHROmOyMhHS+vTSfdNElaCQDSuIhuSZ41.joOtJF64z
TtM.4NHrJzuIlba3AZjJ0YuU1o6iHomKwIkMYSngOLH..x7bMd42g03kHtKq
wKkJu6FhdB69rb3b18GTQlZnxdC52iVUn6Rn5tzpBL4NfV6s4cnUEVbWBU2i
VU3IOrt8dreOZUM4g0s2U96QnBcWZUcW5.BtKsptGgJzjGV2dkitCc.Qv6Rn
5dzpBxm7TPIuQxqBRtKgp6xXUStUk7MRZUHx8HREXapSuzV2l+khz7HD3Zww
yLlYH3kvofrMKbU3Mx7IVDEl4BauMWW2MMugE6zYgbWVh0Vm2ibnsuhWg2pT
us3FgnW6bnFgG8oFJDX9p4xF8IUsRqlrd.A.G9b4ixLaMlhfN3BmaZ0yv7lM
izHIfDQnfHJBFw3LEviTGSzetfU8v.GQg7l44s4DbH1b.gKi.5+1CD58wyEc
s1bf.Ou8agajX+mJlQyDq5kmWTjc04sItYKLyRaZJF9p3pkooQYoUW83cBo2
rXCPM6vvSgiEknbYTIrEgUNRrHpxChqOV4FITtV5iQMmW8qX8AJ2OhTeLo4A
U+r4XP6+s+dLOq5NadOfFpzbIn9Wgs2l5psj17eTaOBUeaPaWReUCCaXut+r
+je+l70ggdM5fLqVVgYa7v695myB3W7Xv0eYl2fbYnit1tJJMaqxdGwOSRNM
ecKGV.VVnvjlc9efkOUgf8oBNhcMIstH9jHC9DiZ0rvkgrUvA2tnUGav42xh
VWVrcix0Cb0K0P7rg2E2AAS6BqM51PUIYQ53SWqgDZfarUluKwu9+GFbgYyY
bvq+AxT8vfO9aK.ko40WqwkHTAmfL7bl5ObpJAIrjPZ58EEYNmB.IpyIExi2
598DRsXPKw6P0m9anGq1vrwuO9UIM6ehQKijLvUW8I3.ifs6SCyP7JgRnFLQ
DBFg4X.g27Ed5r1ZutMO1jDzI179zzu451AzphskK2I.sBeT+Y+3pjp5z78a
5k+79XXGbeEkqLahntsvLBEi0rT2if14LPX3LWYslMvhHW8AtZtf3HWzLWhC
GWvcEKXgjKjtZESCHWzXHhbQgDXd.L07fq9GDXH4BrqVlgjIb1IMnPA0U2if
ZVvbjKXgLrIx4.V7PxEBW4BR.4BW8PfidSrtxYjwNqjlo7jaNzgzHF6bX9PZ
DicM3FMjgUvtFVghBIW3pCMIjM23pBgM1tMtxXxwNPCwU+YZHafl3r+bPsdb
1eNnbgq9yjPFUg3bCzf.xEtl2VHsMcUczLz0iquqqbFeri1w.2C5MWiovDgj
Kv2CPgq9QrPltTy6FJcAJfAlKboHEPRfYBrKLQn0GLWBrEZ0gSQWCs5.xcgK
XglKbgIBsQgSHgHvLgvkrAAgVc3TNon.yEtDyDGb+CWLMwA2+vo5KGZaSnKw
tIg13j3BSDZaSpKLQvsMcBJBtsoSXQvsMcIvIKzlEPWRrfExtQKt47taO4tu
5hyZ9z5s5QymQvGiqqKSWrs1LLzcXlq6yc25rhEwYG7Mpy1WCu28Jy098+TK
a8GIbymCzCQp1OJnVGf4W8bN4PT0wf8nu7nWCotLkjdhRu1HwIiJB7Eo.WjT
POQJwEoDxSThcQJg8Dktrhh3IJcY8D0GTB.bfVRu3RAfiGoPiGoviGoHiGon
iGoXiFofimwNT3BoHldPeajB6hwtWBpiIiEkbhP.eznHB5Do7QSUHm7e8QRE
XfSBkOZUzMqOfOZVDKbhT9ncQhS9uDc4032LsjNSKzsRK2zV9vGdeNqNHVra
lVPmoE8loExYZQtYZgclV3alVDmoE7loE0YZc61gLmnE2Kzh6Bsv9ngKyaAd
IeYh2HE9BjxKcbj3TSWH+IUWpW9dTWQuDoPdiTWpGwXg2H0k6Rr2HE+RjxKw
KXN0DoWHkKM7S66PzeJZDXR2aZjdvjvXvjl5hGNyGtcTxXQIlKxDkYGNAiDo
A9VSJboUbHJHVQNQaIOD9NRWLqD9naHRlqUQ3lojKIt.gAQU5DsOHfkuTkxg
UQHyXYrn3a5kg8Aimg5z6FhiWmRU67U0ultr5g2sNn0tEzvEuasExtgxt8tM
LW7lMeMorpUTzO9rmi+RgF0DuW+qo4leUuNKmUl70zc2u4FhKW94z5jk0aKM
Czy2Xl0X+rma9TtluMsU6qGyoYU0ujc3f6reLh9v1UoEepNtda0i+XR9VyXF
of7mh2lU2WOsX8SoYYKKxLrW2QqZ2x4bl4p6F3o826OGAlijDHTnzYywPLGw
zGoNfR6NgULOCb2CQnDI.0bqDFhSn5iDHLE2bD3fGC8Js.PogB.o.PLGoNET
QqtOVb9ZyR9Eo+5D2d1MkEMe90aQc0iJ2e+aqKVWFuJs8CaAn2Hp89Vy7R0U
0vdmwga1yJ.Mc2yz05Yux3G+w+6mJJ+w16ucsM2SEzAPM6FOc+wdGlEq6A7X
jBD0H.gpPC8Qby459TIYIM6.O8dTl.AvZ3mofQp9HNQvaV76v4689NiQiqb7
MYZ4lDdnskXuEkfCnBg4HAACs8XSms0IzpPHf.MtSDpzH9PAlx8fZs8Y2Gv1
UzFLW12l3eTkk11lfy1Dce9K73NqD8nOAFxgs.uJflAFwXFBXymX2V4fOCj9
+us16hdsamnG.dCQQFub4QNA6teldmWvbjAiNRM1tmIL8Lxfaa443seM4bst
+Tg58l9aI61kc8FkMXG..OetE8AyFKTsmEkATFo5iZRf.0GMswzmFnul25N1
WkQ2GZ1TLl4IznL.nvPDU+HLEKRy+tEYaSBPdi6ibg4LB2DvsIbkVVH9In0A
sJBgRcdkbJfZBwyoBSBpCITmOyMz.0c8huwW0l3rjuS8BJe4b5tlsFFMH8XZ
dSGWR1AVf224GmogVUBIRCTJvBSl7BIAcXlFG3HiBg2noGX5MBml2W0lXSuN
06aNu6e8t+OPC9rg5
-----------end_max5_patcher-----------
</code></pre>
References
Docs.cycling74.com. 2020. Mtof Reference. [online] Available at: https://docs.cycling74.com/max8/refpages/mtof.html [Accessed 30 December 2020].
Docs.cycling74.com. 2020. Cycle~ Reference – Max 8 Documentation. [online] Available at: https://docs.cycling74.com/max8/refpages/cycle~ [Accessed 30 December 2020].