Commission Music

Commission Music
Bespoke Noise!!

Friday, 10 April 2009

platform independence

live blogging the sc symposium

Marije baalman is talking about cross platform implementation in supercollider.

sc runs on osx, linux, qindows and freenbsd. It has a language, the synth, the editor, the graphical server. There arr 10 editors. SCapp is os x only. There's scel for emacs. Scvim is a vi plugin. Sced runs on gedit on linux only. Psychollider is in python, originally just for windows. Jsceclipse is in java. Textmate is osx only. Then there's scfront, qcollider, squeak, etc.

os x doesn't always mean SCapp. So we must be aware of editor issues. Scapp and psycollider have sclang inside, so documents run in the same apllication and don't rely on pipes.

insert snarky comment about sc on linux here: it's too hard!

the gui abstraction layer solves most of the compatibility issues. These also help with accessibility issues.

you can stick in extra menu items.

HIDs are another compatibility issue. MouseX is now cross platform. Wacom tablets are handled in an os specific way on osx, bur used as an hid by limux.

helpfiles are in html. Scel has an issue because emacs sucks and doesn't support css with w3m and let's be clear, this is a violation of the tsandard. The others handle html in different ways, including with a browser.

i am becoming grumpy from lack of food.

scapp uses webkit for html editing, but this creates crap html code. It's wysiwyg, but not for other viewers. Helper and AutoHelper might be the answer to this. Or perhaps a helpfile template.

compilation issues - there are some preprocessor tags which are platform specific. Unix uses scons, which might be a good idea for os x.

audio drivers are obviously very different. Then there's hid stuff and wii code. The wii code works on linux but not on os x, alas.

some stuff, like text to speech is os x only.

what about for end users? Audio is the same. Midi is spotty. Hids have different class interfaces, so there's an abstraction layer. Wiis use the same class interface. I've been looking at fixing this btw. I'm sure somebody else will get it first though.

hid stuff has platform specifity in how hids work. Anyway. . .

there's different installation locations for some default directories. There's a Platform class which is good for abstraction.

if you need to check for an os, thisProcess.platform.name , gui use GUI.id , emacs use thisProcess.platform.hasFeature(\emacs)

my batteries are running low. To check os specifity, look at the helpfile or source file and the location.

if you're going to distribute, do it cross platform. Remember that key combos are different when writing helpfiles. Make your example code platform independent.

windows support for sc still sucks. But windows sucks.

No comments: