Author |
Message |
dewdrop_world
Joined: Aug 28, 2006 Posts: 858 Location: Guangzhou, China
Audio files: 4
|
Posted: Sat Oct 13, 2007 12:03 pm Post subject:
Another audio language with a chuck-like concept Subject description: RED |
|
|
Interesting bit of synergy -- I was looking around today for computer science materials, mainly looking for articles about design patterns and real time algorithmic composition, but I allowed myself some detours. One was "Selected research in computer music" by Michael Droettboom, including a description of an audio processing language. Well, that got my attention, if only to see what the language looks like.
Then I was a bit startled to find this:
Quote: | 6.3.2 Connecting signals
However, creating a UG on its own will not allow it to be heard or seen. It must first be “connected” to an audio or video output object. For each unit generator object, the signal inlets and outlets are accessed by providing an inlet name inside square brackets ‘[ ]'. For instance, to get the outlet of the oscillator object we can use the expression:
These inlets and outlets can be connected to the inlets and outlets of other objects using the overloaded left-shift '<<' and right-shift '>>' operators. The connection is made in the direction of the “arrows.” For example, to create an oscillator object, and then connect its outlet to the a stereo digital audio convertor (DAC) output generator:
Code: | dac = Dac()
osc = Osc(freq = 440)
# Connect the outlet of the osc to an inlet of the Dac
osc['out'] >> dac['left']
# Connect the output of the oscillator to the other channel
dac['right'] << osc['out'] |
|
Wow! osc['out'] >> dac['left'] ! Seems to me there is not much difference conceptually between the above and osc => dac? Although certainly ChucK takes the concept radically further, and does away with the not necessarily useful "left chuck."
It seems this line of research is totally independent of Ge's -- still, it's fascinating to me how these two people had roughly the same idea at roughly the same time.
James _________________ ddw online: http://www.dewdrop-world.net
sc3 online: http://supercollider.sourceforge.net |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Sat Oct 13, 2007 4:39 pm Post subject:
|
|
|
Yes, i agree. It seems that when an invention's time has come, it will bubble up from the public in multiple places at similar times. History is filled with examples, one such being a round flute-like clay object that looks like a flying saucer with holes in it. A guy at a Ren-fest offered to sell me one and said it had been discovered independently all around the world. And how many of us sees a new product and says "I thought of that one!"? It's amazing how much "Synergy" there is out there, isn't it? |
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24075 Location: The Netherlands, Enschede
Audio files: 277
G2 patch files: 320
|
Posted: Sat Oct 13, 2007 5:18 pm Post subject:
|
|
|
I don't know, I hate spoiling fun, but this looks just like a device/connector pattern thing that I saw about 15 years ago as an example of how operator overloading could be put to good use in C++ .. and it's really just pointer juggling of course.
The "new" thing in Chuck to me was chucking to now (=> Now) for time control / scheduling. _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sun Oct 14, 2007 1:49 pm Post subject:
|
|
|
I still like this idea.
osc['out'] >>filter['in']
...would imply you could also use...
env['out'] >> filter['freq']
...which ChucK can't do like that.
It's at least similar in that the syntax is also a sort of image of the signal flow which can be very enjoyable to read. Sadly here ins and outs are explicitly marked so that means no....
SawOsc s => LPF f => dac;
Timing is still at the heart of ChucK but a little syntactic sugar can't hurt. It's also nice that anybody who has ever used a simple synth can read that last ChucK line so that's nicely accessible and might make up for the initial confusion many people have over "manually advancing time".
I could imagine this left/right style of operators could become useful at times, how about this theoretical example?
signalA['out'] >> Xfade['in'] << signalB['out']
That would be cool. I have to say though, after this post I already hate those quotes. _________________ Kassen |
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24075 Location: The Netherlands, Enschede
Audio files: 277
G2 patch files: 320
|
Posted: Sun Oct 14, 2007 2:16 pm Post subject:
|
|
|
Kassen wrote: | I have to say though, after this post I already hate those quotes. |
Maybe osc.out >> filter.in ?
I must say that I like >> better than => (for ease of typing). _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sun Oct 14, 2007 3:11 pm Post subject:
|
|
|
Blue Hell wrote: |
Maybe osc.out >> filter.in ?
|
Yeah, much better already.
Quote: | I must say that I like >> better than => (for ease of typing). |
Depends on the KB layout. On a Dutch keyboard the "=" is on the key left of the right shift and needs a shift to reach it, the ">" is right above the right shift and also needs the shift to reach it. With some experience you can type the "=>" by simply pressing your right hand down in the right way.
On a US layout it's indeed a bit inconvenient. _________________ Kassen |
|
Back to top
|
|
|
|