Part selection

Discussions, advice, bug reports and much more about the "bach" environment.
pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Part selection

Post by pedrnun » Mon Jan 01, 2018 4:27 pm

Hey guys!

How does one select notes in specific parts?
The old syntax 'sel nil nil nil nil 1' only seems to work when parts are expanded as voices.
I came up with a solution but it's clearly an inefficient one...

A great 2018 for you all!
Pedro Louzeiro

Code: Select all

<pre><code>
----------begin_max5_patcher----------
3043.3oc6cs0iipiD94t+UfPqzoGo9zBay08kUq1Glm1eAiVE4.Nc7YH.BH8
k8ny6692b+kr9FDCXRSHWlKGlKIfswkqupbQUkMje+96rWm+Fox15uZ8Eq6t
62u+t6DEwK3N042YuC+VbJtRzL637c6HY01OJqql7Vsn75szJK1+9e+2+Czy
pltiTYsAWUSJaZZ19czrTRsne.pBqpeOkH5.slkuutocNpRKv0waoYOupjDW
KGu99nmbdzxK3IuGs.HG9IP1mV+K00PSDcb95e6WQg17x9i6um+wiSjWyHux
t3grp0Z9eOK9BcD9B4xYkHHmubEGCgZrkrWpeufHau8Zb1y1O16ainf2bPg0
6qqyyNKtE7gbqTJBkbq6GxsF4N24vcaRyYiU61AXIdGgozthjgWK4Imygygi
y4tAZxYOmAx4M4k6vh15OFVbboM7BpyWXEWrmOq17zYX6XNqth9uEiO.iYNQ
8C9kmwD.hl92Ko3T6OD+7833mevGOOgIp43oAnBF1gNLlTBPJDhMvnojWHkU
T1DgCi26rwEEZEem1kvg0eKWzQAO1VDMSVDpsnRxKzlq2ssTbIiaqYr59RIX
7luq8gtIOgTlsmJFJxBYB36a5vF.xC5wAEPHT7UjDhPAGvHlxvyo4wekjnon
yPtBRFMqnjTwrziqUit1pSHav6SqW0QXCdxKxCDFXpQavwjQ6Aix66retjlj
mwGIc.bdwMz7KV.IC5oyQhVjgKLbwLQMCbFoxJFmtuZMtjKOTS8gMUVmmm1s
p1qKkroVUcAMKqGTVmWLdkkzm2djqccNqxcGquE0TsZelr1UrYw0qpvuzEsq
woopo0c692vYTlIFBedsfccZqTZ9aaUbYdZZG9UVyKFpIgoJGSdklTuUPnmz
j2rlSKZzjrakxIzmIU0cKqF+bU2RFX9fUz90popqpI6JRYbQ2FzwwF84k5F.
6TdOCgRyGsS5F4F.iL9F0QlwLlIuKHHP3RibdKTWstmAKfNgZbIiWIMicyqW
voVzLqcBGxJIE4k0jDKFVQzuLZVB4MMSHpaUnrlLSTqysO5dKj0VfIglGyrx
TQ698mYiLiHK.NBKkAgBoPPe+JmfaICt+h8sAhY2iNlaO+GJbF3H8.zeZ.c2
6hOvomaDR+qLyaihxvumPYkkEWgkEjvYyyEjcsWrXz0UzvKrACuECFF83WDp
+kzdg+kDnEv1nPoyY.Uia8zM3HdLbZJcAi4TA+prpXtxVwSrCaXXgyRTNVv7
wP4xgQeKf+nBuxozWPzM7CPWLGKUv6QgTStqcH7mTZ1X98J3Rd8lw5p78kwM
rhzqkGs5xwL+3qoYsQD9kl64JZ2jjzm5X.Mwwf6UbL3Nww.3JNF7l3Xv+JNF
7OAYA3JMFBl3X.dEwgvINF7FcLnm+kMzzz37zbVfrJKI1OWhSnGRxd2VI9DH
IiyStdtQNvG4G4CCb8DGEBQdHlLnahd50Evlt.F4.h74WHxIJzwUdDqHvG0E
mUOvr5oRxRfVlBzaQQYN+NLMoe5ITz85o5xlmnijUxj5rBWWWRWuuVZ7SO2c
mTxGNZNsdNMeMNUk2gVOWNVZJNjKi6OnBbhYjcrUbgEaeMOldKr0Z1sgHkrS
wYVhEh4U76V04VUjTF1XkkWyWMlx7cr1VUPhoanwVEr6372Z5Ut5eb9d4sjP
WoUrA5CDdtgjYsys4NrFSIaf8EDqX.UEoANvooJHglINgiDUOZsmwqUUV+Bi
eDkvLhA9kaK.o4tA.FbT7YVqkCajr9PJ7ukq1AzIhyNxbQaX0NNs01.hlC2u
iIdwOSFnczLMgl14+fitTG5oGefHDH4VG0GsrvYrPYxNNRzk..ZB.nQfCbwW
HT5YuXndenZCvQDsG.gN8kCkxsGLgUGE5782pipXeoEyyZ0QAQyg632UcO8n
bGuIxYQayeka2Tby6J6ym48D1JXtTHh5eR1LLx4AWRaEwoD7wWCzygiQxTHA
DZ6nf4xw2Bqiv4XcD.jSmcgWGyipsAx7sOBbtAP2eAbsTf.JeqBkI8EN24LQ
WRT.mjDuMuLox5gG.NNNVO3y+D54X469oG7CNbxmd.9AM3SrNgcLuMrlZgPH
YahNbxm9jQm1fWIL2MTpSGHbtEIuEEx6jw7vKrYpMUVe15yWKMMeoMJkoJoi
8yPQy+Rxz5Ntes3anLK+pYXgykucuJ7M7Zw0nfHMtNXtb8r1QRqwwaeRrYCT
c3NZBMlEpaFIUkoS.azzRuWxowjpBbLk6JjLCEh4mMe11xNnju9kyCtW021O
v8Z7S7OTG0d8ek7dSi9G+SdcrOaqbj6.5neiOtisZIHQHQ6jYktsUqkqekEp
KSPQWSSo0uyaeHylYqHjxyQQBstj4OXiHIaOeCazzCjrs3xc4Yz35lX+XsQs
yb3LSygZaHsAakmVUO0jiNs0vFAi0bo3omAYMsvvObufo1wUpXY6w4U03Maz
RBNeu00NpDVEUb5m473mOvco44EJXmKVbNf0lrBHcfQl5JlaaFjkJ3Sjngz7
FDpmPnmOyZSBYHhbts7O1GKL4w9+3ACzzcaoIjCBDAqefCdcadJYEel2pDbM
dkS6eTzVNoTMufyjzrM4ME.ZpPHDYe+BIMOloqZQx3GVP5NuRvSru2rOKVjq
tN0xlpwylZmxj51rCV8l5ubSEqDK3muaagxqyYhsC3vzl.9g77YpQqplA7To
k1vjzYmz0oN9lUqaIuy2dZcKJIeGllc4Yz.neDB5FZfXmA6x2NV4k3T9lTTx
9oLF+kdRalgNRVx.QpbyiwN.uuNu6Urkv2sblqKNu38W2RxpJXFCGzo3Xl9c
kbrfSvYIuVRq6Md1vTkyekOYcKqM5cQaaf8Un4Z7VlUW+tQY1nLdQY9O8JyH
iJyzr5TZUsYcYiU9SpcYM2fln5WXTna.eouNh1SVd1Ip4LQhG4E35ACmsJF3
Znh4Z1dImGFWIajp+I0h4Ipl4rnc01FuwLfMpwqECWKFtljpk+3FtNhQqECV
KFrNlVUfQsJQN7LpTMrFS5T+vfoWEuXCMOSklRNhGFFq8aI1F5.AHudlf+lq
uFYDaqJFyH3vZtk1.8AN..z4VXC7m1XBANFE4ooxr7MTjOrlESTC.UfQPE.L
CoCAmengzqhkIf4LwAfKP5rgTy4CBfVfzYColy+AvcARmMjZNnef2BjNaH0b
vt.+EHc1Pp4H8.AKP5rgTyA5ABWfzYColiuCDs.oydAhGD+Tx6rinwUlwTy0
JwU6D6uQHqSHxw46rfnfCBhJ88xQw0wxblcp8RfoGvzAQQgKqow6SEo7XDn8
HMQgw3uUXb.JD4+8lEgAgUo0biVYMUqBY2tfrZHq4nqfKQWMeH0bzUvknqlO
jZN5J3RzUyGRMGcEbI5p4ColitBtDc07gTyQWAWhtZ96XQyqNExYARmCjpSp
c6XcQ0vMtedMQ+asKg+3704.8kNUt15MeOp.vvFq9FQPzslft2ZB5cKIn9N.
OeeQu3B2gK+Joreg5OBWBUNXWEbs3LadnRNTaiR8vZd3D10EH.LJzy+DuJu.
ejWn6zu.fCBJ1ec9t8MhLURF4BCNaRNKR6BXDFA+yFF4LakJWWuHY5yNoQeH
v8zF8nn.wV96L.rHTzYSxteO5SNV6yf8WZdwfcEeOTfi46FG9SU2E6cPg547
6LdGTz44bVzhtuo9jfP+2DYJnX3aEuNuN3F6UfVn78v1gmZ1hbZVyChnuKR7
Z0.3K94GPxmcOyS7h2vCADewNYDQ2IMpAeznFzg05Opku0OAPj7oNOX3YpWD
D9dCNQ9vKiDrXn3snx4yNvoHDFmc7Ck+3kH+MfvWJD5blm7mAjPgzhex4Npc
mfpCR6UW2roTOVeDJAuDTx4rmN.AJIg34b20CHkD5m45KeVeESG3mbIF0tmk
9CRppndqm31n+nelm78XpR+I7xLpQevn18RIT+noWQWJB8glktDDBME0TmK.
k.QSgRnKAOAl.k.WBVJ3VQH+aEgP2JB4biHTzMhNg2H5bqzDbuQzANK5H8Vs
2uzQbRz6W3nd+5FM7W1nw+UMp+unQLJ+G2++A0OjneB
-----------end_max5_patcher-----------
</code></pre>

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

Re: Part selection

Post by danieleghisi » Mon Jan 01, 2018 6:35 pm

Hi,

as far as the current version is concerned, you need to know (or reconstruct) which voice maps to which part, and you can select them via messages such as "sel note if voice == 1".

But your remark is pertinent, so we've included in the next release two more variables "part" and "voiceensemble", to select items from specific parts/voiceensembles. In your case you might do something like
"sel note if part == 2"
to only select "red stuff".

Hope this will help,
d

pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Re: Part selection

Post by pedrnun » Mon Jan 01, 2018 7:56 pm

Thanks for replying.
Your solution is an elegant one!
However, the 'direct selection' (as I call it) is quite faster than the 'conditional selection' – like tenfold, according to my measurements (check my patch). It might have an impact, in a realtime context.
Would you consider applying the 'select 2000 3000 nil nil 1' syntax to parts instead of voices (voiceensembles)? Or have you done it already? :-)
BTW, the 'select chord 1 -1' syntax seems to be already working in that manner (parts instead of voices). It's also very fast but I cannot use it in every situation (sometimes, I can't know the chords' indices and, thus, I have to select by range).

Cheers,
Pedro

Code: Select all

<pre><code>
----------begin_max5_patcher----------
3003.3oc6ck0ijhiD94p9UvhVMpZopKgO3Z01qzp8g9o8WvnQoHAmU5oIADP
VG6n4+95Cfz.FJRxqt6g9fCaiiH9b3fHrMN+i6uybc5ajBSi+gwuZb2c+w82
cmHIdB2Uc+cl6BdKLNnPTLycjhhfmIlOJyqj7VoHcXcJI62ktuLlTJJOnJ0h
x2iIhBVWNYgJeOiHIuoowucnJnI00.rJwrfxvszjmWkSBKkOhCz8I6GMrgOY
8nAzheMjccS8PiDTLc8u+YHvjm1ed+87COdhBK3VHrV1bwbJBKvdNBaX5tcj
jxdBa4VZgA6eaBJJMJSS+a5EdqAE9VRHXXID5wEM.vmexyoRN0KgvyYyYAIl
wDFgaSyiL.Fe9Vz7B.pRuu33Psutmyl2JgGZYYYf3GRnwh+C3M5Ekz3XiWCd
Wz7Sxe5omtTM+.ar.AfBUaLZr1en8En8WCDbCTDfXQauChCCfJXXHqZm0tAg
wjfbIVPSStEhtPxAxt9d3wjb.3Bn.jjVRLnaLdIkFRL9xWXcA9kewHMofTZ7
u9hT+nIg+4WD5J2LXBg4JHHj8Xvzr5ljPdk8r8eOfwZiXi05EXzzE30AIOa9
Hu.UWqG.F6EEHgFhu.AvViA.nYg.ahSY7hYCGjGrivL9shjDrVJdVZQg5FsM
o46BDLqyQnHLa7.6fNfGNtihGvynFQlQX19R5NR9I2Kfg3b.6X6JTI4NtCH4
aRSJKn+OAU.bOm5aB0yTorIrFZQV+6bZProJgYBoDfpPH1CPiIuPxK3FKOHs
2YFjkoj7cJOBGV+8TQE49XSRzDYRnljxIuPqedbSpA4LwujI66ykL4aNXyCU
SZDIOYOUvJxDYMv2WWg0HlMzVZjU3GIvWhYH2CfFSY343zvuQhTTzYMYYjDZ
RVNof4EQPYE20jcDYSv93xUsPbvS191.OWcEZSPHYvZPa6vclOmSiRS3bRK.
mmbMM49QHjLaUIRThjfLMOLSIfANCjYASR2WrNHm2dT00GVmIyW331Y07bwj
MkUYmQSR5.kkoYCmYN84si7rqSYYtar5VjSwp8IxbWw5EWtpH3k1ncYPbbU2
51U+aAITlwKBuesPbsZxTZ9aaQXdZbbK4UlyKZxIhoJGRdkFUtUPnmTZuYEm
lUqIY1zJGQelTT1NsxfmKZmROiJrj1utpq5pRxtrXlTzt.sh1UseopAvVo2w
PnztUSmtg7Bd.FbHa5CYcCIcH1U5Cnc8wF05t9DoRmZ284YRSXu75kfXCZhw
NQrb4jrz7RRjACqHpOFMIh7lhIjpWUTYMYlnVqWez9UHqM.CilfODM06bQK.
5X.bfkvbnqHTLna2HP5+JkNF359tEyNOWGyZWGHl8N5Pt87yJN2980yEnAVB
MbamSEoQeWfzelYd6phxvIY+PFCIRFW8I.x3uK.4uurXf8NmFLrWLXLDNK7v
+rYuv45AzBQ7ZpwZMISuX2o4Tg6PNUv4BiBlqrEFLWEYzvHHIpxwBlOFUtbn
02B3OwvqzfvTQWuO.cC3XYE7NJjpycsCg+DSSFxuWgHvyWOVWjtOOrFYp3Xi
1hCyO9RZRSDg+ZioLd4lTK8wxCtSjGfWPdvYh7.6klFfKDOXOQdv4BhC3IxC
fKHOfNh1hKEO.mHOfFjGTG+kMz33vz3TVfrUFlLeNOHhdXBbZWJwQfjLVOgs
w9VvG4W4.cw1hq7fHaDSWr8.8zoJf0UAz2B36vePjkumEVdEKIvGUEmTMvr5
UMHKtJiTfZIxxS4ugod3mdB4eu5PcYxGninUxA0YUPYYNc89RowO0wt6nF7g
QGSqmiSWGDWMtCMtQL1vTbXrLt+fJv4aL5WaP4G0Ojr1G+3zWelx085j7QOT
0UyhsmzcNz3ytk0bFqZda9d5kZZYFaT3Ahvr3JH7ger+zRv4L4zMsM80L1q1
EZzElZlcK2y975cClmJaY7mhAWlALiNuD.zUYBc+62jo12EqLul.7nysu+4D
GBhhDKpgBiGd.vwgGb3Gg1VFN3O8fi6ga9zCvOn.ehUIrq4kAxwUDRVF+C27
oOUyB72bFltW5MK7Fn6YAjyugXZNPRCMHa8Xt2Yt21lBiuZ70awZDB.U5w4.
FSQy4bJzLFLSDqB3lrlIPHf5JGXT4FeQj6awxeCCTsq3NpTOqo8ccP31mDyn
SiXDrYiRvj7EeWC0TmZPEtT7dvCG.VJN+I.xVdM1trJkrMt5Uk55WYAMyfF5
ZZLs7cQVLCX0vd0zvxd10xouUMyczHZ31fjDRbk3v7LE1PPwh.g6OWUllOv8
54S7CUW0TzuQdutP+m+KOO1QUFWnhTszEZReKMhHnQUNVJwOv0Nj5Wx+L5ZF
Xn+21AspYWkuDWJhSqYGF2wmuNEd8.KAUAhhrfPJu9ZZl.t0G0q3VuxGhSSy
TeLVKPmInuyLA208nOZsfH06cEV9rQZTxFXQ.jQ4trGQKyY.EQKdHrkWkyW4
X5WM057xGuDBHIaCx2klPCKqWBIr5rpQgWy0W1T+utMMlrh26aUTPYvJql+T
8vxNlUZi71TZxlz5D.0YHXG14WHwogrtHFjD9kYj1ZyBcJ14M6SpV8Wp4xTv
4gs1JMIpwtX0aU+katXkXbdcvMIJeNqIVNfEqGJvwiG3nBsJpY3oRKE1jzZI
KzJO9pBncJuyWG.sSJJcW.M47KntPGeDD6ogXmf3xm26z7fX9pAQJ9wLA+kN
s1LqtjjndMoxYomcQv9xz1OwVBeYInOuvzr2ecKIoHiYCtWkFDxrdTH4kfnf
jnWyokc3mMLU4zW41l1xJiZUzTFXWEZtFugd00uaTl01FunL+WdkYjVkYZRY
LsnTutr1L+I0trxqEmn5mmuG1kOFiin8jjlbjZNSj391tXan2rUw.WBULrd6
kbYXXkrAx9mTKlGoZl0h1USYrGx.1fFuVLbsX3ZRpVNCa3ZDiVKFrVLXMlVk
qVsJw33oUopeN5zo9gASuHdw5oumJMlLhGFZy8VhsdVP.xtiI3at9puVrsHa
Hif8y4ZZCzAXA.PqqgMveZiIDXosIONVNJe8ax6myhIpdfJPKnB.5gz9fyOz
P5EwxDP+HwAfKP5rgT8iGD.s.oyFR0O9G.7BjNaHUeP+.6EHc1Pp9fcANKP5
rgT8Q5AbWfzYCo5CzC3s.oyFR0GeGveARm8DD2K9on2YWQCKzio5yUhqlQl2
Hj0xCYY8cVPTvdAQE+d9f35PiblYr4RfoGvzdQQEjWRC2GKFxiAf1QJREFGb
qvXWjGx46MKB8BqRo3ZsxpK2Jjc6Bxpfr5itBtDc07gT8QWAWhtZ9Pp9nqfK
QWMeHUezUvknqlOjpO5J3RzUyGR0GcEbI5p4uhE0O6THqEHcNPpJo1siUEE8
W39okD0yJOB+S5q0EpScpbt0qOOXCflEV8UhfnqMAwWaBZeMIn5J.OceVm3B
2Ej+MRd2DU+xmDpbv1J3JwYV+QkbH2Zk5947vQrpKP.numsyQ9T1tNHaO7ze
.fEBJVecN3tFQlJI8wP2SljyhzX.ivH3e0vHqYqTgw19xgO6n3dO.933djuq
XI+cB.lOx+jIY6yC9ki07cX+q06DM+XskJT8s8M5VpPPHeQ.w+pA0scJz5ac
V7vs2RjjfP2s7kJnn+V8BPcudYn8dHqCazK8f6oRIf80hRtSfPH6y.g7m.g.
mA53ckniyUhN1WqFH7URfPSR21St8Yc3S1NKklz7wTisE60JxeFXvU6r0sty
AH+EhQ76kB+lyAWCmBWaMHW63H4ZAqgAxstfV2YKXWrqXK6jey4fqAWgFU3T
51gfmCJAuVcHD1W+nlb+wZwcbk6IPrSt7ydnC2dNXNzGvb3wXNWqpOmeeAyg
vVRly+LwbmVWbG.V1YQtweJ24Oaemi7K+upKtv6fSmqwmTWbWnmb+sRxZXog
oV2Icl4PW7yBW+QcwgipkJ2mfANHgh.FJ0RE2dpL2U5cJ.2qEgtVu1GftVDB
LKBIcltyu3EbZz4W5hN+JWz+W3hg+0sn6urELJ+m2++Qt2T4S
-----------end_max5_patcher-----------
</code></pre>

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

Re: Part selection

Post by danieleghisi » Wed Jan 03, 2018 3:24 pm

You are right: the direct selection is the fastest one, because it doesn't have to evaulate conditions (potentially involving a lot of variables) on all the notes of the score. There's nothing to do about that. "sel 1000 4000" is much faster than "sel note if onset >= 1000 && onset <= 4000". Of course, the second one is more powerful. One might also perform a rough selection via the direct mechanism, and then refine it via #subsel, if needed.

On the other hand, I'm not sure we're willing to make the standard selecetion more complex (i.e. slower) in order to account for parts.

pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Re: Part selection

Post by pedrnun » Wed Jan 03, 2018 5:58 pm

OK, I totally see your point...

pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Re: Part selection

Post by pedrnun » Wed Jan 03, 2018 6:37 pm

Although, if you don’t make it account for parts, I’m afraid you’ll end up with a discrepancy:
- in “select 2000 3000 nil nil 1”, the 1 refers to voice (voiceensemble);
- in “select chord 1 -1”, the 1 refers to part (and it seems fast to me);
Well, no big deal. It’s just a thought.

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

Re: Part selection

Post by danieleghisi » Thu Jan 04, 2018 2:12 pm

In bach.roll, "sel chord 1 -1" means: select last chord of first voice, and NOT of first part.

If that's not what you experience, do you have a patch showing the issue?

Thanks!
daniele

pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Re: Part selection

Post by pedrnun » Thu Jan 04, 2018 6:21 pm

Yes, indeed: the one I pasted on the third post of this topic.

pedrnun
Posts: 74
Joined: Sun Jan 17, 2016 3:23 am
Contact:

Re: Part selection

Post by pedrnun » Thu Jan 04, 2018 6:47 pm

Hello again,

I forgot to say: I'm on a MacBook Pro late 2009 running Yosemite.
I've just confirmed on a PC running Windows 10 Home 32-bit version 1709 and the behaviour is exactly the same.

Just to be clear: currently, "select note if voice == 1 && onset >= 2000 && onset <= 3000" does the same thing, i.e., voice 1 actually means part 1.
So, the only strange dude is "select 2000 3000 nil nil 1", really.

Cheers!

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

Re: Part selection

Post by danieleghisi » Sat Jan 06, 2018 4:50 pm

Wow, I hadn't noticed that!
Indeed, it is a bug in sel/select. Thanks for posting. I'll fix it for next release. As you suspected, "sel X Y A B 1" should only select the notes in the first voice (i.e. the first part of the voice ensemble).
(Just to be consistent with terminology: a voice is just a single part; the two voices regrouped form a "voice ensemble"; a "voice ensemble" may have one or more parts inside it, and each part is one of the original voices.)

thanks for notifying
d

Post Reply