Re: On illegal software in an academic assignment ...

Subject: Re: On illegal software in an academic assignment ...
From: Michael Gogins (
Date: Tue Nov 15 2005 - 10:47:51 EST


In general, music DSP software is built on the "unit generator" or "block" paradigm. This is not an inherently object-oriented model. It's not anti-object-oriented, either. It's a model that's pretty much orthogonal to object orientation.

Every one of these systems is a unit generator system, with the unit generators written in C, and some other language or other system (such as graphical patching) to wire up a network of unit generators. SuperCollider is no exception. The object orientation in SuperCollider comes in the SC3 language, which is for composing, not for synthesis (the "synthdefs" define how to wire up C (or is it Objective-C?) language unit generators in the synthesis engine).

If the systems support dynamically loaded unit generators, as they all now do including Csound, you can write your unit generators in C, FORTRAN, C++, Objective-C, OCAML, or whatever language you like.

For an example of an object-oriented take on the same paradigm, see Open Sound World, which is written in C++. Here, the unit generators are written as classes, and there is a class hierarchy for the entire system.


-----Original Message-----
From: Owen Green <>
Sent: Nov 15, 2005 5:14 AM
Subject: Re: On illegal software in an academic assignment ...

Rick wrote:
> Actually I have a simple question from a not-yet-coder not-yet decided
> on which to take up.

Learn C anyway, it's not hard and is

> What's MAX's resolution?

32-bit float (same as most current fp systems), though there is some
scope for going up to 64 in some cases. Obviously if you're writing your
own external there's nothing to stop you using whatever internal
resolution you want.

> The MAX VST plug-ins I use are never as clean
> as the ones written in C. I'm under the impression that there are some
> numbers being rounded off between processes/modules.

Rounding errors aren't going to cause significant degradation all by
themselves. If you're using e.g. Cubase, there'll be rounding errors of
exactly the same sort as you go in and out of plugins etc. MSP doesn't
excuse one from doing things properly, like upsampling where necessary,
using anti-aliasing filters and so forth. That said, Max/MSP is
primarily a good way of fitting things together; if you have an involved
piece of DSP to do, write an external(s) for it.

> What's the situation in PD? Is it the same?

Pretty much, AFAIK.

> MAX isn't actually an object oriented language, it's just a graphical
> object interface, yes? PD is the same I guess?

People get way too hung up on what may or may not be OO. Max is OO in so
far as it encourages one to encapsulate pieces of functionality within
self-contained units that communicate by passing messages to each other.
It doesn't exhibit (strictly speaking) other features of 'classical' OO
like inheritance (the ability to declare your new code as a specific
derivative of existing code, and inherit its functionality for free) or
polymorphism (the thing that makes inheritance useful as distinct from
the straight encapsulation that Max does allow: being able to address
all types that inherit from a super-type as if they were that super-type
(talking to Square and Triangle as if they were Shape, and not needing
to know anything more). This would make no sense in Max as you never
know anything about the objects receiving your messages.)

This archive was generated by hypermail 2b27 : Sat Dec 22 2007 - 01:46:14 EST