Tuesday, May 3, 2011 11:42 - OpenSoundControl
Are you still using the old osc-bonjour? there's now the more flexible zeroconf.browse, zeroconf.resolve and zeroconf.register externals that let's you browse, resolve and register any kind of zeroconf services.
http://sourceforge.net/projects/osctools/files/
They are much more integrated with Max5 than osc-bonjour was, using attributes... etc
| permalink
| related link
| ( 3 / 4205 )
Monday, March 3, 2008 11:30 - Dance
Marc Downie finally released its Digital Art framework called Field written in Jython and released under the GPL3 license.Monday, January 28, 2008 11:48 - News
I'm no longer working at Ircam. So I will no longer update this page in the future.
However I'll keep this page online for backup and I can still be contacted from there or from my independent smartelectronix webpage.
Wednesday, January 24, 2007 11:59
I've disabled comments until there's a better anti-stam for sphplog.Friday, November 10, 2006 19:37 - OpenSoundControl
Thanks to Charles Bascou from GMEM there's an update to the oscbonjour maxmsp externals for UniversalBinary.
see the old article for the download location
Thursday, November 9, 2006 11:05 - Code
yes, it's possible because ObjectiveC is a strict superset of C. You just need to use a *.m extension so that Xcode compiles it as ObjectiveC and not just C.
I already used C++ to write maxmsp externals so I knew it should be possible with another C based language. But I needed a proof of concept. here it is:
#include "ext.h"
#import <Foundation/NSObject.h>
@interface Fraction : NSObject
{
int num;
int den;
}
- (void) setNumerator: (int) d;
- (void) setDenominator: (int) d;
- (int) numerator;
- (int) denominator;
- (void) print;
@end
@implementation Fraction
- (void) setNumerator: (int) d
{
num = d;
}
- (void) setDenominator: (int) d
{
den = d;
}
- (int) numerator
{
return num;
}
- (int) denominator
{
return den;
}
- (void) print
{
post("%i/%i",num,den);
}
@end
typedef struct
{
t_object o;
Fraction *frac; // to show how we can store an ObjectiveC instance inside a C struct.
} objc_t;
static t_messlist *objc_class = NULL;
static void *objc_new(Symbol *s, short ac, Atom *at)
{
objc_t *o = (objc_t *)newobject(objc_class);
Fraction *frac = [[Fraction alloc] init];
[frac setNumerator: 1];
[frac setDenominator: 4];
[frac print];
o->frac = frac;
return o;
}
static void objc_free(objc_t *o)
{
Fraction *frac = o->frac;
if(frac)
{
[frac release];
}
}
int main(void)
{
setup(&objc_class,
(method)objc_new,
(method)objc_free,
(short)sizeof(objc_t), 0L,
A_GIMME, 0);
}
Next