crucial differences in SDK's 4.x 5.x 6.x ?

Jul 1, 2013 at 6:35am

crucial differences in SDK's 4.x 5.x 6.x ?

Hey,

i’m currently trying to get into max externals in c creation using that (somehow classic ?) tutorial : http://www.music.mcgill.ca/~ich/classes/mumt402_06/MaxMSPExternalsTutorials/MaxMSPExternalsTutorial3.2.pdf ; but as you can see it’s a little outdated. So, are there other more recent tutorials out there on the web, or are there basic things i should know regarding max sdk since 5.x that would help me get started ? for example ‘new object list’ and hence any code related to it seems to be deprecated, are there many things like this ?
thanks in advance !

#254614
Jul 1, 2013 at 9:06am

Hi,

AFAIK, the difference between 4 and 5 SDKs is more important than between 5 and 6, at least concerning appearances of the code (“old style” / “new style” class initialisation, and the introduction of “Attributes” in the last). Between 5 and 6 differences are mainly focused on 32/64 bits upgrade.

I learnt to code only (and directly) with the 5.1.7 SDK and materials / examples provided. For the unresolved questions i look into more ambitious open sourced projects i found on the web (that can be resumed to Jamoma and the Timothy Place blog / github).

In last resort i ask in that forum.

For newbies most of times the difficultes comes from the IDE (Xcode). How to properly link to the libraries… (Specially as externals are bundles / DLL ; Not well explained in C books that usually starts with command line tools).

So my approach was to start to build “No Operation” externals ( https://github.com/nicolasdanet/Flop ), for learning how to properly set the environment and understand the OO spirit of Max/MSP objects ; and then dig into more subtil tasks.

My 2 cent (sorry for off topic).

#254627
Jul 1, 2013 at 11:08am

Hi,
Thanks for your advices, they are very helpful. The Flop things seem that they will be too !

#254640
Jul 3, 2013 at 7:55am

one little question – can you update an external after recompiling, without having to reboot max ? Does it depend on if it’s a .bundle or .mxo ?

#254841
Jul 3, 2013 at 8:39am

Hi,

1. No, you can’t. You have to relaunch Max/MSP after each compilation to consider modifications.

2. The suffix of an external must be .mxo (at least for Mac OS) ; the .bundle default suffix (for Xcode projects) must be overwrite (“WRAPPER_EXTENSION = mxo” in the maxmspsdk.xcconfig).

#254848
Jul 3, 2013 at 9:49am

hm ok, that’s odd, i have “WRAPPER_EXTENSION = mxo” in the maxmspsdk.xcconfig, but if i don’t create a .bundle of the compiled object, it doesn’t load, even though it is in max preference paths…. in fact the product name is .bundle and if i rename it in .mxo and make a clean, the generated external is a .bundle. i’m sure there is something fishy going there, due to a mismanipulation on my end :D

(edited.)

#254853
Jul 3, 2013 at 9:56am

Solved – it was as stupid as just having “wrapper extension” in the max-external target poperty set as “bundle” instead of “mxo”.

#254854
Jul 3, 2013 at 10:12am

Hi,

Be sure the xcconfig is selected for your project.

For instance in Xcode 3.2 :

1. Xcode / Project / Edit project settings ;
2. Tab : Build ;
3. Bottom Right : Based on : maxmspsdk.

And so you will not have to manually fill the proper settings.

#254855
Jul 3, 2013 at 10:20am

Hi,

also something that might help you with XCode is to understand the difference between projects and targets, and how project settings affect the target settings. I remember that I’ve had a lot of trouble when I started developing with XCode as I always set up the wrong kinds of settings and after a while, everything was just messed up. BTW, I think you should really start by copy-pasting the SDK examples and just modifying the code, and only enter into linkage etc. questions once you’re familiar with the development process (well, unless you already have some background on programming, in which case it might not be that hard for you to understand how XCode works — for me, it was).

Cheers,
Ádám

#254856
Jul 3, 2013 at 10:38am

@nicolas danet and @$adam : i’m very well aware (even more now than previously) that i did not take the ideal route for a beginner. I have a very little background in programming, the project i’m working on is for studies and it’s not mine (i mean i didn’t create it), i dived headfirst into it because i did not evaluate well what i should have done first. But it’s getting better every day, so in the end lot of time was lost, but by doing tutorials, lot of trial and errors, correcting my errors, and correcting my corrections, i hope it will end well !…
that’s for the whacky learning route. In the future i’ll remember about selecting xcconfig first… and all i understood for now about the differences between project and target settings is that, at least if you have one target in your project, there should not be differences ?…
thanks for your help and patience !

#254861
Jul 3, 2013 at 11:00am

Hi,

I spent lots of time also in the “project / target” nightmare. Trust me, i started coding from scratch, so i experienced all the pain you will pass through. With one target per project ; my advice is to edit one and only one (IMHO the project settings), and keep the second clean (you can delete everything with the delete key).

#254867
Jul 3, 2013 at 11:44am

do you mean, if you edit one and only one, and erase (?) the other, then the other will be automatically set to the first one’s values ?

#254872
Jul 3, 2013 at 4:45pm

Yeah, by the project/target trouble I guess I was referring to the same as Nicolas. And my solution has been the same. I am also a self-learning programmer, so the same nightmare here. :-)
The thing to remember about project/target settings is that they are in hierarchy, although I always forget which one overwrites which. So, if you consistently use either the one, or the other, there should be no problem. The trouble is that (at least, when I was a very beginner) I always forgot from time to time the one that I already modified, so I ended up many times with externals where some settings were set at project level and the others on target level. Don’t do the same mistake…

BTW, with time, I realised why it makes sense to have project and target settings separately: if you want to develop several externals within the same XCode project, it starts making sense. But until that, just stick to either project or target-level settings.

#254908
Jul 3, 2013 at 10:33pm

Yep,

You can consider the “project settings” as main and “targets settings” as options sticked to each product (but all will inherit default values from the main project setting). In your case (with one target per project) i guess it is better to edit just the main.

In my case, managing with xcconfig and filepath frustrated me a lot at the beginning whereas it is finally not so hard when you get it.
Now, i (almost) delete everything in the two menus, and i write an explicit xcconfig for each situation.

https://github.com/nicolasdanet/Grenadine/blob/master/Sources/Miscellaneous/miscellaneousDebug.xcconfig

#254928
Jul 4, 2013 at 1:19am

Ok it’s becoming clearer ! thanks again for your help.

#254938
Jul 4, 2013 at 2:42am

Hi,

My last advice is to spend a little time to understand the xcconfig path format ( https://github.com/nicolasdanet/Grenadine/blob/master/Sources/Miscellaneous/miscellaneousDebug.xcconfig#L7 ) if you are not familiar with shell commands. Most of the problems i get at the beginning (linker errors/ info.plist missing) was the result of my ignorance of such “../../..” meaning.

#254943
Jul 4, 2013 at 4:31am

actually i’ve spent a little time doing stuff with terminal, so that part is rather ok :)

#254946

You must be logged in to reply to this topic.