access frames from other streams

Hey there! I am trying to make a graph that can potentially have a lot (hundreds) of streams, and I need a way to mix the results of the streams before fl.sink~, kinda like using an mc.mixdown~ 1 after a lot of channels. I am reluctant to make, for example, an fl.sink~ 512 into an mc.pack~ 512. Perhaps there is a better way?:thinking:

I’m interested to know why you need hundreds of streams?

However, why can’t you put all your streams into one fl.sink~. If it only has one stream it should mix down to mono.

1 Like

Ah, okay, I missed that, haha.

I was trying to make an unreasonable vocoder with 1024 bands, and was curious about different implementations. I was starting with mc, but then the single-threadedness quickly became a ceiling. Then I tried poly~ @parallel 1, but it surprisingly didn’t do much. But, as always, your stuff are gold, both dynamicdsp~ and an fl~ graph works great with multithreading!

<pre><code>
----------begin_max5_patcher----------
2953.3oc6brtaihq92cjl2ATz7qcaSswFvdkNqNO.m2f8Lpxg3j5sDHCP5bY
0IO6GegjPaMIdBlTZ2cjlPJWxm+te07We7CWMYVw23USB9sf+H3pq9K4YtRe
N0YtZ2ItZxJ12RyXU5abRN+qEy9yIW2bsZ92p0mOqfMeEupJ.Eu+hh45KIu+
aH6OYwl5Ldc82WyM.dxjfOu6ZqY0o2KxWdWIOs1bYHjDMEbc.Bq9LIQ8YX3T
vgGJeyJQt7mTu9fsNqARlSqO6+6iePcTd35diuKxlVjmx2ZCYiOWjEkDpwOp
9PDbrfrGXt1P2jyl2BHZtZLUyaAiNzEZCciNWzECzrUBELVQWfM7Ec13KTqs
hiISkB1HBlpOfn3Qlh7Zd4rrhzGrpLCOWzOB.aoLOdX2RDNsH+QdY81faWUL
mGrRLWbyuunj+EqD.XesmgC0p4vHxInAgWPZvhxhUx6cavZVIaUkMLmh5IuG
g0bcHLZrv7WydH.DXUOmF1WezgHind7klMqrdwVxeI5J+0uCF7I30ApuEF7o
PqAmPOa9bBcZzdcbHfNhDvWwVuMHSjyYkRVNDDhzGrR.R5oFtzptl.fGSZ32
tUg0XqHL3rk00R5jX8gKuAs5hkKy3ViB6HwkHxqcJzDZnlMZLWq97Tlqz1N4
07x634rYYZ3AtrNxT+o5PYQlU+2IGX0GAwMwjAAmoWZf2QtaBfVsUEC5AaFF
g0wcAMhugFiWiDyUbVtUFXDsm5p.jBMihFQAf8UQ97huZOdS74htIgZGuIXs
Wn3nQjo3iguv9wdSvQiNzUpHxKejksUlCencj9rKHhLQBkzbnlISt3oQkIdj
OcISzRW8QVYtzKvyt7e.+rcL+HAUWIVlyxlbc6uo9+BYJp0pujIpNkINsuKp
IFTS3HPTba5iDUjOEKOmmkVrIu949rrHxXyMWGT1ncmth8He9cr55RwrM07C
eqpg7ti9pHfYa3EK1c98WnMfyJxWdbp7StcUpMpaUQFrdYQt5x2nSK0xMTce
QYsE3YEX63fV+k1jKpqp+tgngatgFIuCe4bDE4+XNKsCaJ3ImTFABC0d6M1O
Te1RFoHUJ88Lt7Isk.FBaIUh7NJLwwrb1n+3fpBgZv+3Qj8yYhurgMOsfuXw
1.LVl1RfzpWS0JJ4UE4r75fa02fHUvyqqBpYKWxmaMw1yt9EIwZCHwFyrHDZ
zQirJYPI8MDBinQL7cqLADjzWgBSVRuYDJfPPOkJhMMjXTIUTUroLkuM31Ld
9x566LgeZTOQdUkddQUrgnSkuHx2zBYnPxeJqn3wBjVF6zLV9R2JXOkNkFCB
if.r7.lph2z4Di+IJIvdAkEEkqX5EQ7PVpWqUB5rS2BQ0Z9QRC.ur8FginjM
kVA2FnptevWrVl6DROq9mUcCxoHA3KHI3WraRDz2RKfzJLImzLvkzjHaVUGX
KtmYZmfUodhwiHYaOGoXOZDvaw.EgfdVG7wXfhU0kb1Jw7sA+qNiF.229czz
XO.YDoK3ZrPvv9wzGKgBcwLKf6oUg2XYJP6oQgQWdBqpKVXM1u3yGQaZjhow
unKd3dcmF.IpuoArC4Bi0pzucC8utjkWkwp4A2+i.6i3AA0WQfvPsPO8xOeO
aVMiWZEof9RD.hHCmHvYi4OTkIl2ApGd71id8OQWRSLCdJxj+O5z1wtHHe2Z
9I3dy1ATSowSPus07+ksAvoVoQg8rl4flH+nTivwKoPKJjQSH9goIQvoQzHH
Ilt6eGWBR8r665x+gUWL4R4irNXVfvZ62OR0AzRTNoREhgpbGgwHmF7.nu0Z
51XIlzaslcHmoZ.iLikcwv+0.h8w8sOyQzdRgo1XmLtnvKmSwPZu4yMi4HDQ
ea4TLLwCNEaP9woSwzhUq3JL4Ey65lrJ9+UZRcclndy7CSNmZvH229+CKVYt
gxeGVsnH+NGtkVsInozOlYuw7cRapS6m6IRGs8NEez1VCZzmHcAim35AMEbb
wRWc1.FL1xWEyque3XIPhxVjgkfOSVRb3wXIzH8z3X3H32Abj07RQw7AikDi
ISIQ..JAX9GF0WFTzQ0YHDvS.HLJ4cA6JuPnXW02KoP2WjMbbrnjjCJQw3yi
GggGkGAnGThrAhwFWoysavmfAgVCpJ5rKgHIo8jIiHuWx2PK.aedeQ8NEs1I
wh8SJZ6EuRKxJJMPRxRHgnHoILvTLRF9u4aPXRrJF3mCwWGBcmoBG0yTg2IY
RfFpM3cSpvkpIcTlKijY1ZWUzlzAcYFVOcFE6HgQM6OtDuPBQWFQU+mRZZlX
sZkpZVSqVw1lve1slfZ7fAaFvMheozudBqJm4akdcr51AS8qbZynPE+5no6e
AtJdlDGKJkDv.Pv+Vln55ZwJdG6RNbR+LX1LIYM6RRD3Mk1t+kb+0tbLgi8B
cFRLknM48heoeeqjIZ8UR.NxOTLS0Yo32KTra2JymvJAC6GBlQ3J9cCAad05
JYpb1CLGiNYYD2uQcbsrhIlvygf3tFYf9DqtqDRr2Ij+fWVXefSwg+D6+ImF
KaZW6eiwaZNdq8ms26Y5TJu4kkDoyJaPN71JvVw76rxFJrbAKk2U4NP8tUCD
y6OhlcYN3RoU7Z0F2ivT00k7lmUVxNqtXxPwQ6cSBaBg9e3nMbzmV5+Nqfe7
PwPS5KCsIgx+gg1vPeYK15rSYQCESMt+C.S3eqL7tNi8c0dp9PjJeYCSxF+t
9pyXUhTqMT9maKb+zMy8bQphyxJ+dKdQQoXoPdS07UqKzDsvC6L4iLJxl5lY
pMN3IBQB4ijVTpdhF4HvAJWVVwWWlULqE.OQWETSNrEhhpbApANWBrlfkZKp
HYP40crHNJKWCj5M4Bk.6uolf4Sray2Q+Li98931jj6ZQ5CUsnzyY0rWrCzU
Uda+KBxmrEzuZBaVUQ1lZtjIbuoLc2KCt8ANeJSr3v9AWhuBIz2Idera5AQt
QVhsYtnPcl12Qib1FTBF..zXX6KZpXSCsrAEaGApYyaWrtMuyDNadszlxc5r
a1uQ6aimsdt8ma+1TW+0fO2+8rdmsNZ0lrZgJ1U17fOYMI+DXOewCRMyyKwS
uoLLOst.jO+cHpdMntvyHElcnPyZd+dXusNybo1jTN9.G9vKMh.XayEpQc43
MwaXVD.KKBnGVDDWVBpoa05J.boVApQIZvnApQz5zKA0.pMXDgm+iaeIndU4
oDG8..UiWYaI6ifydDfNSj8AI0IJJzavK1I3g8F7nNI0p2pcdhERchEB8HJ5
FMk3OLLxMKxfAzZjiqAPx.ZNZmX5IbKj3ONMxY.5INcnS.j5OLzIm8DOp7.b
R4gNjhQ.2MQMXA33jYxcxe9.fItYCI1ePzIyjDOhhNYhBQ7G.cxdTh+bDPby
dj+hVg3l8H+EtBwI6Qw.+AP2LF.8GJlPb1Bnsb7BubKg3ALMS2VB3NVAnK1J
vDQCbfbCj3jIqDOJ74lIK+kQWhSVPTCSTPne.nSVPR7mEDmbrh7me0XmrXQ7
G.ibLkN+EUZjSRoXOBPjypEdBftqV3oBc3jZQjGwPmDS0KKOggNwB8WrQXpy
Hnm.nSNrh7W7sXmLsQ8HIM1YsBOAPmDZv9yVJ1MKadjjhLdVOA.wdSMD6lkM
+UQAmnnT+UuQD0YVnm.na589ihhbRuOxegPgbRu+4wt52VcD6r+Q3qZCengC
YOmbhyG5u.ubyXwP1nOmVAvgjnCwtGesern.Cc1l4fgzgtl+OXvZzMw4vafu
tqA3PZ1YeMecqG.CDcH14RoNXRjPjakBzeNZewjbbLP5IUeHv4tWNbTZfy0e
b3j3bynqGY1.m7uS.dDhIt23XOIdAbxYVD0iHoiUv2ePrGstqYLwXqW+Hurp
4QLfZxJ1eZ1jIjqM+sH272l4ZbRI+QwtGI1bJVY58hZdZ8lRyfF9sc6vK8HZ
VluQrSoUgrJPqm9N0fIVstY3g0So2G+f7F9+.K0AORB
-----------end_max5_patcher-----------
</code></pre>

Ah - great!

Yes - this makes sense, although maybe I’d use dynamicdsp~ for this and work that way. It does look like you could use just one fl.biquadcoeff~ here, rather than 4 though!

1 Like

Ohohoho, true that, thanks!!

It did look like that the implementation with dynamicdsp~ was more efficient, haven’t measured it, but something like 5-10%?