Yes, confirmed, that works too. Thank you! I still like Dario's solution
because it's a trick I can use for other things too, but I presume a
built-in function will probably be a bit more efficient. In any case
selectn makes for cleaner code.

Cheers,

Rich

On Sun, Oct 18, 2020 at 6:06 PM Cora Johnson-Roberson <
cora.johnson.rober...@gmail.com> wrote:

> Hi Rich,
>
> The standard library includes a function `ba.selectn
> <https://faust.grame.fr/doc/libraries/#ba.selectn>` that lets you choose
> from among parallel inputs at runtime. In your case, this would look like:
>
> numCents = tuning : ba.selectn(numNotes, pc);
>
> All best,
> Cora
>
> On Sun, Oct 18, 2020 at 12:02 PM Dario Sanfilippo <
> sanfilippo.da...@gmail.com> wrote:
>
>> Hello, Rich.
>>
>> I believe that the problem is the selector not being known at
>> compile-time. I cannot think of any functions doing what you need in the
>> Faust libraries, from the top of my head.
>>
>> For that, perhaps something like the example code below could be helpful:
>>
>> import("stdfaust.lib");
>> testlist = (10, 20, 30, 40, 50);
>> testsel = hslider("selector", 1, 1, 5, 1);
>> router(sel, list) = list : par(i, ba.count(list), * (ba.if(sel == (i +
>> 1), 1, 0)));
>> process = router(testsel, testlist);
>>
>> Best,
>> Dario
>>
>>
>>
>> On Sun, 18 Oct 2020 at 16:39, Rich Cochrane <rich.cochr...@bigi.org.uk>
>> wrote:
>>
>>> Hello again,
>>>
>>> I'm working on some basic (micro)tuning code as part of the learning
>>> process. I've hit a snag with something that's probably quite basic.
>>>
>>> I've implemented the tuning as an array of constant signals in parallel
>>> and I'm using ba.take() to grab the appropriate one for the current note,
>>> but it's failing at compile time with a "pattern matching error" that I'm
>>> struggling to interpret. Google searches suggest other people have run into
>>> the same problem but none of them seemed to contain a solution.
>>>
>>> A minimal (non-)working example is attached -- would anyone be kind
>>> enough to have a quick look and see if they can spot what's wrong? I've
>>> added comments indicating the key lines.
>>>
>>> Cheers,
>>>
>>> Rich
>>> _______________________________________________
>>> Faudiostream-users mailing list
>>> Faudiostream-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>>
>> _______________________________________________
>> Faudiostream-users mailing list
>> Faudiostream-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>
>
_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to