After the recent post about CsoundforLive, it resparked my interest in trying out one of the text based audio synthesis programs. Since it seems like a very steep learning curve to start learning any of these(Csounds, SuperCollider or Chuck) I just wanted to see if anyone here has had any experience with any of these and what your verdict was.
I'd like to start a sort of opinion poll:
achieved in Pd, if any?
Hi Epic,
I am not a specialist, but I know from my brother and other experienced composers that one big reason for switching between these is simply the different ideas and possibilities they sparkle on the composer's mind. Once they have maxed-out on using and exploring Pd, they switch to the text-based alternatives you mention to explore different possibilities. But that is an all-encompassing approach from very advanced musicians. One more or less concrete thing I can tell you is that it seems Chuck as a language fits many people's mindset better than SuperCollider, perhaps because of the syntax style and how it allows for better live performance.
Anyways, these are just my 2c to get the ball rolling.
Linux registered user #175401 labmacambira.sf.net
On Tue, Oct 25, 2011 at 10:45 PM, Epic Jefferson jeffreyconcepcion@gmail.com wrote:
After the recent post about CsoundforLive, it resparked my interest in trying out one of the text based audio synthesis programs. Since it seems like a very steep learning curve to start learning any of these(Csounds, SuperCollider or Chuck) I just wanted to see if anyone here has had any experience with any of these and what your verdict was. I'd like to start a sort of opinion poll:
How do they compare against each other? How do they match up to Pd for your needs? What sort of things can be achieved in these programs that can't be achieved in Pd, if any?
-- www.epicjefferson.com www.avmachinists.org Puerto Rico based Art Collective/ Non-Profit Org
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
After the recent post about CsoundforLive, it resparked my interest in trying out one of the text based audio synthesis programs. Since it seems like a very steep learning curve to start learning any of these(Csounds, SuperCollider or Chuck) I just wanted to see if anyone here has had any experience with any of these and what your verdict was.
I'd like to start a sort of opinion poll:
- How do they compare against each other?
- How do they match up to Pd for your needs?
- What sort of things can be achieved in these programs that can't be
achieved in Pd, if any?
I started with csound, then max, then pd. Csound is very powerful (the
best if you want not-real-time synthesis), and is basically 50+ years old
(started with Barry Vercoe, and later Max Matthews), so very complete,
with a big user base, thaught at many universities. Since I began learning
dsp with it, I look at it as being a dataflow language in a text-only
environment. Your cables are variables, and the instrument/score paradigm
were made specifically for composed music - which isn't the case so far,
as it has been adpated also for realtime.
For people that start with dataflow languages, it might seem hard to adapt
to a "dry" environment like a text-only structure. I recall it to be very
similar, if you abstract from the representation and focus on the
structure.
If people who start dsp with a dataflow language, and after that prefer a
program where they can get results much faster, then chuck/sc might be
best, even if the synthax is very different (I never used them, only saw
demos of both).
Ah, csound works well in all plattforms, last time I checked (some years
ago) SC only runs best in mac (mainly for graphic elements?), and I
couldn't get it running in ubuntu. Chuck I never tried myself.
João
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
...
- What sort of things can be achieved in these programs that can't be
achieved in Pd, if any?
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Ah, csound works well in all plattforms, last time I checked (some years ago) SC only runs best in mac (mainly for graphic elements?), and I couldn't get it running in ubuntu.
this is not true anymore (since a couple of years :) you now have ubuntu packages, and a bunch of very talented linux developers (some of them might be very familiar to you BTW) right now, one could say that sc development version works actually better on linux =) (downside for sc is the lack of win devs)
also, you might have a look (and listen) there to have an idea about sc power (this is close to some recent threads on this list, about writing compositions with the less number of objects possible. here sc oneliners limited to 140 characters): http://supercollider.sourceforge.net/sc140/
(advertising-mode off) best is of course to try them all and see for yourself !
my 0.02£..
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
On Oct 26, 2011, at 2:45 PM, yvan volochine wrote:
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just
me.
- sc is a killer for realtime dsp.
- sc-list is *extremely* active and helpful.
...
- What sort of things can be achieved in these programs that
can't be achieved in Pd, if any?
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Have you tried nqpoly4, polypoly, or the 'many' lib? It is quite easy
to do polyphony with any of them.
http://download.puredata.info/many
.hc
Ah, csound works well in all plattforms, last time I checked (some
years ago) SC only runs best in mac (mainly for graphic elements?), and I couldn't get it running in ubuntu.this is not true anymore (since a couple of years :) you now have ubuntu packages, and a bunch of very talented linux
developers (some of them might be very familiar to you BTW) right now, one could say that sc development version works actually
better on linux =) (downside for sc is the lack of win devs)also, you might have a look (and listen) there to have an idea about
sc power (this is close to some recent threads on this list, about
writing compositions with the less number of objects possible. here
sc oneliners limited to 140 characters): http://supercollider.sourceforge.net/sc140/(advertising-mode off) best is of course to try them all and see for
yourself !my 0.02£..
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
You can't steal a gift. Bird gave the world his music, and if you can
hear it, you can have it. - Dizzy Gillespie
On 10/26/2011 09:20 PM, Hans-Christoph Steiner wrote:
- What sort of things can be achieved in these programs that can't be
achieved in Pd, if any?
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Have you tried nqpoly4, polypoly, or the 'many' lib? It is quite easy to do polyphony with any of them.
yeah I know those libs/abstractions, and it can get very tricky too see what's happening within patches using nqpoly4 & co, not very noob friendly.
while I admit those are very clever, it's far more complicated than sc multi-channel expansion ( -> just give any method argument an array and you get the corresponding number of audio|control channels, nice and easy, without dynamic-patching-voodoo =).
no flaming here, I'm just trying to point out the different approach (IMHO anyway).
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
On Oct 26, 2011, at 5:19 PM, yvan volochine wrote:
On 10/26/2011 09:20 PM, Hans-Christoph Steiner wrote:
- What sort of things can be achieved in these programs that
can't be achieved in Pd, if any?
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Have you tried nqpoly4, polypoly, or the 'many' lib? It is quite
easy to do polyphony with any of them.yeah I know those libs/abstractions, and it can get very tricky too
see what's happening within patches using nqpoly4 & co, not very
noob friendly.while I admit those are very clever, it's far more complicated than
sc multi-channel expansion ( -> just give any method argument an
array and you get the corresponding number of audio|control
channels, nice and easy, without dynamic-patching-voodoo =).no flaming here, I'm just trying to point out the different approach
(IMHO anyway).
Its true, that is the downside of everything having a physical
representation, i.e. each instance has its object box. But I think
that its possible to make it really easy in Pd. That's the goal of
the 'many' lib. I'd love feedback on what you thought was hard with
the 'many' lib.
.hc
"[T]he greatest purveyor of violence in the world today [is] my own
government." - Martin Luther King, Jr.
On 10/26/2011 11:57 PM, Hans-Christoph Steiner wrote:
Its true, that is the downside of everything having a physical representation, i.e. each instance has its object box. But I think that its possible to make it really easy in Pd. That's the goal of the 'many' lib. I'd love feedback on what you thought was hard with the 'many' lib.
sure, I'll have another fresh look at it and report back to you.
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
----- Original Message -----
From: yvan volochine yvan.pd@gmail.com To: João Pais jmmmpais@googlemail.com Cc: pd-list Pd-list@iem.at Sent: Wednesday, October 26, 2011 2:45 PM Subject: Re: [PD] OT: Poll: Csounds or SuperCollider or Chuck
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just me.
- sc is a killer for realtime dsp.
- sc-list is *extremely* active and helpful.
...
- What sort of things can be achieved in these programs that can't
be
achieved in Pd, if any?
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Not too long ago matju wrote about the possibility that one could make GF objects that are basically "clones" of signal objects that work on grids, and that at the bottom of your object chain you'd have a GF object that outputs a signal (or signals). This was in response to a query about how to expand a patch to have more channels without using clunky dynamic patching. But I would guess that same approach could be used to make polyphony easier, couldn't it?
Ah, csound works well in all plattforms, last time I checked (some years ago) SC only runs best in mac (mainly for graphic elements?), and I couldn't get it running in ubuntu.
this is not true anymore (since a couple of years :) you now have ubuntu packages, and a bunch of very talented linux developers (some of them might be very familiar to you BTW) right now, one could say that sc development version works actually better on linux =) (downside for sc is the lack of win devs)
also, you might have a look (and listen) there to have an idea about sc power (this is close to some recent threads on this list, about writing compositions with the less number of objects possible. here sc oneliners limited to 140 characters): http://supercollider.sourceforge.net/sc140/
(advertising-mode off) best is of course to try them all and see for yourself !
my 0.02£..
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 10/26/2011 09:38 PM, Jonathan Wilkes wrote:
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
Not too long ago matju wrote about the possibility that one could make GF objects that are basically "clones" of signal objects that work on grids, and that at the bottom of your object chain you'd have a GF object that outputs a signal (or signals). This was in response to a query about how to expand a patch to have more channels without using clunky dynamic patching. But I would guess that same approach could be used to make polyphony easier, couldn't it?
I remember reading about it but I've not yet seen any real-life example.. (if any exists)
IIUC, this approach would get closer to sc multi-channel expansion.
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
Le 2011-10-26 à 12:38:00, Jonathan Wilkes a écrit :
Not too long ago matju wrote about the possibility that one could make GF objects that are basically "clones" of signal objects that work on grids, and that at the bottom of your object chain you'd have a GF object that outputs a signal (or signals). This was in response to a query about how to expand a patch to have more channels without using clunky dynamic patching. But I would guess that same approach could be used to make polyphony easier, couldn't it?
That's a vector-based approach in which the order of the innermost loops are exchanged : instead of having each object process one channel each and a big loop going through all the objects, you have a loop through the channels that is inside a loop over the samples (instants).
I wish Pd's DSP had that kind of multichannel support, but in terms of existing infrastructure, GF goes farther in that direction, even though it doesn't provide harly any equivalents of ~-objects beyond [+~] [*~] [matrix~] and such... that is, no filters that assume each grid is a block that continues the previous block.
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC
On Wed, Oct 26, 2011 at 2:45 PM, yvan volochine yvan.pd@gmail.com wrote:
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just me.
I find SC syntax pretty ugly, so I guess it is all a matter of taste.
- sc is a killer for realtime dsp.
So is CSound, no?
- sc-list is *extremely* active and helpful.
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(**100, 5e3)} ! 128)) }.play
You get it for free in CSOund.
(advertising-mode off) best is of course to try them all and see for yourself !
I agree. And to add to the choices, I suggest you all take a look at http://code.google.com/p/pyo/ You program it in python so its syntax is prettier than CS and SC and modules are coded in C so it is fast.
Cheers,
./MiS
From: Michal Seta mis@artengine.ca To: yvan volochine yvan.pd@gmail.com Cc: pd-list Pd-list@iem.at; João Pais jmmmpais@googlemail.com Sent: Monday, October 31, 2011 5:10 PM Subject: Re: [PD] OT: Poll: Csounds or SuperCollider or Chuck
On Wed, Oct 26, 2011 at 2:45 PM, yvan volochine yvan.pd@gmail.com wrote:
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just me.
I find SC syntax pretty ugly, so I guess it is all a matter of taste.
- sc is a killer for realtime dsp.
So is CSound, no?
Could you give a csound example? It's been awhile since I've played with Supercollider, but
its realtime strengths were immediately apparent early on in the tutorials. Things like creating
hundreds/thousands of sinewave oscillators that fade out over time and get garbage collected
when each envelope hits zero. (All without audio dropouts, of course.)
- sc-list is *extremely* active and helpful.
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
You get it for free in CSOund. (advertising-mode off) best is of course to try them all and see for yourself !
I agree. And to add to the choices, I suggest you all take a look at http://code.google.com/p/pyo/ You program it in python so its syntax is prettier than CS and SC and modules are coded in C so it is fast.
Interesting, I've never looked at that one. Thanks.
-Jonathan
Cheers,
./MiS _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Thanks guys, those are all great suggestions. And pyo looks interesting as well. I agree with jonathan. perhaps with a code example equivalent to SuperCollider's
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
in CSound, we could have a better idea of the different coding perspectives.
2011/10/31 Jonathan Wilkes jancsika@yahoo.com
From: Michal Seta mis@artengine.ca To: yvan volochine yvan.pd@gmail.com Cc: pd-list Pd-list@iem.at; João Pais jmmmpais@googlemail.com Sent: Monday, October 31, 2011 5:10 PM Subject: Re: [PD] OT: Poll: Csounds or SuperCollider or Chuck
On Wed, Oct 26, 2011 at 2:45 PM, yvan volochine yvan.pd@gmail.com
wrote:
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just me.
I find SC syntax pretty ugly, so I guess it is all a matter of taste.
- sc is a killer for realtime dsp.
So is CSound, no?
Could you give a csound example? It's been awhile since I've played with Supercollider, but
its realtime strengths were immediately apparent early on in the tutorials. Things like creating
hundreds/thousands of sinewave oscillators that fade out over time and get garbage collected
when each envelope hits zero. (All without audio dropouts, of course.)
- sc-list is *extremely* active and helpful.
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
You get it for free in CSOund.
(advertising-mode off) best is of course to try them all and see for
yourself !
I agree. And to add to the choices, I suggest you all take a look at
You program it in python so its syntax is prettier than CS and SC and
modules are coded in C so it is fast.
Interesting, I've never looked at that one. Thanks.
-Jonathan
Cheers,
./MiS _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
It's great to see pyo make an appearance in this discussion. For completion's sake, here's the "128 sine waves with random freq mixed down to stereo" example written in pyo. I find it much more readable than either SC or cSound, but that's only a matter of taste i guess.
Sine([random.uniform(20,20000) for i in range(128)]).mix(2)
Since pyo is just another python module, all you have to do is import it in a python script. You also get the power of all those other python modules in your scripts.. very very fun.
For those who missed Michal's link the first time around: http://code.google.com/p/pyo/ . Try it, you'll love it!™.
Cheers,
jm
2011/10/31 Epic Jefferson jeffreyconcepcion@gmail.com
Thanks guys, those are all great suggestions. And pyo looks interesting as well. I agree with jonathan. perhaps with a code example equivalent to SuperCollider's
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
in CSound, we could have a better idea of the different coding perspectives.
2011/10/31 Jonathan Wilkes jancsika@yahoo.com
From: Michal Seta mis@artengine.ca To: yvan volochine yvan.pd@gmail.com Cc: pd-list Pd-list@iem.at; João Pais jmmmpais@googlemail.com Sent: Monday, October 31, 2011 5:10 PM Subject: Re: [PD] OT: Poll: Csounds or SuperCollider or Chuck
On Wed, Oct 26, 2011 at 2:45 PM, yvan volochine yvan.pd@gmail.com
wrote:
- How do they compare against each other?
I only know a bit csound and am an everyday sc user.
- I find csound oldschool syntax pretty boring but maybe that's just me.
I find SC syntax pretty ugly, so I guess it is all a matter of taste.
- sc is a killer for realtime dsp.
So is CSound, no?
Could you give a csound example? It's been awhile since I've played with Supercollider, but
its realtime strengths were immediately apparent early on in the tutorials. Things like creating
hundreds/thousands of sinewave oscillators that fade out over time and get garbage collected
when each envelope hits zero. (All without audio dropouts, of course.)
- sc-list is *extremely* active and helpful.
polyphony in pd is a nightmare, you get it for free in sc:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
You get it for free in CSOund.
(advertising-mode off) best is of course to try them all and see for
yourself !
I agree. And to add to the choices, I suggest you all take a look at
You program it in python so its syntax is prettier than CS and SC and
modules are coded in C so it is fast.
Interesting, I've never looked at that one. Thanks.
-Jonathan
Cheers,
./MiS _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- www.epicjefferson.com www.avmachinists.org Puerto Rico based Art Collective/ Non-Profit Org
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 11/01/2011 04:23 AM, Jean-Michel Dumas wrote:
It's great to see pyo make an appearance in this discussion. For completion's sake, here's the "128 sine waves with random freq mixed down to stereo" example written in pyo. I find it much more readable than either SC or cSound, but that's only a matter of taste i guess.
Sine([random.uniform(20,20000) for i in range(128)]).mix(2)
indeed, pyo looks really cool, kudos ;)
a couple of remarks with your example though. my sc example description was not 100% accurate: the random freqs have exponential distribution (ExpRand) and Splay does the stereo mix down but with a level compensation (equal power) so you don't blow up your ears/pa like in the above pyo example :p
also, running this pyo line uses 25% of my Core Duo 1.83 while sc example uses 15% (and I'm not running excellent Tim Blechmann's multicore-aware sound server supernova, just default scsynth)
BTW, (getting a bit OT here) I have some questions about pyo. is there a way to use double precision ?
$ >>> from pyo import * $ pyo version 0.5.0 (uses single precision)
for the Server to boot properly, I have to start jackd, then Server().boot() gives me an Error with PortAudio incorrect channels number (???), stop jackd, and then Server boots fine.. it seems also that it segfaults easily.. no time right now but I'll make more tests some time...
cheers, _y
hello,
nice thread -
iam interested in two things: the soundquality/ resolution and stabillity at cpu expensive applications of these three programminglanguages.
do they differ?
thanks, jo
Am 01.11.11 11:16, schrieb yvan volochine:
On 11/01/2011 04:23 AM, Jean-Michel Dumas wrote:
It's great to see pyo make an appearance in this discussion. For completion's sake, here's the "128 sine waves with random freq mixed down to stereo" example written in pyo. I find it much more readable than either SC or cSound, but that's only a matter of taste i guess.
Sine([random.uniform(20,20000) for i in range(128)]).mix(2)
indeed, pyo looks really cool, kudos ;)
a couple of remarks with your example though. my sc example description was not 100% accurate: the random freqs have exponential distribution (ExpRand) and Splay does the stereo mix down but with a level compensation (equal power) so you don't blow up your ears/pa like in the above pyo example :p
also, running this pyo line uses 25% of my Core Duo 1.83 while sc example uses 15% (and I'm not running excellent Tim Blechmann's multicore-aware sound server supernova, just default scsynth)
BTW, (getting a bit OT here) I have some questions about pyo. is there a way to use double precision ?
$ >>> from pyo import * $ pyo version 0.5.0 (uses single precision)
for the Server to boot properly, I have to start jackd, then Server().boot() gives me an Error with PortAudio incorrect channels number (???), stop jackd, and then Server boots fine.. it seems also that it segfaults easily.. no time right now but I'll make more tests some time...
cheers, _y
there has been a discussion about the sound quality that in 3/2010, unfortunately split up in a few threads: http://lists.puredata.info/pipermail/pd-list/2010-03/077079.html http://lists.puredata.info/pipermail/pd-list/2010-03/077205.html (…) the upcoming double precision Pd will change a few things there i recon.
m.
Am 01.11.2011 um 12:32 schrieb johannes:
hello,
nice thread -
iam interested in two things: the soundquality/ resolution and stabillity at cpu expensive applications of these three programminglanguages.
do they differ?
thanks, jo
Am 01.11.11 11:16, schrieb yvan volochine:
On 11/01/2011 04:23 AM, Jean-Michel Dumas wrote:
It's great to see pyo make an appearance in this discussion. For completion's sake, here's the "128 sine waves with random freq mixed down to stereo" example written in pyo. I find it much more readable than either SC or cSound, but that's only a matter of taste i guess.
Sine([random.uniform(20,20000) for i in range(128)]).mix(2)
indeed, pyo looks really cool, kudos ;)
a couple of remarks with your example though. my sc example description was not 100% accurate: the random freqs have exponential distribution (ExpRand) and Splay does the stereo mix down but with a level compensation (equal power) so you don't blow up your ears/pa like in the above pyo example :p
also, running this pyo line uses 25% of my Core Duo 1.83 while sc example uses 15% (and I'm not running excellent Tim Blechmann's multicore-aware sound server supernova, just default scsynth)
BTW, (getting a bit OT here) I have some questions about pyo. is there a way to use double precision ?
$ >>> from pyo import * $ pyo version 0.5.0 (uses single precision)
for the Server to boot properly, I have to start jackd, then Server().boot() gives me an Error with PortAudio incorrect channels number (???), stop jackd, and then Server boots fine.. it seems also that it segfaults easily.. no time right now but I'll make more tests some time...
cheers, _y
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Olivier (pyo's dev) responded offlist while I was busy writing a reply. I'm posting what he has to say here for the benefit of the list.
For those interested (and to avoid hijacking pd-land), there is a pyo mailing list here: http://groups.google.com/group/pyo-discuss
Pyo radio will be back up and running today for those who wondered.
Cheers, jm
------Olivier's answer-----------
Hi Yvan,
Thanks for trying the pyo example!
2011/11/1 yvan volochine yvan.pd@gmail.com
On 11/01/2011 04:23 AM, Jean-Michel Dumas wrote:
It's great to see pyo make an appearance in this discussion. For completion's sake, here's the "128 sine waves with random freq mixed down to stereo" example written in pyo. I find it much more readable than either SC or cSound, but that's only a matter of taste i guess.
Sine([random.uniform(20,20000) for i in range(128)]).mix(2)
A Csound example would use 128 lines or some simili-loop opcode. The best way should be to script Csound from python or lua...!
indeed, pyo looks really cool, kudos ;)
a couple of remarks with your example though. my sc example description was not 100% accurate: the random freqs have exponential distribution (ExpRand) and Splay does the stereo mix down but with a level compensation (equal power) so you don't blow up your ears/pa like in the above pyo example :p
That's the cool thing with a pure python module, you can use any function in the random module... To be more like you SC example, the line should be:
a = Sine([100 * random.expovariate(0.5) for i in range(128)], mul=1./128).mix(2).out()
also, running this pyo line uses 25% of my Core Duo 1.83 while sc example uses 15% (and I'm not running excellent Tim Blechmann's multicore-aware sound server supernova, just default scsynth)
No doubt, SC is the best audio engine regarding CPU usage... With pyo, there is an overhead to deal with the Python Global Interpreter Lock (GIL). It makes python very safe but take some times to acquire and release before and after the audio callback. In the case of playing a bunch of oscillators, I would probably use OscBank which can compute hundreds of oscillators in a single loop, very efficient!
BTW, (getting a bit OT here) I have some questions about pyo. is there a way to use double precision ?
from pyo64 import *
$ >>> from pyo import * $ pyo version 0.5.0 (uses single precision)
for the Server to boot properly, I have to start jackd, then Server().boot() gives me an Error with PortAudio incorrect channels number (???), stop jackd, and then Server boots fine.. it seems also that it segfaults easily.. no time right now but I'll make more tests some time...
jack and portaudio don't really like each other! Portaudio won't initialize if jack is started. You can use pyo with jack by setting the Server's host:
s = Server(host="jack").boot()
Cheers,
Olivier
cheers, _y
-- yvan.volochine@gmail.com http://yvanvolochine.com
On Mon, Oct 31, 2011 at 9:48 PM, Epic Jefferson <jeffreyconcepcion@gmail.com
wrote:
// 128 sine waves with random freq mixed down to stereo: { Splay.ar(SinOsc.ar({ExpRand(100, 5e3)} ! 128)) }.play
in CSound, we could have a better idea of the different coding perspectives.
I have not used CSound in (too many) years to provide a clever way of doing this so you will have to RTFM, I guess. I suggest http://www.csounds.com/tootsother/index.html to begin with.
Yet, some people use CSound in real-time. Whether it is more or less convenient than in Pd/pyo/SC/ChucK/C++/etc is not up to me to decide (and again, it is probably still a matter of taste).
./MiS
I started with Csound as first software based system (on my 486 systems back then mostly in non realtime), then PD came around, both in Windows, some years Max/MSP on Mac because I couldnt stand Windows anymore and then back to PD and Csound on Linux. Supercollider never worked for me although the newer, Smalltalk like syntax looks interesting. I am also a software developer so the text based approach was natural. In Csound I love the huge amount of DSP modules -I think, due to its age, it got the biggest collection of modules, here called opcodes- and sound quality. Recently I started to use Csound in realtime as looping machine and realtime synthesizer on stage and PD for graphics. Csound can also do simple user interfaces with buttons and sliders and has persistence. Some ideas are faster to realize with a textbased system instead of graphically patching and are also easier to read and debug.
Different tools yields different results.