Right on, that looks good.

It still _does_ (and your image verifies this) correspond to:



*Each input i of B is connected to the output i mod m of A, where m is the
number of outputs of A:    A[i mod m] → [i]B*

*This gives the following output distributions chart, which intuitively
tracks if we have 2 outputs going to 8 inputs, as an example:*

i i mod m   A[...] → B[i]
*0* *0* *  A0 → B0*
*1* *1* *  A1 → B1*
*2  * *0* *  A0 → B2*
*3* *1* *  A1 → B3*
*4* *0* *  A0 → B4*
*5* *1* *  A1 → B5*
*6* *0* *  A0 → B6*
*7* *1*
*  A1 → B7*
So, in case we'd want a verbal and visual cue, belt 'n suspenders style,
the above verbal definition is less misleading w/re: the use of a
"mod"-operator-based mapping.

Aaron Krister Johnson
Music, etc.:
https://soundcloud.com/aaron-krister-johnson
https://soundcloud.com/filtercreed
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
https://aaronkristerjohnson.bandcamp.com/
http://www.untwelve.org
Code:
https://github.com/akjmicro <http://www.untwelve.org>


On Sat, Dec 13, 2025 at 9:22 PM Julius Smith <[email protected]> wrote:

> Hi Aaron,
>
> I think a figure is the best way to describe this one:
>
> [image: image.jpeg]
>
> import("stdfaust.lib");
> process = si.bus(4) <: si.bus(8);
>
> I think of it as repeating in "blocks", treating the source as a vector or
> bus that needs repeating as a whole.
>
> - Julius
>
> On Fri, Dec 12, 2025 at 8:58 AM Aaron Krister Johnson <[email protected]>
> wrote:
>
>> Hello all,
>>
>> I was trying to wrap my head around a bit of documentation about split (
>> <: )  and merge ( >: ) operators.
>>
>> I want to point out that the documentation for the split operator is
>> misleading and incorrect. I verified it with ChatGPT here:
>> https://chatgpt.com/share/693c44fe-3688-8004-a4ca-6a227aac7dd8
>>
>> The documentation reads:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *Split CompositionThe split composition (e.g., A<:B) operator is used to
>> distribute the outputs of A to the inputs of B.For the operation to be
>> valid, the number of inputs of B must be a multiple of the number of
>> outputs of A:    outputs(A).k = inputs(B)Each input i of B is connected to
>> the output i mod k of A:    A[i mod k] → [i]B*
>>
>>
>> But, it should read as so:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *Split CompositionThe split composition (e.g., A<:B) operator is used to
>> distribute the outputs of A to the inputs of B.For the operation to be
>> valid, the number of inputs of B must be some multiple, k, of the number of
>> outputs of A:    outputs(A).k = inputs(B)Each input i of B is connected to
>> the output i mod m of A, where m is the number of outputs of A:    A[i mod
>> m] → [i]B*
>>
>> *This gives the following output distributions chart, which intuitively
>> tracks if we have 2 outputs going to 8 inputs, as an example:*
>>
>> i i mod m   A[...] → B[i]
>> *0* *0* *  A0 → B0*
>> *1* *1* *  A1 → B1*
>> *2  * *0* *  A0 → B2*
>> *3* *1* *  A1 → B3*
>> *4* *0* *  A0 → B4*
>> *5* *1* *  A1 → B5*
>> *6* *0* *  A0 → B6*
>> *7* *1* *  A1 → B7*
>> I think having this chart really goes a long way for illustrating what's
>> actually happening.
>>
>> Similar documentation fixes are likely required for the merge operator.
>>
>> Aaron Krister Johnson
>> Music, etc.:
>> https://soundcloud.com/aaron-krister-johnson
>> https://soundcloud.com/filtercreed
>> https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
>> https://aaronkristerjohnson.bandcamp.com/
>> http://www.untwelve.org
>> Code:
>> https://github.com/akjmicro <http://www.untwelve.org>
>> _______________________________________________
>> Faudiostream-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>
>
>
> --
> AI has taken my job, but only I know what it is.
>
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to