Forums > MaxMSP

Sound quality in MAX….

August 20, 2008 | 8:06 pm

Hi

through the years I have heard (and still hear) people complaining
that the sound quality of the MaxMSP engine is "poor"

I don’t know how "poor" it is, and this is not the subject of this
post; but some of those people did point that the "sound quality" of
CSound or Reaktor is way better (or Super Collider) – and even if I
don’t have any personal opinion on this subject, some of the people
saying this seem to know what they are talking about (but not all of
them !!)

Now my question is:

IF the sound quality (or DSP engine, or whatever) of, say, CSound or
Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via the
csound~ object in MAX, do I have "max quality" or "Reaktor/CSound
quality" ??

Obviously a plug-in/other software used in max will at some point
have its sound carried by MSP (be it for simple routing – out volume,
pan, or maybe simply the DAC….

___as said – don’t know how true it is, and IF it was if it still is
- and maybe in Max 5 it’s different (I did not switched to max5):
But, since I am willing to try other software (CSound is very
tempting) I am interested to know – and one of the lessons on C74
site describes integration of other sofwares into max: using them
this way seems very interesting.

many thanks

best

kasper

Kasper T. Toeplitz
noise, composition, bass, computer

http://www.sleazeArt.com

http://www.myspace.com/sleazeart


August 20, 2008 | 8:15 pm

this is something that immediately leapt out at me when I first
played around with the SuperCollider examples
how amazing the sound quality on all their patches was compared to
Max/MSP
never got to doing a direct A/B comparison but it would be good to
know why this is…
I posted something to this list about this years ago but never got a
response
anyone?

On Aug 20, 2008, at 1:06 PM, Kasper T Toeplitz wrote:

> Hi
>
> through the years I have heard (and still hear) people complaining
> that the sound quality of the MaxMSP engine is "poor"
>
> I don’t know how "poor" it is, and this is not the subject of this
> post; but some of those people did point that the "sound quality"
> of CSound or Reaktor is way better (or Super Collider) – and even
> if I don’t have any personal opinion on this subject, some of the
> people saying this seem to know what they are talking about (but
> not all of them !!)
>
> Now my question is:
>
> IF the sound quality (or DSP engine, or whatever) of, say, CSound
> or Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via
> the csound~ object in MAX, do I have "max quality" or "Reaktor/
> CSound quality" ??
>
> Obviously a plug-in/other software used in max will at some point
> have its sound carried by MSP (be it for simple routing – out
> volume, pan, or maybe simply the DAC….
>
> ___as said – don’t know how true it is, and IF it was if it still
> is – and maybe in Max 5 it’s different (I did not switched to
> max5): But, since I am willing to try other software (CSound is
> very tempting) I am interested to know – and one of the lessons on
> C74 site describes integration of other sofwares into max: using
> them this way seems very interesting.
>
> many thanks
>
> best
>
> kasper
> —
> Kasper T. Toeplitz
> noise, composition, bass, computer
> http://www.sleazeArt.com
>
> http://www.myspace.com/sleazeart
>


August 20, 2008 | 8:32 pm

That’s a good question that I would like to know the answer to also.
I don’t know about the math but just by listening I am of the opinion
that supercollider and csound are superior to max in terms of sound
quality. For me quality means clarity and freshness. You can hear
this difference if you compare a simple oscilator in supercollider or
csound with one in max. Same with filters. However, a lot of this
depends on what it is that you’re trying to do and how you code it.

Best
Peiman

On 20 Aug 2008, at 21:06, Kasper T Toeplitz wrote:

> Hi
>
> through the years I have heard (and still hear) people complaining
> that the sound quality of the MaxMSP engine is "poor"
>
> I don’t know how "poor" it is, and this is not the subject of this
> post; but some of those people did point that the "sound quality"
> of CSound or Reaktor is way better (or Super Collider) – and even
> if I don’t have any personal opinion on this subject, some of the
> people saying this seem to know what they are talking about (but
> not all of them !!)
>
> Now my question is:
>
> IF the sound quality (or DSP engine, or whatever) of, say, CSound
> or Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via
> the csound~ object in MAX, do I have "max quality" or "Reaktor/
> CSound quality" ??
>
> Obviously a plug-in/other software used in max will at some point
> have its sound carried by MSP (be it for simple routing – out
> volume, pan, or maybe simply the DAC….
>
> ___as said – don’t know how true it is, and IF it was if it still
> is – and maybe in Max 5 it’s different (I did not switched to
> max5): But, since I am willing to try other software (CSound is
> very tempting) I am interested to know – and one of the lessons on
> C74 site describes integration of other sofwares into max: using
> them this way seems very interesting.
>
> many thanks
>
> best
>
> kasper
> —
> Kasper T. Toeplitz
> noise, composition, bass, computer
> http://www.sleazeArt.com
>
> http://www.myspace.com/sleazeart
>


August 20, 2008 | 8:43 pm

Hi,

http://lists.create.ucsb.edu/pipermail/sc-users/2004-April/009580.html

All the best


Alessandro Fogar

http://www.fogar.it

2008/8/20 Kim Cascone :
> this is something that immediately leapt out at me when I first played
> around with the SuperCollider examples
> how amazing the sound quality on all their patches was compared to Max/MSP
> never got to doing a direct A/B comparison but it would be good to know why
> this is…
> I posted something to this list about this years ago but never got a
> response
> anyone?
>
>
> On Aug 20, 2008, at 1:06 PM, Kasper T Toeplitz wrote:
>
>> Hi
>>
>> through the years I have heard (and still hear) people complaining that
>> the sound quality of the MaxMSP engine is "poor"
>>
>> I don’t know how "poor" it is, and this is not the subject of this post;
>> but some of those people did point that the "sound quality" of CSound or
>> Reaktor is way better (or Super Collider) – and even if I don’t have any
>> personal opinion on this subject, some of the people saying this seem to
>> know what they are talking about (but not all of them !!)
>>
>> Now my question is:
>>
>> IF the sound quality (or DSP engine, or whatever) of, say, CSound or
>> Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via the csound~
>> object in MAX, do I have "max quality" or "Reaktor/CSound quality" ??
>>
>> Obviously a plug-in/other software used in max will at some point have its
>> sound carried by MSP (be it for simple routing – out volume, pan, or maybe
>> simply the DAC….
>>
>> ___as said – don’t know how true it is, and IF it was if it still is – and
>> maybe in Max 5 it’s different (I did not switched to max5): But, since I am
>> willing to try other software (CSound is very tempting) I am interested to
>> know – and one of the lessons on C74 site describes integration of other
>> sofwares into max: using them this way seems very interesting.
>>
>> many thanks
>>
>> best
>>
>> kasper
>> –
>> Kasper T. Toeplitz
>> noise, composition, bass, computer
>> http://www.sleazeArt.com
>>
>> http://www.myspace.com/sleazeart
>>
>
>


August 20, 2008 | 8:51 pm

without drawing harsch consequences, I can say through my experiences that
even a soundfile playback would sound different in MaxMSP than Logic. And
why not in Csound or Supercollider. This difference will be more obvious
and clear in a quality listening environment and with high end audio
interface/loudspeakers.

sinan

> Hi
>
> through the years I have heard (and still hear) people complaining
> that the sound quality of the MaxMSP engine is "poor"
>
> I don’t know how "poor" it is, and this is not the subject of this
> post; but some of those people did point that the "sound quality" of
> CSound or Reaktor is way better (or Super Collider) – and even if I
> don’t have any personal opinion on this subject, some of the people
> saying this seem to know what they are talking about (but not all of
> them !!)
>
> Now my question is:
>
> IF the sound quality (or DSP engine, or whatever) of, say, CSound or
> Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via the
> csound~ object in MAX, do I have "max quality" or "Reaktor/CSound
> quality" ??
>
> Obviously a plug-in/other software used in max will at some point
> have its sound carried by MSP (be it for simple routing – out volume,
> pan, or maybe simply the DAC….
>
> ___as said – don’t know how true it is, and IF it was if it still is
> – and maybe in Max 5 it’s different (I did not switched to max5):
> But, since I am willing to try other software (CSound is very
> tempting) I am interested to know – and one of the lessons on C74
> site describes integration of other sofwares into max: using them
> this way seems very interesting.
>
> many thanks
>
> best
>
> kasper
> –
> Kasper T. Toeplitz
> noise, composition, bass, computer
> http://www.sleazeArt.com
>
> http://www.myspace.com/sleazeart
>
>

Sinan Bokesoy
sinan@sonic-disorder.com
http://www.sonic-disorder.com



kjg
August 20, 2008 | 8:53 pm

I am also under the impression that both supercollider and csound sound better.

I’d guess that it might have to do with how anti-aliasing is handled and the type of interpolation used, specifically in oscillators.

Also, a wider range of (more refined) filters is available for both supercollider and csound.

Less aliasing, better interpolation and nicer filters could explain for much of the perceived difference, but again, I’m just guessing.

@Kasper:
I think that the sound quality difference is in the DSP of supercollider and csound. Using these languages inside a bigger Max/MSP framework will give still give you their sonic benefits. Panning, fading or some minor further processing will not negate that.

I think you should look at it as using a better mic for an instrument that you then process further in Max. The better the sound quality you start with, the nicer the result. Similarly, a nicer sounding oscillator or filter will still sound nicer after further processing in Max.

BTW, I think there is very little – if any – difference in sound quality between sc/csound and max when it comes to multiplying signals (level/pan), and other basic things like playing a file from disk/ram.

Regards,
Klaas-Jan


August 20, 2008 | 8:59 pm

Hi,

look also here:

http://www.bigbluelounge.com/forums/viewtopic.php?t=7793

All the best


Alessandro Fogar

http://www.fogar.it

2008/8/20 Alessandro Fogar :
> Hi,
>
> http://lists.create.ucsb.edu/pipermail/sc-users/2004-April/009580.html
>
> All the best
>
> –
> Alessandro Fogar
>
> http://www.fogar.it
>
> 2008/8/20 Kim Cascone :
>> this is something that immediately leapt out at me when I first played
>> around with the SuperCollider examples
>> how amazing the sound quality on all their patches was compared to Max/MSP
>> never got to doing a direct A/B comparison but it would be good to know why
>> this is…
>> I posted something to this list about this years ago but never got a
>> response
>> anyone?
>>
>>
>> On Aug 20, 2008, at 1:06 PM, Kasper T Toeplitz wrote:
>>
>>> Hi
>>>
>>> through the years I have heard (and still hear) people complaining that
>>> the sound quality of the MaxMSP engine is "poor"
>>>
>>> I don’t know how "poor" it is, and this is not the subject of this post;
>>> but some of those people did point that the "sound quality" of CSound or
>>> Reaktor is way better (or Super Collider) – and even if I don’t have any
>>> personal opinion on this subject, some of the people saying this seem to
>>> know what they are talking about (but not all of them !!)
>>>
>>> Now my question is:
>>>
>>> IF the sound quality (or DSP engine, or whatever) of, say, CSound or
>>> Reaktor is better, WHEN I use Reaktor as a plug-in or CSound via the csound~
>>> object in MAX, do I have "max quality" or "Reaktor/CSound quality" ??
>>>
>>> Obviously a plug-in/other software used in max will at some point have its
>>> sound carried by MSP (be it for simple routing – out volume, pan, or maybe
>>> simply the DAC….
>>>
>>> ___as said – don’t know how true it is, and IF it was if it still is – and
>>> maybe in Max 5 it’s different (I did not switched to max5): But, since I am
>>> willing to try other software (CSound is very tempting) I am interested to
>>> know – and one of the lessons on C74 site describes integration of other
>>> sofwares into max: using them this way seems very interesting.
>>>
>>> many thanks
>>>
>>> best
>>>
>>> kasper
>>> –
>>> Kasper T. Toeplitz
>>> noise, composition, bass, computer
>>> http://www.sleazeArt.com
>>>
>>> http://www.myspace.com/sleazeart
>>>
>>
>>
>


August 20, 2008 | 9:00 pm

>Hi,
>
>http://lists.create.ucsb.edu/pipermail/sc-users/2004-April/009580.html
>

yeah, but the question was not IF they are different (better) but
what happens (sound-quality wise) when one is embedded in the other
(this does not apply to SC – but does to CSound)

best

kasper


August 20, 2008 | 9:06 pm

>
>@Kasper:
>I think that the sound quality difference is in the DSP of
>supercollider and csound. Using these languages inside a bigger
>Max/MSP framework will give still give you their sonic benefits.
>Panning, fading or some minor further processing will not negate
>that.
>
>I think you should look at it as using a better mic for an
>instrument that you then process further in Max. The better the
>sound quality you start with, the nicer the result. Similarly, a
>nicer sounding oscillator or filter will still sound nicer after
>further processing in Max.

So it would be the question how the sound is produced ?? I mean (and
don’t know about this deep programming) the way an oscillator (or a
filter) is "build"…. not, say, the "transport" (handling) of
signal, the way it is transmitted to the rest of the computer, or
whatever…..

Your "mic" analogy sounds nice – actually it would not so much be the
mic than the instrument…

Anyhow, still interesting to hear reactions !

best

kasper

Kasper T. Toeplitz
noise, composition, bass, computer

http://www.sleazeArt.com

http://www.myspace.com/sleazeart



kjg
August 20, 2008 | 9:46 pm

Quote: Kasper T Toeplitz wrote on Wed, 20 August 2008 23:06
—————————————————-
> So it would be the question how the sound is produced ?? I mean (and
> don’t know about this deep programming) the way an oscillator (or a
> filter) is "build"…. not, say, the "transport" (handling) of
> signal, the way it is transmitted to the rest of the computer, or
> whatever…..

Indeed. You know how the 2up state variable filter sounds nicer than the standard svf~ in Max? Same thing. What is going on *inside* the object (the dsp) is done differently resulting in a better/different sound quality.

Both filters then output their data as 32bit float through those same patch cords..

> Your "mic" analogy sounds nice – actually it would not so much >be the mic than the instrument…

Either way. Better source, better results down the line (providing the rest is unchanged), that was my point.
I guess when speaking about filtering the mic would be the better analogy, and when speaking about oscillators the instrument makes more sense.

Also, it is hard to measure how one instrument is better than the other. With microphones things tend to be slightly less subjective… They are slightly more defined in function (and ideal characteristics).

> Anyhow, still interesting to hear reactions !

Yes, anywhoo, I’d be interested to hear other’s opinions too :)


August 20, 2008 | 10:29 pm

Just a word, my Csound’s csd files sound better in csound than in [csound~].



kjg
August 20, 2008 | 10:44 pm

Quote: Kyred wrote on Thu, 21 August 2008 00:29
—————————————————-
> Just a word, my Csound’s csd files sound better in csound than in [csound~].
—————————————————-

interesting!

could you record to 32 bit float in both max and csound and phase align both recordings in a daw to do a null test? maybe even post the difference file? i’d be curious to hear what gremlins are there :)


August 20, 2008 | 11:57 pm

ah interesting! I’m ~kinda surprised this hasn’t come up before as a
thread, as I often harumph about MSP’s "sound quality" in comparison
to Reaktor. like most here, I don’t know much about the nitty gritty
of this, but when I route to MSP processes (via jack) from-and-to
Reaktor, things do sound "better." so I’m glad that many on this list
seem to have the same subjective bias (or AMAZING hearing) that I do.
I hope it’s the latter….

bg

http://fraufraulein.com/billyframe.html


August 21, 2008 | 6:39 am

Here are two factors that might make a difference between programs:

- Is internal processing in the program 32-bit or 64 bit floats? MSP is 32 bit.
- Is some kind of DC filtering, limiter or saturation applied to the signals on the way out of the program?


August 21, 2008 | 8:06 am

Most Reaktor ensembles include several effects: chorus, delay, distorsion, reverb…

So this might explain the "Reaktor" sound, partly at least. I guess you could add those to your MaxMSP patches too.

Roald Baudoux

—- Original message —-
>Date: Wed, 20 Aug 2008 19:57:59 -0400
>From: Billy Gomberg
>Subject: Re: [maxmsp] Re: Sound quality in MAX….
>
>ah interesting! I’m ~kinda surprised this hasn’t come up before as a
>thread, as I often harumph about MSP’s "sound quality" in comparison
>to Reaktor. like most here, I don’t know much about the nitty gritty
>of this, but when I route to MSP processes (via jack) from-and-to
>Reaktor, things do sound "better." so I’m glad that many on this list
>seem to have the same subjective bias (or AMAZING hearing) that I do.
>I hope it’s the latter….
>
>bg
>http://fraufraulein.com/billyframe.html
>


August 21, 2008 | 9:42 am

hi

in aswer to answers

@Derrick Giscloux:
>Just a word, my Csound’s csd files sound better in csound than in [csound~].

which would mean it’s not only a question of the oscillators
themselves, but also of the environement in which they run…

@Trond Lossius:
>Here are two factors that might make a difference between programs:
>
>- Is internal processing in the program 32-bit or 64 bit floats? MSP
>is 32 bit.
>- Is some kind of DC filtering, limiter or saturation applied to the
>signals on the way out of the program?

I don’t know about Csound and Reaktor (on NI web page they say "This
product needs a 32-bit compatible environment to operate under 64-bit
versions of Windows XP/Vista."). But if those (CSound, reaktor) are
64, this could explain that…

@Roald Baudoux:
>Most Reaktor ensembles include several effects: chorus, delay,
>distorsion, reverb…
>
>So this might explain the "Reaktor" sound, partly at least. I guess
>you could add those to your MaxMSP patches too.

Well what I am talking about is not a question of reverb, nor of
ready-made instruments – and some of the people who told me about
this or that sonic superiority are knowledgeable enough with DSP that
I belive they are not fooled by a chorus!

******

but the final (or first) question was – when an audio-generating
program runs inside MAX (so NOT super Collider) is its
"audio-quality" dependent of Max or of itself?? How does it work?

many thanks

kasper

Kasper T. Toeplitz
noise, composition, bass, computer

http://www.sleazeArt.com

http://www.myspace.com/sleazeart


August 21, 2008 | 11:24 am

it sounds crazy, but i am convinced that the user interface/ user experience of a piece of software plays some role in how people think it sounds. For instance i immediately felt that my patches sounded somehow better when i switched to Max5.

The test would be to do some "blind" comparisons of the different apps doing the same thing to see if one could tell which was which by sound alone.

oli


August 21, 2008 | 1:54 pm

"it sounds crazy, but i am convinced that the user interface/ user experience of a piece of software plays some role in how people think it sounds. "

oli

don’t go there don’t go there dont go there don’t go there.
< Considering shadow hills preamps. >


August 21, 2008 | 2:49 pm

Quote: oli larkin wrote on Thu, 21 August 2008 05:24
—————————————————-
> it sounds crazy, but i am convinced that the user interface/ user experience of a piece of software plays some role in how people think it sounds. For instance i immediately felt that my patches sounded somehow better when i switched to Max5.
>
> The test would be to do some "blind" comparisons of the different apps doing the same thing to see if one could tell which was which by sound alone.
>
> oli
>
>
—————————————————-

Perhaps it does, but then how do you relate that to the current discussion where ‘people’ prefer the sound of SC or Csound (which have no GUI other than a terminal window and a text editor, at default) to Max or Reaktor.

My opinion, though, is that ‘Max sounds bad’ is another internet-originated meme that has no basis in reality.


August 21, 2008 | 3:30 pm

>Perhaps it does, but then how do you relate that to the current discussion where ‘people’ prefer the sound of SC or Csound (which have no GUI other than a terminal window and a text editor, at default) to Max or Reaktor.

this is why i said user experience… my experience of supercollider is a slick cocoa app and my experience of csound ( a long time ago) was with windows notepad.

I am not saying that this is totally the reason for people claiming a difference in sound quality, but i think it is a factor that is overlooked.

oli


August 21, 2008 | 3:53 pm

I think the best proposal so far was the frame-per-frame comparison
of CSound~ straight into float32 sfrecord~ vs CSound output in a
similar format…

anyone has the time to do this?

pa


August 21, 2008 | 3:57 pm

Sure, I can do this. What Csound .csd to use, though?


August 21, 2008 | 3:57 pm

I am very interested in knowing more about this as well.
I know many reaktor ensembles have built in filtering and
saturation that make them sound better. It would be neat
to run a test on the output of Reaktor and csound outside
Max and the output running through Max.

To do that right one would need to be able to capture the audio
before it went to the dac, to a file. You could then do a spectrum
analysis to see if they really are different. Csound and Max have
file output, Reaktor does not. Ideally it would be nice to have
an audio interface that had the option of file output.

Does any one have a setup that does this?


August 21, 2008 | 4:26 pm

On Aug 20, 2008, at 3:44 PM, Klaas-Jan Govaart wrote:

>
> Quote: Kyred wrote on Thu, 21 August 2008 00:29
> —————————————————-
>> Just a word, my Csound’s csd files sound better in csound than in
>> [csound~].
> —————————————————-
>
> interesting!
>
> could you record to 32 bit float in both max and csound and phase
> align both recordings in a daw to do a null test? maybe even post
> the difference file? i’d be curious to hear what gremlins are there :)

yes this would be a great test and worthy of posting…anyone with
both apps have time to do this?
ideal would be to .zip up three files:
- SC sound file 32b float
- MSP sound file 32b float
- invert->diff sound file 32b float


August 21, 2008 | 4:28 pm

also using something like Risset’s Bell instrument might be a good
generator since I believe it exists in Csound, Max/MSP and
Supercollider


August 21, 2008 | 4:39 pm

I went ahead and used the am.csd in the Csound examples folder in both Max 5.0.4 with the latest csound~ and the csound5gui.exe in the bin folder of the Csound5 installation.

The ‘csound max.wav’ was recorded with sfrecord in mono/44.1/32b float and the ‘csound.wav’ was recorded using the csound5gui.exe built-in recorder in mono/44.1/32b float.

I’ve never done phase aligning/nulling before. Maybe someone else would like to try with these two files:

http://share.ovi.com/channel/cebec.csoundmax


August 21, 2008 | 5:00 pm

I compared the two using Visual Analyzer’s spectrum analyzer and phase analyzer and I could not discern any differences between the two.


August 21, 2008 | 5:43 pm

hi (again)

Thanks for all the answers (i did not expect that many). But now the
dicussion goes towards "is SC (or CS) better or same than max,
sound-wise", which was not my original question (and frankly if I was
able to say that this or that software sounds better – especially in
a live situation, which is the main part of my work – I would be
using it since a long time).

no, the question was " IF such-or-such software sounds "better" (or
just way different) just because of its DSP, or "audio engine", what
happens when this software is embedded in Max ? does it keep its own
"audio engine" characteristics or does "use" the Max "audio-engine"
or DSP way-of-working ?"

I know it is not a very "tech" question, but i don’t even know how to
code. (be it in C or Java or….) – I just use max, used a little bit
of CSound, a minimal amount of Super Collider – and some Reaktor.

Some of you have (partly) answered this question, but most saw it as
"is SC better sounding than max ?". which was not the initial post
(beside SC does not apply here – all vst do, Csound does (via
csound~), and also chuck – never tried it – and probably some
others…)

sorry for this precision

all the best

kasper

Kasper T. Toeplitz
noise, composition, bass, computer

http://www.sleazeArt.com

http://www.myspace.com/sleazeart


August 21, 2008 | 5:55 pm

my completely biased opinion is that a lot of this has to do with how easy it is to add more voices in reaktor or supercollider than it is in MSP.

Of course one can do this with the poly~ object, but it is still much simpler to tell Reaktor to have 5 voices, or to make an array of oscillators in Supercollider with phase offset for each voice.

I still think that Max has tons of advantages over reaktor when it comes to flexibility and over supercollider when it comes to usability.


August 21, 2008 | 6:21 pm

still, I would love it if, like the mxj object and the js object, someone came up with an sc object that allowed you to program supercollider within max(instantiating the object would automatically cause the localhost and internalhost servers to show up with full functionality, etc.).

just a little pipe dream of mine, though, i guess…


August 21, 2008 | 6:37 pm


August 21, 2008 | 7:42 pm

Quote: RabidRaja wrote on Thu, 21 August 2008 11:21
—————————————————-
> still, I would love it if, like the mxj object and the js object, someone came up with an sc object that allowed you to program supercollider within max(instantiating the object would automatically cause the localhost and internalhost servers to show up with full functionality, etc.).
>
> just a little pipe dream of mine, though, i guess…
—————————————————-

You can drive SC with OSC, if you like. Not exactly the same, but handy.

mz


August 21, 2008 | 8:33 pm

On Aug 21, 2008, at 10:00 AM, matt wrote:

> I compared the two using Visual Analyzer’s spectrum analyzer and
> phase analyzer and I could not discern any differences between the
> two.

I used this patch, and could also not find any differences (other than
time alignment):

– Pasted Max Patch, click to expand. –

Chris Muir
cbm@well.com

http://www.xfade.com


August 22, 2008 | 4:39 am

Kasper –

As one who has imbedded a few ‘outside’ languages in max/msp, I doubt
that there is any hard-core DSP reason (with one exception) for a
given language-object to sound better in max/msp than the native
oscillators, etc. that Cycling provides. In rtcmix~ and chuck~, the
computed samples are put into a buffer that is passed back into the
msp environment for additional processing, playing, etc. I suspect
that internally all these languages are doing some kind of floating-
point sample computing, and I doubt that the differences would be
audibly significant.

I think that the main "sounds better" claims are the result from two
factors that James McC. identified in his post that was ref’d in this
thread. The first has to do with certain things (like layering
sounds, adding additional DSP, whatever) being easier to do in some
environments than in others. Designing a physical-model instrument
is easy in RTcmix or ChucK, but fairly tricky (if not almost
impossible) in ‘native’ max/msp. Other operations are much easier in
max/msp (coordinating with video, designing interfaces,
interactivity, etc.); and the fun part of today’s happy computing
world is we get to choose what works best for a particular
situation. Max/msp’s strength isn’t the ease with which very
particular audio parameters can be tweaked — although some can be
– but why try to force it to do this when other, easier options are
available?

The other factor (the one exception I alluded to above) that James
mentioned probably does have an audible impact on the sound: rtcmix~
and chuck~ (and SC3, csound~) have much better mechanisms for
handling many control-rate operations, complex envelopes in
particular. rtcmix~ allows for the dynamic specification of control-
signal updates with several different types of signal interpolation
available. With almost every parameter of a given sound-synthesis or
DSP algorithm ‘envelope-able’, this does make a big difference in how
the result "sounds".

I would be somewhat surprised if there were big differences in a sine
wave, or more complex wave, produced internally by rtcmix~/chuck~/
csound~ or through in/out routing of SC3. But our perception of
‘good sound’ is a lot more than that. And of course I’ve been really
wrong about lots of stuff before…

brad

http://music.columbia.edu/~brad

On Aug 21, 2008, at 1:43 PM, Kasper T Toeplitz wrote:

> hi (again)
>
> Thanks for all the answers (i did not expect that many). But now
> the dicussion goes towards "is SC (or CS) better or same than max,
> sound-wise", which was not my original question (and frankly if I
> was able to say that this or that software sounds better –
> especially in a live situation, which is the main part of my work –
> I would be using it since a long time).
>
> no, the question was " IF such-or-such software sounds "better" (or
> just way different) just because of its DSP, or "audio engine",
> what happens when this software is embedded in Max ? does it keep
> its own "audio engine" characteristics or does "use" the Max "audio-
> engine" or DSP way-of-working ?"
>
> I know it is not a very "tech" question, but i don’t even know how
> to code. (be it in C or Java or….) – I just use max, used a
> little bit of CSound, a minimal amount of Super Collider – and some
> Reaktor.
>
> Some of you have (partly) answered this question, but most saw it
> as "is SC better sounding than max ?". which was not the initial
> post (beside SC does not apply here – all vst do, Csound does (via
> csound~), and also chuck – never tried it – and probably some
> others…)
>
> sorry for this precision
>
> all the best
>
> kasper
> —
> Kasper T. Toeplitz
> noise, composition, bass, computer
> http://www.sleazeArt.com
>
> http://www.myspace.com/sleazeart
>


August 22, 2008 | 4:45 am

I looked into doing this, but it made a lot more sense to use OSC
from max/msp to communicate to/from the SC server. Personally, I’m
not a big fan of this model, but disentangling the code to make a
tighter-coupling between the two languages is not something I really
want to do with my life right now. The SC3 environment was designed
particularly with OSC communication in mind, so it makes sense to use
it. The tricky part comes when you want to get audio to/from SC3
from max/msp, but with a little work it’s not too difficult:

http://www.cycling74.com/story/2007/3/26/145938/572

brad

http://music.columbia.edu/~brad

On Aug 21, 2008, at 2:21 PM, raja wrote:

>
> still, I would love it if, like the mxj object and the js object,
> someone came up with an sc object that allowed you to program
> supercollider within max(instantiating the object would
> automatically cause the localhost and internalhost servers to show
> up with full functionality, etc.).
>
> just a little pipe dream of mine, though, i guess…


August 22, 2008 | 5:22 am

Derrick Giscloux schrieb:
> Just a word, my Csound’s csd files sound better in csound than in [csound~].

Could you just record them digitally and do a bit by bit comparison?
(subtract and listen to the resulting noise…)

The same for Sinan, play a sound file in Max, play it in Logic, and do a
bit by bit comparison…

If there is a difference, it should be possible to find out the reason,
but I have no idea why there should be a difference…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 22, 2008 | 7:41 am

matt schrieb:
> Perhaps it does, but then how do you relate that to the current
> discussion where ‘people’ prefer the sound of SC or Csound (which
> have no GUI other than a terminal window and a text editor, at
> default) to Max or Reaktor.

If you love your own environment, you need a reason not to switch… ;-)

No, I am certain, that the tool itself affects the way you create. Try
to work with a UPIC and you’ll immediately pull out a different music
than with any other tool. Maybe its just a matter of taste. Its very
hard to compare, I am not at all concerned about "sound quality" though,
I am concerned about structure, also structures within sound.
You could only compare the same things, thus the bit by bit comparison
of the same only can tell, or we start to talk about taste…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 22, 2008 | 7:51 am

On Aug 21, 2008, at 1:33 PM, Chris Muir wrote:
> I used this patch, and could also not find any differences (other
> than time alignment):

I spoke too soon. There are tiny differences in about half the samples
of the csound examples.

Here’s a revised patch that shows the errors better. The errors are
tiny enough that I had to increase the display resolution of the
number boxes involved. Also, amplifying the differences enough to hear
them is left as an excersize to the user (be careful, a lot of gain
will be required)

– Pasted Max Patch, click to expand. –

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 22, 2008 | 8:00 am

Quote: mzed wrote on Thu, 21 August 2008 13:42
—————————————————-
>
> You can drive SC with OSC, if you like. Not exactly the same, but handy.
>
> mz
>
—————————————————-

Yes, indeed, as Klipp AV (Fredrik Olafsson and Nick Collins) have proven the benefits thereof, I am truly impressed, but I really wish for some kind of hard-coded symbiosis. But you are right, this is where I plan to go… eventually.


August 22, 2008 | 8:09 am

I’m pretty sure that there is (or was) a clause in the SC license which prohibited its use as a library within some other programming context. A "don’t make a SC object for Max" clause, if you will. Maybe that’s changed, but I doubt it.

jb


August 22, 2008 | 8:12 am

Ah, I C, Jeremy, that would explain why I stick to Max alone so devotedly… well… that and the new presentation-mode-opacity-level-ass-kickin-interface-design possibilities…


August 22, 2008 | 8:28 am

Quote: Jeremy Bernstein wrote on Fri, 22 August 2008 01:09
—————————————————-
> I’m pretty sure that there is (or was) a clause in the SC license which prohibited its use as a library within some other programming context. A "don’t make a SC object for Max" clause, if you will. Maybe that’s changed, but I doubt it.
—————————————————-

These days, it’s standard GPL. Skimming, I don’t see anything that would preclude an object, other than a lot of hard work.

-C


August 22, 2008 | 9:08 am

Jeremy,

you are right.

James Mc Cartney talked about this saying it’s impossible.

Yes, I’d like very much a similar external !

All the best


Alessandro Fogar

http://www.fogar.it

2008/8/22, Jeremy Bernstein :
>
> I’m pretty sure that there is (or was) a clause in the SC license which prohibited its use as a library within some other programming context. A "don’t make a SC object for Max" clause, if you will. Maybe that’s changed, but I doubt it.
>
>
> jb
>
>


August 22, 2008 | 9:56 am

On 22 Aug 2008, at 10:28, Chris Muir wrote:
>
> Quote: Jeremy Bernstein wrote on Fri, 22 August 2008 01:09
> —————————————————-
>> I’m pretty sure that there is (or was) a clause in the SC license
>> which prohibited its use as a library within some other
>> programming context. A "don’t make a SC object for Max" clause, if
>> you will. Maybe that’s changed, but I doubt it.
> —————————————————-
>
> These days, it’s standard GPL. Skimming, I don’t see anything that
> would preclude an object, other than a lot of hard work.

some time ago i asked something along these lines on the sc list and
was told that it’s a no go.
obviously it’s a violation against the GPL to link GPL’d code to
proprietary software (and that is what you do, when you write a max
external).

i wonder how brad garton is handling this with e.g. chuck~, since
chuck is under GPL, too.
probably nobody cares about it.

vb


August 22, 2008 | 11:07 am

As far as I understand it, and I’m not an expert, creating an external for Max is different than incorporating GPL code into a proprietary application. An external is more like a plug-in; as long as the source for the plug-in (and any changes to the incorporated GPL code) remains available, it should be ok.

jb


August 22, 2008 | 11:28 am

On 2008 Aug 22, at 6:07 AM, Jeremy Bernstein wrote:

> As far as I understand it, and I’m not an expert, creating an
> external for Max is different than incorporating GPL code into a
> proprietary application. An external is more like a plug-in; as long
> as the source for the plug-in (and any changes to the incorporated
> GPL code) remains available, it should be ok.

This is why it is not:

http://electrotap.net/blog/show/192

best,
Tim


August 22, 2008 | 12:16 pm

Thanks for the clarification!

jb


August 22, 2008 | 12:20 pm

This is my ‘working assumption’ also.

brad

http://music.columbia.edu/~brad

On Aug 22, 2008, at 7:07 AM, Jeremy Bernstein wrote:

>
> As far as I understand it, and I’m not an expert, creating an
> external for Max is different than incorporating GPL code into a
> proprietary application. An external is more like a plug-in; as
> long as the source for the plug-in (and any changes to the
> incorporated GPL code) remains available, it should be ok.
>
> jb


August 22, 2008 | 12:52 pm

> This is my ‘working assumption’ also.

poor you, In the light of McCarthy’s emails, all the chuck and RTcmix
lawyers will come and get you, take all your money (because you
obviously became rich with this ;-)

pa


August 22, 2008 | 1:18 pm

> I spoke too soon. There are tiny differences in about half the
> samples of the csound examples.

Interesting results… Once the files are aligned (523 frames apart)
I’ve got some differences (+/- 0.000001). Now, would that be
significant in real-life… (this is a strange test done with an LFO)
but it shows that there is a difference in the 2 files. Maybe with 2
passes in each program, to compare them as well to see if we get such
errors, would make that test more reliable.

I presume there would be a couple of interesting tests to do, more on
the subjective side:
– simple additive synthesis w/o randomisation (Risset’s bells?)
– simple subtractive synthesis
– 24-bit test file playback at unity gain

I have not got time for that, but I can maybe put a postgrad on the
case after ICMC… because I’d be happy to see the result!

pa


August 22, 2008 | 2:07 pm

Quote: Chris Muir wrote on Fri, 22 August 2008 01:51
—————————————————-
>
> On Aug 21, 2008, at 1:33 PM, Chris Muir wrote:
> > I used this patch, and could also not find any differences (other
> > than time alignment):
>
>
> I spoke too soon. There are tiny differences in about half the samples
> of the csound examples.
>
> Here’s a revised patch that shows the errors better. The errors are
> tiny enough that I had to increase the display resolution of the
> number boxes involved. Also, amplifying the differences enough to hear
> them is left as an excersize to the user (be careful, a lot of gain
> will be required)
>
> ———–end_max5_patcher———–
>
>
> -C
>
> Chris Muir
> cbm@well.com
> http://www.xfade.com
>

—————————————————-

How do I figure out the offset needed to time-align the two samples?

I’ve just uploaded two more. These were done with a risset glissandi.

http://share.ovi.com/channel/cebec.csoundmax

It’s the two ‘*’ ones…

This post seems to contain a broken pasted patch. This can happen if you don’t copy the entire "———-begin_max5_patcher———-" or "———–end_max5_patcher———–" for each and every patch you paste; perhaps you missed a preceding or trailing "-" when you copied the patch? Please notify the Cycling 74 web team if you think it is a bug.


August 22, 2008 | 2:07 pm

On Aug 22, 2008, at 8:52 AM, Pierre Alexandre Tremblay wrote:

>> This is my ‘working assumption’ also.
>
> poor you, In the light of McCarthy’s emails, all the chuck and
> RTcmix lawyers will come and get you, take all your money (because
> you obviously became rich with this ;-)

You betcha! I’ve already launched a lawsuit against myself regarding
RTcmix, that way I’ll win no matter what the outcome. Plus it’s the
American Way.

brad

http://music.columbia.edu/~brad


August 22, 2008 | 3:11 pm

> How do I figure out the offset needed to time-align the two samples?

I just used the following patch, (cynical, it is in max, Nuendo was
not installed in our new studios…) and when I got the first 3
samples aligned, bingo! It is underdocumented, but you will figure it
out ;-)

pa

max v2;
#N vpatcher 488 191 1170 678;
#P window setfont "Sans Serif" 9.;
#P user number~ 20 440 123 455 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P window linecount 1;
#P newex 49 349 26 196617 +=~;
#P newex 187 256 43 196617 +~ 523;
#P newex 322 206 29 196617 sig~;
#P number 321 188 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 86 377 65 196617 *~ 100000.;
#P message 254 174 29 196617 stop;
#P user number~ 78 276 181 291 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P number 162 205 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 238 175 15 0;
#P newex 186 227 147 196617 selector~ 3;
#P newex 238 192 40 196617 count~;
#P newex 97 411 45 196617 poke~ C;
#P newex 237 73 101 196617 buffer~ C 120000 2;
#P number 178 96 133 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 178 113 55 196617 $1 10000;
#P number 73 169 81 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 178 131 40 196617 line;
#P user number~ 334 291 437 306 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P user number~ 331 308 434 323 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P newex 178 164 29 196617 sig~;
#P user ezdac~ 413 84 457 117 0;
#P user number~ 179 375 282 390 9 3 3 2 0. 0. 0 0. 250 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P newex 115 341 27 196617 -~;
#P newex 246 250 58 196617 index~ B 1;
#P newex 189 277 59 196617 index~ A 1;
#P message 152 60 43 196617 replace;
#P newex 152 77 76 196617 buffer~ B -1 2;
#P message 68 60 43 196617 replace;
#P newex 68 77 77 196617 buffer~ A -1 2;
#P connect 28 0 29 0;
#P connect 20 0 28 0;
#P connect 6 0 28 0;
#P connect 1 0 0 0;
#P connect 12 0 13 0;
#P connect 19 0 22 0;
#P connect 6 0 24 0;
#P connect 24 0 17 0;
#P connect 19 0 17 1;
#P connect 4 0 6 0;
#P connect 5 0 6 1;
#P connect 3 0 2 0;
#P connect 15 0 14 0;
#P connect 14 0 12 0;
#P connect 12 0 9 0;
#P connect 6 0 7 0;
#P connect 21 0 19 0;
#P connect 19 0 27 0;
#P connect 27 0 4 0;
#P connect 9 0 19 1;
#P connect 20 0 18 0;
#P connect 23 0 18 0;
#P connect 19 0 5 0;
#P connect 18 0 19 2;
#P connect 26 0 19 3;
#P connect 25 0 26 0;
#P connect 5 0 10 0;
#P connect 4 0 11 0;
#P pop;


August 22, 2008 | 3:21 pm

>
> No, I am certain, that the tool itself affects the way you create.

I second this. One of the great things about Max is that it
facilitates happy mishaps. It’s very easy to accidentally misconnect
something, and there’s a low penalty for trying things out, and this
is a big advantage over other audio programming languages which
require more explicit planning. There are always tradeoffs, of
course, but Max’s connectivity to other languages certainly helps to
smooth this out.

Peter McCulloch


August 22, 2008 | 5:19 pm

On Aug 22, 2008, at 4:28 AM, Timothy Place wrote:
> This is why it is not:
> http://electrotap.net/blog/show/192

Frackin’ religious zealots.

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 22, 2008 | 5:32 pm

On Aug 22, 2008, at 7:07 AM, matt wrote:

> How do I figure out the offset needed to time-align the two samples?

I scrub the time-aligned offset numbers to find the first sample in
both files.

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 22, 2008 | 6:09 pm

Quote: Timothy Place wrote on Fri, 22 August 2008 12:28
—————————————————-
> On 2008 Aug 22, at 6:07 AM, Jeremy Bernstein wrote:
>
> > As far as I understand it, and I’m not an expert, creating an
> > external for Max is different than incorporating GPL code into a
> > proprietary application. An external is more like a plug-in; as long
> > as the source for the plug-in (and any changes to the incorporated
> > GPL code) remains available, it should be ok.
>
> This is why it is not:
> http://electrotap.net/blog/show/192
>
> best,
> Tim
>
>

That’s why I use the MIT license on LyonPotpourri and FFTease:

http://en.wikipedia.org/wiki/MIT_License

Eric


August 22, 2008 | 6:12 pm

Quote: tremblap@gmail.com wrote on Fri, 22 August 2008 07:18
—————————————————-
> > I spoke too soon. There are tiny differences in about half the
> > samples of the csound examples.
>
> Interesting results… Once the files are aligned (523 frames apart)
> I’ve got some differences (+/- 0.000001).

From http://www.davixology.com/csound~_manual.html#inlets_outlets

By default, audio data is scaled between csound~ and Csound. In MaxMSP, 0dB == 1.0. In Csound, 0dB == 32768.0 (unless the user has changed the 0dB level with the 0dbfs opcode). To bypass scaling, add the "noscale" flag to csound~’s argument list.

What’s the situation here with respect to these examples? I wouldn’t be entirely surprised if one or two io multiplies were creating this difference. I may be way off here, and obviously csound must be scaling the file when it outputs, but I’d be interested to know. I don’t believe anything different will be happening in the audio dsp EXCEPT at the output stage (ie. transfer to max and sound file recording in both cases..)

32 bit float precision is equivalent to around 7 decimal places so as far as I can figure out 0.000001 in relation to a signal of around 1, is a error in one of the the last 2 bits of the significand (ie. dropping off the end of what can be represented) and something like -120 dB of error – for a smaller signal the error would be higher and relate to a more significant bit / bits – bear in mind the numberboxes are rounding too…. the question is not how big the error as an actual value, but how big in relation to the signal….


August 22, 2008 | 6:25 pm

Quote: AlexHarker wrote on Fri, 22 August 2008 12:12
—————————————————-
> Quote: tremblap@gmail.com wrote on Fri, 22 August 2008 07:18
> —————————————————-
> > > I spoke too soon. There are tiny differences in about half the
> > > samples of the csound examples.
> >
> > Interesting results… Once the files are aligned (523 frames apart)
> > I’ve got some differences (+/- 0.000001).
>
>
> From http://www.davixology.com/csound~_manual.html#inlets_outlets
>
> By default, audio data is scaled between csound~ and Csound. In MaxMSP, 0dB == 1.0. In Csound, 0dB == 32768.0 (unless the user has changed the 0dB level with the 0dbfs opcode). To bypass scaling, add the "noscale" flag to csound~’s argument list.
>
> What’s the situation here with respect to these examples? I wouldn’t be entirely surprised if one or two io multiplies were creating this difference. I may be way off here, and obviously csound must be scaling the file when it outputs, but I’d be interested to know. I don’t believe anything different will be happening in the audio dsp EXCEPT at the output stage (ie. transfer to max and sound file recording in both cases..)
>
> 32 bit float precision is equivalent to around 7 decimal places so as far as I can figure out 0.000001 in relation to a signal of around 1, is a error in one of the the last 2 bits of the significand (ie. dropping off the end of what can be represented) and something like -120 dB of error – for a smaller signal the error would be higher and relate to a more significant bit / bits – bear in mind the numberboxes are rounding too…. the question is not how big the error as an actual value, but how big in relation to the signal….
—————————————————-

Hi,
I don’t know if this caused the differences but I’m using Csound5 Doubles (which uses 64-bit float for internal calculations) as the API in both examples.
Also, here is the .orc and .sco. I did not use the noscale argument with the csound~ external. I went right from the object to an sfrecord~ with no gain or other adjustments.

.orc
instr 1
k2 oscil 10000, 1, 1
a1 oscil 10000+k2, 120, 1
chano a1, 1
out a1
endin

.sco

f1 0 16384 10 1
; run for 30 secs
i1 0 30


August 22, 2008 | 7:00 pm

On Aug 22, 2008, at 7:07 AM, matt wrote:

> I’ve just uploaded two more. These were done with a risset glissandi.

It would be great if moving forward, the files had more unique names.

The csound version has one giant sample at the beginning of the file
(index of 1).

The magic offset number for these files seems to be 95, btw.

The resultant differences in this pair is interesting. The differences
get larger as the file goes on. I still have to multiply by about
15000 to be able to hear it.

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 22, 2008 | 7:15 pm

Are you using the same k-rate for both Csound5 and csound~? Unless kr == sr, this orc will create zipper noise through the krate lfo k2. The sound quality of this noise will depend on the krate (and also the sr). It might be safer to test this orc with everything running at the audio rate. I’d also recommend using a larger table size if you are pursuing audio cleanliness.

Eric

> .orc
> instr 1
> k2 oscil 10000, 1, 1
> a1 oscil 10000+k2, 120, 1
> chano a1, 1
> out a1
> endin
>
> .sco
>
> f1 0 16384 10 1
> ; run for 30 secs
> i1 0 30
>
—————————————————-


August 22, 2008 | 7:18 pm

Yes, I used the same krate in both. Also, I thought 16384 was a pretty big table size. What would you suggest, instead? I would normally use a krate = srate but I didn’t for this test. I can run it again.


August 22, 2008 | 7:30 pm

Ok, I did the test again with am.csd.

I specified kr == sr and removed the ‘options’ that were originally in the .csd header.

The old files are gone and the new ones are up:

http://share.ovi.com/channel/cebec.csoundmax


August 22, 2008 | 7:36 pm

Quote: cebec wrote on Fri, 22 August 2008 20:18
—————————————————-
> Yes, I used the same krate in both. Also, I thought 16384 was a pretty big table size. What would you suggest, instead? I would normally use a krate = srate but I didn’t for this test. I can run it again.
—————————————————-

For rendering 16 bit audio I would use 65536. You can also improve your signal/noise ratio by using oscili instead of oscil. In real life, I like some grit in my oscillators, so I’d probably use much lower values in a performance situation.

Eric



August 23, 2008 | 2:04 am

Quote: cebec wrote on Fri, 22 August 2008 12:25
—————————————————-
> Hi,
> I don’t know if this caused the differences but I’m using Csound5 Doubles (which uses 64-bit float for internal calculations) as the API in both examples.
> Also, here is the .orc and .sco. I did not use the noscale argument with the csound~ external. I went right from the object to an sfrecord~ with no gain or other adjustments.
>

It’s hard to say without knowing more about how Csound / csound~ work exactly (not my area) – However, I’d expect that given compilation from the same csound source code for the program and the object and the same options for both (eg. 64bit), any discrepancies between the two in this test either relate to the way csound~ interfaces with Max (any post-processing), or the exact nature of the recording routines in either package.

When I posted earlier I failed to recognise that 32768.0 is a power of two and hence scaling by its reciprocal will not loose precision in a floating point calculation, as the signicand won’t change, only the exponent. Therefore this shouldn’t be the issue here.

Regards

Alex


August 23, 2008 | 4:55 pm

Quote: cebec wrote on Fri, 22 August 2008 20:25
—————————————————-
> I don’t know if this caused the differences but I’m using Csound5 Doubles (which uses 64-bit float for internal calculations) as the API in both examples.
—————————————————-

It depends a lot what you’re doing with the numbers.

32-bit fp means a 24-bit mantissa, which is nominally 144dB S/N. This tends to be beyond the range of audibility.

However, precision artifacts can (and do!) accumulate. In general, the more involved the calculations, the bigger the artifacts.

In the example .orc file, I wouldn’t expect the differences between single and double precision to amount to more than the one or two LSBs of the 32-bit value (ie, the +/-0.000001 of your decimal representation). If you’ve got 16-bit converters, those differences won’t even make it to your DACs, let alone your ears!

Have the resultant soundfiles been uploaded anyplace so that people can do audio A/Bs? In *all* the ‘quality’ threads, there’s been a lot of subjective "sounds better/thicker/fuller/…" comments, but I’ve never been _entirely_ sure what people were hearing. Also, the sources for the soundfiles would be useful. It’s awful easy to be comparing apples with oranges.


August 23, 2008 | 5:30 pm

Quote: Peter Castine wrote on Sat, 23 August 2008 10:55
—————————————————-
> Quote: cebec wrote on Fri, 22 August 2008 20:25
> —————————————————-
> > I don’t know if this caused the differences but I’m using Csound5 Doubles (which uses 64-bit float for internal calculations) as the API in both examples.
> —————————————————-
>
> It depends a lot what you’re doing with the numbers.
>
> 32-bit fp means a 24-bit mantissa, which is nominally 144dB S/N. This tends to be beyond the range of audibility.
>
> However, precision artifacts can (and do!) accumulate. In general, the more involved the calculations, the bigger the artifacts.
>
> In the example .orc file, I wouldn’t expect the differences between single and double precision to amount to more than the one or two LSBs of the 32-bit value (ie, the +/-0.000001 of your decimal representation). If you’ve got 16-bit converters, those differences won’t even make it to your DACs, let alone your ears!
>
> Have the resultant soundfiles been uploaded anyplace so that people can do audio A/Bs? In *all* the ‘quality’ threads, there’s been a lot of subjective "sounds better/thicker/fuller/…" comments, but I’ve never been _entirely_ sure what people were hearing. Also, the sources for the soundfiles would be useful. It’s awful easy to be comparing apples with oranges.
—————————————————-

Yes, these are the resultant sound files. I’m using 24-bit DACs. The purpose of this test was to determine if there are any audible or absolute differences between the output of an embedded language external and it’s unembedded counterpart. I’ll upload the test files later.

http://share.ovi.com/channel/cebec.csoundmax


August 28, 2008 | 8:29 am

you can already use OSC for that. Much easier…

P

On 21 Aug 2008, at 19:21, raja wrote:

>
> still, I would love it if, like the mxj object and the js object,
> someone came up with an sc object that allowed you to program
> supercollider within max(instantiating the object would
> automatically cause the localhost and internalhost servers to show
> up with full functionality, etc.).
>
> just a little pipe dream of mine, though, i guess…



f.e
August 28, 2008 | 10:06 am

Hi Kasp,

From my experience, sound "quality" of VSTis remains the same in MSP as
if they were used as standalone. This is not the case when compared to
different DAWs. For example, FL Studio has the worst sounding summing
mixer on earth, while people are still fighting to know if Logic, PT or
Nuendo sounds better than each other. A VSTi in MSP will always sounds
better than in FL Studio. In the same matter, a lot of people say Reason
rocks while a lot of other people really dislike it.

I now mostly use rtcmix~ as my main sound generator in MSP because it
*really* sounds amazing compared to MSP generated sound. It means two
things : sound "quality" is (seems to be to me) independant from the MSP
host, and it’ll take a lot of hard work to generate the same sound
"quality" with MSP patching (but i’m sure it’s possible, why not ? maybe
the rtcmix routines are just smarter than what i can figure to do in my
MSP patch…).

Still about rtcmix~, a simple rtcmix noise is a wet dream while compared
to a vanilla noise~ in MSP. Just try the NOISE.sco example and you’ll
see what i mean. Add a few rtcmix reverb code, some rtcmix spat and
you’re the king of the world.

A little something about reaktor : someone said reaktor ensembles may
have filters and saturation that make them sound better and it should be
right. But even if i just build a simple single sine wave in reaktor
without any other fancy stuff, it’ll still sound "huger" than a cycle~
in MSP. It may mean that reaktor generators are antialiased or
something, maybe duplicated and phased, or even slightly detuned, like
it is in a Nord Lead (12 x oscillators for one "generator") or what you
can do with a Virus to fatten the sound using voices in unisson mode.

f.e

f.e chanfrault | aka | personal computer music
>>>>>>> http://www.personal-computer-music.com
>>>>>>> | film soundtracks, sound art, music |


August 28, 2008 | 11:33 am

Quote: f.e wrote on Thu, 28 August 2008 04:06
—————————————————-
>
> I now mostly use rtcmix~ as my main sound generator in MSP because it
> *really* sounds amazing compared to MSP generated sound. It means two
> things : sound "quality" is (seems to be to me) independant from the MSP
> host, and it’ll take a lot of hard work to generate the same sound
> "quality" with MSP patching (but i’m sure it’s possible, why not ? maybe
> the rtcmix routines are just smarter than what i can figure to do in my
> MSP patch…).
>
> Still about rtcmix~, a simple rtcmix noise is a wet dream while compared
> to a vanilla noise~ in MSP. Just try the NOISE.sco example and you’ll
> see what i mean. Add a few rtcmix reverb code, some rtcmix spat and
> you’re the king of the world.
>
—————————————————-

Would you mind patching this as an example and posting it? Also, it seems rtcmix~ will not work with Max 5…



kjg
August 28, 2008 | 12:02 pm

Quote: cebec wrote on Thu, 28 August 2008 13:33
—————————————————-
> Would you mind patching this as an example and posting it? Also, it seems rtcmix~ will not work with Max 5…
—————————————————-

4.6.3 is still available.


August 28, 2008 | 12:05 pm

Quote: kjg wrote on Thu, 28 August 2008 06:02
—————————————————-
> Quote: cebec wrote on Thu, 28 August 2008 13:33
> —————————————————-
> > Would you mind patching this as an example and posting it? Also, it seems rtcmix~ will not work with Max 5…
> —————————————————-
>
> 4.6.3 is still available.
>
—————————————————-

Yes, and I have it on both of my music computers. I just prefer to work in Max 5 these days. Still, I want to hear the difference between rtcmix~ noise and Max noise~.


August 28, 2008 | 12:08 pm

Quote: kjg wrote on Thu, 28 August 2008 06:02
—————————————————-
> Quote: cebec wrote on Thu, 28 August 2008 13:33
> —————————————————-
> > Would you mind patching this as an example and posting it? Also, it seems rtcmix~ will not work with Max 5…
> —————————————————-
>
> 4.6.3 is still available.
>
—————————————————-

Yes, and I have it on both of my music computers. I just prefer to work in Max 5 these days. Still, I want to hear the difference between rtcmix~ noise and Max noise~.



kjg
August 28, 2008 | 1:33 pm

different noise algorithms will sound different anyway.
even if they are all white.


August 28, 2008 | 2:11 pm

So what is the verdict (I know this wasn’t the initial question but
still good to know). Are csound or SC3 superior to msp in terms of
sound quality, or is what I hear (and feel from my own experience)
based on psychological mumbo jumbo? Is there an objective test to
prove this? Furthermore, what is the reason if this is the case??

I think these need to be answered before going into the difference
between csound~ and CSound standalone.

Best
P

On 28 Aug 2008, at 13:08, matt wrote:

>
> Quote: kjg wrote on Thu, 28 August 2008 06:02
> —————————————————-
>> Quote: cebec wrote on Thu, 28 August 2008 13:33
>> —————————————————-
>>> Would you mind patching this as an example and posting it? Also,
>>> it seems rtcmix~ will not work with Max 5…
>> —————————————————-
>>
>> 4.6.3 is still available.
>>
> —————————————————-
>
> Yes, and I have it on both of my music computers. I just prefer to
> work in Max 5 these days. Still, I want to hear the difference
> between rtcmix~ noise and Max noise~.
> –
> http://cebecvssimulacreant.blogspot.com/
> http://www.virb.com/cebec


August 28, 2008 | 2:15 pm

Quote: peimankhosravi@gmail.com wrote on Thu, 28 August 2008 08:11
—————————————————-
> So what is the verdict (I know this wasn’t the initial question but
> still good to know). Are csound or SC3 superior to msp in terms of
> sound quality, or is what I hear (and feel from my own experience)
> based on psychological mumbo jumbo? Is there an objective test to
> prove this? Furthermore, what is the reason if this is the case??
>
> I think these need to be answered before going into the difference
> between csound~ and CSound standalone.
>
> Best
> P
>
> On 28 Aug 2008, at 13:08, matt wrote:
>

Well, I don’t know if we’re ever going to settle that question. I would say ‘follow, but don’t necessarily trust, your ears’.

However, the original point of this thread, I think, was to determine if there were any differences in the output of an embedded language and the language on its own.



kjg
August 28, 2008 | 3:26 pm

Quote: cebec wrote on Thu, 28 August 2008 16:15
> However, the original point of this thread, I think, was to determine if there were any differences in the output of an embedded language and the language on its own.
—————————————————-

Exactly, that was what Kasper started the thread for. I think we can conclude that difference between native and embedded are negligible. (and insignificant, too! :P)

I don’t think you can conclude anything on which languages sounds better generally (only for specific applications), since you use different apps/languages in different ways and for different purposes, and they use different DSP algorithms. Of course they’ll sound different as a result. An analog SSL E won’t sound like a digital Neve Capricorn. But both are great tools, and have their uses.

What is the best way to get from A to B? A car or a motorbike? It depends, doesn’t it?

regards,
kjg


August 28, 2008 | 9:45 pm

Quote: kjg wrote on Thu, 28 August 2008 15:33
—————————————————-
> different noise algorithms will sound different anyway.
> even if they are all white.
—————————————————-

There’s ‘white’ and then there’s white.

FWIW: Supercollider and lp.shhh~ (Litter Power) use the same core algorithm for generating noise, the Tausworthe 88 algorithm.

DDZ wrote to the list, a very long time ago, that Max/MSP used the RNG algorithm from Numerical Recipes. This is a simple 32-bit Linear Congruence algorithm (with problematic parameters). I don’t know if this has changed for Max 5.

I recently look at Csound to see that the default RNG used for its noise is a 16-bit (!) Linear Congruence RNG (it has an audible cycle every 0.74" at 44kHz). Csound has an alternate noise algorithm that is 31-bit Park-Miller RNG. It’s slower and, worse, also has problematic parameters.

BTW, you can emulate the last three noise algorithms with lp.lll~.


August 28, 2008 | 10:11 pm

Yes I understand your points. But there are some basic DSP processes
that one expects any language to be capable of achieving, and I’m
sure you would agree that the resulting sound quality is crucial. So
do you need to use an external and/or make your own oscillator or
filer in msp to get a sound quality equal to a supercollider ugen or
csound opcode? Someone also mentioned earlier that fft processes
sound nowhere as good in msp as they do in csound. I have
experimented with msp fft stuff and have concluded that the native
fft sound quality is just not good enough in msp to be usable for me.
I am sure there are ways to smooth the result but I am afraid I don’t
know the math and I don’t believe it should be necessary with a
higher level language. I am not saying that maxmsp is not capable, I
use it of course but mainly for the control capabilities of max and
the large array of externals available rather than msp’s native
objects. Personal taste and aesthetics apart, surely there is a more
or less objective level of sound quality? I’m not even thinking about
compositional processes but basic DSP at which msp should ideally
excel, the question is does it?

Best
Peiman

On 28 Aug 2008, at 16:27, Klaas-Jan Govaart wrote:

>
> Quote: cebec wrote on Thu, 28 August 2008 16:15
>> However, the original point of this thread, I think, was to
>> determine if there were any differences in the output of an
>> embedded language and the language on its own.
> —————————————————-
>
> Exactly, that was what Kasper started the thread for. I think we
> can conclude that difference between native and embedded are
> negligible. (and insignificant, too! :P)
>
> I don’t think you can conclude anything on which languages sounds
> better generally (only for specific applications), since you use
> different apps/languages in different ways and for different
> purposes, and they use different DSP algorithms. Of course they’ll
> sound different as a result. An analog SSL E won’t sound like a
> digital Neve Capricorn. But both are great tools, and have their uses.
>
> What is the best way to get from A to B? A car or a motorbike? It
> depends, doesn’t it?
>
> regards,
> kjg
>
>
>
>


August 28, 2008 | 10:27 pm

On Aug 28, 2008, at 7:33 AM, matt wrote:

> it seems rtcmix~ will not work with Max 5…

Just an update — both rtcmix~ and chuck~ will work in max 5, but you
can’t open and edit the scripting buffers directly on the object.
You can load/save the buffers to/from disk, and patches will save
buffers with the imbedded scripts properly. But I’ll need to see the
new SDK before I can fix that problem. This is true, however, only
for OSX. I think the windows rtcmix~ is totally broken under max 5
right now; again SDK is needed.

There is a minor problem running these with OSX 10.5.x, but I believe
I found the bug today (one of my students was nice enough to let me
hack around on his 10.5.4 machine for an hour this afternoon). I
need to do a little more testing/debugging, but that will probably
have to wait until I (finally!) move from 10.4-land to Leopardville
on my own machine. Maybe in the next week — kind of dumb to do it
right when the term starts, but what the heck.

maxlispj seems to run fine with everything so far, yay. One more
thing — Anthony Palumbo sent me some sample code that may allow me
to get chuck~ running for windows soon. Thanks Anthony!

brad

http://music.columbia.edu/~brad


August 28, 2008 | 10:54 pm

Thanks for the update, Brad! Yes, I was testing rtcmix~ on my Windows XP machine and it’s definitely ‘broken’. Great news about chuck~ making it to Windows, too. I do most of my work in Leopard but I use Windows often enough for this to be an exciting prospect.


August 29, 2008 | 11:02 am

earlier Peter Castine wrote:

> DDZ wrote to the list, a very long time ago, that Max/MSP used the RNG algorithm from Numerical Recipes. This is a simple 32-bit Linear Congruence algorithm (with problematic parameters). I don’t know if this has changed for Max 5.

I don’t know about this either, but at least the Max 5 noise~ object ‘randomly’ or at least differently seeds itself for multiple instances, so you can have more than one white noise source with different values – this wasn’t the cae in Max 4.6, which makes it a whole lot more useful.

Earlier Peiman khosravi wrote:

>Someone also mentioned earlier that fft processes
> sound nowhere as good in msp as they do in csound. I have
> experimented with msp fft stuff and have concluded that the native
> fft sound quality is just not good enough in msp to be usable for me.

I work extensively with fft processing both in max natively and using custom written externals (which in some cases use other fft libraries and are essentially using max/msp simply for file playback/gui/hosting). I don’t know csound, but unless it does a 64bit fft (possible) I don’t believe the fft accuracy should be immediately noticeably different. It is certainly possible to code high quality fft processing in max/msp even if it is not easy….

There are other difficulties resulting from the problems of doing fft processing in max/msp due to the signal model (which doesn’t work well for frame based representations). If you wanted to post
sound and code comparing the same processing in max / csound I would however be interested in the results and the reasons for any differences in quality.

> I am sure there are ways to smooth the result but I am afraid I don’t
> know the math and I don’t believe it should be necessary with a
> higher level language.

Max/msp is a higher level language than C or java perhaps, but I believe it is a common misconception that it is a higher level language than other audio text-based programming languages. I would argue that despite its easy to grasp graphical interface, it is actually a lower level language than supercollider (for instance) in which individual ugens tend to provide higher level functionality (some examples – built in granular synthesis ugens – rather than hand rolled poly~ solutions – a rich set of filters with internal coefficient calculations, rather than a smaller set in max, leaving everything else to the user with a biquad – the need in max/msp to drive play~ with a line object, rather than having this functionality grouped into one). The difficulty of implementing some types of processing in max/msp is one of the reasons I believe that myths of differences in sound quality exist…

Regards,

Alex


August 29, 2008 | 11:42 am

Hi Alex,

Csound can do 64bit processing with a double build (which is what I’m
using at the moment). However, even with the 32bit version fft
processing sounds way better in csound. You get more fft artefacts in
max when using the fft objects than in csound and the accuracy is
very noticable when it comes to more complex processes (e.g.
filtering, masking, cross synthesis). I will be more than happy to
post some examples. Perhaps we can do a little comparison here on the
list (I would love to know this for sure). Choose a sample from the
max examples folder and do some simple fft processing on it like bin
shifting and scaling. Then upload the results. I’ll happily do the
csound example but someone who knows more about fft in max should
make the max examples (with patches using native objects only).

I agree that max is certainly lower level than csound, but that’s not
to say that you can’t make things from scratch in csound if you want
to go that way. For sure fft instruments are way way easier to
implement in supercollider and csound due to the use of signal model
in max that you mentioned. The problem is that the graphic interface
gets on the way of designing complex DSP in max, so if I wanted to
code a filter from scratch (if I knew the math in the first place)
then I would much rather do it in C or C++ and perhaps use some third
party DSP libraries. The same goes for fft, which in maxmsp is more
hassle than it’s worth it, considering that the resulting quality is
not superior…

Best
Peiman

On 29 Aug 2008, at 12:02, Alex Harker wrote:

>
> earlier Peter Castine wrote:
>
>> DDZ wrote to the list, a very long time ago, that Max/MSP used the
>> RNG algorithm from Numerical Recipes. This is a simple 32-bit
>> Linear Congruence algorithm (with problematic parameters). I don’t
>> know if this has changed for Max 5.
>
> I don’t know about this either, but at least the Max 5 noise~
> object ‘randomly’ or at least differently seeds itself for multiple
> instances, so you can have more than one white noise source with
> different values – this wasn’t the cae in Max 4.6, which makes it a
> whole lot more useful.
>
> Earlier Peiman khosravi wrote:
>
>> Someone also mentioned earlier that fft processes
>> sound nowhere as good in msp as they do in csound. I have
>> experimented with msp fft stuff and have concluded that the native
>> fft sound quality is just not good enough in msp to be usable for me.
>
> I work extensively with fft processing both in max natively and
> using custom written externals (which in some cases use other fft
> libraries and are essentially using max/msp simply for file
> playback/gui/hosting). I don’t know csound, but unless it does a
> 64bit fft (possible) I don’t believe the fft accuracy should be
> immediately noticeably different. It is certainly possible to code
> high quality fft processing in max/msp even if it is not easy….
>
> There are other difficulties resulting from the problems of doing
> fft processing in max/msp due to the signal model (which doesn’t
> work well for frame based representations). If you wanted to post
> sound and code comparing the same processing in max / csound I
> would however be interested in the results and the reasons for any
> differences in quality.
>
>> I am sure there are ways to smooth the result but I am afraid I don’t
>> know the math and I don’t believe it should be necessary with a
>> higher level language.
>
> Max/msp is a higher level language than C or java perhaps, but I
> believe it is a common misconception that it is a higher level
> language than other audio text-based programming languages. I would
> argue that despite its easy to grasp graphical interface, it is
> actually a lower level language than supercollider (for instance)
> in which individual ugens tend to provide higher level
> functionality (some examples – built in granular synthesis ugens –
> rather than hand rolled poly~ solutions – a rich set of filters
> with internal coefficient calculations, rather than a smaller set
> in max, leaving everything else to the user with a biquad – the
> need in max/msp to drive play~ with a line object, rather than
> having this functionality grouped into one). The difficulty of
> implementing some types of processing in max/msp is one of the
> reasons I believe that myths of differences in sound quality exist…
>
> Regards,
>
> Alex


August 29, 2008 | 2:31 pm

Quote: peimankhosravi@gmail.com wrote on Fri, 29 August 2008 05:42
—————————————————-
> Choose a sample from the
> max examples folder and do some simple fft processing on it like bin
> shifting and scaling.

OK. Well if you tell me exactly what kind of process you want to do I’ll do it. Bin-shifting I hardly ever do, because it sounds pretty bad to me normally, but I’ll be happy to code it.

Can I assume you want a simple bin shift (all bins by the same amount – integer bin numbers only or fractional too?) plus a simple FFT EQ (fixed or moving?).

Let me know and I’ll get on it – might not be till sunday/monday though as I have limited time/email access till then….

Regards,

Alex


August 29, 2008 | 8:11 pm

cool, I think maybe starting from simple non time varying is a good
idea. And maybe also integer bin shifting with a common amount for
all bins. Mine you the csound bin shifting opcode does fractional
shifting… I’ll make the csound code ready and post it with the
examples. I’ll also try the same code with csound~ to go back to the
original post.

I’ll post examples of these csound instruments:

straight analysis/re-synthesis
time stretching

frequency scaling: http://www.csounds.com/manual/html/
pvscale.html
frequency shifting: http://www.csounds.com/manual/html/
pvshift.html
multiplying two signals’ magnitudes: http://www.csounds.com/
manual/html/pvsfilter.html
EQ: http://www.csounds.com/manual/html/pvsmaska.html
freezing: http://www.csounds.com/manual/html/pvsfreeze.html
smoothing: http://www.csounds.com/manual/html/pvsmooth.html
blurring: http://www.csounds.com/manual/html/pvsblur.html

Also we should probably use two samples, one percussive and another
more sustained. Is anyone experienced with supercollider willing to
do the same there? It would be an interesting comparison ;-)

Best
Peiman

On 29 Aug 2008, at 15:31, Alex Harker wrote:

>
> Quote: peimankhosravi@gmail.com wrote on Fri, 29 August 2008 05:42
> —————————————————-
>> Choose a sample from the
>> max examples folder and do some simple fft processing on it like bin
>> shifting and scaling.
>
> OK. Well if you tell me exactly what kind of process you want to do
> I’ll do it. Bin-shifting I hardly ever do, because it sounds pretty
> bad to me normally, but I’ll be happy to code it.
>
> Can I assume you want a simple bin shift (all bins by the same
> amount – integer bin numbers only or fractional too?) plus a simple
> FFT EQ (fixed or moving?).
>
> Let me know and I’ll get on it – might not be till sunday/monday
> though as I have limited time/email access till then….
>
> Regards,
>
> Alex


August 29, 2008 | 10:48 pm

f.e schrieb:
> But even if i just build a simple single sine wave in reaktor without
> any other fancy stuff, it’ll still sound "huger" than a cycle~ in
> MSP. It may mean that reaktor generators are antialiased or
> something, maybe duplicated and phased, or even slightly detuned,
> like it is in a Nord Lead (12 x oscillators for one "generator") or
> what you can do with a Virus to fatten the sound using voices in
> unisson mode.

If that is the case, the only way to fatten a sine is to distort it. Not
necessarily a quality feature, especially if you didn’t ask for it…


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 29, 2008 | 10:49 pm

peiman khosravi schrieb:
> The same goes for fft, which in maxmsp is more hassle than it’s worth
> it, considering that the resulting quality is not superior…

Are you talking about fft~ or pfft~??? If there is a difference, there
should be a reason. If compared the two results, listening to the
difference signal should reveal some insight…
I wouldn’t expect fft~ to be exact with scheduler triggered windowing,
but pfft~ should be fine. In the end it should be the same math behind it…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 30, 2008 | 10:05 am

I’m referring to pfft~.

Best
Peiman

On 29 Aug 2008, at 23:49, Stefan Tiedje wrote:

> peiman khosravi schrieb:
>> The same goes for fft, which in maxmsp is more hassle than it’s worth
>> it, considering that the resulting quality is not superior…
>
> Are you talking about fft~ or pfft~??? If there is a difference,
> there should be a reason. If compared the two results, listening to
> the difference signal should reveal some insight…
> I wouldn’t expect fft~ to be exact with scheduler triggered
> windowing, but pfft~ should be fine. In the end it should be the
> same math behind it…
>
> Stefan
>
> —
> Stefan Tiedje————x——-
> –_____———–|————–
> –(_|_ —-|—–|—–()——-
> — _|_)—-|—–()————–
> ———-()——–www.ccmix.com
>


August 30, 2008 | 1:34 pm

Quote: Peter Castine wrote on Fri, 22 August 2008 14:53
—————————————————-
> I don’t know that Barry Vercoe (or MIT) is likely to give anyone a hard time about the csound~ object, but given James’ unequivocal response to a hypothetical supercollider~ object, he may well have deliberately chosen GPL to prohibit dynamic linking to, say, Max/MSP. Sort of a shame.
—————————————————-

Quote: Chris Muir wrote on Fri, 22 August 2008 11:19
—————————————————-
>
> On Aug 22, 2008, at 4:28 AM, Timothy Place wrote:
> > This is why it is not:
> > http://electrotap.net/blog/show/192
>
>
> Frackin’ religious zealots.
>
> -C
>
> Chris Muir
> cbm@well.com
> http://www.xfade.com
—————————————————-

Alex and Eric were kind enough to draw my attention to this debate while chatting at ICMC the other day.

Firstly, I think this is a fascinating discussion. I think James McCartney’s observation about SC lending itself to certain ways of working is perhaps the most likely candidate for explaining this impression overall, and as someone who has used both Max and SC I’d just add that I think that it’s very interesting to consider the ways in which a particular environment can structure the way you work, or encourage different approaches to music making. This is especially true given that it seems likely that we’re unaware of this happening much of the time.

Regarding this GPL business: James has taken some flack over this in the past, in this forum and elsewhere. Although his response that Tim quotes on the Electrotap blog is typically brief, I know James to be a very good natured and generous person. I would thus be very surprised if he chose to release SC 3 under the GPL in order to ‘prevent’ using it with Max (you have the OSC route to do this anyway, which I know Eric sometimes uses), or for reasons of software freedom ‘zealotry’.

For many years SC was a proprietary closed source product, just like Max, and was the primary source of James’ livelihood. He certainly didn’t have any ‘religious’ issues with that at the time. When he went to work for Apple, he chose to make it free and open source. He was in no way obligated to do this of course, and could probably have sold it to someone else had he wanted to. Given that he was giving the community his livelihood, I think it was not unreasonable of him to place some conditions on how it would be used (as often happens with acts of charity).

That I think is what the GPL does in this case. It allows other people to use his work and distribute their additions to it (and even to profit from them) providing they are willing to be equally generous and allow others to benefit from their work as they have from his. I don’t think that’s unfair.

If SC was still closed source no one would expect James to allow a Max external.

Similarly, if I were to demand that Cycling give me the code to all the MSP objects so that I could port them to SC, people would think I was nuts.

I don’t see how encouraging a process of generosity and sharing (as was his right to do) between those who benefit from his work is zealous, or unreasonable, or even a shame, and frankly I think suggesting otherwise is a little ungracious.

With respect,

Scott


August 30, 2008 | 5:11 pm

On Aug 30, 2008, at 6:34 AM, Scott Wilson wrote:

> That I think is what the GPL does in this case. It allows other
> people to use his work and distribute their additions to it (and
> even to profit from them) providing they are willing to be equally
> generous and allow others to benefit from their work as they have
> from his. I don’t think that’s unfair.

Right, but that’s not all the GPL says. There are other licenses that
would allow for any kind of code to be built, but that would also
require the code to be open. If SC was licensed under a license that
allowed plug-ins, but still required people to share source to those
plug-ins, wouldn’t that be better? Why choose a license that precludes
some implementations?

If an open-source version of a SC external for Max were allowed under
the SC license, how would that be a bad thing? In the eyes of the FSF/
GPL, it would be bad because it aids and abets a piece of closed
software. It’s not enough for the GPL to ensure that a chunk of code
stays open, they also have to try to impede closed software in the
process.

> If SC was still closed source no one would expect James to allow a
> Max external.

Of course, but it isn’t closed source any more. It is "free software",
at least as long as you don’t try to use it dynamically linked with
commercial software, or even software created with a more permissive
open source license.

> Similarly, if I were to demand that Cycling give me the code to all
> the MSP objects so that I could port them to SC, people would think
> I was nuts.

Right, but MSP is a commercial venture, and is not open source.

> I don’t see how encouraging a process of generosity and sharing (as
> was his right to do) between those who benefit from his work is
> zealous, or unreasonable, or even a shame, and frankly I think
> suggesting otherwise is a little ungracious.

All the benefits you list would also be true if the code was licensed
under a more permissive open source license, but with the benefit of
enabling more people to share, because more types of implementations
could be created. It is not enough for the FSF to have a "free
software" code tree, they have to try to enforce a "free software"
orchard ecosystem.

I don’t have an issue with the sharing/open source, just with the
restrictions that the GPL puts on what kind of programs can be built.
There are myriad open source licenses. The GPL seems to be the most
restrictive, and the one with the largest degree of religious fervor,
hence my use of the word zealot.

Reading this page on the GNU site, may give you an idea of why I think
the word zealot is appropriate:

http://www.gnu.org/licenses/why-not-lgpl.html

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 30, 2008 | 7:50 pm

Quote: Chris Muir wrote on Sat, 30 August 2008 11:11
—————————————————-
>
> On Aug 30, 2008, at 6:34 AM, Scott Wilson wrote:
>
> > That I think is what the GPL does in this case. It allows other
> > people to use his work and distribute their additions to it (and
> > even to profit from them) providing they are willing to be equally
> > generous and allow others to benefit from their work as they have
> > from his. I don’t think that’s unfair.
>
> Right, but that’s not all the GPL says. There are other licenses that
> would allow for any kind of code to be built, but that would also
> require the code to be open. If SC was licensed under a license that
> allowed plug-ins, but still required people to share source to those
> plug-ins, wouldn’t that be better? Why choose a license that precludes
> some implementations?
>
> If an open-source version of a SC external for Max were allowed under
> the SC license, how would that be a bad thing? In the eyes of the FSF/
> GPL, it would be bad because it aids and abets a piece of closed
> software. It’s not enough for the GPL to ensure that a chunk of code
> stays open, they also have to try to impede closed software in the
> process.

Well, James would have to answer why he chose the GPL rather than any alternatives, and I don’t know his opinion on its finer points or any of the debates surrounding it. However I suspect the point here is not to impede closed software, and I think ‘impede’ is an extremely loaded choice of word on your part.

Nobody would be accusing James of ‘impeding closed software’ if he had not given it away, or had sold it to someone who kept it closed, so how is he impeding them now?

Is Cycling ‘impeding’ SC users by not giving them the MSP code?

If I refuse to share with you because you won’t share with me, how am I ‘impeding’ you?

People have ‘eyes,’ not the GPL, and not every piece of software which uses it is from the FSF. Choosing the GPL does not mean you agree with everything Richard Stallman says, but even if you do, that doesn’t mean closed software companies should have the right to do anything they want with your intellectual property.

>
>
> > If SC was still closed source no one would expect James to allow a
> > Max external.
>
> Of course, but it isn’t closed source any more. It is "free software",
> at least as long as you don’t try to use it dynamically linked with
> commercial software, or even software created with a more permissive
> open source license.
>
>
> > Similarly, if I were to demand that Cycling give me the code to all
> > the MSP objects so that I could port them to SC, people would think
> > I was nuts.
>
> Right, but MSP is a commercial venture, and is not open source.
>

And SC is GPL’d software, not BSD or LGPL or anything else. I’m not sure why you seem to think the fact that it’s open source should entail that anyone should be entitled to do what they want with it without restriction. But sorry if I’ve misunderstood.

>
> > I don’t see how encouraging a process of generosity and sharing (as
> > was his right to do) between those who benefit from his work is
> > zealous, or unreasonable, or even a shame, and frankly I think
> > suggesting otherwise is a little ungracious.
>
>
> All the benefits you list would also be true if the code was licensed
> under a more permissive open source license, but with the benefit of
> enabling more people to share, because more types of implementations
> could be created. It is not enough for the FSF to have a "free
> software" code tree, they have to try to enforce a "free software"
> orchard ecosystem.

Only with respect to their own intellectual property, and that is the crucial point that you leave out of your argument.

What is wrong with saying that you will only share your work (effectively his life’s work in James’ case) with people who will equally share? The LGPL would allow any software company to take his intellectual property, package it and sell it as an upgrade, without adding or sharing anything of their own. Why is it so strange or zealous to decide that’s not okay in a particular case?

Certainly some software projects are fine with that, and choose the LGPL or something similar. I think that’s okay, but I think it’s okay to want to prevent that as well. This is about people having the freedom to decide how their stuff is used, and who can profit from it. Proprietary software companies have that right, and I don’t see why making a project open should mean you should have to surrender it.

The GPL is basically about distribution in fact; another point which usually gets lost. IANAL, but as I understand it, you or any other Max user could make a supercollider~ external for your own use. You are only ‘impeded’ from distributing or selling it.

>
> I don’t have an issue with the sharing/open source, just with the
> restrictions that the GPL puts on what kind of programs can be built.
> There are myriad open source licenses. The GPL seems to be the most
> restrictive, and the one with the largest degree of religious fervor,
> hence my use of the word zealot.
>
> Reading this page on the GNU site, may give you an idea of why I think
> the word zealot is appropriate:
> http://www.gnu.org/licenses/why-not-lgpl.html
>

Well as far as I know, James didn’t write that, so I’m not really sure what your point is. He developed SC as a proprietary project for years, and now works for Apple. Not exactly a Stallman clone.

So far you’ve offered an ad hominem attack, and guilt by association. What you’ve not done (IMO at least) is explained why the kind of control over intellectual property that the GPL involves is any less reasonable than the kind Cycling or Microsoft any other proprietary software company enjoys.

S.


August 30, 2008 | 8:01 pm

Exactly. One of the things that struck me about this discussion is that people are reporting subjective experiences of differences in things (such as sine waves) that really shouldn’t vary between programs unless one of the programs is "doing it wrong." I’m not saying that people who are hearing these differences are mistaken, as there may very well be a difference in sound quality. But if something as definite as a sine wave sounds better in one program than another, then probably one of two things is going on:

1. One program is somehow enhancing or coloring the sine wave to make it sound more pleasant, in which case it is no longer a sine wave and we are comparing apples and oranges.

2. One program is not using correct math.

But I suspect that, as other people have mentioned, part of the issue may not be the capabilities of the program, but rather the types of things the program does easily. For example, it makes sense that the cycle~ object might not be totally ideal, as it uses a wavetable of 512 samples and interpolates between them. It would be possible to create a larger wavetable that could perhaps be more accurate, but it’s much quicker to just use cycle~. Same goes for filters and fft. The thing that troubles me is why CSound would sound better than csound~. If this is true, then it would suggest that there is a limit to how accurate Max/MSP can be, no matter what the user does. And that’s kind of depressing.

Stephen

Quote: Stefan Tiedje wrote on Fri, 29 August 2008 18:48
—————————————————-

> If that is the case, the only way to fatten a sine is to distort it. Not
> necessarily a quality feature, especially if you didn’t ask for it…
>
> —
> Stefan Tiedje————x——-
> –_____———–|————–
> –(_|_ —-|—–|—–()——-
> — _|_)—-|—–()————–
> ———-()——–www.ccmix.com
>
>
—————————————————-


August 30, 2008 | 8:04 pm

Quote: Stephen Lee wrote on Sat, 30 August 2008 14:01
—————————————————-
The thing that troubles me is why CSound would sound better than csound~. If this is true, then it would suggest that there is a limit to how accurate Max/MSP can be, no matter what the user does. And that’s kind of depressing.
>

Well, I don’t think anyone’s said that, yet. And the tests show that any differences must be gain multiplied over 1500 times in order to be audible.


August 30, 2008 | 9:01 pm

On Aug 30, 2008, at 12:50 PM, Scott Wilson wrote:

> However I suspect the point here is not to impede closed software,
> and I think ‘impede’ is an extremely loaded choice of word on your
> part.

I don’t think so, I think that impede is a pretty good word choice,
actually. That may not have been James’ intent, but it is certainly a
result of his choice of the GPL. One of the main differences between
the GPL and the LGPL is just this sort of impediment. The GPL is
trying to create a whole idealistic software ecosystem, where
everything must be distributed in a FSF-scantioned "free" manner.

The LGPL allows for a richer ecosystem, where within still fairly
strict rules, "free" and non-"free" software can be mixed in a given
environment. csound is licensed under the LGPL, and has very wide
deployment. It has all the same benefits and requirements of
bidirectional source sharing that the GPL has, just with a couple
fewer restrictions that allow for building a plug-in for some
commercial piece of software.

> Nobody would be accusing James of ‘impeding closed software’ if he
> had not given it away, or had sold it to someone who kept it closed,
> so how is he impeding them now?

He is impeding them now, by his choice of GPL, the most restrictive
"free software" license I know of. Certainly people are free to do
some stuff with SC as allowed by the GPL, but are not free to do other
stuff. That impedes people who want to do things with SC that the GPL
does not allow that would be allowed under the LGPL.

> Is Cycling ‘impeding’ SC users by not giving them the MSP code?

A straw man argument, but… certainly they are if a SC user wanted to
use some MSP code inside of SC. But it was always so with commercial
software.

> If I refuse to share with you because you won’t share with me, how
> am I ‘impeding’ you?

There’s sharing and there’s sharing. The GPL says that all things that
the GPL is linked with, even in the case of dynamic linking such as a
plug-in or DLL must be "free," not just the specific code involved.

I share a fair amount of stuff, but I would never use the GPL, because
of it’s "viral nature."

I fully support the goal of having thing that are done with the SC
code passed back to the SC community, which the LGPL accomplishes
every bit as well as the GPL. I don’t support the goal of having
everything that uses that source be required to be GPL as well.

> People have ‘eyes,’ not the GPL, and not every piece of software
> which uses it is from the FSF. Choosing the GPL does not mean you
> agree with everything Richard Stallman says, but even if you do,
> that doesn’t mean closed software companies should have the right to
> do anything they want with your intellectual property.

What you say here is correct, but no one is arguing that.

What I am saying is that it’s unfortunate that by the choice of the
GPL, as an independent developer, I am not free to make a
SuperCollider plugin for Max for distribution on my web site, if I
wanted to. Even though I would fully intended to freely share the
derived source as well as a binary for this plugin, the GPL would not
allow me to do this (although the LGPL would). I find it ridiculous
that I would somehow have to magically cause the source of Max to be
released under the GPL to allow me to make a SC plug-in for Max.

-C


August 30, 2008 | 9:39 pm

For me the issue gets a little muddled technically. I know the
license is clear about restrictions on ‘plugins’ into commercial
software (which I guess gets around the fact that non-linux users are
essentially ‘plugging in’ the code), but imagine this scenario:

1. I set up max/msp to communicate with SC via OSC, and I also use
soundflower or jack to route the audio to/from max/msp
2. I get tired of typing in all the objects to do this, so I create
an abstraction — call it "sc3~" for fun — with control and audio
connections as inlets and outlets. I still have to set up soundlower/
jack separately and I have to start SC to do this.
3. I get tired of having to set up soundflower/jack and start SC, so
with a little scripting I include it in my "sc3~" abstraction; it
works automagically.
4. I get annoyed at OSC and soundflower/jack, so I write my own
little sockety-thing ugens in SC and objects in max/msp to do the
work in place of these. The connection now happens even more
automagically. I get really fancy and the max/msp ugen starts up
scserver and sclang or whatever for me from inside the object. Yikes!
5. I think "what the heck, why do the socket when with a little less
coding(!) I can write to/from the two environments directly." So I
write the appropriate SC ugens and modify my max/msp "sc3~" object to
do this. SC is started via a dynamically-loaded library.

At what point have I crossed the line? Probably step 5, but the
progression I outlined begs the obvious question — what’s the real
difference here? And why does it make sense to put in place a
prohibition at any step above, when essentially the same operations
(control and audio to/from the two environments) take place at every
stage?

brad

http://music.columbia.edu/~brad


August 30, 2008 | 10:00 pm

Quote: Chris Muir wrote on Sat, 30 August 2008 15:01
—————————————————-

> He is impeding them now, by his choice of GPL, the most restrictive
> "free software" license I know of.

Ah, but presumably less than he was before, and less of an impediment than all commercial software, yes?

> Certainly people are free to do
> some stuff with SC as allowed by the GPL, but are not free to do other
> stuff. That impedes people who want to do things with SC that the GPL
> does not allow that would be allowed under the LGPL.

Yes, and if I want to port MSP objects to PD Cycling would similarly impede me. The difference is I wouldn’t call them zealots for that. They’re under no obligation to allow me to do that, just as James is under no obligation to allow these people you mention to do the things they want.

Obviously if he had released it under the LGPL that would be less restrictive. But that still doesn’t explain how an act of pretty impressive generosity amounts to zealotry in your book.

>
>
> > Is Cycling ‘impeding’ SC users by not giving them the MSP code?
>
> A straw man argument

Yes, the result of your premises.

, but… certainly they are if a SC user wanted to
> use some MSP code inside of SC. But it was always so with commercial
> software.

Then by your definition this sort of impeding is pretty much commonplace. Does that make Cycling 74 and Apple zealots as well?

> What I am saying is that it’s unfortunate that by the choice of the
> GPL, as an independent developer, I am not free to make a
> SuperCollider plugin for Max for distribution on my web site, if I
> wanted to. Even though I would fully intended to freely share the
> derived source as well as a binary for this plugin, the GPL would not
> allow me to do this (although the LGPL would). I find it ridiculous
> that I would somehow have to magically cause the source of Max to be
> released under the GPL to allow me to make a SC plug-in for Max.

Magic tricks aside, why you think you should be entitled to?

S.


August 30, 2008 | 10:06 pm

Great post, Brad!

That really brought it home for me that the main reason to care about an sc3~ external is that it’s a PITA to run SC3 into Max via Jack or Soundflower, and there are some potentially interesting synergies to explore between SC3 and Max that one tends not to, thanks to the PITA.

>>
And why does it make sense to put in place a
prohibition at any step above, when essentially the same operations
(control and audio to/from the two environments) take place at every
stage?
>>

I suspect that James McCartney might have an interesting answer to this question.

Eric


August 31, 2008 | 1:12 am

On Aug 30, 2008, at 2:39 PM, Brad Garton wrote:

> At what point have I crossed the line? Probably step 5, but the
> progression I outlined begs the obvious question — what’s the real
> difference here? And why does it make sense to put in place a
> prohibition at any step above, when essentially the same operations
> (control and audio to/from the two environments) take place at every
> stage?

I agree. These distinctions are all aimed at inconveniencing people
who chose to use proprietary software.

I wonder at what point the FSF might get involved if there was a
tutorial project to take the SC code and provide enough information to
allow people to easily compile their own versions of a SC Max external?

What if it went beyond instructions, and included something like sed
scripts to generate code for an external?

-C

Chris Muir
cbm@well.com

http://www.xfade.com


August 31, 2008 | 7:15 am

(I’m replying to parts of a couple of posts by Scott)
On Aug 30, 2008, Scott Wilson wrote:

> And SC is GPL’d software, not BSD or LGPL or anything else. I’m not
> sure why you seem to think the fact that it’s open source should
> entail that anyone should be entitled to do what they want with it
> without restriction. But sorry if I’ve misunderstood.
>>

I never said that. I recognize that there is no such entitlement
granted. I also recognize that that’s an unfortunate turn of events,
fairly unique to the use of the GPL.

Also, it’s worth pointing out that the FSF would probably argue that
something licensed under the GPL is NOT open source.

> What is wrong with saying that you will only share your work
> (effectively his life’s work in James’ case) with people who will
> equally share?

I do respect the effort poured into Supercollider, and am glad he
released the source so that SC users have a path forward.

> The LGPL would allow any software company to take his intellectual
> property, package it and sell it as an upgrade, without adding or
> sharing anything of their own.

Nothing in the GPL precludes someone grabbing the source today,
packaging it, and selling it today. True, they would have to release
their own source (if any) as part of the deal, but…

> Quote: Chris Muir wrote on Sat, 30 August 2008 15:01
> —————————————————-
>
>> He is impeding them now, by his choice of GPL, the most restrictive
>> "free software" license I know of.
>
> Ah, but presumably less than he was before, and less of an
> impediment than all commercial software, yes?

For the way I like to work, it’s about the same actually. I tend to
pick an environment or two and work within them. For better or worse,
Max is that environment for me, right now. I think that the fact the
SC has been able to move forward is nice from an abstract POV, but
from a practical POV, for me, it doesn’t impact me much. For me, If I
have to cobble together a system with multiple programs wired together
with things like Jack and OSC it’s too much work, at least for live use.

> Obviously if he had released it under the LGPL that would be less
> restrictive. But that still doesn’t explain how an act of pretty
> impressive generosity amounts to zealotry in your book.

The zealotry is the Free Software Foundation’s, and is only James’ to
the extent that he is a booster of the GPL.

James is certainly free to choose whatever license he wants to, just
as I am free to dislike his choice and whinge about it.

>> What I am saying is that it’s unfortunate that by the choice of the
>> GPL, as an independent developer, I am not free to make a
>> SuperCollider plugin for Max for distribution on my web site, if I
>> wanted to.
> Magic tricks aside, why you think you should be entitled to?

Well, it seems like a reasonable thing to be able to do with "free"
software, IMO. If you look at the FSF definition of free software http://www.gnu.org/philosophy/free-sw.html
, making a SC external for Max would qualify as reasonable uses of
freedoms 0-3, if it wasn’t for the anti-commercial software clauses in
the GPL itself. This goes to the root of the difference between open
source and "free" software.

BTW, there’s already an AU-wrapped version of SC, which I believe is
also probably against the rules of the GPL. Would you argue against
that, too? I’m sure people find it useful.

Perhaps we should take further discussion, if any, to email? The Max
list doesn’t seem like the right place for this.

-C


August 31, 2008 | 7:40 am

Hey Brad,

Quote: Bradford Garton wrote on Sat, 30 August 2008 15:39
—————————————————-
> For me the issue gets a little muddled technically. I know the
> license is clear about restrictions on ‘plugins’ into commercial
> software (which I guess gets around the fact that non-linux users are
> essentially ‘plugging in’ the code), but imagine this scenario:

> At what point have I crossed the line? Probably step 5, but the
> progression I outlined begs the obvious question — what’s the real
> difference here? And why does it make sense to put in place a
> prohibition at any step above, when essentially the same operations
> (control and audio to/from the two environments) take place at every
> stage?

These sort of points are well made, but I think the thing to remember is that the problem with the application of the license is a ‘technical’ one. The technical issues result in a situation where it’s difficult to apply a few limitations to what people can do without allowing them to do some similar things. It does not follow from that that the only sensible choices are complete limitation or complete permissiveness.

S.


August 31, 2008 | 8:01 am

Quote: Chris Muir wrote on Sat, 30 August 2008 19:12
—————————————————-
>
> On Aug 30, 2008, at 2:39 PM, Brad Garton wrote:
>
> > At what point have I crossed the line? Probably step 5, but the
> > progression I outlined begs the obvious question — what’s the real
> > difference here? And why does it make sense to put in place a
> > prohibition at any step above, when essentially the same operations
> > (control and audio to/from the two environments) take place at every
> > stage?
>
>
> I agree. These distinctions are all aimed at inconveniencing people
> who chose to use proprietary software.

You seem awfully sure of the motivations of a rather large number of people. An equally plausible reason to choose the GPL or the numerous similar licenses would be to make a compromise between total freedom and total limitation.

You’ve argued that the GPL is the ‘most restrictive’ of open source licenses. Whether that’s true or not, I don’t know, but it is worth remembering that it is nevertheless far less restrictive than the vast majority of software licenses in general.

You also called it ‘viral.’ A virus is something that invades your body against your will. Nobody is forcing supercollider into MSP. On the contrary, you are complaining because the license does not allow you to force it in.

>
> I wonder at what point the FSF might get involved if there was a
> tutorial project to take the SC code and provide enough information to
> allow people to easily compile their own versions of a SC Max external?

The FSF is not involved in SC at all, AFAIK, so I suspect never. It is not their intellectual property, and they are not the ones who have licensed it.

S.


August 31, 2008 | 9:06 am

Stephen Lee schrieb:
> The thing that troubles me is why CSound would sound better than
> csound~. If this is true, then it would suggest that there is a limit
> to how accurate Max/MSP can be, no matter what the user does. And
> that’s kind of depressing.

But the test was made, and though subjectively different, objectively
there is no difference. That points to psychological, not to technical
reasons. The point is to do the comparison, and if there is a technical
difference, its possible to fix it.
If the sine in Reaktor really sounds better, you just have to introduce
a Reaktordistortion abstraction in Max and you can enhance it even more,
because its under your control… ;-)

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 31, 2008 | 9:56 am

>Stephen Lee schrieb:
>>The thing that troubles me is why CSound would sound better than
>>csound~. If this is true, then it would suggest that there is a limit
>>to how accurate Max/MSP can be, no matter what the user does. And
>>that’s kind of depressing.
>
>But the test was made, and though subjectively different,
>objectively there is no difference. That points to psychological,
>not to technical reasons. The point is to do the comparison, and if
>there is a technical difference, its possible to fix it.

Hi stefan,

but, if I understood what was said in this thread, someone (Chris Muir) said:

"I spoke too soon. There are tiny differences in about half the samples
of the csound examples.

Here’s a revised patch that shows the errors better. The errors are
tiny enough that I had to increase the display resolution of the
number boxes involved. Also, amplifying the differences enough to hear
them is left as an excersize to the user (be careful, a lot of gain
will be required)"

which means that "objectively" there is a difference (I am not sure
if you can HEAR it, but it’s there)

witch Chris’s email there was also a patch – in Max5, so i can not look at it

___but it seems that yes, there is a technical difference (possible to fix ?)

best

kasper


August 31, 2008 | 9:57 am

Quote: Chris Muir wrote on Sun, 31 August 2008 01:15
—————————————————-

>
> Also, it’s worth pointing out that the FSF would probably argue that
> something licensed under the GPL is NOT open source.

Well, I don’t know. But IAC my understanding of open source is that you can get the source, not that you can do anything you want with it.

>
> > What is wrong with saying that you will only share your work
> > (effectively his life’s work in James’ case) with people who will
> > equally share?
>
> I do respect the effort poured into Supercollider,
> and am glad he
> released the source so that SC users have a path forward.

Yet you show that respect by calling him (and I assume all the other SC developers, and anyone else who uses the GPL?) zealots, and (to use your own word) ‘whinging’ that he didn’t go far enough.
>
> > The LGPL would allow any software company to take his intellectual
> > property, package it and sell it as an upgrade, without adding or
> > sharing anything of their own.
>
> Nothing in the GPL precludes someone grabbing the source today,
> packaging it, and selling it today. True, they would have to release
> their own source (if any) as part of the deal, but…

Well, I think it’s fairly obvious that that’s what I meant, but to be clear: The LGPL allows any software company to incorporate through dynamic linking the intellectual property it covers into their own software, and thus benefit and profit from it without sharing their own intellectual property. If wanting to prevent that is a kind of zealotry, then it’s a sort that all proprietary software companies practice.

>
>
> > Quote: Chris Muir wrote on Sat, 30 August 2008 15:01
> > —————————————————-
> >
> >> He is impeding them now, by his choice of GPL, the most restrictive
> >> "free software" license I know of.
> >
> > Ah, but presumably less than he was before, and less of an
> > impediment than all commercial software, yes?
>
> For the way I like to work, it’s about the same actually. I tend to
> pick an environment or two and work within them. For better or worse,
> Max is that environment for me, right now. I think that the fact the
> SC has been able to move forward is nice from an abstract POV, but
> from a practical POV, for me, it doesn’t impact me much. For me, If I
> have to cobble together a system with multiple programs wired together
> with things like Jack and OSC it’s too much work, at least for live use.

Well, I imagine he probably didn’t consider the impact on you when choosing the GPL.

>
>
> > Obviously if he had released it under the LGPL that would be less
> > restrictive. But that still doesn’t explain how an act of pretty
> > impressive generosity amounts to zealotry in your book.
>
> The zealotry is the Free Software Foundation’s, and is only James’ to
> the extent that he is a booster of the GPL.

By ‘boost’ the GPL I assume you mean the FSF’s agenda?

The validity of that agenda aside, James is not the FSF. The GPL is a software license, not a law, or a political agenda. By choosing the GPL a software developer only places limitations on how his or her own intellectual property is used, in accordance with the rights that he or she already enjoys under existing laws.

The fact that a developer uses the GPL does not mean that she or he is necessarily ‘boosting’ any agenda besides that of controlling their own intellectual property. It does not mean he or she agrees with everything the FSF says. The same is true of choosing the LGPL, which despite your preference for it, was also authored by the FSF.

So even if we take your statement literally, as ‘boosting’ the GPL itself, you have still not explained why controlling one’s intellectual property in the way the GPL does is any more zealous than the way closed software licenses do.

>
> James is certainly free to choose whatever license he wants to, just
> as I am free to dislike his choice and whinge about it.

Yes, you enjoy that freedom, but that doesn’t make it good behaviour.

I suppose you also have the freedom to call people zealots or otherwise insult them (at least within the limits of defamation law), but that doesn’t make it good behaviour either.

>
>
> >> What I am saying is that it’s unfortunate that by the choice of the
> >> GPL, as an independent developer, I am not free to make a
> >> SuperCollider plugin for Max for distribution on my web site, if I
> >> wanted to.
> > Magic tricks aside, why you think you should be entitled to?
>
>
> Well, it seems like a reasonable thing to be able to do with "free"
> software, IMO. If you look at the FSF definition of free software http://www.gnu.org/philosophy/free-sw.html
> , making a SC external for Max would qualify as reasonable uses of
> freedoms 0-3, if it wasn’t for the anti-commercial software clauses in
> the GPL itself. This goes to the root of the difference between open
> source and "free" software.

Well this is really the heart of your argument, isn’t it? The GPL is not free enough for you, and therefore you’re ‘whinging’. But there is no hypocrisy or contradiction here. To reiterate the obvious:

- The FSF wrote the text you link to, not James or anybody else. To accuse him of being unreasonable because you think what he chose to do is inconsistent with what you thing the FSF espouses is guilt by association, albeit with the association part being pretty flimsy.
- SC is licensed under the GPL, not under http://www.gnu.org/philosophy/free-sw.html. Nowhere does it say you can do anything you want with it.

That aside, the only additional principle the GPL adds to those outlined in the link you provided is that you can only use software licensed under it if you behave in the same way, i.e. I will only share with you if you share with me. You have still not explained why that is more ‘zealous’ than commercial licenses.

> BTW, there’s already an AU-wrapped version of SC, which I believe is
> also probably against the rules of the GPL. Would you argue against
> that, too? I’m sure people find it useful.

Well, again I think this is a technical issue. The GPL makes exceptions for linking to proprietary operating system components, for pretty obvious practical reasons. IANAL, but I imagine Gerard’s AU wrapper would fall under that.

Whether or not loading the AU-wrapped scsynth into Max would count as a violation of the GPL, I don’t know. I suspect not (in which case you could stop whinging I suppose), but again the problem here is how to reasonably apply some limitations on use given a changeable and complex technical situation. The GPL and all licenses are compromises which attempt to strike that kind of balance, albeit in a perhaps inevitably perfect way. That imperfection doesn’t mean it is unreasonable to make a compromise, just as the fact that it is possible to obtain illegal copies of proprietary software doesn’t make it unreasonable to explicitly prohibit doing so.

As far as usefulness goes, I would find the source code of Max useful. I would find a villa in Tuscany useful. The fact that someone may find something that they have no right to useful is hardly the point.

> Perhaps we should take further discussion, if any, to email? The Max
> list doesn’t seem like the right place for this.

I’m not sure there’s that much more to say, but contact me off list if you like. I do find these discussions of licensing implications very interesting, as it seems do others on this thread.

I understand that you and others would prefer if SC were available under a less restrictive license. I don’t think that’s unreasonable, but I also don’t think it’s unreasonable to release it under the GPL, which as software licenses in general go is actually pretty non-restrictive. (Ever read the Windows EULA?)

I responded to this thread initially because James has taken some flack for this before, and I thought somebody should defend him and point out that he was in fact extraordinarily generous in open sourcing SC. I think I’ve done that, so I’ll shut up about it.

What I primarily object to in your responses is your use of insults and ad hominem attacks, your ascribing particular motives to people when you have no way of knowing what they are, and your practice of guilt by association. You have not made a withdrawal of or apologised for any of these. I think the public forum would be the appropriate place to do that, and if you were to do so I would happily consider the matter closed.

Peace :-),

S.


August 31, 2008 | 12:12 pm

Chris Muir schrieb:
> Even though I would fully intended to freely share the derived source
> as well as a binary for this plugin, the GPL would not allow me to do
> this (although the LGPL would). I find it ridiculous that I would
> somehow have to magically cause the source of Max to be released
> under the GPL to allow me to make a SC plug-in for Max.

I just wonder if anyone ever made a SC external for Pd? The BSD-license
of Pd is claimed to be GPL compatible, thus it should be possible…
Now if you’d use Flext to create the external, a simple compile would
also create a Max external. I am wondering how this scenario could
violate the GPL… (There is also no restriction for the compiler you
use to compile or treat GPL code, it could be any commercial compiler…)

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 31, 2008 | 12:39 pm

Quote: Stefan Tiedje wrote on Sun, 31 August 2008 06:12
—————————————————-
> Chris Muir schrieb:
> > Even though I would fully intended to freely share the derived source
> > as well as a binary for this plugin, the GPL would not allow me to do
> > this (although the LGPL would). I find it ridiculous that I would
> > somehow have to magically cause the source of Max to be released
> > under the GPL to allow me to make a SC plug-in for Max.
>
> I just wonder if anyone ever made a SC external for Pd? The BSD-license
> of Pd is claimed to be GPL compatible, thus it should be possible…
> Now if you’d use Flext to create the external, a simple compile would
> also create a Max external. I am wondering how this scenario could
> violate the GPL…

Hey Stefan,

It would only violate the GPL if you distributed the Max external. You could make one for your own use.

I suppose that is one difference between dynamic linking and other forms of interaction between GPL’d and proprietary software. Linking and distributing is a necessarily public act, and thus in that case prohibition is practically enforceable.

S.


August 31, 2008 | 2:48 pm

Quote: Bradford Garton wrote on Sat, 30 August 2008 23:39
—————————————————-
[schnipp]
> At what point have I crossed the line? Probably step 5, but the
> progression I outlined begs the obvious question — what’s the real
> difference here? And why does it make sense to put in place a
> prohibition at any step above, when essentially the same operations
> (control and audio to/from the two environments) take place at every
> stage?
—————————————————-

This question is, to me, the most arcane bit about the GPL. Quoting < http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins>

"Q: If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?

"A: It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

"If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program…" [and therefore in violation of GPL.]

FSF’s ‘belief’ has TTBOMK not been challenged in an American court, so I don’t know if it would actually stand up if put to a test there. The Wikipedia entry on GPL points to cases in another jurisdiction (Germany) purported to uphold the FSF point of view, although I have understood the case in question to involve a non-GPL app that relied on a GPL’d DLL in order to function. Our hypothetical sc3~ object would be the DLL requiring the presence of a non-GPL app to function. Does this make a difference? I’m not a lawyer, but I think it ought to.

I find the FSF argumentation frankly a little weird, not only in light of Brad’s hypothetical chain of development. What end user gives a tinker’s farthing (or even knows) if there’s a fork/exec or a DLL involved? I’m talking plain-vanilla Mac OS/Windows users ("the rest of us"), not Unix geekheads. The user wants to be able to type ‘sc3~’ into a box, edit a .sc3 file, and pull some patch cords. I honestly don’t see how the internal workings make any difference to the experience, as long as the whole thing works (for which the DLL would arguably be the most effective approach).

So I stand by my "sort of a shame" about the claimed "you can’t do that." But more on this in another message.

– P.


August 31, 2008 | 3:39 pm

Quote: i@scottwilson.ca wrote on Sat, 30 August 2008 15:34
—————————————————-
> Regarding this GPL business: James has taken some flack over this in the past, in this forum and elsewhere. Although his response that Tim quotes on the Electrotap blog is typically brief, I know James to be a very good natured and generous person.

Since you quoted me earlier in your text, I would just like to point out that I also know James to be good-natured and generous. We had much highly productive correspondence when I was first developing Litter Power, something I have credited publicly (on this list, in the LP documentation, and in other places).

Still, given that there are alternatives to GPL (in particular, LGPL, which is specifically developed to allow dynamic linking across the OS/non-OS divide) and that the original software developer also has the option to provide alternative license arrangements, James’ quote cannot help but seem uncharacteristically blunt.

Clearly, James has the right to make the fruit of his labor available in whatever form he sees fit, and I would be the last to challenge him, whatever his choice.

As much as I would enjoy having a (hypothetical) sc3~ object, and as much as it would encourage me to work far more extensively with the language, there is the side effect that, what I consider the more interesting sc ugens have inspired equivalent (but independently developed) Max externals.

– P.


August 31, 2008 | 3:40 pm

Quote: Peter Castine wrote on Sun, 31 August 2008 08:48
—————————————————-
> Quote: Bradford Garton wrote on Sat, 30 August 2008 23:39
> —————————————————-
> [schnipp]
> > At what point have I crossed the line? Probably step 5, but the
> > progression I outlined begs the obvious question — what’s the real
> > difference here? And why does it make sense to put in place a
> > prohibition at any step above, when essentially the same operations
> > (control and audio to/from the two environments) take place at every
> > stage?
> —————————————————-
>
> This question is, to me, the most arcane bit about the GPL. Quoting < http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins>
>
> "Q: If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?
>
> "A: It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.
>
> "If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program…" [and therefore in violation of GPL.]
>
> FSF’s ‘belief’ has TTBOMK not been challenged in an American court, so I don’t know if it would actually stand up if put to a test there. The Wikipedia entry on GPL points to cases in another jurisdiction (Germany) purported to uphold the FSF point of view, although I have understood the case in question to involve a non-GPL app that relied on a GPL’d DLL in order to function. Our hypothetical sc3~ object would be the DLL requiring the presence of a non-GPL app to function. Does this make a difference? I’m not a lawyer, but I think it ought to.

I’m not a lawyer either, but IIUC if the GPL were to fail in court it would be because the wording was unclear and therefore not binding (or something similar), not because the licenser didn’t have the right to make those kinds of restrictions. Does anyone know anything different?

>
> I find the FSF argumentation frankly a little weird, not only in light of Brad’s hypothetical chain of development. What end user gives a tinker’s farthing (or even knows) if there’s a fork/exec or a DLL involved? I’m talking plain-vanilla Mac OS/Windows users ("the rest of us"), not Unix geekheads. The user wants to be able to type ‘sc3~’ into a box, edit a .sc3 file, and pull some patch cords. I honestly don’t see how the internal workings make any difference to the experience, as long as the whole thing works (for which the DLL would arguably be the most effective approach).
>
> So I stand by my "sort of a shame" about the claimed "you can’t do that." But more on this in another message.

Well, again I think this arises from technical issues. From a practical standpoint, dynamic vs. static linking may be pretty irrelevant; both could allow a proprietary company to incorporate GPL’d software without sharing in the same way. Dynamic linking would just be a way to workaround the intent of the licenser if it wasn’t prohibited.

It may be true that "1-4" seem in some sense equivalent to 5, but I suspect most licensers of GPL’d software would find prohibiting 1-4 too restrictive, and feel that it would have too many knock-on effects. But I ask that you note that not prohibiting 1-4 provides you with more freedom, not less.

I think the FSF wording is also a little funny, but I think it arises from the need to make a compromise between permissiveness and control. Other licenses also make compromises, maybe just different ones.

S.


August 31, 2008 | 3:53 pm

Hi Peter,

Quote: Peter Castine wrote on Sun, 31 August 2008 09:39
—————————————————-
> Quote: i@scottwilson.ca wrote on Sat, 30 August 2008 15:34
> —————————————————-
> > Regarding this GPL business: James has taken some flack over this in the past, in this forum and elsewhere. Although his response that Tim quotes on the Electrotap blog is typically brief, I know James to be a very good natured and generous person.
>
> Since you quoted me earlier in your text, I would just like to point out that I also know James to be good-natured and generous. We had much highly productive correspondence when I was first developing Litter Power, something I have credited publicly (on this list, in the LP documentation, and in other places).

Of course, and I did not mean to suggest that your ‘it’s a shame’ comment was intended to be anything but innocuous, just to offer the alternative perspective that what he chose to do was in fact a very good thing. If my responses to Chris’ rather more strident points of view obscured that fact, then I apologise.

>
> Still, given that there are alternatives to GPL (in particular, LGPL, which is specifically developed to allow dynamic linking across the OS/non-OS divide) and that the original software developer also has the option to provide alternative license arrangements, James’ quote cannot help but seem uncharacteristically blunt.

It’s not uncharacteristic IME. He is often very terse and to the point on email lists, a fact that has occasionally hurt some feelings, or made him seem angry when he is not. It was only when I met him in person that I realised that his brief replies are usually delivered with a smile and a chuckle.

>
> Clearly, James has the right to make the fruit of his labor available in whatever form he sees fit, and I would be the last to challenge him, whatever his choice.
>
> As much as I would enjoy having a (hypothetical) sc3~ object, and as much as it would encourage me to work far more extensively with the language, there is the side effect that, what I consider the more interesting sc ugens have inspired equivalent (but independently developed) Max externals.

This is a very apt observation, and raises another point, which is that the GPL is about protecting copyright, not patents, and IME people who espouse the GPL tend to be opposed to the latter. There is nothing about the use of the GPL in itself that prevents someone from adapting *ideas* from a GPL’d piece of software. The fact that the source code is provided obviously facilitates this.

Best,

S.


August 31, 2008 | 5:44 pm

Putting aside for the moment the legality and ethics of writing and distributing an sc3~ external, I wonder how useful such a thing would actually be. Brad made an eloquent argument for embedding programs inside other programs in a Max tutorial article about a year ago ( http://tinyurl.com/5e9h98 ) and the first question I asked in a symposium on music software in 2001 ( http://tinyurl.com/6o9aa3 ) was about cannibalism. However I’m starting to have second thoughts. SC3 has a perfectly nice interface on its own, and dragging it inside of Max might significantly degrade the user experience. What’s really wanted is a good, lightweight, transparent method for routing audio streams between audio applications. Something like an OSC for audio. With due respect, IMO, Jack and Soundflower don’t cut it; they’re too much of a hassle. But if we had a protocol that could route audio between apps as easily as we can route OSC messages, I think we would not be having this conversation; there would be no need for an sc3~, once it was possible to route audio back and forth between Max, SC3 and whatever else, at will. In this sense, I think we’re presently at the stage with audio signals that we were at with control signals in the pre-MIDI period.

Eric


August 31, 2008 | 8:05 pm

Scott Wilson schrieb:
> It would only violate the GPL if you distributed the Max external.
> You could make one for your own use.

But does compiling add anything? The compilation process itself is
literally only hitting a knob, which creates the external. Could be as
simple as double click to extract a compressed piece of binary code. (Is
compressing GPL’d code with a proprietary compression tool already a
violation of the GPL ???…)
There is no addition to the creative/copyrightable part of the code.
Either the code itself violates the GPL (if pupblished), or if not, I
think there can’t be a difference between the code and the binary in an
open source program…

I always thought the way to distinguish the linking part is, if the
proprietary part can run without the GPL part, its fine. Like any GPL’d
software which runs on Windows does need Windows, but Windows can
happily run without any GPL’d software (and has to…)

I don’t see any violation by creating an external which uses GPL’d code
if all that code is under GPL as well. I released parts of my St.ools
under GPL, others under LGPL (all abstractions though). There is no
problem that they require a proprietary environment…
(on the other hand, I do consider to go to creative commons actually…)

I think in the end what counts is what the original creator wants. I
would just respect the wish of James. If he doesn’t like the idea of a
Max external, there is no point in releasing one. I could create it for
my personal use, but I’d respect his wish no matter if its expressed in
the chosen license or not…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com


August 31, 2008 | 9:08 pm

Quote: Stefan Tiedje wrote on Sun, 31 August 2008 14:05
—————————————————-
> Scott Wilson schrieb:
> > It would only violate the GPL if you distributed the Max external.
> > You could make one for your own use.
>
> But does compiling add anything? The compilation process itself is
> literally only hitting a knob, which creates the external. Could be as
> simple as double click to extract a compressed piece of binary code. (Is
> compressing GPL’d code with a proprietary compression tool already a
> violation of the GPL ???…)

I’d guess no, because no court would consider that a derivative work.

> There is no addition to the creative/copyrightable part of the code.
> Either the code itself violates the GPL (if pupblished), or if not, I
> think there can’t be a difference between the code and the binary in an
> open source program…
>
> I always thought the way to distinguish the linking part is, if the
> proprietary part can run without the GPL part, its fine.

Actually I think it’s the other way around, sort of: If the GPL’d part is running without the proprietary part, it’s okay, if it’s not that’s the problem.

I think the legal issue is whether it is considered a ‘derivative work’. The messiness comes from how to determine that, but since dynamic linking really only differs from static in terms of when it happens, I don’t think that would make much difference in determining it. But you can see how the technical issues lead to licenses which are compromises.

> Like any GPL’d
> software which runs on Windows does need Windows, but Windows can
> happily run without any GPL’d software (and has to…)

There’s a specific exception for operating systems and some other similar things. I think the GPL ver. 3 clarifies this, but I don’t know much about it. SC is licensed under ver. 2, which it is worth remembering dates from the early 90s. Many of the technical issues and loopholes that have arisen may not have been forseen back then. But I don’t know the details of that.

>
> I don’t see any violation by creating an external which uses GPL’d code
> if all that code is under GPL as well. I released parts of my St.ools
> under GPL, others under LGPL (all abstractions though). There is no
> problem that they require a proprietary environment…
> (on the other hand, I do consider to go to creative commons actually…)

I believe executable code (i.e. for a scripting language or I should think a Max patch) is not considered a derivative work. This falls under simple use of the program. But in any case, those abstractions are yours, and you can release them under any license you like, dual license them by selling them to Cycling or anyone else; that’s your business. Providing you don’t infringe on anyone else’s rights or property (e.g. by violating Cycling’s license terms or incorporating GPL’d code into your abstractions), or do not do something which renders your license invalid, I don’t think there would be a problem. But IANAL.

>
> I think in the end what counts is what the original creator wants.
> I
> would just respect the wish of James. If he doesn’t like the idea of a
> Max external, there is no point in releasing one. I could create it for
> my personal use, but I’d respect his wish no matter if its expressed in
> the chosen license or not…

Cheers,

S.


September 1, 2008 | 1:31 am


September 1, 2008 | 10:32 am


September 1, 2008 | 12:36 pm

Quote: Eric Lyon wrote on Sun, 31 August 2008 11:44
—————————————————-
> With due respect, IMO, Jack and Soundflower don’t cut it; they’re too much of a hassle.

There’s definitely an interface issue with both, and IME they’re surprisingly expensive in terms of CPU. Does anyone know why this is?

There’re also latency issues of course.

S.


September 1, 2008 | 7:39 pm


September 1, 2008 | 9:15 pm


September 2, 2008 | 11:26 am

Quote: peimankhosravi@gmail.com wrote on Fri, 29 August 2008 14:11
—————————————————-
> cool, I think maybe starting from simple non time varying is a good
> idea. And maybe also integer bin shifting with a common amount for
> all bins.

Actually I was forgetting that the easiest max only way to do this is using fbinshift~ (as I never use it) – this takes a value in Hz, so the integer bin thing is irrelevant.

Here’s a link to three binshifted files – using the help patch (modified for recording) – the descriptions of each file detail all settings, so please replicate in csound and post.

http://share.ovi.com/channel/AHarker.public

Some of the csound instruments you name are easier to do in max that others – many don’t have dedicated externals to do that operation and those will take more work, and possibly be variable in quality depending on exactly what approach is taken. I may need to look at source code to make sure I’m coding up the same thing, so I can’t promise how fast I can do them. However, I’ll add what I can when I can and if we find a subjective audio difference I’ll try to work out why from source code (in csound at least) so we can try to work out why it is happening.

If you’d like to post 64 bit examples too, I’d be very interested to hear whether that is in any way worth bothering with, and if so for which cases.

I went for instrumental and voice (both fairly complex) rather than percussive/sustained for this one, if you’d like it repeated on any other samples just ask…

Thanks,

Alex

> I’ll post examples of these csound instruments:
>
> straight analysis/re-synthesis
> time stretching
>
> frequency scaling: http://www.csounds.com/manual/html/
> pvscale.html
> frequency shifting: http://www.csounds.com/manual/html/
> pvshift.html
> multiplying two signals’ magnitudes: http://www.csounds.com/
> manual/html/pvsfilter.html
> EQ: http://www.csounds.com/manual/html/pvsmaska.html
> freezing: http://www.csounds.com/manual/html/pvsfreeze.html
> smoothing: http://www.csounds.com/manual/html/pvsmooth.html
> blurring: http://www.csounds.com/manual/html/pvsblur.html
>
> Also we should probably use two samples, one percussive and another
> more sustained.


September 2, 2008 | 3:33 pm

Hi Alex,

Thanks for the post. I’ve replicated as closely as I could your
processes in csound. I’m using a high-pass Butterworth filter though
for removing dc. I’ve added a percussive example as well with fshift
of -200, window size of 4096 and overlap of 16.

These examples are all made with 64bit csound. I’ll have to reinstall
32bit to make the examples or maybe I’ll try on a different computer.

http://idisk.mac.com/peimankh/Public/comparison/antonfshift-Csound-
dcblock.aiff
http://idisk.mac.com/peimankh/Public/comparison/antonfshift-Csound-
withdc.aiff
http://idisk.mac.com/peimankh/Public/comparison/cherokeefshift-
Csound.aif
http://idisk.mac.com/peimankh/Public/comparison/drumloopfshift-
Csound.aif

I’m not sure how you have mixed down the string file to mono, I
basically mixed the left and right channels and scaled the output by .5.

Interestingly the vocal -400 shift is very different in csound, I
don’t know why. Altogether though I’m struggling to hear any
significant differences at this stage, we’ll have to see how it goes
with more complex processes, as you mentioned before I never use fft
shifting neither!

Can we try convolution next (by multiplying amplitude data) with the
same files?

Best
Peiman

On 2 Sep 2008, at 12:26, Alex Harker wrote:

>
> Quote: peimankhosravi@gmail.com wrote on Fri, 29 August 2008 14:11
> —————————————————-
>> cool, I think maybe starting from simple non time varying is a good
>> idea. And maybe also integer bin shifting with a common amount for
>> all bins.
>
> Actually I was forgetting that the easiest max only way to do this
> is using fbinshift~ (as I never use it) – this takes a value in Hz,
> so the integer bin thing is irrelevant.
>
> Here’s a link to three binshifted files – using the help patch
> (modified for recording) – the descriptions of each file detail all
> settings, so please replicate in csound and post.
>
> http://share.ovi.com/channel/AHarker.public
>
> Some of the csound instruments you name are easier to do in max
> that others – many don’t have dedicated externals to do that
> operation and those will take more work, and possibly be variable
> in quality depending on exactly what approach is taken. I may need
> to look at source code to make sure I’m coding up the same thing,
> so I can’t promise how fast I can do them. However, I’ll add what I
> can when I can and if we find a subjective audio difference I’ll
> try to work out why from source code (in csound at least) so we can
> try to work out why it is happening.
>
> If you’d like to post 64 bit examples too, I’d be very interested
> to hear whether that is in any way worth bothering with, and if so
> for which cases.
>
> I went for instrumental and voice (both fairly complex) rather than
> percussive/sustained for this one, if you’d like it repeated on any
> other samples just ask…
>
> Thanks,
>
> Alex
>
>> I’ll post examples of these csound instruments:
>>
>> straight analysis/re-synthesis
>> time stretching
>>
>> frequency scaling: http://www.csounds.com/manual/html/
>> pvscale.html
>> frequency shifting: http://www.csounds.com/manual/html/
>> pvshift.html
>> multiplying two signals’ magnitudes: http://www.csounds.com/
>> manual/html/pvsfilter.html
>> EQ: http://www.csounds.com/manual/html/pvsmaska.html
>> freezing: http://www.csounds.com/manual/html/
>> pvsfreeze.html
>> smoothing: http://www.csounds.com/manual/html/
>> pvsmooth.html
>> blurring: http://www.csounds.com/manual/html/
>> pvsblur.html
>>
>> Also we should probably use two samples, one percussive and another
>> more sustained.


September 2, 2008 | 3:52 pm

Quote: peimankhosravi@gmail.com wrote on Tue, 02 September 2008 09:33

> I’m not sure how you have mixed down the string file to mono, I
> basically mixed the left and right channels and scaled the output by .5.

Whoops. sfplay~ with one channel only, so that means left channel only (not a mix).

Best to stick to mono for now as stereo fft stuff can introduce all kinds of phase coherence issues….

So, I also can’t hear a significant difference now (I’m not in ideal monitoring conditions right now though) – nothing definite yet (plus csound is performing in 64bit so one would expect an improvement).

The difference in the vocal sample is probably because csound is zeroing the dc bin of the fft (the anton sample with dc has a much less prominent 160Hz tone on the csound than on the max example). This is easily done in max – in fact I originally did it, but it doesn’t totally kill the dc in the example so I used a biquad instead.

The other option is that it has to do with whether frequencies below 0Hz or above the nyquist are folded back into range in either case (technically a shift down will create a negative frequency – a cycle going in the opposite direction), although I don’t think either algorithm is doing this…

All this highlights the difficulty of comparing things exactly…

I’ll do the percussive + convolution later.

Alex


September 2, 2008 | 4:00 pm

Quote: AlexHarker wrote on Tue, 02 September 2008 09:52
—————————————————-
> Quote: peimankhosravi@gmail.com wrote on Tue, 02 September 2008 09:33

> The other option is that it has to do with whether frequencies below 0Hz or above the nyquist are folded back into range in either case (technically a shift down will create a negative frequency – a cycle going in the opposite direction), although I don’t think either algorithm is doing this…
>

OK – spoke to soon – that’s it – the max algorithm reflects back into the real domain so the entire input is represented. Likewise for upwards shift of 160Hz the top 160Hz will be reflected back round into the real domain. You can check this out by shifting downwards in max, you’ll soon start to hear the pitch rise due to the reflection.

There’s no option for this, which is a shame. I have my own external for max that does shifting/transposing and other things which has an option for working in either mode (reflection either on or off), so it doesn’t bother me too much, but sometimes you might want one or the other….

Alex


September 3, 2008 | 12:21 am

Ok I’ve got the cross synth example.

http://idisk.mac.com/peimankh/Public/comparison/sho_cherok-
crossCsound.aiff

4096 and overlap of 8.

This time I’m only using the left channel. Your explanation about
the dc makes sense.

Best
Peiman

On 2 Sep 2008, at 16:52, Alex Harker wrote:

>
> Quote: peimankhosravi@gmail.com wrote on Tue, 02 September 2008 09:33
>
>> I’m not sure how you have mixed down the string file to mono, I
>> basically mixed the left and right channels and scaled the output
>> by .5.
>
> Whoops. sfplay~ with one channel only, so that means left channel
> only (not a mix).
>
> Best to stick to mono for now as stereo fft stuff can introduce all
> kinds of phase coherence issues….
>
> So, I also can’t hear a significant difference now (I’m not in
> ideal monitoring conditions right now though) – nothing definite
> yet (plus csound is performing in 64bit so one would expect an
> improvement).
>
> The difference in the vocal sample is probably because csound is
> zeroing the dc bin of the fft (the anton sample with dc has a much
> less prominent 160Hz tone on the csound than on the max example).
> This is easily done in max – in fact I originally did it, but it
> doesn’t totally kill the dc in the example so I used a biquad instead.
>
> The other option is that it has to do with whether frequencies
> below 0Hz or above the nyquist are folded back into range in either
> case (technically a shift down will create a negative frequency – a
> cycle going in the opposite direction), although I don’t think
> either algorithm is doing this…
>
> All this highlights the difficulty of comparing things exactly…
>
> I’ll do the percussive + convolution later.
>
> Alex
>
>
>


September 3, 2008 | 1:12 pm

On 29 Aug 2008, at 22:12, peiman khosravi wrote:
>
> I’ll post examples of these csound instruments:
>
> straight analysis/re-synthesis
> time stretching
>
….
> blurring:
> http://www.csounds.com/manual/html/pvsblur.html

i had a go on pvsblur.
you can find my results here:

http://www.esbasel.ch/Downloads/pvsBlur_examination.zip

included are the csd file, max patch (with two pfft versions, and a
csound~ version), example soundfiles and a readme with short
explanations.
for static blur times i think they sound pretty much the same.

for a quick comparison you might like to listen to
"csound_pvsblur_drumLoop-0.5.aif" and "msp_pvsblur_drumLoop-0.5.aif".

volker.


September 3, 2008 | 1:32 pm


September 3, 2008 | 1:32 pm

Hi Volker,

I think these sound noticeably different. I’ll check out the csound source later to see why – although obviously the sliding average should sound different to a mean average. Other than that it may be something to do with the phase unwrapping part – I tend to find framedelta / accum to produce accumulated error fairly rapidly – cartesian approaches seem to work better for me in most case, althoguh I’m not sure how you’d implement one in this case.

BTW – did you try using the slide mode of vectral – it would seem to be a simple approach (moving average) to the one you’ve taken here, but a slightly different implementation…

Regards,

Alex


September 3, 2008 | 5:26 pm

hi alex,

On 03 Sep 2008, at 15:32, Alex Harker wrote:
>
> Hi Volker,
>
> I think these sound noticeably different.

are you talking about the soundfiles or the two pfft methods? the
pffts are different of course.
the soundfiles are not the same either – i’m not in a studio right
now – but except for the beginning, i find them to be pretty close.
can you describe the difference you are hearing a little more?

i didn’t pay a lot of attention to the initialisation of the
averaging, so the msp emulation sounds different at the start of the
file (or digital zero entering the pfft). this can likely also cause
some (audible) phase issues later in the process.
at least the impulse responses of the two processes are different.

> I’ll check out the csound source later to see why – although
> obviously the sliding average should sound different to a mean
> average.

hm, i don’t see why this would be so. are you talking about the
_sliding_ (moving) average or the _running_ average?
if i remeber well, the sliding average is just the mean average of a
sliding window, no? the running average "remembers" all past input
samples – this is indeed different to the mean.

i simply tried to implement the sliding avg by recursion, which is
much cheaper (my aging powerbook is thankful), but suffers from
accumulation error -
there must be a reason why they didn’t do it in the csound ugen… :)

> Other than that it may be something to do with the phase unwrapping
> part – I tend to find framedelta / accum to produce accumulated
> error fairly rapidly – cartesian approaches seem to work better for
> me in most case, althoguh I’m not sure how you’d implement one in
> this case.

this might very well be true and be the crucial factor for sound
quality.
trying the cartesian method should be cheaper and better sounding –
but more complicated, either. :)

>
> BTW – did you try using the slide mode of vectral – it would seem
> to be a simple approach (moving average) to the one you’ve taken
> here, but a slightly different implementation…

yes, but i believe this is computing a running average – not a
sliding (moving) average.
it sounds interesting but not the same as the pvsblur ugen.

by the way, i have put up another .zip (same address).
included now is another .csd for use with csound~, which takes in a
signal, as opposed to the old one, that played the soundfile form
inside. this makes comparison easier.
i’ve also added another recording, this time form the output of
csound~ inside maxmsp.

if you find the time to investigate a little further, i would be
curious to hear about your findings.

volker.


September 3, 2008 | 6:50 pm


September 3, 2008 | 7:56 pm

On Sep 3, 2008, at 6:32 AM, Alex Harker wrote:

> I think these sound noticeably different.

They are quite different. For one thing the Max version is about twice
as long as the native csound version. It seems louder, too.

I couldn’t find a good offset point that worked with my comparison
patch.

-C


September 3, 2008 | 8:03 pm

Quote: Chris Muir wrote on Wed, 03 September 2008 13:56
—————————————————-

> I couldn’t find a good offset point that worked with my comparison
> patch.

As this isn’t a csound vs csound~ example – it’s a max implementation vs csound implementation – the methods of computation are significantly different enough (not better or worse, just different) to make this method of comparison pretty meaningless.

This test is ears only – Also I don’t think the length thing is an issue here, volker just recorded more of one than the other….

Cheers,

Alex


September 3, 2008 | 11:26 pm

On Sep 3, 2008, at 1:03 PM, Alex Harker wrote:

> This test is ears only – Also I don’t think the length thing is an
> issue here, volker just recorded more of one than the other….

Ah, well in that case, they sound a little different :-)

-C

Chris Muir
cbm@well.com

http://www.xfade.com



kjg
September 4, 2008 | 7:59 am

Quote: Chris Muir wrote on Thu, 04 September 2008 01:26
—————————————————-

> Ah, well in that case, they sound a little different :-)
>

Really??? You mean they didn’t cancel out? Interesting… :P


September 4, 2008 | 12:42 pm

On 03 Sep 2008, at 22:03, Alex Harker wrote:
>
> Quote: Chris Muir wrote on Wed, 03 September 2008 13:56
> —————————————————-
>
>> I couldn’t find a good offset point that worked with my comparison
>> patch.
>
> As this isn’t a csound vs csound~ example – it’s a max
> implementation vs csound implementation – the methods of
> computation are significantly different enough (not better or
> worse, just different) to make this method of comparison pretty
> meaningless.
>
> This test is ears only – Also I don’t think the length thing is an
> issue here, volker just recorded more of one than the other….

yes.

this rather lengthy thread becomes a little confusing, i guess. maybe
it’s time to split it up.

i was reacting to a post by peiman who said earlier:

> I have experimented with msp fft stuff and have concluded that the
> native fft sound quality is just not good enough in msp to be
> usable for me.

no worries, peiman, i don’t hold it up against you. it just made me
curious to find out, if there _is_ a quality issue with msp’s fft
processing.

i think it’s interesting to look at the rather advanced pvs ugens of
csound (e.g.) and try to emulate their behaviour with msp’s basic
building blocks, to see how close we can get.
it’s true, that this is much more work and you have to know your way
through the frequency domain very well (and still there are lots of
mistakes to make), but i enjoy the freedom to experiment at this very
low level, to find out how things are working – finally that’s what
max is all about, at least for me.

back to the question of sound quality. most of it has already been said.
i don’t believe in a basic flaw in the "msp sound engine" – what ever
that’s supposed to be.
so basically csound, msp, supercollider etc. sound more or less the
same to me.
however there is definitely a different sound (and in certain cases a
different sound quality) in some of the ugens/externals that are
provided.
and, i think scott mentioned that, different programming interfaces
(routines, workflow, graphical vs textual stuff etc.) for sure lead
to differing sonic results.

On 29 Aug 2008, at 13:02, Alex Harker wrote:
>
> The difficulty of implementing some types of processing in max/msp
> is one of the reasons I believe that myths of differences in sound
> quality exist…

very well put, IMHO.

also, there are things that are not possible to achieve using only
native maxmsp objects. you might not get that "supercollider lowpass
filter sound" out of a biquad~, if you try to calculate the
filtercoeffs with max’s 32bit floats.
but then there is the possibility to use other peoples externals (or
wirte them yourself).
in case of spectral processing there are large libraries available
for maxmsp.
one could argue that csound only consists of third party ugens – what
a mess… ;)

OK, i’ve tried to emulate the csound pvsblur ugen. the resulting
sounds are not absolutely the same,
and there’s no use to make a sample by sample comparison. but still i
believe the results are similar enough to state that there is no
inherent sound quality problem with the use of pfft~ (at least in
this case).

pfft~ is a tricky object. on the one hand it is pretty basic compared
to the pvs opcodes in csound, on the other hand it hides some of the
even more complex stuff to the user. so we sometimes have to guess
about it’s inner workings, cause we can’t see inside… [ please
insert "commercial vs. open source software" debate here ].

anyone interested can see my latest efforts here:

http://www.esbasel.ch/Downloads/pvsBlur_examination.zip

i’ve changed the accumulator from floats to doubles, as alex
suggested, and replaced the old soundfile by 32 bit recordings. also,
tried to make them all the same length, to avoid further confusion… :)
there is still some issues with initialisation of the averager, so
the beginning of the files is not the same.
and i’m sure there are other things that can be improved.
i will stop my examinations of pvsblur here.
however, if anyone likes to dig further, i would be happy to hear
about your findings.

if you simply want to listen to the results, you can access the 32bit
files directly from this temporary link:

http://www.esbasel.ch/Downloads/temp.htm

volker.


September 4, 2008 | 1:33 pm


September 5, 2008 | 9:14 am

On 04 Sep 2008, at 15:34, peiman khosravi wrote:
> Thanks for the debate :-) My quote about fft in msp has to be put
> into context though.

sorry, peiman, quoting you out of context was a bit unfair.
but your statement (without the additional explanations) seemed a
little provocative…

vb


Viewing 136 posts - 1 through 136 (of 136 total)