[chuck-users] how to mickey-mouse a 'switch' statement into chuck?

Michael Heuer heuermh at gmail.com
Mon Oct 12 16:32:51 EDT 2015


Forrest Curo <treegestalt at gmail.com> wrote:

> "Something more elaborate than branching on the value of a specific
> variable?"
>
> To use a text keyboard to trigger real-time changes in key, mode ('major',
> 'minor', etc), record-&-repeat-&-vary (by scale degrees in whichever the
> current  key & mode are), accelerate or slow playback, change target
> instrument for playback-and/or-midi-keyboard, dump or keep current loop,
> etc:
> with some 36+ keys available for whatever organization of this works --
> and I want to be able to modify the arrangement meanwhile so I don't trap
> myself into a bad design...
>
> so running the text input through a maze of logic by ascii values seems
> too cumbersome.
> I know, I could search-&-replace, but finding a key value in a list
> and changing the associated function
> just seems a whole lot less ugly!
> -------------------------
>
> Um, I'm now trying to install 'tap-plugins' as a prerequisite for
> installing 'lick' -- and the instructions for that are telling me, ~'just
> cd into folder and run 'make' -- but make can't find anything _to_ make! Do
> I really need those plugins to install & use lick?
>

No.  Without them chuck will complain when loading the import.ck file

$ chuck + import.ck
...
[TapeDelay.ck]:line(26): cannot extend incomplete type 'Swh'
[TapeDelay.ck]:line(26): ...(note: the parent's declaration must preceed
child's)
[RubberBand.ck]:line(26): cannot extend incomplete type 'Ladspa'
[RubberBand.ck]:line(26): ...(note: the parent's declaration must preceed
child's)
"LiCK imported." : (string)

but everything else will work fine.  And installing all of those plugins is
a real mess, especially on OSX.  I should probably cut a docker image at
some point.

   michael



> On Mon, Oct 12, 2015 at 11:41 AM, Spencer Salazar <
> spencer at ccrma.stanford.edu> wrote:
>
>> Doing functional stuff in ChucK can be pretty fun (and verbose), but for
>> specifically switch-case structures, mostly these can be implemented e.g. as
>>
>> if(var == 0) // case 0:
>> { }
>> else if(var == 1) // case 1:
>> { }
>> else // default:
>> { }
>>
>> You can't do fall-throughs or nutty things like Duff's device, but
>> (making up a number) maybe 90% of switch-case uses I see are basically a
>> slightly better-looking if-else. Are you doing something more elaborate
>> than branching on the value of a specific variable?
>>
>> spencer
>>
>>
>> On Mon, Oct 12, 2015 at 2:22 PM, Forrest Curo <treegestalt at gmail.com>
>> wrote:
>>
>>> It looks far prettier than a mess of logical spaghetti!
>>>
>>> But is this documented with examples for the help & understanding of
>>> object-challenged geezers from the days of punch-card boxes converted
>>> twice/day to error-message listings?
>>>
>>> On Mon, Oct 12, 2015 at 10:37 AM, Michael Heuer <heuermh at gmail.com>
>>> wrote:
>>>
>>>> Forrest Curo <treegestalt at gmail.com> wrote
>>>>
>>>>> Since switches have so far not been included, is there a way around
>>>>> this?
>>>>>
>>>>> An array of Events?
>>>>>
>>>>> An array of functions, either numbered or associative? How to declare
>>>>> and call such an array?
>>>>>
>>>>
>>>> ChucK doesn't have function pointers or similar, so I've resorted to
>>>> functors
>>>>
>>>> https://github.com/heuermh/lick/blob/master/lick/fn
>>>>
>>>> E.g.
>>>>
>>>> class DoSomething extends Procedure {
>>>>   fun void run() { ... }
>>>> }
>>>> class DoSomethingElse extends Procedure {
>>>>   fun void run() { ... }
>>>> }
>>>>
>>>> DoSomething doSomething;
>>>> DoSomethingElse doSomethingElse;
>>>>
>>>> ArrayList procedures;
>>>> procedures.add(doSomething);
>>>> procedures.add(doSomethingElse);
>>>>
>>>> while (true) {
>>>>   procedures.sample() $ Procedure @=> Procedure procedure;
>>>>   procedure.run();
>>>>   1::second => now;
>>>> }
>>>>
>>>>
>>>> Yeah, it ain't pretty.
>>>>
>>>>    michael
>>>>
>>>> _______________________________________________
>>>> chuck-users mailing list
>>>> chuck-users at lists.cs.princeton.edu
>>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> chuck-users mailing list
>>> chuck-users at lists.cs.princeton.edu
>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>
>>>
>>
>>
>> --
>> Spencer Salazar
>> Doctoral Candidate
>> Center for Computer Research in Music and Acoustics
>> Stanford University
>>
>> spencer at ccrma.stanford.edu
>> +1 831.277.4654
>> https://ccrma.stanford.edu/~spencer/
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20151012/fd540b82/attachment-0001.html>


More information about the chuck-users mailing list