[chuck-users] Polyphony/Multiple Instruments in ChucK

Curtis Ullerich curtullerich at gmail.com
Sun Jan 20 18:08:40 EST 2013


Ah, it was sporking that I should have been doing. That really cleans
things up a lot. Thanks a ton for the advice and other pointers.

I also added a static instance() method that takes care of the member
variable assignment as well. Code
here<https://github.com/curtisullerich/computer-music/blob/79c40dd410d7a68f664f8d3855f33940324a3978/chuck/euc.ck>,
for anyone's reference.

Thanks!

Curtis


On Sun, Jan 20, 2013 at 1:12 PM, Stefan Blixt <stefan.blixt at gmail.com>wrote:

> Hi!
>
> It looks like you are using the two signal paths in a similar way, so the
> first thing you can is to organise the samey stuff in a class. Basically
> whereever you have copied something and added "2" at the end.
>
>
> Here's a rearranged version of your code (finally got around to testing
> github :) ):
>
>
> https://github.com/Antimon262/curtisullerich_test/blob/master/tmp1.ck
>
>
> The bottom code that generates stuff is pretty much as you wrote it. The
> top stuff is a class with some common stuff, the play method (it's like
> yours except it uses data stored in the object (defined by the class)
> instead of taking arguments), and a method that mimics what you did in your
> endless loop.
>
>
> Below that is some initalization of the two objects, followed by this:
>
>
> spork ~ mySynths[0].startPlaying();
>
> spork ~ mySynths[1].startPlaying();
>
> ... which starts up two endless loops in parallell as defined by
> startPlaying() in the MySynth class. These loops will run simultaneously
> and stay in sync forever.
>
> After that is the endless loop that you need to have in a ChucK program
> like this, since it isn't enough to have endless loops running in shreds
> (started by spork), you need to have something going on in the main program
> as well.
>
> The benefit here is that you don't have to type everything twice, or fix
> bugs in two places etc. If you need more stuff to differ between the
> classes, just add variables in side them and and code to initialize them.
>
> I haven't looked that closely yet at the rest of the code, but my basic
> approach to coding ChucK is: if you can read it and see that it works, it's
> all right. If it's difficult to manage, try to bundle stuff like I
> described here. If it's difficult to read, try to change it around,
> experiment.
>
> /Stefan
>
>
>
> On Sun, Jan 20, 2013 at 6:05 PM, Curtis Ullerich <curtullerich at gmail.com>wrote:
>
>> Hello,
>>
>> In my experiments with ChucK I've reached the point of wanting to use
>> multiple instruments in polyphony (two Moogs in this case).
>>
>> My example is on GitHub here<https://github.com/curtisullerich/computer-music/blob/d37a98cb4f7b237b1791be3f051ae485235ad425/chuck/euc.ck>
>> .
>>
>> My usage pattern feels awkward and not very clean, and I'm hoping someone
>> else has encountered the same situation. My question: What is a good way to
>> manage and use multiple instruments in ChucK?
>>
>> It seems like a simple thing to want to do, but I haven't found any
>> examples in the doc that work this way. Am I completely backwards about how
>> I want to accomplish polyphony?
>>
>> My particular use case is made most awkward because I'm using an ADSR
>> envelope. I think it's mostly ChucK's style of time tracking/advancement
>> that's derailing me. If I'm not describing this well enough, please let me
>> know. Any advice is appreciated.
>>
>> Thanks!
>>
>> Curtis
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
>
>
> --
> Release me, insect, or I will destroy the Cosmos!
>
> _______________________________________________
> 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/20130120/39839413/attachment.html>


More information about the chuck-users mailing list