transport control templates
Posted: Fri Nov 13, 2009 8:07 pm
Hi
I work in Arrange mostly, and have been wanting a true play-from-last-play hot-key command for a long time now (so I can audition my edits in the same context as I first heard them). I've been trying to roll my own with the M4L Live API, and I finally got there... except since Live loses focus on the current clip if you change playback position, it's game over... (instead I'm still dragging a Locator around with "Set Song Start Time Here" - but that's another thread).
Anyway, along the way, I came across some right ways and some wrong ways of doing some basic things with the Live API. I think it would be great if we started exchanging patch fragments as templates (a patch is worth a thousand words), so as far as moving song time around and controlling the transport from an M4L patch, I thought this might be useful... (remember to check "pen in Presentation" on the Inspector to get the UI).
First, the wrong way My call to "stop_playing" works, but throws a "No valid object set" message in the Max window for some reason I can't figure out, and I get the current_song_time property the wrong way and at the wrong time...
<pre><code>
----------begin_max5_patcher----------
1535.3ocyZs1aqZCF9y8Hc9OXg1G1j5pv1bIruLs82nmpHRvIwqfMB6j1ri1
+84K.kbg.kBkpJEH1N980Ou2ec+42+1cNq3uRDNf+.7H3t69oZj6LioG4tpA
tyIK900owByBcVyyxHLoy8kSJIuJsSrunPMAPvYaA4bAUR4r5ksgyjr3LhYo
+UAMNE727zj54oIlY3q9me2qdv7BhPskw5cZYAYszxpP3Ct2CfHymkeYwCtf
mZRLA8eMDC5plubb19LJKkHMmDXMUhkq2QYaaPgf.yth0aqlRgWRil71Iamh
H78xJp3ZF8+992zOUOt+iCz+5K6NBR3DAPti.DRd9x7z3ipS.XcbZJPri+BX
eNfxLKPsofWnrD0fwBvObXbvg3TZBPg0pCLPPj+v4O+sZ5jRYj078LCw7Ff7
CEdBOulmxKJEbZXTIOfvv.+luAOQ5Urc06Z8eToM1PGDzyHkwQ5G9nljX5ko
R91soDvK7hmEfUDojTnjdwLvp8RImojfxcfmIGUhy7bE62h7BMD6M2tjWkez
gT5pq5CKa706Yn0HGiMBpnOUQyI9y.wRfjlQ.7M.sQGXHN3PAc5gyfjgAlSs
2hIvCGFZTyQdVYl2b3gaSJWsU0XgcOkGyIVVTOerRf.bVEy15b5g+lP8VFWc
RSoqe9D9toH.0oHvO5snLg39KBVGyTnshiImCZ8L1iUkuL1Cx6AL10Mbw.kN
nAKcxHBQr5PbgAQdAOmTHOBJi3uTagrTaUzgOoKDvuGYZCYG14cYFftIXab5
i7KSlvh4gs6fANX7jQdQw8WBmozCjG3qDjhCjh1MFz1ACDu7FS7xnbhVXwKO
+KsKFK8u1vqRuB21owf.pEiGNgCMNT8bMOvnG7uMLAG+3VZ+CmkMNPxApenz
D5ZHQt76xqYY9xV2k9SQfKTIjFZyVK.MCAtr4j0tN3YwqZ.f3NC6D52.BQtU
edhhSOCwGVhTv11pdBTSfxoI2IaNuCQODtnSbznWX0.CvSfdHz0jclM4rffY
PKr0.zZ69KhMC9EnyXGHdBbXhsHI1ZVGLCAh0EEO1HE1a7QJaKJf93tBAOAH
EONw3iqud.eOl1NiWnBqguUkx2eFvIsFkhw1AzusTYW1Q9cCOGuQG0BLZYQv
tPM736+x1EqF80ZrMGipGb01Fs6v8gH+fEA3wpmS2xJtLyYac2QSn2ttP43B
4TAyP2wyqGzKpQyPhlgvCBRJvsCOdC19EBGQnxlZ7BCRYqucZpPy3d6rj3ND
WTejaL+ivm5k1USHoyVzDZ6TqUwvu5yAjobYR29v11oVykKOtPcZkjhkDV7p
TxsxhtZXQ7ARxxXorfpJjf71ahRvtBs0nY5dBeS030SbJg2mUBj7MazpfZdr
h0OcoulyYDaWYf0ZVmrj8LpTHOVdRt5RxTJA2XGxTftIw1qOckbGcsIoJpqL
SZ.lWcOD63Exqol4b8M8.UPu09kwSpNSlq54JKIlw3kJf0D9pTKUkvcGV.WP
6aBXoT1y5MTbS1mmz9wix1vamg4EIjhV+sF8g1+whbBIIkl0tnRRxaTmSsil
2d4KUmia39o6R08MIVZ8cD5+40gXTfsMkk2Tk6fq8b7aNWgZ2I2nwviXaMgd
iYNu1VUEYq9Ds3yuslSX0mP+wK4Bjst.X0MxEMSUUMQHUPqUFD3E5FXpGv2M
ZQiWF25BfP76SSbBpLX605eznC0giuRY4MkV9eswmZ0ARPp4uUfzdTi+8e35
EhF8B9irQSfcVvf+Yfmccl6767+WhLTSOwYPpfuuXcEpTcGUfFTLgHjTVc7q
Ge6VaatpczjDBqYtGNYzjbNkIK4DvSsKo6MyA6EysPsH36g2Pgg5qEBgrWol
sAUm9MbPj8Zjbq+1nbhv88.84C1K5khv7vavdwayBqg5Etg8lGbysOLmN36L
vbQeg4MHpWLGbdXtdYND8E1kMDOOLmeuXtYxVMrWLm+7oxA6j4b+JybgyS7g
dExGMS5bZmDndE7BNOLGrWFDyDy0unWe9LW+BdEMepb3NsGvyGy40Ki0OlTU
Of5w+Cf0okAM
-----------end_max5_patcher-----------
</code></pre>
Here's the right (or at least a lot better) way:
<pre><code>
----------begin_max5_patcher----------
1348.3ocyZtsiiZCF.95LRy6fEpWNcD1li8t1WiUqhHAmLdW.i.mzY5p9tWe
fvPR3fCEVuWjDhsi++4y+mrI+34m13ri8No1A7Gfu.1r4GhV1nZS1xlKMrwI
O488YI0pA5rmkmSJ3NuzzIm7NW0QYVxG.N63wLRamGXE7hjbhZ.+YEMIC7Wr
rz19oopdX691uG21XYEoVHgDNkUrshrmqUPD5U2W.AQp2UWCEWC9ZWYUS+Gk
rfth9aZu3TNsHivUpOrUHI78uQKN1Q.gAxIMNTI.u6EPW85p4RHA1I9EQ3pZ
8ee9I4mhOdwXzVP9aAItmr0jL.rsYsn3eTRzpsytjhiNu.bbtlEFx8.mGBfn
Q.HV8qDTSARL9dDdMoPylTYzyjWuwV6bRU6sbe8eG25vqN7.MogXjx1HHVc6
4e48qtIMyfChU1ZwCNSCZwUlTItU4jpsjhjcYjQLGaatN4LIcaBmWQ2chS97
p5FReA0RTlchvNbo81NtVvmxa.I6vAo8mTGun5WOz2KYExXFR0o0t5pgbpfx
q4ezbmz6PxEV.iLC4Bnqb+5u6Kq6n95jJjtvGoCL6cNpeiUwGyF6lI8LslN1
7kyRubOgB6WsSJJXMFfsBtWokwJNZrpIE7nzJiV7c4rUOptyRG9diVbfMr1x
pRIUC9aUFCC+iqKIjzLZ9vqSbRYmPwsgX97hkL5rB1hdjt0lDq4AhMi7Wtfy
MAaf95vx33ohNCmMoD1M0IGI8kHiCn0akUJHTNvuAWZfEt77BoqJ.p9RvZfq
ILrpIUmIUc3V6HEdoj8rS5.qngQ4rqM.AW9hC7T7LTYEhhWihCFrB08mppDc
.pEwJAkrZpJu5L3h2TkH.izNYp2gvUnXUejpJDrqtRXXnEpWcPPeEfAIb.ml
S.rC.0dDlCwQASt8.Ek0kdB8hVAjCCThn0P1FH+fHOuntqA80E8mvkN7pME7
.N8GKXh6zL59uekd2cI.MoUeH5yJYChWgk.uXWsUudkv6UL10MLZlKCnkOCW
YEqjTw+.zDqYqzUXqz7+giZOuH13kKhsm1YB0rQNWkOkrPUKkBzYMxv4s77p
wxG6ud6+cHd039OdzgYApnEuR.bnhSXzq9qUgnClfRFe3l5..bFP7C4pbTyI
Ek+jYnz9QnlfjqRJJOMS8zhpuiIa0SQs6Dm2orp9OtpdO5E7jIXZNpDjx.5y
2mwYubwHTSp9lJCA0JsMo6xerB6VBs7N0dtMU9hr19kViMhi8VdR0jVMzc81
H9fjhkjpO0XCcRe.T8faYbLeTjNFoupXOeeKvIoEkPwdCHuZqvubhZPlecHK
N0hb6btEiPM7ud6EoiwzzoDB066Ssa3vGXm16SJDnSnY2c34ll.A0Y2f34mo
c4qBrRL6jQ1AxBV+Lza4LbaHJJRuJhh94W+7JlBA5ujoPzjp4XNPPKbVtG6q
HkEGZK3A5hhzk5A00P1bDc+TqPgCx.6DuxzeNtCY6i0syq+eOpWX7hmkA517
rdClxDL7FZpGm5zPt8effRbxNtgw0rSU6ufnlmcMni.SI0bZQa71u7oMT2Q8
FMMkTz8gG4jSSKYzBdih.95vq7FqaxyNeZkKvN5VrI5lc3VnIpl7AiYCt4Yj
xgrhxgMQ2hrhpEYD1ritYjapcVQQFwMrmc3lQ9BPrcTNeiTNKQNiBwAsTHNi
BifrC4PFAtX6rpFabhKncTN3jJGzdjCYjxYIx4OoxgsG4BLxY0RjyynrWVR4
vFECF9KZp0GtbILBJeTaXW8IVo+mTey2B80GpUrZjgp+Mp2swsmeR7w+AnFp
fIC
-----------end_max5_patcher-----------
</code></pre>
Hope this is helpful saving some people some time and head-scratching!
brian
I work in Arrange mostly, and have been wanting a true play-from-last-play hot-key command for a long time now (so I can audition my edits in the same context as I first heard them). I've been trying to roll my own with the M4L Live API, and I finally got there... except since Live loses focus on the current clip if you change playback position, it's game over... (instead I'm still dragging a Locator around with "Set Song Start Time Here" - but that's another thread).
Anyway, along the way, I came across some right ways and some wrong ways of doing some basic things with the Live API. I think it would be great if we started exchanging patch fragments as templates (a patch is worth a thousand words), so as far as moving song time around and controlling the transport from an M4L patch, I thought this might be useful... (remember to check "pen in Presentation" on the Inspector to get the UI).
First, the wrong way My call to "stop_playing" works, but throws a "No valid object set" message in the Max window for some reason I can't figure out, and I get the current_song_time property the wrong way and at the wrong time...
<pre><code>
----------begin_max5_patcher----------
1535.3ocyZs1aqZCF9y8Hc9OXg1G1j5pv1bIruLs82nmpHRvIwqfMB6j1ri1
+84K.kbg.kBkpJEH1N980Ou2ec+42+1cNq3uRDNf+.7H3t69oZj6LioG4tpA
tyIK900owByBcVyyxHLoy8kSJIuJsSrunPMAPvYaA4bAUR4r5ksgyjr3LhYo
+UAMNE727zj54oIlY3q9me2qdv7BhPskw5cZYAYszxpP3Ct2CfHymkeYwCtf
mZRLA8eMDC5plubb19LJKkHMmDXMUhkq2QYaaPgf.yth0aqlRgWRil71Iamh
H78xJp3ZF8+992zOUOt+iCz+5K6NBR3DAPti.DRd9x7z3ipS.XcbZJPri+BX
eNfxLKPsofWnrD0fwBvObXbvg3TZBPg0pCLPPj+v4O+sZ5jRYj078LCw7Ff7
CEdBOulmxKJEbZXTIOfvv.+luAOQ5Urc06Z8eToM1PGDzyHkwQ5G9nljX5ko
R91soDvK7hmEfUDojTnjdwLvp8RImojfxcfmIGUhy7bE62h7BMD6M2tjWkez
gT5pq5CKa706Yn0HGiMBpnOUQyI9y.wRfjlQ.7M.sQGXHN3PAc5gyfjgAlSs
2hIvCGFZTyQdVYl2b3gaSJWsU0XgcOkGyIVVTOerRf.bVEy15b5g+lP8VFWc
RSoqe9D9toH.0oHvO5snLg39KBVGyTnshiImCZ8L1iUkuL1Cx6AL10Mbw.kN
nAKcxHBQr5PbgAQdAOmTHOBJi3uTagrTaUzgOoKDvuGYZCYG14cYFftIXab5
i7KSlvh4gs6fANX7jQdQw8WBmozCjG3qDjhCjh1MFz1ACDu7FS7xnbhVXwKO
+KsKFK8u1vqRuB21owf.pEiGNgCMNT8bMOvnG7uMLAG+3VZ+CmkMNPxApenz
D5ZHQt76xqYY9xV2k9SQfKTIjFZyVK.MCAtr4j0tN3YwqZ.f3NC6D52.BQtU
edhhSOCwGVhTv11pdBTSfxoI2IaNuCQODtnSbznWX0.CvSfdHz0jclM4rffY
PKr0.zZ69KhMC9EnyXGHdBbXhsHI1ZVGLCAh0EEO1HE1a7QJaKJf93tBAOAH
EONw3iqud.eOl1NiWnBqguUkx2eFvIsFkhw1AzusTYW1Q9cCOGuQG0BLZYQv
tPM736+x1EqF80ZrMGipGb01Fs6v8gH+fEA3wpmS2xJtLyYac2QSn2ttP43B
4TAyP2wyqGzKpQyPhlgvCBRJvsCOdC19EBGQnxlZ7BCRYqucZpPy3d6rj3ND
WTejaL+ivm5k1USHoyVzDZ6TqUwvu5yAjobYR29v11oVykKOtPcZkjhkDV7p
TxsxhtZXQ7ARxxXorfpJjf71ahRvtBs0nY5dBeS030SbJg2mUBj7MazpfZdr
h0OcoulyYDaWYf0ZVmrj8LpTHOVdRt5RxTJA2XGxTftIw1qOckbGcsIoJpqL
SZ.lWcOD63Exqol4b8M8.UPu09kwSpNSlq54JKIlw3kJf0D9pTKUkvcGV.WP
6aBXoT1y5MTbS1mmz9wix1vamg4EIjhV+sF8g1+whbBIIkl0tnRRxaTmSsil
2d4KUmia39o6R08MIVZ8cD5+40gXTfsMkk2Tk6fq8b7aNWgZ2I2nwviXaMgd
iYNu1VUEYq9Ds3yuslSX0mP+wK4Bjst.X0MxEMSUUMQHUPqUFD3E5FXpGv2M
ZQiWF25BfP76SSbBpLX605eznC0giuRY4MkV9eswmZ0ARPp4uUfzdTi+8e35
EhF8B9irQSfcVvf+Yfmccl6767+WhLTSOwYPpfuuXcEpTcGUfFTLgHjTVc7q
Ge6VaatpczjDBqYtGNYzjbNkIK4DvSsKo6MyA6EysPsH36g2Pgg5qEBgrWol
sAUm9MbPj8Zjbq+1nbhv88.84C1K5khv7vavdwayBqg5Etg8lGbysOLmN36L
vbQeg4MHpWLGbdXtdYND8E1kMDOOLmeuXtYxVMrWLm+7oxA6j4b+JybgyS7g
dExGMS5bZmDndE7BNOLGrWFDyDy0unWe9LW+BdEMepb3NsGvyGy40Ki0OlTU
Of5w+Cf0okAM
-----------end_max5_patcher-----------
</code></pre>
Here's the right (or at least a lot better) way:
<pre><code>
----------begin_max5_patcher----------
1348.3ocyZtsiiZCF.95LRy6fEpWNcD1li8t1WiUqhHAmLdW.i.mzY5p9tWe
fvPR3fCEVuWjDhsi++4y+mrI+34m13ri8No1A7Gfu.1r4GhV1nZS1xlKMrwI
O488YI0pA5rmkmSJ3NuzzIm7NW0QYVxG.N63wLRamGXE7hjbhZ.+YEMIC7Wr
rz19oopdX691uG21XYEoVHgDNkUrshrmqUPD5U2W.AQp2UWCEWC9ZWYUS+Gk
rfth9aZu3TNsHivUpOrUHI78uQKN1Q.gAxIMNTI.u6EPW85p4RHA1I9EQ3pZ
8ee9I4mhOdwXzVP9aAItmr0jL.rsYsn3eTRzpsytjhiNu.bbtlEFx8.mGBfn
Q.HV8qDTSARL9dDdMoPylTYzyjWuwV6bRU6sbe8eG25vqN7.MogXjx1HHVc6
4e48qtIMyfChU1ZwCNSCZwUlTItU4jpsjhjcYjQLGaatN4LIcaBmWQ2chS97
p5FReA0RTlchvNbo81NtVvmxa.I6vAo8mTGun5WOz2KYExXFR0o0t5pgbpfx
q4ezbmz6PxEV.iLC4Bnqb+5u6Kq6n95jJjtvGoCL6cNpeiUwGyF6lI8LslN1
7kyRubOgB6WsSJJXMFfsBtWokwJNZrpIE7nzJiV7c4rUOptyRG9diVbfMr1x
pRIUC9aUFCC+iqKIjzLZ9vqSbRYmPwsgX97hkL5rB1hdjt0lDq4AhMi7Wtfy
MAaf95vx33ohNCmMoD1M0IGI8kHiCn0akUJHTNvuAWZfEt77BoqJ.p9RvZfq
ILrpIUmIUc3V6HEdoj8rS5.qngQ4rqM.AW9hC7T7LTYEhhWihCFrB08mppDc
.pEwJAkrZpJu5L3h2TkH.izNYp2gvUnXUejpJDrqtRXXnEpWcPPeEfAIb.ml
S.rC.0dDlCwQASt8.Ek0kdB8hVAjCCThn0P1FH+fHOuntqA80E8mvkN7pME7
.N8GKXh6zL59uekd2cI.MoUeH5yJYChWgk.uXWsUudkv6UL10MLZlKCnkOCW
YEqjTw+.zDqYqzUXqz7+giZOuH13kKhsm1YB0rQNWkOkrPUKkBzYMxv4s77p
wxG6ud6+cHd039OdzgYApnEuR.bnhSXzq9qUgnClfRFe3l5..bFP7C4pbTyI
Ek+jYnz9QnlfjqRJJOMS8zhpuiIa0SQs6Dm2orp9OtpdO5E7jIXZNpDjx.5y
2mwYubwHTSp9lJCA0JsMo6xerB6VBs7N0dtMU9hr19kViMhi8VdR0jVMzc81
H9fjhkjpO0XCcRe.T8faYbLeTjNFoupXOeeKvIoEkPwdCHuZqvubhZPlecHK
N0hb6btEiPM7ud6EoiwzzoDB066Ssa3vGXm16SJDnSnY2c34ll.A0Y2f34mo
c4qBrRL6jQ1AxBV+Lza4LbaHJJRuJhh94W+7JlBA5ujoPzjp4XNPPKbVtG6q
HkEGZK3A5hhzk5A00P1bDc+TqPgCx.6DuxzeNtCY6i0syq+eOpWX7hmkA517
rdClxDL7FZpGm5zPt8effRbxNtgw0rSU6ufnlmcMni.SI0bZQa71u7oMT2Q8
FMMkTz8gG4jSSKYzBdih.95vq7FqaxyNeZkKvN5VrI5lc3VnIpl7AiYCt4Yj
xgrhxgMQ2hrhpEYD1ritYjapcVQQFwMrmc3lQ9BPrcTNeiTNKQNiBwAsTHNi
BifrC4PFAtX6rpFabhKncTN3jJGzdjCYjxYIx4OoxgsG4BLxY0RjyynrWVR4
vFECF9KZp0GtbILBJeTaXW8IVo+mTey2B80GpUrZjgp+Mp2swsmeR7w+AnFp
fIC
-----------end_max5_patcher-----------
</code></pre>
Hope this is helpful saving some people some time and head-scratching!
brian