Remove time from bach.roll after read of MIDI file

Discussions, advice, bug reports and much more about the "bach" environment.
Post Reply
byazz
Posts: 21
Joined: Sun Jun 08, 2014 2:22 am

Remove time from bach.roll after read of MIDI file

Post by byazz » Sat Aug 05, 2017 1:23 am

How do I strip all leading and ending empty time from the contents of a bach.roll that's just read a MIDI file?

Say I want to:
Export a MIDI region from a DAW, import it into a bach.roll, and perform operations on the content.

Depending on the DAW and lots of other settings, if the exported MIDI region does not start at bar 1 beat 1 of the DAW session the MIDI file will start with empty time.
For example see the attached.

Goal:
A bach.roll with pitch content that starts exactly at 0.000 sec and ends at the end of the last note off (or note on with velocity 0)
Attachments
CM60.mid.zip
(704 Bytes) Downloaded 266 times

byazz
Posts: 21
Joined: Sun Jun 08, 2014 2:22 am

Re: Remove time from bach.roll after read of MIDI file

Post by byazz » Sat Aug 05, 2017 4:05 pm

Ah, I'm starting to remember my llll's. This is a start:

<pre><code>
----------begin_max5_patcher----------
1587.3oc6bssaihCF95zmBDWMUpSWaiMG161miUipHfSimRrQfoG1Qy69hMP
BIwoERYRXF4T0PvG3+6+j+cHeI+3lEtKEuRKcc9am+0YwhebyhE5lTMrn87E
taheMIKtTOLWN8Ewxu6dWSWR5qRcyRmkNoUaxcV10EuZCimQk5oAaaLOVlrl
we7gBZhrQrA2Ctyg.UO6qeMBcOv4asSfkpu70h7qnndWZQkr6Z601Zo7sLpd
zciqYPx2xoMhxcYL+Q26bbUHUcTety2Ti9m2bi5o6FnYXYkTJ3iVWIJEDC7z
5It6YiZanYsENRs8RpcJ8AhGftQth51IBfWFmr99uZTkQmVkg0tRLJjDfq01
Hes2E+tAwnOspOopszIyIarN58zZjNlFEcO4czZfYsFMBs9tIVy0N7bVxSNe
A5.ucz1.T3NafOPYCZ7+mxF.CtRddshVHx15leVvRn73McK769Ekw8V2sntF
f5wb.9hWsJiw6lEo+v2Yx7aabkfKWEmngNnufKyiSXpjW0EQa2fA8rXp4Ux9
O87f0lx1lyDh7dSAzaFFbNd5xIXhNUjfz9EXsXB8TO1SVJ6f1L8OEr3slnd9
sndtil3olGcMmypEOMkIKpWRpySwqpM28MP8b3gcSrfVR4xXISv6i8lhCQ3V
8zHxUQwIhLQw91jtIzy57LsnrV.0PXIUO5fH.3cSxNw+sq31N0WVKxnOnhpd
HMVF+.X6i1KUS.WarUYlPx3qDcM.65Pa8qOFuIOiIqRoNT9yzLQNsIjrabZL
VebUEOQYu1u2mnuUe.rWaMdi5W7vqs+oxCdXUlHV5i21Xy7.CbbPPH..8Ci7
2SVkc.dnxpGLo8CC1WsdqjGmu8ra2uyTwlXFe5Uv.jejGBGZPXeB07EVpbs1
QR2jKJhy1WYVSYOtVpCDpjhi0VzgwKp.JGyACylPEiVRanxu3PEOigJLtLiU
JMGoXry+PWSIktJtJS5NbmbXTHN.fM6iF30HpdaRDT3nbjXy47JQbZW4I59O
zr9Q5LAWbeH4TIimLQzlDNqRB8OcR36j.ZS9lCIeAG56xdqfkTZ1uoeawena
6R.6vCg8JVF8cVw2XuS.3CAHnG4fbtOB7QGkujepLki64Rln3CAPHBbIRT9j
anCBLtFDDX1rxEb57HPFBMCb3rG3le6VPzrG3l27Oza1Cbya1Ehm8.27N7fj
YOvMuyFn+rG3AlAdvrG3glAd3rG3QlAdzbG3HyUNQy9JmHyUNQy9JmHyUNQy
9JmHyUNQy9JmHyUNQy9JmHyUNQy9JmHyUNQy9JmHyUNQy9JmHyUNQy9JmHyU
NQy9Jmdlqb5MqqbtaTIhMah4okG+wsJjz9G6Mk0hhz8dQ+2beysWo63IUSCe
dcWHA5coEH9RKPxkTf658wBQU9A2yvMwEOQKNrQVJKYcLmSyJaC411IXe5kb
H2ARDU7NV0XY3xQrG4j7aIxH8V7GG8VfWX5sbHUUrbawxsEK2VrbawFpX41h
kaKVtsX41hMIzxsEaxmkaKVtsX41hkaKVtsX41hkaKVtsX41hkaKVtsX41hk
aKVtsX41hkaKVtsX41hkaKVts7qiaKeYL2tnce1jR1FZI6wdFS7whd9bYU22
psyG9W3wjDGAPHP3Y.Cn9lPhfgAAA9+RwyvHnzvsd0vFCCBwdnQNKRfuGIDO
7I.AHLQc6pB6cGIAi1cq.rmGD.BGKfCg3fqDfwjnyAv9jnqDfIgAmCfifWqP
h.H4L.bDFcsBIpihOG.G4csBIhBNijNePs3uN.l.hhNG.G.tRgDDDJ32KKrG
jzju+aRLLwqdi5mAfuZqRPvXuy.vWu0gIDPv4.3qVkNBI.dN.9psWBR81tNC
.Oo6V6b4+tdFt8XjdGc30TBW099jhuTTUjzw24texbc1wW5z52fDi27wXuaP
siwHu6GkfPWJAA+.AAmBAQFfoCMIpT3ExIoLKjAHGxDHG7.jCdBji2.ji2DH
mgDai9rABnAFH.+rBBLjXazTDxELTIMI5zGtvPvDkF8QBpyBezh4w44seqUz
RQIC2Mweu4K6Rvc5SY7lS0+vl6VPel0Mdrtk3hj0LIMQVUz7c64UerayTEoz
BdES+UK5Fkj+4M++Tozqq
-----------end_max5_patcher-----------
</code></pre>

danieleghisi
Site Admin
Posts: 1349
Joined: Fri Dec 03, 2010 1:25 pm

Re: Remove time from bach.roll after read of MIDI file

Post by danieleghisi » Sat Aug 05, 2017 9:23 pm

Yes, your way is the easiest one.
Or you can use the "onset" message (also shifting markers):

<pre><code>
----------begin_max5_patcher----------
1596.3oc6b01aihCD9ys+JPn6C6I0MmsAyKmzIc2uiSqpb.mFuErQfoo4Vs+
2OaSH0j3jllsIY2FR0BI9sYlG+3gALy9sauwep3YZiu2e58ud2by2t8laLEo
K3lU+9F+RxyYEjFSy7KoMMjGn920Umj9rzTdCsviTTbmmf2Pkd+0pye162f8
sUzJKnR4xJZm.8889xpp3skLtpRiLPqJrhHyly3ObeMMS10kPbzDbLLDBuyC
EAl.tyCFFpOgPS.qGNVtQmDS+5mgo9uHiNMvHD3pRajKKL5iuutfue6s5C2c
fnAmtPIjs.iojr4SpXYO5E3A89akX8j6FEtamHA7.QBD1fDHvdQhP2HA5jiD
ORW13wER5dwfoD9C+X3.L0fCov8BCAmRXXWKOZ4qWfn+R1bQctxr7xaKqTEn
LGlf+NtPQa8JLH1bDr+UHnS4JDCAnVTTre9+N92PNwSBVFkSJ68X4+Ica98W
ZvzEYhREZvlxJXxk5VECRAo83DSgSzblrVMr8hm2pzs0iPAi+XwxZVViTzTH
LnYrKrOxpC4KUJ0ft.r03lJRFSaGZ404yJ1ZpnPHprqC..V0NSvkyHYT6Qcm
y2Ql4aLJxLPJojDn9DsdvxoyHsER8RQsl13DBzRrg8eFIB0C61LFfuUa0SHl
p9mZFovhK0Y71TIMXQpkrr1Bhlv6.wFxAS5s3ZZCkKMcxxpivQurfGr5vZCQ
u3KSTHpsP2WN.sZoRhcNw59zaCOQqaTBToRSo0aRlZjjYyTFTOYDudzVLWTP
uWy4uOmHI2CV+YEd2sbXE8UC.L9LQeAv9JL3p5LorRQlayodT9SzBQEsi022
NyRI04Ys7UdQrqU46UcBLnrN5u5K2+7p+zqRueVgfHiBWWXW+.GX6ffD..Fk
jFMPVM8J7gJKK0jZOsOzrdnVwGGTxxFNoZXQ4hRBi+9anwnnz.TXhCg8CXtK
X4x4lITZYknlTLzXlSYOLWZHDsRwv5xDUKWLmxazLksltIYpkgMcHJImvyWT
yjaPhlonjhEZGCyUswdHV2FzlDSMy0yMq6mFNoyopQN4GENYfSNIiKKXMR2T
RmU9A0K4pq26e3rnjzjvXPnaRvANFo33PLJ4nYJvSASIzs2KsMratxNp9Cp+
q2HaA7wijf2k6jc5JYzMx0kajnc6FYOtPFcebU39HdSxQ2SRvMwv7ngdUdw4
FWNIQokrItLiUP2yUccV66.5j.Pv.7Ftkt3rlzsboTsKmIaWy4zWRDD.gHv4
vWxO622AD375.5GLlq4MtfSuRVqCgtQF3uRHyIYcNz8CPQ+32u1QF22FudmZ
t1QF221pdq7t1QF22qFDOhLtuGEXzHxD6FYhGQlD2HSxHxj5FYRu5QFj6XfQ
iw.ibGCLBNhLtiAFMFCLxcLvnwXfQtiAFMFCLxcLvnwXfQtiAFMFCLxcLvnw
XfQtiAFMFCLxcLvnwXfCbGCb.3pFYrEUYoZHZ19kaTHo1ms5h9UidvWr2xft
cEp+7NwQGuzZmIAFbtEX34Vf3yo.se65DsUarWpkj5Go0qYWG7lP8o0CijUR
aXOXAlgaK5edFV8tgst+v+H7s3kHEfPfjiSMffDDLINNN5jpOVyrrbV1bBmS
KZ11Ek0qPd+qN8K016VZ6ZdKlaHLNIL.8F6ENNJ.mDd3c.BPgX8NCkXs+nfi
Y9ILH.B.IuUENAFFegT3Pb5wnvQ3zKjBiShOFENEdonDwP7QnvognKEkPwhO
FENM3RQIRiOhEcQ.k3uLJLFjldLJbL3BQIvHT7uVHb.D2sd+WDNLNPcGDGgB
ew7RfCCCNBE9x4GFiAwGiBewtRGFGCOFE9hEKAVE10QnvuqQqAFlKpalEfYh
V9pzVD58EqLo0zCeqLIrOwZMo4ot7goWainsNqO6U6SwcOfURd1HY7tWpNqF
AFzn4r7bJ2NwKUQbWIX79jBMLJZBnO+xS6xtz.7jXEnAhbVTWtXF.mf699KJ
DqgLsfZxeTfyTH9fszvCwRSeEK8cTeBND8I77oO5I4nWSeBNe5C58fYtK8oa
gCopZUd5ZTFsp3WR9ZWV+ZRcaE0l28y.yOqoOw5auIE5U2PY1bljlIaq6Rk4
mi59OKA+RQNsl2xLYw7sZI+8a+e.GSP1T
-----------end_max5_patcher-----------
</code></pre>

byazz
Posts: 21
Joined: Sun Jun 08, 2014 2:22 am

Re: Remove time from bach.roll after read of MIDI file

Post by byazz » Sat Aug 05, 2017 10:07 pm

Thank you Daniele!
Hmmm....
Not sure the patch you pasted works quite right. For me that seems to do this:
https://youtu.be/QvM_bB-wOYI

for some reason adding "unsel all" at the end of the dump out message fixes that here:
<pre><code>
----------begin_max5_patcher----------
1517.3oc6a01aahCG+0oeJPn6E2jx5YavF3jNo69bLMU4BNMdCrQfoq8l128
CafDRpoKjlE7MsTUdvO8+2+mAi8WuYk+8xmX09d+o2G7Vs5q2rZkoHcAq5ue
keA8ozbZsoY922nTRg+5tpDMEbQNSYpC1WXIUktkKd3tJVpparCvg2BV6g.l
igCG89XeW3YlAWd+mde3nwV1nNdvqUOmyLMdnccMR8bIqiV92SEO368Qcse6
lazGVehLWAqtl9.aXjUrmL32uhQyrxxnoYYT7HVN.atFYmkQuYV9xxt0rbOZ
d9ZOonlo79q9yu262fq8ZD8UOzsbtfkJaDpwBjSUJEhI2hifgv1QFQLxJXbv
fHylvBlrPRKA6Ksz+EBq6ooausjm9Yu.On2e2RLO0bcONPJfL1JvdekILYfS
3lflgTX8OBIwmYOW6IjJ1aQF.SLxfD3qJBBtHhfKezhcdHq8zWjtUVk0x4dY
MEksEzxw7Ihf9ZgSPFYQTWLkvWUvrTwSLF.Ux8gFdTxSYBZwPJF+eWKwem+N
T2BPSaNBezMazQU56Edby2KrH8EtQJTanoFnCFS35RZJWqb0CRWnknQRLc+p
4+qoePszsOblTVNtK..XTmlTyPLZFLhX5TKghCz+NfZZIgQP8OUb5NgzXMGX
jFoyUq62Pwk7Vxyx3ppVq1AkknoUhOVFMRmGOzwJVMSnnZSuQX2vh6OXA2Zq
5TYtrxdGFIZdjUU2N5sz+dlo0QI.vqF7Yh+68H665W1JyY2osptKipn2A18q
en5L35sspykJtXibn.3PEFYe6YZQYNW0jw7XhGY4xRVmI4P6LXr87lFQue53
Zait0dBbPYcph1Kt6o9+z9A2sIWRUjvcE10OvI1NHHF.fj3DxAzpd.vmJsFA
S1XafCYqmqEzxc28tCqLSVP4hKOCFgHIAnvXKD6Mvlegmo1ZTjrhRYEM+PlY
Ki+vVkwPnQIeI2hN1dQaP4Y2XvYLUrJI+koxOXSk.qlJbgJmWqraoXsxeRio
jw1PaxU9mtRNNINLBDZWGchiQBNJDihmkhLztOulDSqJmn5eR85moxDb00g3
obFmzQ7WNgNkSHYZmvWwA7WNetfyWzw5t7mq3o010alWS96p1tFvN9XXugmy
dkH9Vq8B.9X.BFfOxm66A9jW3uTNkmxKq4Z5nPf.HDAtFNJuwGnCBrFCR+R4
1DqBof4FFxPncfCcdfa+0szSfkiCb6O7udJIcbfa+gc0SmriCb6OgGD67.29
S1.INOvirC7HmG3w1AdryC7D6.Ow0ANxdlSjym4DYOyIx4ybhrm4D47YNQ1y
bhb9LmH6YNQNelSj8LmHmOyIxdlSjym4DYOyIx4ybhrm4D47YNQ1ybhb9LmA
1ybF3zYN22pTYQAUjU+xO2pYEfr+7ntnWNDGbw3Wtua5UFNOIaZ460ckHXv0
lfgWaBhulDbesOTIaJOZNCKnUelUsy55jmtn8eaRyLAsq+v+HbNSEdLNfDfd
ITOCXvKX07GFoSCc4g8BKzFoP4Y7zsTgfkW2GtXekyGsm37qhiHA33vSuCAP
TTLnMfX7n4eDLaoZ2HkDiIyEvwvvnkAvgvVBGflMfI3jEBvQPL.DOa.m.WHS
BLBEcF.NIDsPlDXLHpSVMO.mDrPlD682mSuHfPLbY.LA.SNG.GAVHSBBJBeF
.FhfKjIAIDECIf+GIgwXx4.3kyFlzl6X1.dAiRPhaMGOC.uXwgIIgfy.vKWl
tH.I9b.7h8rDQvDx4.3K4SqANbExe7xed2Ns4CdvCVj9ld3OZYyOrl8MKYcc
4Gtx8qkMUoCKG69Mdk29UycV6quwEcej88sw7svASr4.NUBgtVDBd8njdPHe
OJEbInTvovSgWBJcRFDIWBJkLC8TeiZeSxRIWn5M1CIjaA86dn.fYSXPHQ2F
09rf.h0hvlRBf2h6t1hyDsrreSMXX.M78KnepauPDs1bKWzcaf41J1i7g1GZ
JgVktkqXoplpt89wSjtstkegLiUIZ3l8exMZJ+sa9ODyVtp.
-----------end_max5_patcher-----------
</code></pre>

danieleghisi
Site Admin
Posts: 1349
Joined: Fri Dec 03, 2010 1:25 pm

Re: Remove time from bach.roll after read of MIDI file

Post by danieleghisi » Mon Aug 07, 2017 8:04 am

Hi, works perfectly for me. Which version of bach are you running? It could maybe involve a bug we have recently fixed.
To be more precise, one should do "unsel all, sel note 1 1, dumpselection", since the first chord might have multiple notes. Also, this only works for one voice. Your method was, all in all, better. :)

In our to-do list there's a [cage.trim] abstraction to automatically trim the empty space at the beginning/end of a roll/score.

Post Reply