[chuck-users] Bulk handling of multiple instances

Spencer Salazar ssalazar at CS.Princeton.EDU
Sat Jan 13 20:38:33 EST 2007


Hi Karl,
Probably the best way to go would be to allocate an array of Blits  
and Pans, and then loop over them to chuck them to each other and the  
Gain.  For example:

Gain g => dac;

20 => int num_blits;
Blit blits[num_blits];
Pan2 pans[num_blits];

for( 0 => int i; i < num_blits; i++ )
{
     blits[i] => pans[i] => g;
     0.0001 => blits[i].freq;
     1 => blits[i].harmonics;
}

Does this achieve something close to your desired result?

For better or for worse, ChucK lacks a lot of the dynamism of  
languages like Python or Perl, including features like dynamic symbol  
evaluation.  However its typically possible to achieve similar tasks  
using the structures that are available (thank you Turing  
completeness!).

spencer

On Jan 13, 2007, at 7:40 PM, karl petermichl wrote:

> Dear chuck-community,
>
> My name is kar,I am a freshly converted Chukee from Vienna,  
> Austria, Europe. Let me first thank and praise the authors of this  
> language, the community (I went thru the WIKI, the forum and the  
> Archives of this list), and the relaxed as well as funny and  
> intelligent integration of wisdom in the comments and the code….
>
> My first question is: I want to create MANY instances of a UGEN,  
> e.g. a Blit, and route all those (lets say 20) thru their own pan2.  
> each should be instaneated, modulated and mixed independently to  
> the total mix. So I tried many ways to automatically create 20  
> Blits via Arrays, or to access in a loop the frequency of all the  
> Blits, but so far without success. I do not want to write endless  
> lines of code, where I manipulate each instances separately, but I  
> thought I can write a function with an increment to do this in a  
> loop over all the instances.
>
> I would need something like a conceniation of strings, to have the  
> "body" of a string the same, and add a variable to it to create the  
> effective name of an instance or access the member of an instance:
>
> //gain g=>dac;
> //for (0=>int i; i<=20; i++) {Blit "b+i" => g;}
> Where i would be a running number, or a string from an array. But  
> it seems there are no mechanisms for stitching together names…
>
> I tried many variants of notation to combine the letter b with a  
> number out of a variable to create a valid name...
>
> I also tried the following variant via an array of strings with no  
> success:
> //gain g=>dac;
> //["b1","b2","b3","b4","b5","b6", "b7","b8", "b9", "b10"] @=>  
> string arr[];
> //for (0=>int j; j<10; j++) {Blit arr[j] =>g;}
> //for (0=>int j; j<10; j++) {0.0001=>arr[j].freq;}
> //for (0=>int j; j<10; j++) {1=>arr[j].harmonics;}
>
> Is there a way to do this? Thank you very much for your time,
> Karl.
>
>
> --
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.5.432 / Virus Database: 268.16.10/624 - Release Date:  
> 12.01.2007 14:04
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list