Thomas' loader patch is now part of pd in CVS. It'll be in Pd 0.40.
Or you can compile it now from CVS.
.hc
On Jan 17, 2006, at 5:20 PM, Davide Morelli wrote:
well, not yet.. I mean i've asked Thomas how to use it and he kindly explained me but I haven't had time yet to write that code.. I'd surely need more info from him.. and a bit of time to recompile pd
with his patch, read the source code, understand how it works and modify my external.. this way sounds complicated but that is not tru, should be simple...maybe the better thing would be that he modify clr directly on CVS?
or write a very very simple how-to?
davide.
-----Messaggio originale----- Da: pd-list-bounces@iem.at [mailto:pd-list-bounces@iem.at] Per conto di Hans-Christoph Steiner Inviato: martedì 17 gennaio 2006 20.57 A: pd-list@iem.kug.ac.at Oggetto: [PD] Re: [PD-announce] clr: externals in CLR assemblies
This is great. I am assuming that you are using the new loader functionality from Thomas. Would it be possible if you could put up some notes about what you did? It'll help others like me write other loaders.
.hc
On Jan 17, 2006, at 11:07 AM, Davide Morelli wrote:
hello!
[clr] is an external that lets you create externals using clr languages (C#, vb.net, ruby.net, dotLisp, etc..), it embeds mono.
you can find it in /externals/clr
At the moment it can only receive and send bangs, floats,
symbols and
lists. ASAP I'll add support for pointers, signals and Gem.
Also many
important functions are not present (things like timer callbacks etc..)
I've tested it on winXp and osx 10.3 but i'm pretty sure it
will work
on linux too. I need help writing makefiles, defining dependancies and testing. I will soon build binary packages. It is possible to build binary packages including mono and
all the GAC
so the "end-user" won't need to install mono to use [clr] and the externals needing it
requirements:
- mono installed
- glib, gthread, iconv in path (they should be inside mono as well)
what you need to do to compile it:
- edit PATHs in the makefile so the compiler can find mono, glib,
gthread, etc...
to write an external you need to:
- in the pd folder compile pd.cs and Atom.cs into PureData.dll
- use the PureData namespace
- add PureData.dll to the references
- declare an "private intPtr x" variable
- declare a "void SetUp()" function and put there inlet,
outlet and
selectors creation (see the external folder for a couple of
examples)
features:
- you can write externals in any clr language (C#, managed
C++, J#,
Jscript.Net, PerlNET, Ruby, Scheme, VB.NET, dotLisp and a
lot more.. )
- use bangs, symbols, lists (both in and out)
- declare inlets, outlets, selectors
- use initialization arguments
- multi-instance
- compile many externals into one single .dll file
- extend an external including its assembly instead of
modifying its
source code
- you can compile the external using whichever clr
compiler you like
most
- assemblies are "cross-platform" (a single .dll file for all
platforms)
what is missing:
- support for signals, Gem, graphical externals
- many callback functions like timers etc..
- there may be threading issues
- testing, testing, testing!
detailed implementation notes, (future) binary pakages here: http://www.davidemorelli.it/dokuwiki/doku.php?id=csharp:csharp
PS. many thanks to Thomas Grill for his help!
Ciao, Davide Morelli www.davidemorelli.it
PD-announce mailing list PD-announce@iem.at http://lists.puredata.info/listinfo/pd-announce
Man has survived hitherto because he was too ignorant to know how to realize his wishes. Now that he can realize them, he must either change them, or perish. -William Carlos Williams
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Man has survived hitherto because he was too ignorant to know how to
realize his wishes.
Now that he can realize them, he must either change them, or perish.
-William Carlos
Williams