granular overlap add

hello, first question here.
since grain playback of flucoma concat example patches is monophonic I was thinking about a way to get grain overlap when moving mouse in the plot. can someone here explain how it works in framelib.
does fl automatically overlap frames when you send ramps longer than the impulse interval to fl.read~ or do I need to specify it somehow?
thanks. johannes

Hi @johannes. I’m not sure exactly what you mean by monophonic here (as I don’t know which FluCoMa examples you are referring to) but perhaps the following will help:

[fl.sink~] is an overlap-add buffer, so grains arriving at [fl.sink~] can be longer than the interval between consecutive grains and you will still hear each of them in their entirety. When you are in framelib-land the notion of “overlap” doesn’t necessary have a clear meaning. Each frame happens at a given time (which is sub-sample accurate) and can have any length (in samples) at each point in the network. A frame may not represent time-domain audio, so it’s unclear whether frames “overlap”. However, at the inputs and outputs to a network the question does make sense and as mentioned before [fl.sink~] will overlap-add anything arriving at its input. Thus, there are no “voices” in a strict sense in a simple framelib granular network, but you can have many simultaneous grains.

Hopefully the framelib tutorials/examples would make things clear also, but do ask further if you need more explanation/help.

Thanks Alex,

I was refering to @james.bradbury s great video tutorial series. Here every new triggered grain will stop the playback of the preceding grain so we can only play one grain at a time.

Nice, What you wrote about the fl.sink~ sounds what i need plus fl.audiotrigger~ (i guess) ö to trigger my network once for each new selected grain and extract the current grain sampleoffset/start and grainlength to adjust fl.+~ and fl.ramp~ accordingly.

Btw. How would we change the pitch or transposition of the grain in fl-land? Didnt found an example that shows it…

If you multiply the ramp by some constant you can play back at a different pitch.

Here’s an example.


----------begin_max5_patcher----------
728.3ocuWssbaCBD8Y4uBFdLipBft2ekNYxfkQNjJAZ.TpayD+sWDRJwNNNR
MV09AogEDmyY2kcwOuxCtVtiogfuC9Avy64UddNScF7FF6Aqo6JpnZ2xfEx5
Zlv.86myv1Yb10LCvnnBciTyMbo.nn1WiqqgZJdfK1duhUX5wKLNM.4CRvcO
wjvtWDT.Bb2v2HZq4hJlwAL9MixVynUzfU9FGIjqe7a3PXmsWVsp6g+LkUYk
ztyeBaIoYN15nYLxQVx+FYIe.YwuAohVyLL08LAccE6P0UJU0TGORFrzuqle
2v5YGD5CfqohsPvceA0KX+xxlShokUAkJa7lta+zdFLJNHM+veo9fTxWwQgO
0QkCOqx+RJl8mMzhOSUowcLOj3hzQwiO+XYPlaxYFb4hN2rGfBHSJARp6XVz
Dorj4FIROajPy2JnUKcFnlK94zAJRXT.9vjurbqlSVHMmbk07MSKXbTVP7QG
2hroqKUPNdgOtcFottsrjo1CruMcpDTvppjeqjDP4keVImjrCRswKV43nyJa
a+AaE3+SEYUL5lCbB21J3FMPSqaprMmmLSHGGDdTcWagW7vwhKOUH75jJXcC
bgs82Szp81qAfPf5okde2XLNbg5xPtZZ01ruY+XjtVCtshI1Zdv1EEglNh+Q
sZwogKTDGOSufCFXEW79aP5Hdm8icMZYqpXbqFZpCdiraXZCWzcoQwAqwVIB
fecM07MMRadx.fjrzfX67goAIuu3ed7Yl5LQx4RZxLH8wB6cjNKpiX4QA4nC
+k3OJmSm50sRp1vTt6VbQZn6ZmyUDWDPoy.mrihvKjBmKvnSAFeQ.mLCfSW.
Oa3LvIYAvIdF3Dt.3fmYs.zU33Kd5Di9ZezllmXJ8vW6vz1.3Qoa4Y9tgbQ+
vP2PE6I935ckdgTksHuwVguU43IbWR+0Pf0RKvhV9.1V0Zgz0bQX+qh5FZuv
b8fV8xp+BTqbkdK
-----------end_max5_patcher-----------
1 Like

great! thanks for pointing out @a.harker.

in the meantime I took a closer look at @james.bradbury s corpus patch and expand on it a bit.


----------begin_max5_patcher----------
7883.3oc6ck0aiijj94p9Uv0neX5ocoNuOlmpAX2AXA1cdYA18gdFTf1hxE6
hlTiDUcMX7u8MujDo3URRQZYWxEJaSJJqH+xHiLhHii+4aeyM2k80ns2D7mB
9sf27l+4aeyaL2Rei23t9M27X3WuOIbq4wt49rGeLJM+lasuVdzWyM2+22sM
OXU1lf+wt36+Tf5wVGtId613rz+zeKc6Whyu+iA2Ek+knnzfzrzfrOGsIIbc
P3xkAgoKKc85jvucW38eZ+mRRbZz8Y6RMeTX2MWuIZqhRByUeDenzSP2+Dgp
Oz3zG9vln6ysCRLCr.ba.kxz+.Jk5eP3K.A+c2aJc2iwoIQ4lgKzcy3klAY1
c+96vhaN9jY6x2+n.8M+Wu8s5uc6HAy7MwO7PzlfGyVFEbSaiFyv.S4lQCBq
+ABzmQC87MZ1oFK6ZgZQBK1amB3FZFgJPrw4QO5XFuQwhbysJZLIT+ia2+69
OvvGojMgOFkGs4CQog2kDYFd0Nn2yYYuU92VG4HlX8bTvMl+G72G.zjF8EEQ
UYd9WBfdfWBwBNAiYTBiQkDljovM4B5InWIDAUCh.pepF11n9bNZ2FknFaYa
dJ.0xnVRziLFwL1g.TEtjRiSbMiSTOGmaieHML4rNT2ktVI9J.F.Za9UZVuh
QlEwLd6iz8j+GiWtLJsAtdjr9wNpCN6AOU+Xz1sgODUiDrvzsqC9oi72MJsF
0IBQ.FwzTY6HTM77HQO4EFFJzkju8xo4ROj7oE9ePlWRV1Z+E5gXWRB8Zh2v
rq1H4LbHJAHram2eNC9rvYzf7gjrvkZ3wSID.ivP61AiTBAFNKi6l0rwHWXi
d11iA9vUrAQNeJ1rJIS8GwCx0t9lVcdRoX7iglGl4I8OfUxMJjWuD9tvzGNq
rvqOnktVc92YTTaLKn4EzMDBj9wpWbBuis8WkkluM96FLAp0pnKsAJRqQab.
jCgT+4hShTVrnsuovmxatIb85B29MEdKZX82yL+gD2d3Vwo1agObqMQeNd+6
+3cC2nPrbEbsaigRu4qr8b35+LJQpaR2EaHE6MUSvNRxLUlpXh1pTJw9l0y3
6e4iyAbJwh9V8Ns6SQkziyBJdkGRxt+SQKKvFp.w0QowoEm2K8xKiVEtKI+C
0OET90W4HwZeQ8fvP++4Mwp4n8OxCahWlkpIhRSE5au+i62Bfl8HfkFLlmHM
bcMuYEKkBWZ3E2pFj61dW3F8LkaMIZ+KlmkkT9kN79RhVk6d40woomfh4Yqa
9EUJE7wVdu2kodwGa6us4U19AklolW8CJlh7OrM7ykQ67vjD2B9x+4+ZXZrR
DVTdrcJ.AN7hV4Reb68axRRJMdsuxmq4UVpXxuO5KwKy+n4CpHyf5wiWumI5
lCyxKieHZad46kG9v1x2Ya92rfdgas6N2h3OnTyRI0J+jGPs7Hda91Ol8kst
GbOiVQ.3neRJtntnzyR2uMonkkj98jE2+Qk34nhuZMhHsbvTyVMrJ6wznVOm
JnTbS42P0cPZdWD2NHuY+tHNAMmeLQIKQsnaYfZk1lbuvEBxHthK6FXf0CLP
dyHCrUjYtPk7fjfDuPCrQ9Z.VbpaB7GM.uD3S92dmR1QGHB13QALwXpPUGm3
8BG4.YOTpOFlOaHxumEm5GKhvpzpbvRRt3Wu3MVf3V+AKFNXPtzAinutdSve
3mVAC90feZE5mC9iZM8.cgOBK.gs.DhNX.BxtzQn0QQe5ofsIJMSVq3bTjlW
XCzw7.fciM3FvF7KBYKCjE5bwAcwy.EmtJSw.oL2cYGXBRBKw5fGrVKzlAEY
2bNZWLpz8U+yC2vmeorSimgklIgeyOj0oMnvn+CmLXbEMP0eb9OnrKWNS.j8
CySyDbtNb+26uBfMC.fBuxdO8UzhJyeozkQesf+HlZNjimkVWhqwnQpHHjNP
AQy4Jl7fX0+tyKlEg6XVFtoSsn8CtKD41C+37uh4bta+4Zy9Kn85MzpmiaeE
m.ZPd5HrVXrhaN5wOs6navONlgt90qG2T68r498zzdCjCJiCKi1lGmdvAn+1
AyjN44dLdoikypLf0.UqKvKbgmS0ChvgdP3xtHbhY6UGgW3hohvwdh3ZSMZm
xg1vLvE.PEuZpnchmftdyk1ocrcAITTjz0WMkjtOvN1OFcHfcjQ2bwTR3HOH
7NgbB8.HaON1oFxo9xoi8kS2cTpEtZpnclmzd0UD0S5HZwEolqlJRm6Ioi7i
SmPgG4zMWLQDNxW1EOoa64YW3hoht8EvEdR3hBz8zs7z28gXdJPztKDZx2Dx
WA40nZS8pr.JveatXhHbZe13uUYJNg2HDtfnbyUkdWYaVZOyevy53omCGHtq
gCbRFN8QhuGrUNA9nIWduuRefdpBOonlMjITyFguDtCwmDhP1C6efdXFAG6L
if5tnV51cy8g2xM5PXX4GrgqwGByy2De2tbqMdEiWmdEVAOjjcWXxIwBPcQc
vaORb8LppVtIasNFhZIpxf1Sz15vbHCZCJmdDRTza5ebhcdC2u+8MgODDFrJ
KQI+I39rz7v3T0nL3ygIwKC9y+m+k+RP1lf+u+7+afFL1Fnv6n1y5iFi9Nj0
dHh4BqtVt2yc6tqbj3zIxcFCdvxgO2mCOxOsJYW7xEJP49v7vcKiyLPPELr9
GK38EVrUxw3svJAQNuV0+vqS1yvFcY78ZJKby2NqQcnELNBCGNe2VF0V1CIo
+gT3yYHBuN3erKRgdsECzKjluXtuDZk0MyvjAD+j3gIs3GuvjzYNpcudWhpP
DfqQI40nj7ZTRNtnjzqC3zFe8XD+GqC3beHQ9QEOdhlOuqyswpPDhS89.qZ.
njzK8.uX0lrG29sGuKKwKdGGlvGAjbwGtWaTezQAeJMJbiVffWvh0KBhgGgN
B4ESPiVN6yJiM6QkRpX0N1.swIoPLbrAeoyxb2tUqh17jEUBd+1vGWuM.0kX
FqtlN7ANhfHP.GHyygnRZVie.qoH5nmBo.tx1i0C9Jax1.GQbqK.CjwxNeOy
.1mVluIJ5ofjrrOsaseXjM9TfvgGkbb9EifIeh4B63l.FaLW.e9h4hoMF2r5
1Ldc.QnyjRfn4JrSD951UYmdamZCANBykc86uXNO5.IoeGc4zPD9ddLHzDRE
9OyR8bl05yXHle3p47PtD9dLob9Thp9FlV6I2o4jl79ftkSHUff9REfFohWI
m+Ridc8ucyxcOtNHUmw9Jk6hVFrLLOLHOKXcRVddzl+1M8zmrHmpwRV+cJKn
+tf9pCYu5P1qNj8pCYm5zV25fIsvxN8P.x5Z.ix5rgmhkLvKBuK4CjXKDTiM
AbovKdGyZr4WuC51n7mJrqpW.DDZUfkfFrg+D4KJC+cia7HM7GJdsZ3uSVhb
zY2lbBO8mIwveluFx.mRSHn9ZBAYJoByebexlBFXBoBnuggGE9Cr4TqhyCrN
8s+VNYqhIbbuMbBxuZ3zUCmtZ3zUCmtjijEWHqZK6di4TLt.ijEez10EgJi8
XtdAdJWsY+ndCSuMTxBgVipECunvAouLrjrWmdra4EjL1SOtsRWz.MhbZRIc
V+xewm4bWkMkTguDA8GXUy2KkwkDA2q98zGZWKcadDHHEh4m9oXN4ph4cqXN
Dab7E2VGjupY9UMyupY94Ry71T8Z8l3zNUZ0ICzo0NZ35bAdg489MQK2Yxpq
tPHHqPUbGhGthWrWDG3iRgcSeMPWk+CBSCS9lhK1azxZ3CykkmCO9hegnA+t
GCW+Tv6UD3Rk.rT89qcGjw3hsE.nX3wXL9hggxKGDXG2HJ5GTGD3l2YOSNHv
EO4WfICzfOW08tbgYp0Hi3fUg.7KOgyGjI6OhsmEjVHRzGV4CW7xP.sCY9dz
S9IbxxJIG9l7xWHdWQ56w8ImRGaHuD7wCseUDtm0hvz9osoqVJ5WIUBeA3sq
ebc10d0x612V1BkGC0eWag6oqsJodwORt2xVAKs4Ro.KrMEQ9Umac04VWct0
3btU4BwTYgfv.calJMJI3qARntDLsKpqhdsqOaRsAhCzkm3fybIBGLu427pj
vNS.Saod0MtYzgalD9EXRMqAJEFkGk9Tv6sJaD73p6uWKP5jJOkGXIuHKDxm
LnuIrDdwXwYqqyv6WnsUsRiG7+n2qRgX224hM6VgDWSvbDK1jWLq0Nv1zwXm
HMrGj8gj1H5EAfWlq3LnT40apKLq37EDsqzbXHhJdEzi.8eg1eMXktS41Iil
sSFP.7wtHiOOKxT1ck24gHXm4wt1BIY+2GW2DpkVO7.8j57K6oq84225SrMO
R5revBOyBczPzQYNlxHYv6WEEps9aqSFjZznWlssyFriS7iEKwX4r26kdlNk
F65MH50XGWZzmVt0fXFhMxSKGyt76Nq24mlvjCaLOTgM3adAHF1T6di13GlH
rdcyiJxFsALoEgFDOZAUSVWsqsUPgKsksifeB5ukTt0RR3fWKg3uvh7jS7da
G3i6r5bkO6AsAD8kPyOVIvQ8u6ShB2zonG6dT1LoBxGi+LvCbclQ1ysG+ogt
mcMe7ogQ6pHRHWdmMhFEHR7hnutpYjR7ZsEh3cySrIFnAu1ZOiy7Id1z84MV
UpDP2UjUX02U230o90F5ajo4xn1h1FvnHJqw1ciKtESNbYD0VTHBe4qAXRv2
SbB17X0DjYaVArQ3RzwTeC1SqyE978jEay2DE9XmA7mSZCv59c9vYZfuH1I+
f83Hc8DUMtIhiFk6cGJ0wTYsCEAwi.0FZnIaZlzydUyPqbi5KD.a+RxNG0PC
zyaTCNMUOReCWE3EPzCMkQvD16vnpyhsHx1umXVmuJnGtXpHcei7IbmsoPKw
RsMK8BWLUTtu8oPD2OJmAKP4lKdtaTgcyt3HVaqgrvEOysFxIMJ4LrrXeYYQ
s1TPERaei0l3yVCZKdgiaFZiK0ojc1NrPmEtBWQZs4g0rIdwNp7pUECASNSy
ycoA1XBueTAZRivSDsew3YWBfPVspKbwjR4dwOg5rMu5pgpNKBnEI94qvF2m
QDwyQjzdbzDgYDI4yaU3tN5bfc9X2P.KwGYuvSXKD9vxtyPSalRmYR26t78j
JZAJ81p.5jSGvK.5v6JXAZZoCuStfIsj+A8M6BvXOs2.WXqGyE+PlRBqSB+1
cg2+ofrjv15hkbanndP+uVyKATM4k.r87Rn93kupeM1F+PZXxOl0iCWFsiI1
psjYpPxwWSYgqorv0TVX5pGGPAsyXlFtfinLAiKDTpP65WDVsZUcEj.DRpff
oPkfS1Bj.CEBNCfD.FP1Gmiqon6yRrRj9MyrRgucZiUoXjzxNKEmtG1DtL14
B4hus6dn.UAczh6am5za2yh77gUxwSLugOrmpNREM7fluC68e+ARV8Yje7cE
tKOqHZdbAVkmL8Am.LdyOz5MYqy1bPv9B57bfQQec8l.kdU+g+vOsBF7qA+z
JzOG7G0wMO3m6ZECAtfxfRFWBjXrYg.VeHsLBBg.pc0jLgdECjzyCq8iwKWV
d+f23ecz6x3DbiSWk8To1odiwQNStPgSBFlHIBNFP35S4FufH4BJhgTXJhw4
Z230ybiuSbTzxgZJ8JZiMmS2sEtgO+xjDdbsdpnK9Rb5xru7TvuZ+kf7Mgqi
9dV7xfe8PzouUsrCFTt7JT2DlMPT0gMmh6mBEPFPn1rFp8fzq3xty5fUIuSY
rzCODsIPqNrW3jtE4xQp8eABNBfkbo16zP9BDVHUWxPJyjI751Dsz9jTfRRC
fq1DFhU6Seqm2B11LA9L2GLKuU6Il0TF0az7llLw4j2dcl5zf4NMaxS2l8zj
oOkL+wCSfNwLHlz0IqL6xRsQvLQeJEEQv5MExCyg7wjnNMKxSSiZw7H+LQpC
yj5zToNMWpCSl51roNMcxCym7wDp9XFUKlR0o4TsaRU6lU0toUsZdUSlXUuY
VMXpkWla4oIW0a10oBZNcmiJudW6fTYu30QatSut9oSen51DA4bXBXAmnTxj
RXLpToyDSWUSqay1VUI5TQ8DvMUem0KtuyceKsCb4cgmdLU235UukmBLZyr0
CjE65IxRTUjE5x7uw.sk5YvWtPaUuFbph7q2kWN5T6BQqiWkR8CPQMCnhWCr
p+RPePRPMHY8gLduPRzXW0W13km0E9aiRTv1SkBD1FSRUq.SNzFH0xFYIqp4
M71Z+MXWyB3lmEf7WDLzmF2nMF6nX9BBfCABhfxjB9s6CmT.fgkT.lHvMEHo
sFLoU.N5HAt8IERkY8ZitzxQXJ9hPlrxZ8OGlTmX4BlD7A8YSZRdv5jG32TX
sByYjQKLGhdMHMOOHNH1i0FPNYgr.vxH3CQYmmhyaQSCV6PIxGo42dQITu+Z
yoQ3SYcqUyNpb7JM+pPwtrT+zp6Tj0v6VqXABb7hEDuRrGYuH5mB90cow4aC
1FpLTMZavut8KwJLVadc.bXL1HkMgUUKDMdqA4zWCn+8Iw9YacKJY6Kqba1+
MVV4CgIxEACc3tkwYNue2CvsN4D0W4x5E3VJa8d4q6L8P4FZBTWlOV6LpjGV
9qsL7BBjqUIroByOC6iMD7FMC3ckR4S6b0XcHeA4bfvAwZQ.9BwssYUGh..m
a90xmXQkbIrJrVW7gVC3VsoLWIbUaKXrg09vk7fghWGQgBLDnDCKDl35.vQX
FjhDBNlPL2BwIHLfhfPNBIq24FUyHfdwoMKPB44AQfyJhvo8.QztZpb.gedg
j4kWnGCb9IwU97L0H5AExdFHPVeXcDOSDHzWAf0KZnlbKtxl+RamGy5BFIY1
4j479Hn+4Xh.0G4tOKDHruhAQyLEJFvl4yJAB6CWHWNsatNuibYeYdd0LxEi
VepJoSNtp.VHUr.I3LHgvHbpTf32V4I409byMff5OfLuDXuz2C8bHJtO7Tml
nc0Zu0aqKT65J80NMNCGT3H0d5rUWJsUd.LsQh5FkYtQlPPMvzR15p+sqVRs
PHHRg..jRjjQ459Ey9p6PmQraCwIJqkP1E2YIg5rWVn7o.GoQBNfq.AfR1KS
BwTSaQTRobJD.TxlHBlbT06HF4rD9rcVqiPyT0g+gMg5wb5C4eLHN8vAYDlt
L3wtpjVHpRsaBShvbLhqvXlPWQs3Kz4HAffDDFiK0.NTBLyLLtfyw58N8uVx
eRREA8NohX34ozy2F7ZpMhA+ZTpqB1dDhGB1pKIoLrDp1GUwGCEP5yEzhlGn
ssrdiCH.PmUoz5x7Mnjt.VgEUm+IRtNOU.Z84bm61jm5aLv0Te6xJ02FTBs4
edzMSKOXRp.HVLHwL0s9fQWfwp0E5bbACvXBcVVdPEWWdbc4w4e4gPG.QCR+
l5RaZJneYF2vWNbMQoutbXRxgz8QkmW48HEPV.v..GxXXAkQgpUF7gWflIR+
XqaNc2dNSczvOcRjhVa.JvTy6RlZeSEjA3.FWZyQvSUn2GXrot+B8ELL5SOG
nVPrVKNUnHTIzVI8VRHJMVjnghofyOlNu8s.+WbWK7h0M4ySq5AiYst3ELSp
BKyCe3o.qGSFDbVWQjP.W.gJgpDHmQ0EFAz.8Zmuki6KUv8W7a+GlZIuDATK
4wPkZYRNk9JusY0iEw59Vyobc0ug8v6sVu.ZMRK1Fm9I+Xm3HwBFPvAHLDKA
..VpavrCuyQMzxcQknBdxAo+XmrSZw+HBfRIHHlhvBcBeR.KXbgtIB.IHtzj
vxtHADIfbIjYik8g.duDVKtIJboqB3bRN.3m7KpttgTP9kNaCYCuqufjuDvL
E.8T+PqZY9TLbKDPEymPseofH3LsOcGQwoAAuzQuumrP2bQevupRC0VJzAuB
ZrwsY1UTzmdpG88ESs5gKEZ9HSksCpigAatf.AvAePoP7kS2KyqFwpaOO0t+
JHQRoXnj.HL.5UWaYsEtmeoy9za87KP3BkAlDkR5Ht5VJaOGWuuanZJLmUXL
ciuKV8u67hwxF5AX0tYbgDfYRgDAUF6fGZy6hLxVoXgLfct6ih8UFU8NIZ7x
ntfDQ4UfbXKjT7Q1apFSCb8xruT4aoNuZe3YBRPhpAIHoJyKA.VfUayvfH00
DADIlylPAR1u9Axyam7ZJIBg2kq+JwmeCkZySl9Ib4BXkR8IFW0aWDN2TcIK
UaUq9fSUg522dZlXf.AlBqN7303DUpZqRkgM.Af.PX0hM84K5+ShT6KHApkU
D0JVpDQvBacFjBTKhUlLIDXIU6L7Zdxop2kA5CWFvCvcp6RMDO64V0r9wukE
pssQmpHjNyoEbjR2RAUMYCQ1kE0r.plmbpVWP7ruhLocYEhm8JLX2MbPAcAS
ZBCTDSoCElZpxv7EBo.olQT2PsSko.mqdRTEM8q9jSkjYeWxPlZf2KohSY2L
y6120T1Ly7VKKhbVTy5fDP7yqHaCtflSRiQ6CoAadlvTC.X.tDJkXnE1APAP
YSEVRXTLVeKoY4NkHkTtx5+NU3knjafOMx60wAh5yPIxlwfJgIXL1FboJMBH
p8.DJtANWe.C07jO2bzUS3tokiF8Lu.V7bXmD0zHbw.zBk1cHJGy3p4eEmf1
jWP0ytqlmbN65cLeaiec1MZUfV0LUwjzF5ZfDQM9DL.jn8leslRV8Imn0KLe
2LjMkVr4sfY5.MToVtMDQA8LhBrYT8WlBMORRWPpDIjUex4juz2FZnNBhOan
CTvVPwPDWwGKXDAPexcJ4C03o3pO4r18M8EdXfgAO0qzrByX.DPsLUs6lRqa
FRedcpsIUBHUhMkpsK4LJq1mbV8KjuNA.6VaMMTgu8LPDaRaZt8Q6foBKHx9
LiLYxbOSp92Z7b6kfFNaAhQUpXJUJWvvFMFwvEZMEg.0RJhRWCl+OGQBVTVA
T7sNMQp4klSs07VREtphH9JShJn.pT6bEkB9Z8+QHdcXdkm7RbCMLscdOtoY
wb76v4sKIi80nML3RP4oZrAXhY3I92qzmR.x2c.QSYWyk2mM.g89zmTF1qT8
PBoTkc+DFTInzYbAAxUKwwZ+ChzlgTySNUa566Xty17tS7ssw2d32mJsD710
bXe7LaUwzXludls5S1PmQd+QvdXrVVN4gB9e0e6XQa44rwJOP5dV5Ky5fZHV
GfEM1Rls8uZHx0FrZuiLCq1Qlw02PlQM04k2GuG+X16ks8KHkjKSr+QrWI.W
68xW68xW68xiq2K6UTURMR6P1jPYDwQI9LEGkn4K1.uqyHCbeigm4cfr0Tdm
fFXUIZ+lCk94YMv1ZKayeLbymzsf0BQBnWsOWnaOTa51AI7AGR27KiXbuMP5
tcqVEswKbgVDV3COuIXW74MgET5SLjRr3g.YWqQGdhZRGXZ.bnUHOqwZ6pjc
wKWnvqrzsJpTiWOE79GiTJpeefL384eToiyGyRVpS.+f2aMvwkBOuWI1T87a
6Un5dDkI9jqEMgxjKljsvmPyEdHq3FUn4NToQU5VAyaBE3kl.NHZzZBflvLp
XRBOYhuGaJeJcrkumoBYJCmJyHzm3XiCmZpvmitmImZpvKm70oiinKLUzQq9
iGuXpHbeYk5ziWPByjhPPiu5XGuXpBfA44hxczJ.TfvAfFH7K.WlcN740uuc
Wba90hsPZ9h49RGKDxC8a38+3fWnzta5.gZ0RYchxl+nM2TmmvPU8DFAejb1
n9KodqevZedgMC70MYEza37hKPgsu2ybI.lAQ3v1QhunXQVks4wmtwSuBx38
GKfMhECBGZvmnKCu+IkzVTKPjTW6mTJMhbMGxVcIZMLBTZ89DELfQQR7miV7
PXb5An+ygGWPU8Uqa3XNzAlsk655k4Pbgwi1QU5DWNMJ4PqJE36Xkz1DMrVb
f1zDsqvJbaweS++ClpjDu8XSi0I35fDqVjc84vjcQYqp5v3iDcRV5CMiqkdT
c88P+XriUjkRuZrQ.46JVpwJ75Jqa1j64mzdrot+NlLzeuu3HusnT9AIOUAb
4JQ6ccRAH599jl86dePAjyoHgB1rddDKbvBdikl+036yRd2+UV15+i28eqk9
05FMfBmfhS7Z+NBEROOCk5Lc2AClOzxlKXQkSUNwgM0mKdGzFsIERJoQR0PQ
qZxVYDoRoV1Fg7vUG9aTNdGpLo5K4WNhBZh7KoCa0C9zPdLjbgfCYBDGiQ5Z
NrtnqBLifZdsFXF8ltw9P2EhEig+Ig73ShRZCg1iB1iyt3Uij1fPem8PMRaB
tg4RJrKG41MwOnE+foMDxWZC1DsYsufAMKFfD5gqFKo4CyyIz+YZ8V4PzroO
Z9Yfu0KASmPNUELUNhUGGwz0vl0Sgj.jIkCNl4A6uZrq38YU0IinBT63.JgG
e1PXaqZbHA00Pfo3CWMRbwKVWw4f0kOdPfSsCagw398ffXdjcbhb4ph0HmZp
M0cJhNow5qpJ5YbqAOYOpF1Hi1FkKM6zK.x8cgZf6pysXR+oUXGzpsda.sgN
h4pyNt5yxhyvpBhOqJvmiOHu1d7b7Ig8XKJFuMNRtYVFRsFSHEGt5LPYctJ+
b.AHevfSlQNECpSdhyhSFyFmZEuBwI1y2q5ay7RicD4iIEjyB14wGj7L74.8
YkG5bXrAzG4dvyg5gPu3vIU9jrFLeRPEp+PNIXBOIPBqFDgMG.gmF7fFOu2T
PC91+0a++AraridF
-----------end_max5_patcher-----------

now it does the ola part and I also add a loop mode, just to see how it could be done in FLib… not that efficient.

I noticed (at least :slight_smile: ) 3 things that I had problems to get my head around:

some grains won’t be played in ola mode, while they will be played in @james.bradbury´s non-ola playback version. from what I saw it seems that longer grains (> ca. 6500 ms length) will be ignored. there might be a limitation of how long grains fl.sink~can handle or something similar?

in my loop mode I use fl.interval~ as a trigger source. now when I move the cursor in the corpus plotter and jump from a longer to a shorter grain it takes a while until it triggers the new(shorter) grain. I guess that when fl.interval~ receives a new interval message it will complete the current frame before switching the interval… is there a workaround for this? I would like to play the new grain in loop mode immediately… while the last grain continue to play til its end point. so I tried to combine the audiotrigger~ (for instant triggering) and fl.interval~ by patching them to same input but this is not possible and wouldn’t probably make any sense…

also I wonder how you would treat the grain windowing when grain size changes all over the place (from 50 ms to 9000 ms let say)… I went with trapezoid for now because I need a steep attack to not lose the transients.…

FrameLib makes more sense now…
hope to digg deeper the next days. appreciate your work and help Alex.

Check the /buffer_size parameter :slight_smile:

What you have done will be adaptive to the grain size already. I’m not sure what you mean :slight_smile: You can always get rid of the window too though it’s likely with the flucoma slicers you’ll get some suboptimal results on that front.

Yes, but you can change the limit with the /buffer_size parameter - the default is 250,000 samples (around 5.6 secs at 44.1k). Grains that are too long are ignored.

Yes the interval has to complete in order to update to a new interval - I think that is different if the fl.interval~ is in switchable mode and you switch it off and on again.

A trapezoid makes sense for sharp transients - you may also wish to alter the shape to make the up and down the same temporal length as the grain size changes.

thanks guys, this solved the issues. that I had…
loop mode works pretty solid now…
@a.harker for the fl.interval~ updating, did you had something like this in mind?

----------begin_max5_patcher----------
1154.3ocyZ01aapCE9yI+JPn6GyX9Uvb+qLMU4j3lRGuDANcY2o0e6y1.qKA
GhcCMbUkRDli7wOmmyqN8mKWDtt5nnIL3eC9RvhE+b4hElkzKrn64EgE7iax
4MFwBKOTrVTGtp8U64xMOkUt6gZwFY61PHfHvJ0WwQIDLNlRhiooj3z3UATy
qPnHPvW61A09kUlKjlcG1sX1VitpV+7mPz2zUMuPHE0OHJ4qyEZQ.usKUGj8
aCpa01kj+Xun8nEFtJHbMubWXvW0R7qkK0erxUnK9t5D0ebjhiFDG1vK12Hq
JZdcDqBlgLVEHanUIIwaqBLMzOj2jsqjmqw+i4Ub4jZ.dLORAe9QGvONELD+
wHuw+EfO7hD+Ti2rBwVQtj6BlawWRp+rLdNgoLHKHaD3gXQDPBDvHLZbJKQE
dyLPLMh5aPNvS24rRo1WV+0TB4cboXDDqBTOCwP.Zn+L9J9yHKLcxcgokU61
kK7hSQXCXH8e5tyKw+D2vw362EhKDMM7chALcUYv+.8xP.ioVn5T+oZvbm65
Z4pQor1HXK4p6Bw8I3lMm3spTXJ36UPM1zlBk5M2l3YZr1i1GPOIadRsiiEn
CUkirl8l3OAiQ1gMdr1vt0L3iDXC8issFW6eJbLXdKVuV8WleLNyz3I4czTN
ySF+DG8OHZGLF3gweT7N59zj1k.ND.7iz6JneklzrU3JdVAJFLJRQJFFziNx
6nCL5cAch+aKeyeJ99ButT0Zj4M7CxpmD46ePIvX3TUVhpQno5D4Oe5LPu.K
12PVd0F0bhZfOoMcrWTuVs0eyg9NrFXlP8e5I3r5uBhfDHNgMZVoznzSiNIs
0eY92WIclaqrlWtsp3U+RBioDK2GPr+Ig++dO01vNiMI8WOut4pJ4h5W34WY
bJGq+FS7Ow8by8OVWUnY+.ybtM94DfXVtlTH0+6JhLyVgd+fWC97gxLYSf9Z
QyEMAet46YJKgdv+Q6L2VDhsIP6Kz6iwI41RNZzSXdV44WUtAF50O0j0Tcnd
S+V0QNAucZ2JZjYkbYVU4eIi9LpExJq3ph52jQ0D5DYpp2JpubA+IUy5Kz7u
DpHa69JkiSmUEp5o4rxgXRZDKAFyPIXLJMASX5KcAp6Svx6FBJvMAJ80rG.u
l4bJHtTWrdoSfhNiBrqooPQLWPTxI12y7Gvf1hgz31wTYQDJlRIHBhQRwzQe
EzLBP5fFrfl7F2lqtCHSea.2rIDibIZlMEZB3flHSfhPt3Vz4Ub6J5pgtimO
Jcvvy5JyCxGYIukE4lB7ftV7DZJnH78xW.3.EASlJMc0jQSQHqKQrvoHMdhi
wQ2rhhcIa2T32Ao2MM4R+Xnovc.htSwRPnCJhYuwOvGulIikmsuNOvx7vVxs
ZQtotYVH3lwTxfiMDDgbAdCk6V8Mb.LzwZDyxoT+OxBdPgvgELsHmkQq362+
hnto6HY.hZtymqLTIak4wrx1GM+FCg0hWx5kucEdsZhRoZbxC0sWn5w31YhC
KpTNEkGx57KTlPkJMyzpu70l87VqkYz2k+Z4uA.abjE.
-----------end_max5_patcher-----------

yes, as you suggest I need constant up and down times.
will fl.window~ Tukey do that or will it automatically scale the up n downs times when changing grain size?

All window times are relative to the window, so if you need them to be constant you’ll have to do a little bit of maths - probably using the output of fl.length~ to set the up or down time before you apply the window. Or you can use fl.ramp~ and create your own window function from the output which you can apply with fl.*~.

In terms of the patch - this correctly restarts the interval when the time changes so it looks good to me.

1 Like