PD isn’t as development-friendly, and lacks a lot of the higher-level objects that Max has (like, two years ago I had to write my own exponential ramping function, since linear envelopes sound crappy. Meanwhile, MSP has had curve~ for quite a while now).

The mc. objects look great, and AFAIK, unmatched by PD. The new Mappings interface stuff also looks like it would be a terrific and quick way to connect DIY hardware bits together in the context of a system like Bela.

Anyways, this is all a bit OT to the initial Max 8 prompt… Maybe @darwingrosse is lurking here and will bubble these ideas up to other Cycling folks? :wink:

3 Likes

Thanks for thinking of me!

:thinking:

[ddg]

3 Likes

What’s a bit of a bummer is that with how powerful phones are these days, I’m sure you could get a shit load of Max-ing on them. But they aren’t engineered for general computing. Just for Twittering even faster than before…

But yeah, any embeddable Max would be mind blowing.

7 Likes
13 Likes

All good points. I guess for now it will just depend on which pieces are the most crucial for the project, embedded/cheap computer or the specific objects in Max.

There are some cheap and small Windows based machines more like the size of a Mac Mini, but nothing as small as rPi or Bela…

The new Lattepanda looks interesting though!

1 Like

This may be as good a place as any to ask: I’ve used max pretty extensively over the last three or four years and I don’t think there’s any software or programming language that has ever caused me a similar amount of frustration as max.

I still feel like a) there’s still some idiosyncrasies that I just don’t know about (i.e. something similar like the ordering of events from right to left) because sometimes things just don’t work as I’d expect and remain a mystery and b) I don’t have enough knowledge about many objects and particularly the parameters they take and how to send the right messages to what in order to get the objects to do what I need them to do.

I do of course read the references, but I feel like they always leave out important information that I’m somehow expected to either know before even starting to read the reference or intuitively understand without further explanation. An example came up as I fiddled with mc.evolve~ yesterday. I feel like neither the reference, nor the help pages do a good job (or any job at all, really) explaining just how the breakpoints are specified. I can make some guesses (and reverse-engineer the patches on the help page, e.g. the one with multirange), but a lot of my assumptions were wrong as I had to figure out through experiments. I’m still not 100% sure if I truly understand all the possible variations of the expected messages.
Another thing that came up on my first evening with mc was sending messages to mc.gain~ objects to set individual faders. I still haven’t figured out if this is possible and how this could be achieved. I would’ve thought that this was a rather obvious use case, but it’s not mentioned anywhere that I can see.

If those were just small negative experiences and most things were just clear, I wouldn’t worry about it. But for me this is a constant battle. And the weird thing is that there is so much documentation available. It just never seems to document the things that I don’t understand.

Now I’m by no means an expert in DSP, but I do like to think that I know a thing or two about programming and the underlying principles (after all, that’s been the main focus of the last 20 years of my life, I’m a software engineer by trade). However, all my experiences point to there being some sort of tome of secret knowledge that everyone is expected to have read that I must’ve missed.

So after all this, my question is: Is everyone else just as lost as me? How do you approach new objects in max? Is it just as much of a black box to you or am I missing something obvious? Where’s that tome that I need to read? :slight_smile:

5 Likes

It’s not just you :slight_smile:

I’ve had several attempts to get my head around it and have never really managed. Also have 20+ years as a software engineer in my day job. Think it’s something about visual programming that I struggle with - needs a text editor as an interface instead :slight_smile:

3 Likes

yup. order of operations, inconsistencies between objects, actual bugs in the program, pretty shitty debugging, overpowered global variables, and incomplete documentation are all hella frustrating in my experience. max takes much more patience than a normal programming language for me. I think it’s largely because this program literally dates back to the early 80’s. there are a lot of fundamental changes to be made that have never been made.

despite this, i still feel like i prefer max over the alternatives. with time i’m feeling more and more like i can be creative with it. i’ve found these issues overcomeable - kind of like learning a really hard instrument. i like the weird way that it hovers between an interface and a programming language (this update brings it even closer to the middle). i think it would be harder for me personally to get into that creative mindset with a text-based language.

but yea, that’s me. i think community in part has the power to combat the issues. the cycling74 forums could be better than they are, and there could perhaps be a better community around max/msp here. i’m definitely down to help anyone with any issues they may have.

2 Likes

I just started working with max - well, max for live. One thing that frustrates me is that all the tutorials are still max tutorials and won’t output sound without replacing the dsp out with plugout…

I wish I didn’t have to shell out another $300 for standalone max - I would gladly accept the other limitations of max4live.

there’s a 30 day demo, can be useful for learning :slight_smile:

yes, but you should consinder that there are $399 of reasons to prefer PD
IMHO

There’s a much better set of M4L tutorials available, but in a fairly wacky place. They’re in the help view for the M4L Building Tools pack.

  1. Go to Packs (under Places in the Live browser sidebar)
  2. Right-click “M4L Building Tools” and select “Show Default Lesson”.

There are a bunch of lessons there, starting with MIDI processing.

6 Likes

Thank you! I don’t know why this isn’t more obvious.

From my perspective this is spot on, I am very comfortable with analogue synthesis, and modular synthesis, and within Max DSP, BEAP, however to be able to fully exploit MAX 8, or whatever pre existence, there just seems to be soooooo much expected knowledge required , I really want to start exploiting vizzie and jitter to drive the graphical output using my modular setup from a performance petspective but a lot of times I feel bewildered when this forum starts to disappear into the complexities of levels of knowledge that can kinda only be known if you were in right from the start

1 Like

You’re definitely not alone. I think of Max these days as a convenient environment for UI, midi/data routing and hosting of Max externals… in other words, anytime I want to do something of any complexity I just code it as an external and do the interface in Max. I embed a C++ delegate object in the main Max object and have it do all the work.

2 Likes

what’s the debugging situation for max objects like? I’ve probably done some things that are complicated enough to warrant an external but I’ve always assumed it would just be too difficult to test and revise compared to a max patch

1 Like

Just set breakpoints, attach to process Max in Xcode… like everything sometimes it fails but is mostly alright…

I did test max runtime on a $50 Windows Tablet a while back. The audio drivers weren’t really built to fight latency, but it had WiFi, and multitouch, and could handle my MIDI processing well enough.

(The turnoff for me, with this particular unit, was that you had to keep track of a special USB dongle to charge the thing. I knew I would lose that in a day or two.)

First off: Thanks for the replies everyone - I appreciate it and I feel slightly less stupid now :slight_smile:

But only slightly, because I have to ask questions like this one: Does anyone know a way to make a mc.list~ object that takes a list of length 100 and gives me 100 channels of values? Other than typing “mc.list~ 0. 0. 0. 0. […] 0.” with 100 "0."s, of course, because that seems sort of dumb. I already have generated the list I want and it’s static (for now), so I guess I could print it and copy paste it in, but this seems like an obvious use case I’ll run in a lot and I’d love to have a better solution.

Alternatively, I’d also be happy about another solution to turn a long list of values into a bunch of mc signals. But I think that’s exactly what mc.list~ is for?