Controlling chain selector with track midi

Learn about building and using Max for Live devices.
Post Reply
DuggletonLive
Posts: 44
Joined: Fri Oct 25, 2013 6:57 am

Controlling chain selector with track midi

Post by DuggletonLive » Wed Sep 14, 2016 5:15 am

I'll explain first the goal of the exercise, then what I've attempted:
Goal
To have each degree of a musical scale play on a separate chain. Make it so that any degree of a chromatic scale is played from a limited number of chains. For example white notes play one chain black notes play another. Another example might be play the root note C and fifth G through a different chain than every other note.
What I've done
I successfully constructed (or adapted from an existing "force to scale" Patch) a max patch which:
a) Passes all midi notes through.
b) Additionally generates notes in the bottom octave (note 0 to 11) that mirror the through notes based on a grid lookup.
The idea is the bottom octave (b) notes control the chain selector and are set to be ignored (not played) in the chains themselves.
At compose/production time, I edit the scale/chain relationship by drawing on the grid.
The max patch is working as required, but I cant seem to find a way to get these bottom octave notes to activate the chain selector. I'm happy to share the max patch.
Let me know if I haven't been clear.
Thanks for input!

doubleUG
Posts: 249
Joined: Sun Apr 24, 2011 7:19 am

Re: Controlling chain selector with track midi

Post by doubleUG » Wed Sep 14, 2016 5:48 am

<pre><code>
----------begin_max5_patcher----------
2242.3oc4as0iiSCE94AI9OXEgDfTY13jzzDDBAnkGVIt8v91pUUoMtoFRsq
hcmcVPvuc7kbu4VallFDOLSprcrO96b0Nmye8oexCFanOiXFfuF7NvCO7WhV
dP0lrkGxZ3AiCAOuMNfoFnAA8A5le2XQZebzybU6Lbz+j2J8DOFw4e7HRO4x
dIAwFf2mMBxoCXhXLpIEl0JNTMWhE3qfKMJMV8DVcvGC3a2iIQqSPa450w12
+QyEfUNKkOrgx+aY9nYw5x3eLVQTFFpV96O8SjOEOVLZHHDsCkDS+P6vPu.v
NJgyv+oZ7PAgWtcRvAMk+8IXAV1.l4eEPlqssDk7bTf0xIFxhwOgdjuGyBQO
g2hZG41DPhLV.LvDd1iaKV1l3mc+XoqiqRJb0sAK2bhyojdfpKPSy85kZVY4
jsGuE6TkzgfnjCKadeJHIm48yAaSn+RRdeGSPLDgGvwB7o7N3bEQgLztXZPY
oniAIhIliRViHAazDOrootDN.U1abTbZWktCbYYTneyblsf9VC.8WY+3Rw55
d95xBdBEtNfySvBwETwuXo3cFfKAz3SH5tr1y6nLfDiI+gD0qrMpNBJIpM9R
kAx1SS3CZjYrqFWuCBbU0YtdcstCTRVdM2Mlf4B89FXzMMrTVcI7sxnNIFUt
zteqinX+13tU47nCJ4ILCmQqoCHUkp3Gu3VlExd6M5TIR82s0Rrs60aJ1ak8
szslPifEDgNG8j.GP5Was1wFXa.gRvaExbBlpvPx4MjyrYfOCd4gPXc4fM3G
nwgMg3VdiHPBHTZTx11bZijPQQnDvOpUouq3m20D6pqimD37czvncmvWk4Qa
2nhQ8c3XzSBQoZNBevH33wRsWyf+gfemplqUE1fDPjtMqh1RPRqQ5ovon4fD
wdhK1PmRzj4ytNkr0cfFhRHmv0LgkSZk7pZ5qjdbUffiuk5gLppBKvFahhoa
+CjB0yMxaPOhHXR8.AJ5WXlM3TLecKb4pCXWvVT6udGBCOXDkfCoDI0TE+ks
mstuS4dR9uRaK0.HAGa5kExVBLpsdYh86I1lfjRtJxYZFbJMtZeEuYLZGOs+
iXBoNlxoG6n2Dbz9td6MTQuG5b5UcwDtI0cuVnryWKCgo1.ChiSU+qsBOGPv
GB3HNVyRrLK5U6ieOS33MNt59V20SM0k1r8GvgBGfxEqhDh3EvGyjsLJX5g3
HDiWqQdPDqVSmqHKZ6zlTk40bzgiwhcSsQT4v5UTbKazrZG0Ldtkd3.RdBpR
CH2B52.dMk74bfHRwnHgkz.vOIhA.78+1a.BaIBOTgXoJZ7GAXBPnfIDBYH.
mV34BnhkTzmvsVbkEQD.IZK8DgW1uc6QLzkg3dhb3r.rgF0VtR1iqLmMXSF5
nNeiimNBacv9UCDrA2ZUhMK2810wwp5tq66anOGdun3cU6c0.8Ucf4vdv7UV
EP9R0ugdSIh2iNxaOkP.GDtQETMfR.zD.c2tuFf2Av7OmIZZAfgDZQ6Qf27Z
QepeozjJzS9vd718.LSLxXwFGEJUojiSrxmXKzSFSNwES12fCAleK3KHzrk+
KerccLmoTGyxYL5XoLY8kH.8LyX7SGKu5MpLjaUQO6xiEukFqiO5cBmD9Vvk
t9Kj+xw2zR9Cykl9dK.mYzncdRSWn2UnG4quV.sELn2zqHMaQUuQac5NhpbZ
TTw4aZFUqb6nsd2VlWLvYOBfClcIgl2KjqSC6vWYZLklLsGSXIdd5KeUAnN+
+RFzxczZuqrlkhfu40FSdfZtiwwcpFsaouAv+ygykiAN09qcmkf4uRdkHXzo
GPGSfk9k.Tm6.f10Q2xNiMFf62L5hlrlNIvuUGvu0fr0pYBtqlWvej71Ut5S
MaciPa3KP3U1JT21QdUxyG79OiAInndP7E2GTe4XDxSsqrRIkaeGjxq8EnpB
6xaLX9Il6XO9S0lB3lJwb24hXt91b.v9P8rjYI6YWbA6aDWvtKWq1C6TvZaN
o4evjJ1qvmqWz1rMaAiQzL0Vf6.ObQ4lyh85+Vf03uk2YHXo2CFW74RcMGcn
pomj5F.Gk99hxaItsuhjhxjCnEfhQOkrMSjI89IA0nxPDiiI4e402UXyu9H2
iCCQjyfmPLSd6.5OR3vYuWLs6MTZWFfvLi1WMTZWdaIyLZe4fI9UyOZ29+vB
MMQRMS7hChHBhYNQ6NCF3k1gmY.uLTq53YyDu+7j1GDv6M+n8KQdedQ5MY2t
EK7yOZenjdSxVy.ZePZpyu3Yf2IKjf2mmDxUy9bc1p0UpmegYRUuIcWqI0WT
LcSPbZ9UkOEcmPVE4s03SxZcYtHulfLHJfPnE4mngNqUYuJEvYEYXhN+QxyS
j7Oh1iMVQDuMHIBwqkCrGSnbp7vd4CiRJca9WXYSLzJlPtcS2c+ZQ0pDbhSO
nVoz9JUIKcViEvR0Xgs4EUiE18ViEETk9kJCNMb1UnkJScMsJpxrpkeQw2Mo
zL8RWSFkq3hl36cT1E8N7LdtUWEWQK0dAR.xYlajaeEOt4Rm3ZpCiVpBC1QD
JLFenV1ZNCJhhDzAJG8OFuTocdSYbdQVN1xMOz3EVo+XAPScFX45MnTNenF2
WeTlm4LNhrsLfeKf46dgWBsthD92wSa4vzTYfa4DWvDLAm6nvITG0JQ+EaoU
CfgyUTQa15TZYITm8e1SKTb.K76pu69uShHBaLPfEvF3.VBbAq.d.eAeB.gC
nXnpVjpM93R7c0BX50OX5nUqsLcldzTPoFuTJbsWlRWgMukoEDlt3bcVM8PC
lzsB2KmkpVAN30TZ8ZgJaeuh7oXn.mdLUu54Tfr9wbxfydtp41NUV0iM2vwZ
Z3HMMxfGLcIq0q9ILn0jSXtChtLmb5ZP30zyGcFDbsbxoKkHMrOBy6NPXlCA
wTDFbFRXSuDl8PHKm6BYspOxZ5MeY4MD3xexoK3vr2CmdByZvD1zpOBGj9Xc
98TPXCJjhQQVoQ9TqpqUTT8pstdkV2PUV2QEVeV0UqnAw+9W.Vp9anB
-----------end_max5_patcher-----------
</code></pre>
copy the text, open Live > drag in empty M4L device > open Max editor > paste > save M4L device
https://docs.cycling74.com/max8/vignett ... ng_patches

https://doubleUG.bandcamp.com/releases

DuggletonLive
Posts: 44
Joined: Fri Oct 25, 2013 6:57 am

Re: Controlling chain selector with track midi

Post by DuggletonLive » Wed Sep 14, 2016 6:47 am

Thanks for the contribution.
My knowledge so far of Max is still basic, but it appears the patcher appears to do something with notes 0..11. I'm guessing it turns it into a signal to somehow modulate the chain selector directly.
It's a patcher rather than a Max for Live device as I have been working on, so I'm to instance this into my Max for Live patch?
I'm sorry but would you be able to point me in the direction of how to incorporate the above patcher into my device (or otherwise employ it)?
Many thanks.

doubleUG
Posts: 249
Joined: Sun Apr 24, 2011 7:19 am

Re: Controlling chain selector with track midi

Post by doubleUG » Wed Sep 14, 2016 7:41 am

the notes 0-11 are send to a macro knob. The marco knob has to be mapped to the chain selector.
copy the text, open Live > drag in empty M4L device > open Max editor > paste > save M4L device
https://docs.cycling74.com/max8/vignett ... ng_patches

https://doubleUG.bandcamp.com/releases

DuggletonLive
Posts: 44
Joined: Fri Oct 25, 2013 6:57 am

Re: Controlling chain selector with track midi

Post by DuggletonLive » Wed Sep 14, 2016 11:01 am

Thanks again.
I've put the patcher in a Max4Live device I call "0oct2macro". I've put this after my grid device "NoteChainSelector". When 0oct2macro is turned on it filters out the 0 octave notes that NoteChainSelector adds to the stream as expected.
Unfortunately the macro knob is not being moved. Is it supposed to move the 1st macro knob?
Also as an aside, if I mouse over the title bar of 0oct2macro, it reports 4096samples of latency (which would be a problem).
Any hints greatly appreciated (I'm almost there!).

doubleUG
Posts: 249
Joined: Sun Apr 24, 2011 7:19 am

Re: Controlling chain selector with track midi

Post by doubleUG » Wed Sep 14, 2016 11:52 am

<pre><code>
----------begin_max5_patcher----------
2467.3oc6bs0iaaiE94o.8+.gwBzVfoSzMKKUTrX6hrOL.MMEc6aYJFPKQay
FIRAQ54RK19ae4EcezE5Yr73DzGRjCIkzG+NWH4QmS9yu7KtXwZ5CH1Bv2A9
.3hK9SQKWnZS1xEkMbwhT3CQIPlZfKhnooHBewkEcxQOvUcjsmC36PfXzcQH
.l.ff2c8au9a+EXzGug7q6yIkciE8+9e5Fx+Ekfhz2z6f4QT.mBVi.QTBOml
jfhug7NXVQ+Q4p9k+incPwimotaZ9MjaHecFJeGLiAvfTLismDixYbJMF7Hc
eNHKmtNAk9MUfNASPQz8DExCKakweLAolKUCjrOktmmf3pIuUilwjxVsKaEG
qtY55e+acrpdDYPdzNLY6s4B3p45U1dWYcIvMTcwd4R0Eaqqr.+l5t9ee4WH
uJtb4KWvHorDHGQhdDfY.K.CllkfXfEyvD2NXzItuZFGFDpm3VpKAyy796YE
5WzATu5WcvYNXEuQYEKkBvJe+qVVwJNgyDq.X2iEPnkwHYNTELRSvxpwb9Ep
IPP2KduOcJyva+KymfUSEca7GyPZHKeNDXxBvuYtbe4XbfanxLXkmR76ZqD6
VyBEDi1fxSn2+LngMB6EF9OTCV5hZP5oAwHuGBLU+B9gbrf0LlyBGix7cckr
TfmhrVNmTVB9NzU7cXl1Hwbly8fYt0Px1EWBVfkFr5KGGtboAboumuRKb0Qf
KWumyojigslhRN.KMeCloqb7Jmiu3YpR6PfJ4vJey2AyqDTpMr7S40nJGwD9
igbrfeZNGZSHN0yhbwihixuEQfq0rnceOrFSSak6DOkfz2VuBqbRNrEqPYaS
BExOHeZVlP0qbk9088eJJXv6Pw2B47brPcAU+KVAeWR3RBMYOhtor8pNZROh
0t+nj0ag21ifR1Njbo0.Y6n4biFYIG166KUPfpNqr36zMToYEze2XBlKrw6Q
r22vJD7M32ViZuXTUFggCNh54auyV0hGifj6vLbIVKFPgIU8ON5dlE5d6lSe
xRaC0eNNdhcMwAUvJ2i1xZBKBFbKpmyoIHNfbcsaK18WDjPI3HgNmPnJbq7z
FpD1Lv+v9UaKDf+MMIteF2ouifEXBiaaK8S45ZMi6jP85Q4f+i1j9SD9KX7M
O3EHItPOMM5VSestIseiVN02fSP2ITk5rP3EKfYYMZuiC+T3uSUOqU09fDS.
caN0skijdizOBu5lEm+aGlKP+9bMi7fuWCecozXTNYOtiKrJn0XMVqPkphuZ
F6E5ntH2BUsG3Eq2lPi9HJt44kDRqLDAS5tQf59EtYg6S32Nfzt8.1.iPCe6
iH3uXw1bbLkHQSa9W1d468Cpkm.AslVpAPfY8cyBMFAGMTuLw7cOaMLuwREU
BsEbJMoce02YBZCun+LLgzkS4zrQ5MGuc2X28Zpn2zQe7ptXhkI0ceqvXmeq
bKLcFHLIov7uya3AHAmB4HNVKRbrp6UuF+NVjLdDsm25ttqutztsuGGKV.T9
xZogHtAbVot0hZgdLdKhw6zHGtk0oom5TRz190EFy2xQoYxXI0YDshiXKC2l
NMa2w3ArnaPKdKk7UbfXmha2J7jBA+nXO.fe3muFH7kHVgJFKMQSdTF2QgAl
PIjgjw6oZkKfZujh9DKqkz5kzJ3OtM6oGtX33gLli5I18vv6f3I681t08zie
YaO0Yb7Bza7Veh.6pk0Zs2rpk2ddRr1K2Md7FLmOsMkOGYwOSV.zbRe0Tb9J
mZJeoSm.YcLY7IrQTwXOUrLp.d.JAPyAzMa9N.dC.y+JlnoKALjNf6W+VQep
eorjpsSteGNZmLNw5nmhhklTxwIdy6YWpeXL4Ct9g883Xf0+D70DZ4q+atZX
aLuyaaLGuIswJDxNEAszpTvOCh71QT4YZFsVdH4HZhd2RePrjQni8R+vKk+x
KzxQ9CqkVgAW14rjSGZFyI1vo30PczBzdvrClQCoOiX0.y7NcJXUNc615y27
LY09B70398aEtTyIN2IMyKCTn0rybi5X29MVKNucY5N41RBBzAfUQnd+sNX4
ZM9lY8tx40UE752dR0.elaTy2TKZ+FeGf+lNGhNWNIcpWu1+0kLeO4MhMi9o
.g5Y3FfT+s2bRniczsxyXiA3CmTcd1mdquu84wk9cLyWqVH3u5Uh92JitxmP
mZ1YnPUXpyXWEq65oxCjSOe+GIfbz1Sold6upzwk0WNoRdgekUJsb24TKuyW
fpMsKiXvmCp4dtF5Tufv0o6j+IWMuHW3reNrt6yl0KSrkxquTof6PG.wyvSA
q84TjVByiZuBsuPU6oTeaQJVC4Kv0PeA9cObQyaqbuWJ3+YLYYXTdeMIK8D8
EtSWyNIkkYd0JNI0KgNZ78EkQIdnuhjBBxAL.Qwn6yiJU.Jh1HnCbhQLNlT8
kW+PsG7tibGNNFQdB2EiYxvAn+HglKdOXrGXJ1kK2elg8UlhcYrONyv9RiA+
pyOr69IrRSePpevKNVgXSLmSX2yXhW5U8Li3kabpKe1O3COOwtQDev4G1OD8
8yKn2me6A7ve9gcSgde5VmAX2HK0yu8yX+J4gr7zc0oxWQ1mqyVswR87CLSp
lLo6FLo91lPWCSJxuppGw3IjUcda8xSxZcYtHCSPIEAIDZc9ItPm0pr2TP3r
5LLQm+HU4IR0WM6pdqHheEluEw6jCrY4TNUdzspgQIMhl+IrrIraT1DtsRjU
3dNMslOZBuIhsmJ7KE2ViZrq+jEu90T9hpuilg5v5oIX76axX8UtoNpb00xo
tNyl2ZxnYEWzmbejxtXxgWx1NiUbECT6EHA0W5tQxYJRt+Rm3nVGFrLDJNAm
1IeMOCJihbTJki9qmQ8eNTRoaZURzWNmWmei8FtJ8mJv1Rm+U9AOMoyM089s
YxLMmIKJ5lD9bPyeBU5k1NiR+AZOGVVJGlKmyRlfIjbYhkgNfpkvYP1o2xpb
RcwQKYaWcBsrzVm6etyHUjhEq7pid++RxHh8GYCb.t.OvRfOXEH.DJDJ.6Cn
xbBltrmZWNp8d4.JZPWCHSOsYsik2LylhI8r5uajBso2+uhXLtYYQIgoKOWu
UyL0fIyoapoJr4Cj3rMPoxMLnNaJ5k3z.pcvmKHxtGzojNmHXyCctr1GbtmC
1zygZ5U.aLtj0v0z.y14jCLeivk0IGWFwWmd4nmQz0xSNtTpz1SArfWAfYYB
io.l8YHvN8ZXtl.KuWEXsZJXc5ce4DXBcEdxwksY96sO8.ywXfcZsGsMxdrq
79T.Li1RwKBVE67oScWqPT25stasV2ScVORMV+j5qVgAwe8+ATHLiEA
-----------end_max5_patcher-----------
</code></pre>
copy the text, open Live > drag in empty M4L device > open Max editor > paste > save M4L device
https://docs.cycling74.com/max8/vignett ... ng_patches

https://doubleUG.bandcamp.com/releases

DuggletonLive
Posts: 44
Joined: Fri Oct 25, 2013 6:57 am

Re: Controlling chain selector with track midi

Post by DuggletonLive » Wed Sep 14, 2016 2:06 pm

The latest posted patcher is the same as before with helpful comments, thank you.

The latency issue was resolved by turning Driver setting to "None" (was "Live") in the devices Options/Audio Status... in the patcher window menu bar.

I see how Macro 1 to 8 is selected, as well as how the embedded device on/off toggle works.

Unfortunately the macro knob(s) do not move when it receives the appropriate midi notes.
I've mapped Macro 1 to chain select and this functions as it should. (i.e can change the chain by manually changing Macro 1)
As before, midi is generated in the bottom octave by my NoteChainSelector device. Also as before, the bottom octave is blocked when the (updated) 0oct2macro is switched on, so we know the midi connectivity is right.

So it seems the inner workings of the 0oct2macro are simply not functioning for me...
[edit]
Also, I've noticed this message in the console:

Code: Select all

live.path: Live API is not initialized, use live.thisdevice to determine when initialization is complete

DuggletonLive
Posts: 44
Joined: Fri Oct 25, 2013 6:57 am

Re: Controlling chain selector with track midi

Post by DuggletonLive » Thu Sep 15, 2016 6:33 am

I'm trying to debug the patcher. The problem seems to be in the right hand side of the network which formulates the object path to the macro knobs.
From the reference to live.path
(navigating to a nonexistent path will result in the message id 0 being sent out the left and middle outputs rather than an error message).
Indeed both middle and left output do produce a printout of id 0.

I'm new to this stuff and on a learning curve, but any help is really appreciated!
Here is the message input to live.path

Code: Select all

path this_device canonical_parent canonical_parent parameters 1
Can anyone see how this is an invalid path?
Many thanks.

Post Reply