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

Forrest Curo treegestalt at gmail.com
Mon Oct 12 17:54:52 EDT 2015


Okay, I did find the github zip for tap-plugins -- but the later plugins
are struggling; and I wasn't thinking of using them... so I'll assume that
I'm okay if I don't, for now.

On Mon, Oct 12, 2015 at 1:32 PM, Michael Heuer <heuermh at gmail.com> wrote:

> 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
>>
>>
>
> _______________________________________________
> 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/cf1414b7/attachment.html>


More information about the chuck-users mailing list