SuperCollider Forum
May 23, 2013, 11:43:47 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: The SuperCollider forum is currently experiencing a rash of spambot registrations. New user requests may not be approved quickly as a result -- and if your email address looks like spam, it might not be approved at all. We are working to improve the security of the registration process, and to provide alternate means to contact the administrators to get a new account. Thanks for your patience.
 
   Home   Help Search Calendar Login Register  
Pages: [1]
  Print  
Author Topic: chucklib updates on dewdrop-world.net  (Read 7128 times)
0 Members and 1 Guest are viewing this topic.
dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« on: January 31, 2006, 03:46:22 PM »

I just posted updates to chucklib on my website. Now included are all my algorithmic composition prototypes. Very little documentation as yet (no time!) but I'll get around to it, slowly.

http://www.dewdrop-world.net/sc3/index.php#dewdroplib

Also I put up a new tutorial on my website describing the basic levels of using processes in chucklib (including a truly silly drumbeat based entirely on a11wlk01.wav!). You have to have the updated chucklib for the tutorial examples to work.

http://www.dewdrop-world.net/sc3/tutorials/index.php?id=6

It moves pretty fast so if there's anything I should explain more carefully, send me an email and I can revise.

Enjoy...
hjh
Logged

dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #1 on: February 01, 2006, 08:38:03 PM »

Update to the update: I left out a class from the distribution. If you downloaded the chucklib update yesterday, it was incomplete and you should download it again.

Sorry 'bout that -- and thanks to the kind reader who pointed it out to me.
hjh
Logged

dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #2 on: February 02, 2006, 07:47:35 AM »

One more oops! One of the prototypes in the library depends on Julian Rohrhuber's MarkovSet classes, which you can get here:

http://swiki.hfbk-hamburg.de:8888/MusicTechnology/142

Or, if you don't want it, go into startup10-melodic.rtf and comment out from "// rhythm profiles" down to "=> PR(\randRhythm);" -- the last line (AbstractChuckArray.defaultSubType = saveSubType;) should be uncommented.

I think that's the last booboo.

hjh
Logged

SCAxe
Newbie
*

Karma: -1
Posts: 4


View Profile
« Reply #3 on: February 02, 2006, 04:36:23 PM »

I just played through the tutorial, and indeed it's all working now. I think I've never had so much fun listening to a11wlk01.wav  Smiley

Can't say though that I understood a whole lot of the code. For example, I've never seen this => in SC. Is that what makes it Chuck? Huh
Anyway, I'll take a much closer look at it this weekend and then hopefully will be able to give more qualified comments. Also, I fear I'll have to meditate over the Environment and Event help files again.

Anyway, thanks so far for taking the time to work out the examples. This is an interesting topic!

Greets,
Axel
Logged
dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #4 on: February 03, 2006, 02:11:17 PM »

Cool, thanks for confirming that it works.

I'll push out another update tomorrow and I'll bundle Julian's MarkovSet classes with chucklib. That should take care of it.

=> is indeed "the ChucK operator" --

http://chuck.cs.princeton.edu/



ChucK is a really radical and exciting concept in audio programming, a fresh and quite useful way of thinking about signal processing. I don't see myself using it for my work, because it's not as fast as SuperCollider (which, admittedly, is scary-fast due to James McCartney's obsession for optimization), but ChucK is a wicked cool toy. Along with it, there's The Audicle, which is a very pretty -- and frankly mindblowing -- audio programming environment. Graphics intensive so it takes cycles away from audio processing (not good for me), but it's beautiful, stunning to look at. I saw a demo at a conference in Beijing last fall and felt like the floor had dropped out from under me and I was just suspended in midair.

hjh
Logged

dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #5 on: February 04, 2006, 10:45:55 AM »

Hi folks,

With any luck this is the last update on chucklib. There were a couple of dependencies I hadn't included:

- Julian Rohrhuber's MarkovSet classes. Since there's no easy way to decouple it, I decided to bundle it into chucklib. That means if you already have them, you'll have to delete one of the copies after installing chucklib.

- A new TimeSpec class in dewdrop_lib that wasn't on my website until this morning. Make sure to get a fresh update if you want to try it out.

Sorry about the confusion, it's just I'm too busy to set up a clean installation (and deal with the hassles of trying to build in 10.3). Let me know if you see any other problems and I'll fix them as quickly as I can.

Thanks--
hjh
Logged

dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #6 on: August 17, 2006, 02:54:06 PM »

Hi all,

New versions of dewdrop_lib and chucklib are available on my website.

- The new version fixes a "variable not defined" error that a couple of people reported.

- Chucklib now has an easier syntax for replaceable streams. Previously, a replaceable streams would be defined inside the process's environment using ~bindPattern and referenced inside the process pattern using ~makeProut. A bit clunky. Now you can do it like this. While inside the environment, assigning a pattern to environment variable automatically creates a stream inside the environment which the pattern can reference. BPStream implements the reference inside the process pattern. Outside the environment, you should still use the chucking syntax pattern =>.key BP(\name) to replace the stream.

As always, don't hesitate to contact me with bug reports!

James

(
PR(\abstractProcess).v.clone({
      // create component streams
   ~prep = { |self|


    ~degree = Pseq((0..7), inf);
    ~delta = 0.25;
      ~sus = 0.2;
      ~db = -30;
   };

      // use them in a pattern
   ~asPattern = { |self|
      Pbind(
         \degree, BPStream(\degree),
         \delta, BPStream(\delta),
         \sustain, BPStream(\sus),
         \db, BPStream(\db)
      )
   };
}) => PR(\cmaj2);
)

s.boot;
SynthDescLib.global.read;

PR(\cmaj2) => BP(\cmaj2);
BP(\cmaj2).play;

Pbrown(0, 7, 2, inf) =>.degree BP(\cmaj2);
Prand([0.25, Pseq([0.5, 0.25], 1), Pseq([0.25, 0.125], 1)], inf) =>.delta BP(\cmaj2);

BP(\cmaj2).stop;
BP(\cmaj2).free;

Logged

dewdrop_world
AdminGroup
Full Member
*

Karma: 9
Posts: 193



View Profile WWW
« Reply #7 on: August 17, 2006, 08:56:59 PM »

Very quick followup... I posted a new update just now to address this caveat:

Outside the environment, you should still use the chucking syntax pattern =>.key BP(\name) to replace the stream.

Now it "should" be functionally identical to say

Pwhite(0, 7, inf) =>.degree BP(\test);

and

BP(\test).v.degree = Pwhite(0, 7, inf);

This hasn't been thoroughly tested yet but I confirmed that the stream gets created properly.

Note that it only works if the object being assigned is a pattern, e.g.

BP(\test).v.degree = 5

... would NOT modify the stream that BPStream picks up. But Pn(5, inf) or 5.asPattern would work.

Problems or questions, let me know.

hjh
Logged

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC Valid XHTML 1.0! Valid CSS!