Max apps in new Apple Mac App Store?

Dan Nigrin's icon

Before I go spending $99 to become an official Apple Mac developer, does anyone know if the new "Mac App Store" that Steve Jobs announced yesterday will support apps built as standalones by Max/MSP? In other words, do they have any restrictions with respect to what languages/libraries/etc.. are used to create the apps (as they did for some time on the iPhone side of things?)

Dan Nigrin's icon

Partially answering my own questions - I've found some useful tidbits here:

So far, so good (as long as I stay away from Java, how lame of Apple). I guess for more details than this, I'll have to sign up for an account...

AudioMatt's icon

Something tells me they won't exactly be delighted to see applications that utilize MXJ

AudioMatt's icon

Woops... missed ya!

anyway... so much for the application I've been working on for 4 years.

Dan Nigrin's icon

Like I said, how lame of them on the Java stuff - though like it says in that Macrumors link you posted, it does seem in line with their other recent stances (e.g. Flash).

pereshaped's icon

The thing with java is because it implies you have to download java to use the app, though I am in the dark with embedded runtime engines like Max runtime. I can;t find anything that contradicts installing a runtime like Max runtime. Anyone found anything on this?

pereshaped's icon

Maybe we should start a Max app store :-)

AudioMatt's icon

With regards to max apps, I don't see why they would want them and not java apps. They are even higher lever and don't adhere to apple UI laws. Also I can judy see it: "doesn't perform any function"

Max app store is a great idea.

/iPhone typing

David Butler's icon

Max app and object store. This would be awesome, although it would perhaps have to rely on the honesty of the community in terms of licensing for paid apps.

Dan Nigrin's icon

Re: bundling the Max runtime - I think this is OK, because it gets bundled within the .app bundle. Apple dislikes/forbids if you want to install something elsewhere though (to be included in the forthcoming store, anyway).

pereshaped's icon

@ David :Im not sure how they are going to stop people copying stuff on the app store, is there a top level api that copyrights the app on the app store?

Personally the whole Mac App store smells of an attempt to dissolve the idea that there are more useful apps on the Win platform than on OsX and make Mac computers seem funkier because of all these cheap "cool" apps, like the million fart apps on the iOs. Come to Apple OsX who have millions of cool apps.

The more I think about the Max App store the more I like it.

It would be one way to attract attention to the fact that the Graphical Dataflow Programming environments are actually really powerful and useful.

cap10subtext's icon

[quote]The more I think about the Max App store the more I like it.

It would be one way to attract attention to the fact that the Graphical Dataflow Programming environments are actually really powerful and useful.[/quote]

+1

Roman Thilenius's icon

"Maybe we should start a Max app store :-)"

exactly.

seejayjames's icon

yes, graphical and dataflow environments are great. I mean, when you start learning computer programming and logic in general, that's one of the main ways to get the brain up to speed with flow, conditionals, branching logic, etc. So when it's abstracted to patch cords, it's pretty damn cool...you can understand what's usually a linear and syntax-based set of steps as an all-in-one graphic. Picture worth a thousand words, of code...?

Hans Mittendorf's icon

Can we work out a 'frame work' for this project?

AudioMatt's icon

Ok I'll throw this out. A max application that used jweb to surf around a normal shopping cart site (maxojbects.com plus?). Then when the user checked out, the application would download the stuff and distribute it to the right place on your drive.

That way you could include youtube demos, images, or soundbites of all the applications, objects, and patches.

Hans Mittendorf's icon
Dan Nigrin's icon

Hi Hans,

Thanks, yeah, I saw the post on Apple's site earlier today - I started a new thread this AM:

Alexandre's icon

Hi,
Will it be possible to submit an application made as a max standalone app ? I mean if i don't have any kind of experience with Xcode ? (On the link posted by Dan, the real meaning of this sentence is not clear to me : "Apps must be packaged and submitted using Apple's packaging technologies included in Xcode - no third party installers allowed.")
Also, could i use the fingerpinger* external object from anyma.ch in it ? (it says GNU GPL 2.0 in its maxhelp) * knowing also that the function of this object might be considered as some kind of "hidden-feature-not-to-be-used" by Apple..?

Roman Thilenius's icon

> On the link posted by Dan, the real meaning of this
> sentence is not clear to me : "Apps must be packaged
> and submitted using Apple's packaging technologies
> included in Xcode - no third party installers allowed."

it means that it is for example not allowed to use compression
and install aps from alladdin or vise.

-110

Alexandre's icon

Ok, so it will be possible to submit an application made directly from a max standalone ?

Dan Nigrin's icon

I have not been actively trying to submit a Max app, but my read of the guidelines seems like it should be OK, as long as it doesn't write files to any weird places. Also still unclear to me whether using mxj in your application will violate the terms or not, but I think it will.

Alexandre's icon

What a pity for mxj. Stupid question : Wouldn't exist some king of java compiler to c that would help to convert a .java into an .mxo ?

Dan Nigrin's icon

Would be nice, but doesn't exist to my knowledge...

oli larkin's icon

I had my max-built app rejected from the mac app store because it writes it's preferences in an area that isn't one of apple's approved locations

~/Library/Application Support/
~/Library/
~/Library/Caches/

with the current version of max you cannot change this, so for the time being Max Apps are probably not going to make it onto the app store.

oli

Mike S's icon

Out of interest, what goes in your preference files?

Dan Nigrin's icon

They're automatically created when your standalone is run - I don't think there's anything you can do to stop them from being created even if you wanted to. They store things like audio and MIDI preferences, information about the Max window, recently used fonts, etc...

And BTW, thanks again Oli for testing these waters!

jvkr's icon

Hi Oli, you mean ~/Library/Preferences is not an approved location for writing preferences? Or is it that max creates a folder, which is forbidden. Thanks for the info.

oli larkin's icon

2.30 Apps that do not comply with the Mac OS X File System documentation will be rejected

The application is creating files in, writing to, or opening for Read/Write access the following location(s):

'~/Library/Preferences/MyStandalone Preferences Folder/'

Except as noted below, unless a user explicitly chooses to save data in an alternate location (using a Save As file dialog), your application should write only to the following locations:
~/Library/Application Support/
~/Library/
~/Library/Caches/

so yes i think you can't write anything to ~/Library/Preferences , which seems strange since lots of apps put a plist there

sine's icon

Oli,

I want to personally thank you for testing the waters for the rest of us. I am sorry to hear that Max apps would be rejected, but your information is very valuable to have. Thank you for taking the time to report back your findings.

James Howard Young's icon

Preferences folder location Fixed in Max 6

Dan Nigrin's icon

Yes, Oli and I have been pestering the Cycling folks plenty about this, and happy to say that they delivered! The only thing you have to be careful about is in the standalone object, to specify (exactly) your app's name in the Preferences File Name field....

James Howard Young's icon

I noticed Oli got his Endless Series app approved in the App store. I'm wondering how, or if, he got around the trashed files problem. I tried sending him an email but it bounced.

Dan Nigrin's icon

He'll probably chime in himself... But he re-wrote the application natively - it's not a Max application anymore.

James Howard Young's icon

Ok. Thanks for the info

oli larkin's icon

yeah the first standalone I submitted was a vst~ object hosting the Endless Series plugin (which was already written in c++). When it got rejected i built a standalone version in c++.

FWIW, since Apple rejected several versions I sent to the appstore even once it was all native, I can imagine that there might be further problems to do with the specifics of what goes in the Info.plist file, exactly what goes in the menus etc... I really hope not, but apple have been really fussy and thoroughly unhelpful in my experience - so I expect the worst!

----
Endless Series v3 out now - A unique synthesis and effect plugin based on the Shepard Tone auditory illusion.

James Howard Young's icon

ok good to know. i'm tempted to pay the 100$ just to get their feedback.

Hans Mittendorf's icon

Well, since this thread comes up again, I would like to express my frustration about the fact that cycling has not come up with a 'build in synthesizer' of good quality. This has two dimensions to it. The first one is that for stand alone projects which are based on algorithm there is no good sounding instrument which can be included. Second, as a sophisticated software company based on DSP, it is just a very obvious shortcoming to my opinion. I can go around it but it would be nice to make stand alones which can include a synthesizer.

dhjdhjdhj's icon

Well, your idea of a "good quality" synth might not be someone else's idea of a good quality synth. Should it be subtractive? One oscillator? Two oscillators? Sync? What kind of filter did you want? Or should it be a sampler? Or an additive synth? Or a mixture? And why stop there?

While I can see the value of a simple demo synth to help understand how Max works, I don't see how it it's up to the Max developers to provide your "goto" synth any more than the developers of the C++ compiler that I use should include an accounting package and a word processor.

Max is after all a development environment. There are gazillions of free (and pretty decent) VST soft synths to be found that can be easily used via the VST~ object, many of which can be redistributed with the proper attribution.

Why is that not a suitable solution?

Hans Mittendorf's icon

@dhjdhjdhj

the point of my complaint, if you want was that you can not integrate a 3rd party synth in a stand alone project!!! That was it.

I use 3rd party synth because my life is not long enough to be a composer a programmer and what else it takes to be at this edge...sorry

I admire of course Tim who has been born much later than me and who is good composer and programer. It depends how you think and at what angle you get into something. Max was the best to happen to me as a composer who integrates live electronics but I could not make it into the programmers league. Sorry for that.

dhjdhjdhj's icon

I understand --- but my comment stands --- no matter what Cycling might provide, it almost certainly will not suit everyone's (if indeed anyone's) particular needs. However, I guess I don't understand the underlying issue. If you have Max, then why do you need standalones? And if you want to distribute a standalone to others, then a simple installer could be used to put a 3rd party redistributable VST into the right folder. Or (and probably better), the standalone could have an option to allow the user to select which VST synth they want to use.

Hans Mittendorf's icon

thanks for the view you take on this matter. Maybe it opens the way to discuss standalones. I think that a good standalone would be a new way of creating music and a new platform to distribute it. Cd's are one way little apps another to present music. I am pleased with what I have under Max but I can see some things in the distance.....
Thanks for your comment

Florent Ghys's icon

''Preferences folder location Fixed in Max 6''
This is great ! Thanks.

mrpinkandthepinks's icon

so what you guys are saying is we can now make a max app and have that be the basis for an ios app now? how would this work exactly? are there max/javascript frameworks to import into the xcode file or...?

oli larkin's icon

no... Max can't make IOS apps. But maybe now Max6 OSX standalones will be viable on the Mac App store

mrpinkandthepinks's icon

haha i think i have a one-track(ios) mind, guess i was hearing what i wanted to hear;)
thanks for the clarification!

Brad Garton's icon

Those of you who attended Damon Holborn's presentation at the "Columbia Night" reception/festivities for Expo '74 will have seen that a max-msp --> iOS pathway is coming soon! It will be limited in specific ways, but it will be possible. And possible in such a way that it will pass the restrictions of the App store.

Dan Nigrin's icon

Brad,

Although I was at the Expo, I couldn't make the Columbia event - can you (or Damon) expand on what you mention above? Is it an RJDJ-like approach?

James Howard Young's icon

I think the Recovered Files problem will prevent Apple from approving any Max standalone. i can't get them to go away, but maybe someone has some experience with this.

Dan Nigrin's icon

James, can you provide a simple patch that when built into an application displays this problem? I've never had the problem myself, but I know others have, and I'm curious...

$Adam's icon

Hi,

from my part, you need no patch. If I simply install Max 5 on a brand new computer with OS X (10.5 or 10.6) and start Max, then each time after rebooting, I'll have some Max-related files in the Trash in a folder called 'Recovered Files'. This happened to me with each Mac I had until now, and it happened even if I didn't install any third-party externals (I tried it out that way the last time I bought a new computer -- which was a bit more than a year ago --, just out of curiosity). Actually it is a surprise to me to hear that there is someone who actually doesn't have this problem...

Best,
Ádám

Brad Garton's icon

Dan --

I had to miss your Expo '74 presentation also, although I was very interested (a lot of my little apps (mm2, mlooch, even the larger "My Book of Dreams" are max standalones). Thanks for putting your slides on-line, I'm probably going to use them as a resource in The Future.

Regarding our iOS system, it's more like c74/TouchOSC except that all audio and DSP is handled on the device. Damon has built a set of interface objects that translate from Max/MSP into XCode. The other trick is to use rtcmix~ for the audio processing (not hard). Damon's scripts then build an XCode project from the max-patch layout. Then you simply hit "build and run" in XCode and off you go! (

You can also further modify the XCode project -- all the stubs are there for building your own iOS interface objects, etc. -- to produce a more 'customized' app.

We tested this out in a grad seminar Damon and I did last Spring, and we're putting the final tweaks on it now. Look for a public announcement in the next month or so.

Dan Nigrin's icon

@Ádám - Do standalones built by Max display the same behavior?

@Brad - That's *awesome* - please do keep everyone posted!!

James Howard Young's icon

Dan - I tried one of your Synths and still got the problem so now I am wondering if the problem is machine-based. I could send you a patch, but that wouldn't help too much I don't think, since all my builds have the problem, it would just be an ordinary Max patch I sent.

Dan Nigrin's icon

Thanks for the info - definitely weird!

James Howard Young's icon

@Brad, I'd love to hear about that when it's ready.

Jean-Francois Charles's icon

This is a great thread! Same spirit as Dan's workshop at Expo! Thanks.

James Howard Young's icon

As if the problems weren't enough, it seems as though the menubar object in the Max 6 Beta doesn't include the "Help" menu item. I've sent a bug report.

oli larkin's icon

actually my app doesn't have that and I seem to have got away with it

James Howard Young's icon

Hmmm that's good to know. Turns out the "Help" problem is really a bug so I guess it's worth it.

James Howard Young's icon

I just forked over the 99$ and joined the program, but have now found several more hoops to jump through including signing the App, and the installer (provided one has one, which I don't). Ugh.

Dan Nigrin's icon

Oli can probably speak to the signing stuff as I haven't delved into that yet, but as for the installer, isn't being able to provide the app as a .dmg , which you then mount, and then your app gets dragged onto the Applications folder enough? If you have other files that need to go other places, using the Apple tools is not that hard anyway to build a "real" installer...

James Howard Young's icon

I'm not sure the .dmg is enough since it can't be signed like the installer (apparently) can.

oli larkin's icon

here is my bash shell script to codesign the .app and build the .pkg . You need to get the appropriate certificates installed in your mac keychain. All the info is in the app store documentation. Once you build the .pkg you upload it with "/Developer/Applications/Utilities/Application Loader.app"

#! /bin/sh

BASEDIR=$(dirname $0)

cd $BASEDIR

APP="/Applications/APP_NAME.app"

echo "code signing app"
echo ""
codesign -f -s "3rd Party Mac Developer Application: DEVELOPER_NAME" $APP

echo "building pkg for app store"
productbuild
--component $APP /Applications
--sign "3rd Party Mac Developer Installer: DEVELOPER_NAME"
--product "/Applications/APP_NAME.app/Contents/Info.plist" APP_NAME.pkg

Dan Nigrin's icon

Thanks Oli, very helpful - I also sent to James earlier the link on Apple's developer site where this info is housed.

One more question Oli - did you strip your app of the PowerPC code prior to submission? I thought I read somewhere that only Intel code was allowed...

James Howard Young's icon

Thanks for the info Dan and Oli. I'm not on the c74 boards enough to know if this is a candidate for longest thread ever, but it must come close. I did get as far as installing the certificates but had gotten stuck there. Anyway, it's good to know that it should be possible, I'll hack away at it.

oli larkin's icon

>One more question Oli - did you strip your app of the PowerPC code prior to submission? I thought I read somewhere that only Intel code was allowed...

yes, but that shouldn't be a problem with Max6... unless you are using third party UB objects with PPC code

Julien Bayle's icon

Max App store!
huge :)

I can host thing there:
http://designthemedia.com
but it wouldn't be the way to follow

what c74 think about a max app store like that?

@Brad/About Xcode stuff, I'm interested about the Damon's tool. is it available ?

James Howard Young's icon

Dang, finally got my app signed, sealed, and delivered, only to discover a puzzling problem: I can't write my preferences once I make a pkg and unpack it again. I am using max sendapppath location and sprint symout - works as an .app but not once it's been put into a .pkg. Any ideas? Is there a better way to store preferences with Max 6?

Dan Nigrin's icon

Can you post the Max code you're using to define the location of where you are writing your prefs to?

James Howard Young's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Hi Dan, Here it is. I've got the loadbangs on a short delay.

Julien Bayle's icon

James, firstly, I'd check the deferlow object, instead of delay.
It deals with priority threads in the scheduler.

Secondly, I'd suggest this one.
It works fine to find path inside standalone.

Max Patch
Copy patch and select New From Clipboard in Max.

Emmanuel Jourdan's icon

I highly doubt that Apple is going to let you write things in the application itself for the preferences. You should figure out where the Application Support folder is since this is apparently where Apple wants you to put your preferences.

Timothy Place's icon
Max Patch
Copy patch and select New From Clipboard in Max.

The easiest way to find that folder is with something like this (Max6 only):

James Howard Young's icon

Thaaaaaaaaank you all - I think that will do it.

Julien Bayle's icon
Max Patch
Copy patch and select New From Clipboard in Max.

IF you wanted to have a more generic stuff (I mean, one codebase but multiple target: win + osx), you could use this one

Dan Nigrin's icon

Agree with above suggestion, to not write your file to within the app bundle - Apple may not allow it, and I even think it might fail because of a permissions problem. Tim's approach will get you to an Apple "approved" place, and one that should work when the app is sitting in the Applications folder too.

Hans Mittendorf's icon

It seems that Max6 has a jolly good future.

dhjdhjdhj's icon

Hmmm, just got a message from Apple that starting next March, all apps submitted through the AppStore will have to support sandboxing. I think this is going to make the Mac a less viable platform for exploratory applications, at least for anyone trying to sell through the AppStore.

Sigh

oli larkin's icon

I think it should be possible to sandbox a Max-app, by adding entitlements to the info.plist before codesigning.

oli

James Howard Young's icon

Thanks to this list and especially Oli and Dan, I have gotten my Max 6 Standalone successfully posted to Apple for review. I will be sure to let everyone know how it goes here.

dhjdhjdhj's icon

COngrats, --- what does your app do?

Julien Bayle's icon

it would be a nice benefit to be distributed/deployed by App Store.
btw, there are a lot of other system (through basic https server web with a payment system) which provide more benefits vs the % grabbed by Apple.

but I 'd like your idea/experience sharing etc
I'll follow your infos :)

James Howard Young's icon

I know it's pretty advantageous to get the app distributed through private websites and places like MacUpdate and Cnet, but I do think that Apple does provide a good bit of "coverage". Back when Apple.com allowed pretty much anything to be listed there, I could see that most of the traffic for one of my apps came from them, with MacUpdate coming in 2nd and Cnet coming in 3rd. It might be true about the %, though. I suppose it depends upon how visible the app is when push comes to shove.

Thanks for the support - my app is a metronome with customizable sounds, tapping, beat function and selectable subdivisions. I'll be sure to post its status here. It could take a while....

Julien Bayle's icon

I'm convinced, targeting to put a couple of apps for iOS there for sure.
I'd suggest to sell by their channels + by your own website too.

for instance, http://www.sparrowmailapp.com/ does that.

James Howard Young's icon

Wow that's a great website you posted.

I'm not so worried about the profit part since I am only working in Freeware at the moment. I might get some Ad revenue but that's about it.

oli larkin's icon

in my experience, selling on both the appstore and my website has been a bit of a headache. Firstly because I wanted people who bought on the app store to be licensed to use the plugin versions too (apple won't let you put plugins on the appstore or hide them anywhere in the app bundle). There is no way to find out who bought your app on the appstore, so I couldn't email the customers to offer them the plugins. Secondly, because you have to wait for your app to be reviewed (can take 2 weeks) it makes it hard to synchronise the version you put on your own site and the version you put on the appstore.

however, it is good for publicity

Julien Bayle's icon

@oil larkin: you are right. using invision power board system, pushing a version takes... around 3 min. you can wait for the D-Day from Apple, the pushing it (not automatically, indeed) on your website.

This thread is full of experiencies, I love that :)

Hans Mittendorf's icon

@Howard
my congrats too!!
You work very fast.
Would you mind posting what was involved to get the patches to be app ready?

I have not purchased Max6 yet nor do I have signed in for $99 to Apple dev, but I have something I could turn into an app.....

Well done!

oli larkin's icon

AFAIK the app hasn't actually been reviewed yet, just successfully submitted for review... so hold your horses before anyone else gives apple $99 - there is still yet to be a Max-built app on the app store!

James Howard Young's icon

Yes, this is true. The app hasn't been approved for the store, it just made it through to the app review queue. Although this required quite a bit of tweaking, it is far from finished. But at least I'll be getting some feedback that I can hopefully do something with and then we shall see. I would also strongly advise against joining the Apple Dev for 99 bucks until we know more.

Hans, I can give a quick overview of what is involved.

1) build app
2) tweak package contents - include custom json file, custom plist, custom icon, delete extraneous files and folders plus some other things with the bundle I won't go into too much detail here.
3) codesign app and make pkg
4) test install pkg
5) add info through iTunes connect and upload pkg.

James Howard Young's icon

Hello folks,

I've got my Max Standalone approved and ready for sale in the App Store. You can view it here:

Thanks to all for the help. Found a strange bug, where the "hide" and "Quit" menu options don't include the app name, but rather the name "Max runtime". I hadn't even noticed this before I submitted it, but apparently it didn't bother Apple too much. I have submitted a bug report to Cycling.

oli larkin's icon

nice one! I think you can change those things by editing the maxinterfaces.json file

James Howard Young's icon

Thanks. I'm not sure it can be changed there because neither the term "Max Runtime" nor any string for "quit..." or "help..." occurs in that file. The same problem occurs in the menubar help patch for Max 6 where in Max 5 it was fine.

Dan Nigrin's icon

CONGRATULATIONS!! I think you are the first to get a Max app on the Apple Store James.

Re: the bug, good that your reported it, it does seem like it's an oversight that Cycling might be able to address.

Now I gotta get to work on MY app (especially before the March deadline when everything's gotta me sandboxed... we'll see what happens at that point!).

dhjdhjdhj's icon

Ditto --- thanks for showing the way.

Hans Mittendorf's icon

@Howard
well done!!
Congratulations.

Leigh Marble's icon

This is really great info in this thread, thanks all.

I'm still baffled by this restriction:

2.30 Apps that do not comply with the Mac OS X File System documentation will be rejected

The application is creating files in, writing to, or opening for Read/Write access the following location(s):

'~/Library/Preferences/MyStandalone Preferences Folder/'

Except as noted below, unless a user explicitly chooses to save data in an alternate location (using a Save As file dialog), your application should write only to the following locations:
~/Library/Application Support/
~/Library/
~/Library/Caches/

so yes i think you can't write anything to ~/Library/Preferences , which seems strange since lots of apps put a plist there

Haven't found an explanation online as to why writing to ~/Library/Preferences isn't allowed. Anyone?

Leigh

dhjdhjdhj's icon

'cos Apple doesn't want you to anymore! It's probably related to permissions and sandboxing goals

James Howard Young's icon

That's not a new thing, but it's not so important for the purposes of Max 6, since the preferences are now stored in an acceptable directory.

Leigh Marble's icon

Permissions-wise, everything within ~Library/Preferences (again, that's the *user's* Library folder) should have the user as the owner, with read/write privileges.

And looking in my ~Library/Preferences, there are hundreds of plist files from various applications.

So, in some sense it *is* a new thing, and I'm curious when this change was made and why. Is the entire Preferences folder being phased out? For, if applications can't write to it, then what else would?

Leigh