retrieving shred id when calling chuck from command line
Hello, I am a chuck novice, so please be gentle :-) (actually just started learning today) I would like to call chuck from another program and add/remove shreds, as well as control some parameters. Adding shreds is easy, just chuck + shed.ck, but to remove them I need the shred id. So the first question is, how can I retrieve the shred id when adding new shreds? I know that the listener process prints the shred id, but to parse the output of the listener, weed out errors, and catch the shred id only is very messy. Is there a better way? How does miniAudicle do this (since it has to do practically the same thing)? The other question is about how to control all shreds with global parameters. I found a way, but since I'm new to ChucK, I'm looking for some reassurance that this is the correct and the simplest way. I created a class like this: public class MyState { static int freq; } 500 => MyState.freq; Then I read/set the parameter MyState.freq from various shreds. Is this the correct way? Thank you for any help in advance, Szabolcs
On Sun, Mar 10, 2013 at 07:06:32PM -0400, Szabolcs Horvát wrote:
Hello,
I am a chuck novice, so please be gentle :-) (actually just started learning today)
Welcome on board!
I would like to call chuck from another program and add/remove shreds, as well as control some parameters. Adding shreds is easy, just chuck + shed.ck, but to remove them I need the shred id. So the first question is, how can I retrieve the shred id when adding new shreds?
Yes, this is a issue, it also affects automation using editors like Emacs and Vim. I think it is needlessly complicated by the sending process not returning the shred ID at successful addition and that info instead ending up only in the VM window. I just checked to be sure and even --status ends up in the vm window only. Maybe it is not a bug as such but I think it is at least a usability issue. The formatting of errors appears to have been made machine-readable on purpose (it'd be enough to have our editor cursor jump to the relevant line and character) but it doesn't get returned to the calling program.
I know that the listener process prints the shred id, but to parse the output of the listener, weed out errors, and catch the shred id only is very messy. Is there a better way? How does miniAudicle do this (since it has to do practically the same thing)?
Maybe the mini somehow "cheats", I never looked into the internal design of it. Spencer will know.
The other question is about how to control all shreds with global parameters. I found a way, but since I'm new to ChucK, I'm looking for some reassurance that this is the correct and the simplest way.
I created a class like this:
public class MyState { static int freq; }
500 => MyState.freq;
Then I read/set the parameter MyState.freq from various shreds.
Is this the correct way?
Yes, that is the way to get around namespace for mutable data. Hope that helps a bit, and "welcome!" again! Kas.
Thanks for the reply Kassen!
I looked at miniAudicle just a little bit, and it seems that it takes a
smarter approach than just parsing the output for chuck (but I'm not
entirely sure, I didn't dig deep).
While the chuck output is somewhat machine readable, trying to parse that
still seems unreliable. Because of its concurrent nature chuck could print
just about anything at just about any time which makes the parsing solution
very messy.
So if anyone can give me pointers on how to retrieve the shred ID better,
without having to parse the textual output, I'd appreciate it very much!
Greetings,
Szabolcs
On 11 March 2013 11:03, Kassen
On Sun, Mar 10, 2013 at 07:06:32PM -0400, Szabolcs Horvát wrote:
Hello,
I am a chuck novice, so please be gentle :-) (actually just started learning today)
Welcome on board!
I would like to call chuck from another program and add/remove shreds, as well as control some parameters. Adding shreds is easy, just chuck + shed.ck, but to remove them I need the shred id. So the first question is, how can I retrieve the shred id when adding new shreds?
Yes, this is a issue, it also affects automation using editors like Emacs and Vim. I think it is needlessly complicated by the sending process not returning the shred ID at successful addition and that info instead ending up only in the VM window.
I just checked to be sure and even --status ends up in the vm window only.
Maybe it is not a bug as such but I think it is at least a usability issue. The formatting of errors appears to have been made machine-readable on purpose (it'd be enough to have our editor cursor jump to the relevant line and character) but it doesn't get returned to the calling program.
I know that the listener process prints the shred id, but to parse the output of the listener, weed out errors, and catch the shred id only is very messy. Is there a better way? How does miniAudicle do this (since it has to do practically the same thing)?
Maybe the mini somehow "cheats", I never looked into the internal design of it. Spencer will know.
The other question is about how to control all shreds with global parameters. I found a way, but since I'm new to ChucK, I'm looking for some reassurance that this is the correct and the simplest way.
I created a class like this:
public class MyState { static int freq; }
500 => MyState.freq;
Then I read/set the parameter MyState.freq from various shreds.
Is this the correct way?
Yes, that is the way to get around namespace for mutable data.
Hope that helps a bit, and "welcome!" again! Kas. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
participants (2)
-
Kassen
-
Szabolcs Horvát