Max 8 wish list

sepulcky's icon

Hi there!

After reading a recent sneak peek I decided to list of what would I like to have with 8th release to actually upgrade the license.

  • Better configuration. For example, bring back the “snap to grid” check box from Max 5–6, allow to properly make a color scheme and override it globally, allow to remap key bindings, allow to hide side bars by default and show them back with a key press (without pressing on those 1-pixel borders).

  • Optimize the UI — it’s quite sluggish last time I worked with Max. Really, I stopped using Max extensively only because the UI issues.

  • Update OpenGL to the latest version and make shader writing a better experience.

  • Fix usability in projects. For example, file renaming or numerous PATH issues.

  • Reconsider the decision made in 7.3 or 7.2 that C++ code generated with Gen belongs to C74 and not to the user.


I wonder what others would like to see in 8.

MuShoo's icon

For me I'd love to see something along the lines of Gen-for-max-UI-objects, if that makes sense. Probably won't happen, as there's already JSUI, but... I don't like it. Probably just because I haven't been able to find a good beginner tutorial for it, in regards to Max (I'm poor-but-passable with Java, pretty good with C/C++, and atrocious with javascript). I've been doing a LOT of tinkering with UI objects and layering things to get them to 'feel' the way I want my interface to feel, and it takes up a lot of patching space (and often makes UIs more sluggish than i'd like).

I would love love love to have an easily set preference like we used to have to make 'snap to grid by default' an option, and 'don't snap to objects by default' an option. I've tried setting it the way you're apparently supposed to now (make an empty patcher, change the settings, save it as the default) but it never seems to stick.

Never gonna happen: true multithreading. My UI's tend to get insane, and then they get sluggish when audio is going on. I can't always put the bulk of my processing into a poly~ object. I'm also still a bit unclear as to if I have multiple different [poly~ whateverMyPatchesAreNamed 1 @parallel 1] , if those threads will be spread across processors cleanly. (IE, I have [poly~ patchA] and [poly~ patchB], are they being spread across processors efficiently? or since they're both single objects, do they both still live on one processor?)

Similar and also never gonna happen: Just... some more efficient UI code. The waveform~ object is a HOG. Often using [pictslider] gets CRAZY stuttery if I have too much other stuff going on (waveform~ objects updating, [meter~]s going, etc).

Dg's icon

- a command to freeze all attributes set in the inspector at once ...
- better understanding about how openGL works in Jitter
- thorough documentation

balam's icon


Jitter needs more love

cerval's icon

For all MAX - objects: Please set "ParameterMode Enabled" = 1 as default. That makes using snapshots a lot easier.

vichug's icon

@cerval : i'm not sure i wish that, it could break a lot of things (existing patch and workflow)

Roman Thilenius's icon

to send something to all objects, there is [universal].

alain's icon

a hand tool to navigate more easily in large patch

hollyhook's icon

please free me from having to click 125% zoom every time i open a patch

Rob Ramirez's icon

- a command to freeze all attributes set in the inspector at once ...

hover over the middle-left side of an object, click the arrow, Transform -> Changed Attributes to Arguments

LLT's icon

hi
I have the same remarks as ECH
From facebook to here, never information about a new OpenGL version.... :(

I use Max since 1993. I saw MSP arrived, Jitter with great happiness.

Jitter did a great job with the arrival of ROB RAMIREZ.

But regularly the question on an OpenGL update is posed and there is no answer ....

I will pay for Max8, there will surely be a lot of improvement and new things, but we must, we, Max's users are up to date on the technologies used by Max.

I do not want to leave Max, but sometimes I have the impression of having a train late with Max in front of other visual tools.

Help me still have some hope for OpenGL and Bullet Physics in GPU for example :)

Thank you, and I hope this time to have a response from Cycling74

Laurent

Federico-AmazingMaxStuff's icon

Want to add just my two cents:

- Possibility of write global variables before functions in codebox
- Possibility to include existent glsl code inside a glsl shader with something like an #include statement

Roman Thilenius's icon

i just see the "patching improvements" article.

what i find really annoying the max7 is that "open original" is in a submenu.

this is not only my most used function in the contextmenu, there is simply no reason at all to put a single item in a submenu.

LLT's icon

Oups
I did not see this post
https://cycling74.com/forums/c74-and-opengl/replies/1#reply-5b0c73c4063b755d6bf630ee

ROB says 'an OpenGL update for a limited subset of Jitter-GL functionality is in the works for Max 8. '

for a limited subset of Jitter-GL functionality?

vokars's icon

Wine compatibility. All this music stuff is the only reason for still using microsoft windows instead of Linux. Will change and is good to be prepared for.

phiol's icon

how is group different then cmd + drag selecting a group of objects that we already have ? the shift+drag object is closer to what I've been asking for a while , but then you still need to click delete the object. still a 2 step process. how about simply keeping the connection when you delete the middle object.
Real question , not a complaint.

Also, it would be cool to select/highlight a group of objects and when you connect to the 1st one , all get connected. I know about the MaxToolbox by Nathanael Lecaude. But still this would be great. And I do know about the option+shift plus drag to create a auto connection. And the shift click with patch cord to maintain an unconnected patch cord. still tons of clicks.

Thanks for the zoom. been asking since max 5 . Had done my version with the zoomfactor $1 thispatcher and fingerpinger a while back. Was too clunky though

- edit: please bring the thisbpatcher like you have with the thispoly~
right now I have to resort to js the get the this.patcher instance number.
quike a handle for such a simple thing. Thanks

Thanks for the good work.

phiol

Herr Markant's icon

- please bring back „alt + double click“ on an [object] to open the help.
- keep the inspector scroll position when going to a new object.
- i need a „hand“ for moving the patch (cmd+h, or spacebar and mousedrag) like in other software.
- when click on an [object] ALL connected (cords and) [objects] are highlighted.
- disable [objects] for better debugging without removing stuff.
- [umenu] other symbol outputs than named. (Entry1 named „Hello1“ then outputs „decal“, entry2 named „Hello2“ then outputs „blend“)
- [umenu] delete entries by „string/symbol“.
- jit.movie play-status readout function (route play/pause 0/1 whatever).
- jit.movie hick-ups on the end of a loop (guess this is a viddll thing).
- when copying or rename a [pattr] keep the parameter mode values
- disable undo history in live.object (as checkmark)
- disable "startbangs" in live.button/text etc.
- please fix that [live.button/text] midi toggle/button behavior when midi mapped (https://cycling74.com/forums/live-button-is-temperamental)
- and i still have problems to freeze externals in the patch (m4l)

no matter, i love Max and it's features and i hope max will be even better.

btw. i would love to have an Max iPad App for my couch, where i can do weird routings and some math (no MSP/Jitter needed)

Herr Markant's icon

- new object [nodouble]: if an s i f b is incomming it just sends the value one time even it's triggered twice. So if i send a "1" and after the first "1" comes a second, the second "1" will be ignored until a new value arrives (Maybe this object already exists and I haven't found it yet.) solved

Roman Thilenius's icon

[zl reg]
I
[change]

Floating Point's icon

further extension of the zl suite of objects so there's less reliance on 3rd-party list processing externals (ie Lobjects etc)

Floating Point's icon

there's also this thread from 2013 which outlines the idea of a navigation window or panel where a patch is displayed in a tree hierarchy, with its subpatches as nodes (parent patch is the root node)-- if you click on a node you open that corresponding patch:
link

Herr Markant's icon

@Roman Thilenius Thank you, I was apparently blind.

hollyhook's icon

My wish for max 10: create another mode like MSP/Jitter mode, which allows me to create model graphs for Machine Learning - and have a backend like tensorflow that executes the models during runtime. That would be soooo cool... This is how such a graph looks like:

It is just inconvenient to create these graphs in python, so you often just make copy & paste from somebody else code, and wonder why the dimensions don't fit...
I always wish i had the max editor to lay them out, it would be much easier to create them and really understand them.

MuShoo's icon

Oh yeah, that reminds me (sort of building off my earlier comment): Non-signal outputs for Gen~. There's some really roundabout ways to do this - such as storing data in a buffer~ object and [peeking] it back out - but being able to output a list of elements from a gen~ patcher would be super useful. Make your own transient detector on a buffer and output a list of transient points!

Also along those lines (perhaps this already exists?) be able to set a specific gen~ object to be non-realtime, while the rest of the patch is running normally? IE, I could loop over a buffer in a gen patch and do some math that I only really need to do once, non-realtime.

Essentially I just want to never have to drop into C or JAVA land ever again :P

vokars's icon

I am using live.step. It's a great object. But why are the durations limited? No dotted durations (90 ticks, 180 ticks, ... not allowed)? I am using a workaround with the extra1 at the moment but to allow durations for dotted notes could be easy for the development team and could still be easily handled by the user in the editor. Seems that here a test configuration has survived the release date?

And ... the "grid" (stepcolor, stepcolor2) is only in quaters at the moment? Hm .. difficult orientation when using third based rhythm. At the moment I am using a workaround with stepcolor=stepcolor2 or usestepcolor2=false (no grid) and velocity for orientation but a simple attribute for the grid distance (2, 3, 4, ...) would be a useful improvement and is not too difficult to implement ("small details make a big difference").

Herr Markant's icon

- allow UI elements from subpatches be in the main patcher
- proper SVG support for fpic
- jit.catch with a texture mode @output_texture 1
- clear the value of a value object
- reset/change the name of a value object (set name) like in forward/receive
- a ;MAX message for clearing the console (maybe just a short key)
- a „no answer“ 0/1 output of the send object (when no receive)
- on „print“ output a hint from what object the original i/f/s/b comes from (debugging)

Dario's icon

fft capability in gen~!!!

Leo Mayberry's icon

An integrated file browser object would still, after all these years, be a breath of fresh air. The look of mild concern (like I'm drinking coffee out of an old army boot) when people see that file selection in my patches is achieved through a bunch of clunky folders is always disheartening. And if someone says "drag n' drop," I'll spit-take the coffee from my old boot and then put it right up your ass.

daddymax's icon

Help files with examples for every Gen operator. Sure, some of them may seem self-evident if you program, but if you don't and need to learn the concept then a multi-tabbed heelp file for each that clearly demonstrates function would be ideal.

phiol's icon

been 6 years since gen~ jit.gen jit.gl.pix and no explanation with the product put out. I find it an odd way to operate the business of a product. leave it at that.

please just add a bypass on the objects. keeping the node there but bypassed.

Berk Özdemir's icon

I would love to have more flexibility with movie file import. For my projects, I always need to separate to audio channel to buffer it, and sync the audio-video in the performance and I hate this whole process.

ben sonic's icon

I love the helpfiles and reference in max and it still could be improved, tiny but helpful:

1. reveal undocumented methods/messages
like "writeas" message to thispatcher
or
the message "; #SM open"
(thanks to source audio in both cases)

2. reveal secret objects
like "opened"

3. show alternatives to deprecated objects
like lcd-object
e.g.: "this object is deprecated, use xxx instead"

4. offer a downloadable offline reference
The "Unofficial Max/MSP 6 documentation in PDF format" is still a big help for me.

vokars's icon

Creating Midi Ports/Cable inside Max like the LoopMidi App from Tobias Erichsen does. The Midi Port Feature seems to work with Mac but not with Windows at the moment? The feature would provide Max For Live users an additional argument to buy the full version of Max. It looks like this is not a trivial job under windows and is maybe the reason why it was not implemented at the first place. Because we are near release date it is maybe an option for Max 8.1.

Carlos Caires's icon

make dict.view retain expanded/collapsed levels when the correspondent dict object is changed, instead of expanding all levels.
Include a message to set the depth the expanded levels (instead of having to click manually in all those triangles)


nouserid's icon

Option to embed pattrstorage data in a patch rather than having to save an external file.

James Huckenpahler's icon

This is probably a real outlier, and something for a future version of Max: ability to render/save very large images from jit.gl.render.

Federico-AmazingMaxStuff's icon

Hey James, this is already possible. What is your procedure?

James Huckenpahler's icon

Ahh - you're right! I looked at my patch again and found unrelated problem - I'm getting BIG images now! Thanks @federicofod!

Federico-AmazingMaxStuff's icon

Didn't do much ^^
Glad it works!

Nicolas Bazoge's icon

Hello,
A wish : to have a Mouse up/mouse down option for the [textbutton] output mode (=the button stays pressed when you keep your mouse/finger on it) ! It would seem particularly convenient at the age of touch screens...

James Huckenpahler's icon

wish list item for someday... [forgive me if there's already an easy solution for this]

currently importmovie fits content to jit.matrix (stretches image anamorphically to fill the matrix' dimensions) - that's groovy but there are common use cases where one wants to fill or fit the matrix proportionally without writing a bunch of extra logic for cornerpins or source and destination dimensions...

so for [jit.matrix] I'd love an attribute (like @scaling?) such that
flag 0 = fit content to matrix (what it does now, stretches image anamorphically)
flag 1 = fill matrix proportionally (scales up image proportionally so it fills matrix and clips extra data)
flag 2 = fit to matrix proportionally (scales down image proportionally so it fits within matrix and narrow dimension is 'letterboxed')

would something like that be re-inventing the flat tire? am I missing something easy/obvious?

Federico-AmazingMaxStuff's icon

Hi James, in this video you can see how to fit an image to width or height. I know it's not a built-in function but for the moment the way to go is to write your own algorithm for it, it's not specially complex after all:
https://youtu.be/eqfuEmFmGQU

James Huckenpahler's icon

^^^ got it - watching now - THX!

AudioMatt's icon

Max 9 wishlist

Given the following genexpr code:

Param plusMe(0);
mul_1 = plusMe * 2;
add_2 = in1 + mul_1;
out1 = add_2;

Gen~ knows that line two should only be calculated once per vector because it's a decedent of a Param object but before anything descended from an in object.

This would yield the following pseudocode saving thousands of calculations:

mul_1 = plusMe*2
for(vectorLength){
add2[i] = in1+mul_1;
}

This would make the practice of putting all one's logic outside the gen~ patcher obsolete. It would also allow for meaningful optimization with branching.

In general throwing all the gens together seems like the future.

nouserid's icon

A matrix~ like object in gen~.

Herr Markant's icon

Christmas again? Nice!
jit.graph as jit.gl.graph or with texture 1 output.

Federico-AmazingMaxStuff's icon

One thing I'd really like to have is to be able to modify other cells from the currently processed cell inside jit.gen.
For example: I'm in cell 0 0 and on top of the output for the current cell I'd like to be able to write for example to cell 10 10.
This should not be impossible since gen works on the CPU, so it should be able to modify every cell of the matrix from whatever location. That'd be great!

Ullstein's icon

I wish for christmas that mc.sfplay~ and mc.sfrecord~ can accept files that are bigger then 2 GB .
Please, I was really a good programmer last year, so I deserve a nice present :-)

vichug's icon

i wish for live4max...using native Live devices, a track container, LIve clips, to use as separate little things inside big max patches, no the other way around... that would be oh soooo cool ! max4live is nice, but i miss the "blank page" opening of max patches, and there is too much little prison cells of sound and UI everywhere in Live, contrary to Max. Golden prison cells though, and i would like to be able to order them around, not that they order me around :)

AudioMatt's icon

@vichug that’s a really good one. I always wanted max inside clips Rather than devices.

👽'tW∆s ∆lienz👽's icon

(wat? y'all are crazy, randomly waking up threads of old: this thread is from 2018 😂)
ok then... for Christmas, I want Cycling74 to restart the C74 record label( and accept my demo for it😜... here it is, sounds made with Max/MSP: https://soundcloud.com/rajatheresidentalien/cornerjack ).

Mr. Banshee's icon

At very least Cycling74 should do a bandcamp for the releases they already did cds for. i have all the cds, just think it would benefit others to be able to hear them/be able to purchase. Maybe this should be a start of a new thread.

AudioMatt's icon

Are there any efforts at a record label for patches? If pay a buck for more finished-art oriented patches.

hollyhook's icon

I want a Max Runtime in WebAssembly please!
don't know if that was even existing in 2018?

Herr Markant's icon

Please add a route info to jit.movie if a movie is playing or stoped. Like [route playstat] -> 0/1

Asher's icon

Feature requests I'd like of varying feasibility:

  • Give us arrays or access to lists in genExpr without using buffer+loops

  • Would love to have some sort of internal param that tells a genExpr patcher whether it is Gen~ or Gen; most code works in either but a lot of signal rate Gen~ stuff needs modification to function properly in Gen.

  • Textedit needs a major rework or massive feature upgrades - given the capabilities of Max, this object could have the potential to enable Max as a livecoding/scripting environment, which i think would make Max competitive against other software like SuperCollider or TidalCycles (which would be great, because I find the rest of Max to be way more fun than either :P). Currently the amount of text formatting and parsing you have to do to even approach this is frustrating and hacky. Could include: Selected line, REPL style behaviour, some sort of basic configurable parser, etc.

  • live.step and live.grid need improvement. There is no easy way to turn off a step in live.step, and no easy way to dump a column or row from live.grid without dumping the entire sequence.

  • Add more features/methods to the dict object.

  • Allow for the $ symbol to be used in trigger objects

Herr Markant's icon

Since i still have problems with blowing up max patches (amxd) with nonsense stye informations, it would be nice if there was something like a "remove all styles"-button.

Herr Markant's icon

Please make true that I can't paste (copied) code inside an empty object. This happens all the time to me and it hangs up my patches for minutes while editing.

example:

AudioMatt's icon

i feel like I requested years ago that pasting anything starting with the boxes message into an object should just put the boxes in the patcher instead of the text.

like... there’s no alternate reality where making that mistake means I want anything else to happen.

Herr Markant's icon

@AudioMatt of course, its the own hurryness, but this makes me stress out all the time ;-)

👽'tW∆s ∆lienz👽's icon

i bet that's a difficult one to prioritize development for... that's all about figuring out what mistake the user made which Max should ignore: creating an empty object box when they didn't mean to, or pasting text somewhere they shouldn't have(if Max guesses it's an entire patch you're attempting to paste, what should it do with the empty object box you also created?)

but ya... i like the way AudioMatt put it, and it does make sense to have it only interpret such text one way:

like... there’s no alternate reality where making that mistake means I want anything else to happen.

haha 😂 i dunno... i'd live in an alternate reality where making that mistake causes this song to play everytime:

Herr Markant's icon
AudioMatt's icon

@raja.

literal spit take. Not even kidding

Roman Thilenius's icon


i guess the problem is that when pasting 400 characters into an objectbox it takes longer for max to fond out that the object doesnt exist compared to 3 characters.

this doesnt make sense, it should be enough to check for the first string until space to find out that the obejct doesnt exist.

AudioMatt's icon

I mean, just check if the first character is {

Jan Andersson's icon

A modest request (?). A step by step guide (for dummies) on how to include tensorflow.js into node.script. I am failing. Maybe easier to write the ML code myself?

Herr Markant's icon

Multilines and simple format in jit.gl.text like: <br> <b><i>
but most important is multiple lines..

Dg's icon

[jit.movie~ @timestretch 1] would be a nice feature

Norman Freund's icon

Better communication with the Push2 hardware for people using with Live to design custom instruments. This means cooperating with the Live developers. And none of this, for advanced features you have to accept that if you make a mistake with the USB communication features (so you can write things to the LCD screen), you risk over-writing the firmware. Go beyond the only inputs and outputs are what Live gives you, to things like, pressing a note button does not necessarily mean, Live records the note button as midi, but you decide what is to be done with that button press, sending it out to Live as some other function. This means having a choice of what streams are recorded back into Live and what streams are used purely for control. An example, the built in octave shift buttons -- Live does not record that the octave button was pressed but records the effect that it had, i.e. the midi note output is changed. To be able to accept data from the Push2 and be able to communicate back to it (i.e. make a note pad what colour you want) all within the one device in Live. And not the LOM surface control, which has not kept up with aftertouch for example and treats velocity sensitivity differently. Sure there is the User Mode of the Push2, but then you loose the ability to show the control knobs as when used with the Live.bank feature.