Live data from Hacker News

Max/MSP: A visual programming language for music and multimedia

en.wikipedia.org

21–30 of 68 posts

Re: Max/MSP: A visual programming language for music and multimedia

#21
post #18

I have a real problem with visual languages like Max and PureData (and all the other visual languages I've ever seen). They seem like a good idea, and might be fine for computer-phobic people just starting to be introduced to programming, but whenever one tries to make anything even a little complex in them they inevitably become a mess of spaghetti-code. Languages like these also don't have the almost hundred years…

These are valid criticisms (although parsing max patches is very easy as they are just json files). However, I think you're missing the point. The point of Max is to be one notch away from something like Ableton - a language and methodology for programming your own routines, patterns and at the lowesr level DSP algorithms (something that gen~ has facilitated nicely). You might even write your own objects in c++ if th…

This kind of reinforces my point of the languages being only really suitable for simple patches, as the more complex they get the more they'll need things like sophisticated debugging facilities, testing, tracing, etc to figure out what's going on, why things work the way they do or why they break when they don't.

As for them being just JSON files, that doesn't really help because these languages aren't designed to be programmed on the JSON level. They're designed to be programmed visually. Having a JSON file you can edit doesn't help any more than having an XML file of a Word document. You're not going to be editing your Word document using the raw XML. You need a word processor like Word itself or Libreoffice to make sense of it and edit it in any kind of meaningful way.

The potential is there, of course, to build text tools around manipulating the raw JSON that would be Max-aware, but that would break Max's visual paradigm and then you might as use a traditional text-oriented language to begin with.

Re: Max/MSP: A visual programming language for music and multimedia

#22

Max is Max/MSP, where: * MSP is an engine for generating/synthesizing/analyzing realtime audio which the user builds as a diagram in a GUI. The backend automatically sorts the diagram into a graph and generates the audio as the user builds the program. So by the end, the programmer has used their ears to measure whether the program can indeed compute audio for the diagram in realtime. (And the corresponding classes f…

> Fresco-based write protection

LOL ain't that the truth.

Max projects can become spaghetti monsters very easily even if you create custom objects and such.

Re: Max/MSP: A visual programming language for music and multimedia

#24

Max is Max/MSP, where: * MSP is an engine for generating/synthesizing/analyzing realtime audio which the user builds as a diagram in a GUI. The backend automatically sorts the diagram into a graph and generates the audio as the user builds the program. So by the end, the programmer has used their ears to measure whether the program can indeed compute audio for the diagram in realtime. (And the corresponding classes f…

> users typically keep a separate, erroneous mental model of all the Rube Goldberg machines in their short-term memory... the user keeps drawing and connecting more Rube Goldberg machines atop one another until their short-term memory becomes the only private key that can decode them.

It really was a cute rant (we've all been there where we've hated using something that much!), but honestly this bit describes every piece of sufficiently complex software I've worked on. Not sure about you, but I poke my coworkers all the time to ask "hey, can you explain what this bit of business logic does again? I think I need to reuse it for this new feature..." Maybe Max just needs a unit testing framework.

Re: Max/MSP: A visual programming language for music and multimedia

#25

Max is Max/MSP, where: * MSP is an engine for generating/synthesizing/analyzing realtime audio which the user builds as a diagram in a GUI. The backend automatically sorts the diagram into a graph and generates the audio as the user builds the program. So by the end, the programmer has used their ears to measure whether the program can indeed compute audio for the diagram in realtime. (And the corresponding classes f…

> users typically keep a separate, erroneous mental model of all the Rube Goldberg machines in their short-term memory... the user keeps drawing and connecting more Rube Goldberg machines atop one another until their short-term memory becomes the only private key that can decode them. It really was a cute rant (we've all been there where we've hated using something that much!), but honestly this bit describes every p…

lol unit testing? Max/MSP objects are just enormous json blobs. They have much bigger problems with that language than unit testing.

People interested in musical programming should investigate SuperCollider and completely bypass Max/MSP. It’s terrible software.

Re: Max/MSP: A visual programming language for music and multimedia

#26
If you're in SF in march and interested in Max/MSP, my conf/music festival, Algorithmic Art Assembly, has a workshop on Creating Digital Instruments with Max/MSP - https://aaassembly.org/workshops/ (conf also features Miller Puckette, Curtis Roads and many more!)

Re: Max/MSP: A visual programming language for music and multimedia

#27

I have a real problem with visual languages like Max and PureData (and all the other visual languages I've ever seen). They seem like a good idea, and might be fine for computer-phobic people just starting to be introduced to programming, but whenever one tries to make anything even a little complex in them they inevitably become a mess of spaghetti-code. Languages like these also don't have the almost hundred years…

Some of those chaos just happens, because just like in textual languages, many people write monoliths instead of making use of the modular tools made available to them.

Most visual languages that aren't toys, do have search capabilities, visual debuggers, and most importantly the ability to package code blocks into modular units.

Unreal's Blueprint tooling is quite powerful, and several games have been written like 99% in Blueprint.

Re: Max/MSP: A visual programming language for music and multimedia

#28

Opensource alternative Pure Data is also worth mentioning: https://puredata.info/

With puredata, is it convenient to either: * write/script your own "objects"/nodes in some conventional programming language * abstract a "patch" into its own node (thus writing a node in pd itself)

* there are various extensions for embedding python or lua. For the latter, checkout pdlua or ofelia.

* yes, they are called abstractions. They also have a nice feature called “graph on parent“, where part of the abstraction's canvas will appear on the parent canvas.

Re: Max/MSP: A visual programming language for music and multimedia

#29

Max is Max/MSP, where: * MSP is an engine for generating/synthesizing/analyzing realtime audio which the user builds as a diagram in a GUI. The backend automatically sorts the diagram into a graph and generates the audio as the user builds the program. So by the end, the programmer has used their ears to measure whether the program can indeed compute audio for the diagram in realtime. (And the corresponding classes f…

> users typically keep a separate, erroneous mental model of all the Rube Goldberg machines in their short-term memory... the user keeps drawing and connecting more Rube Goldberg machines atop one another until their short-term memory becomes the only private key that can decode them. It really was a cute rant (we've all been there where we've hated using something that much!), but honestly this bit describes every p…

> but honestly this bit describes every piece of sufficiently complex software I've worked on.

Just to be clear: the word "atop" is being used literally here in a way that doesn't hold for text-based languages.

Your frustration: "What does z() do, and why is it calling flarg() twice?"

My frustration v0.1: "What does z() do, and why is it calling flarg() twice?"

clicks and drags an object to reveal another Fresco

My frustration v0.2: "What does z() do, why is it calling flarg() twice, and why are there 7 instances of flarg pasted atop one another with internal non-local connections which trigger stack-overflow protection every time z gets called? Also, why is there a zero-width spacer between the 'z' and the '()' which, while somehow syntactically correct, causes 'z' not to get called? Also, why does the text editor require one to click and drag a line from 'z' to the '()' in order to get rid of the zero-width spacer in order to actually call the function?"

Edit: I'm sure you can find similar weirdness in a text-based language. Perhaps if one made a contract that they're going to use a global setter variable in every function of a Javascript program which will mutate some global state. That would be bad. But you really have to work to do that whereas the natural tendency in Max is to wrap an object-chain back atop itself to create unreadable spaghetti as one builds a prototype.

Re: Max/MSP: A visual programming language for music and multimedia

#30

Opensource alternative Pure Data is also worth mentioning: https://puredata.info/

There was a cool web implementation back in the day...

https://github.com/sebpiq/WebPd

Looks like the creator is gearing up to pump new life into the project (as of 11 days ago!). In the issue linked at the top of the README, he bemoans the fact that he hasn't really had any other contributors. If anyone is looking for an interesting project...

Post reply on HN