Siren on Squeak

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Siren on Squeak

Stephen Travis Pope

Hello Squeakers,

As you may have noticed form my last post, Siren 7.5 is finally out!

Over the years, I've worked on several versions of Smalltalk, and, from 1996-2001, Siren ran on Squeak. Since then, I moved back to VisualWorks, but the core of Siren is certainly platform-agnostic.

To make it easier to port Siren back to Squeak, the new Siren release includes old-format file-outs of the class categories (in the Sources/ folder in the release archive) and I've included a separate file of all my system changes.

Given this, and the old Siren 3.0 on Squeak, it should be easy to get the bulk of Siren running on Squeak again. There are 2 areas that will need some work.

1) I rewrote all the external interface classes (sound I/O, MIDI I/O, FFT, etc.) to use VisualWorks DLLCC. The actual external code (the C side) should be quite portable, and uses stable cross-platform libraries such as PortAudio and PortMIDI. All that would need to be done would be to turn my DLLCC libraries into Squeak VM plug-ins and write wrapper classes to mirror the DLLCC external interfaces.

2) The GUI applications all use my own structured graphics framework. This should still be portable from Siren 3.0, so that all the editors and notation programs should still run under Morphic, except that someone needs to rewrite all the class-side open methods in the application classes.

So, is anyone interested in working on a Squeak port?

...any replies appreciated...

stp

--
   Stephen Travis Pope  --  Santa Barbara, California, USA
  



_______________________________________________
SqueakAudio mailing list
[hidden email]
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

Stéphane Rollandin
Stephen Travis Pope wrote:
> Given this, and the old Siren 3.0 on Squeak, it should be easy to get the bulk
> of Siren running on Squeak again. There are 2 areas that will need some work.
>
> 1) I rewrote all the external interface classes (sound I/O, MIDI I/O, FFT, etc.)
> to use VisualWorks DLLCC. The actual external code (the C side) should be quite
> portable, and uses stable cross-platform libraries such as PortAudio and
> PortMIDI. All that would need to be done would be to turn my DLLCC libraries
> into Squeak VM plug-ins and write wrapper classes to mirror the DLLCC external
> interfaces

that would be of interest just by itself... it would make Squeak a much
more capable multimedia tool.


Stef
_______________________________________________
SqueakAudio mailing list
[hidden email]
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

Stéphane Rollandin
In reply to this post by Stephen Travis Pope
Stephen Travis Pope wrote:
> Hello Squeakers,
> So, is anyone interested in working on a Squeak port?

I am ready to help have muO and Siren coexists in a same Squeak image. I
can't do more unfortunately, for lack of time.

so if someone does port Siren to Squeak, please contact me so that we
can work around the possible clashes with muO


Stef


_______________________________________________
SqueakAudio mailing list
[hidden email]
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

Cesare Marilungo
In reply to this post by Stéphane Rollandin
Stéphane Rollandin wrote:

> Stephen Travis Pope wrote:
>> Given this, and the old Siren 3.0 on Squeak, it should be easy to get
>> the bulk of Siren running on Squeak again. There are 2 areas that
>> will need some work.
>>
>> 1) I rewrote all the external interface classes (sound I/O, MIDI I/O,
>> FFT, etc.) to use VisualWorks DLLCC. The actual external code (the C
>> side) should be quite portable, and uses stable cross-platform
>> libraries such as PortAudio and PortMIDI. All that would need to be
>> done would be to turn my DLLCC libraries into Squeak VM plug-ins and
>> write wrapper classes to mirror the DLLCC external interfaces
>
> that would be of interest just by itself... it would make Squeak a
> much more capable multimedia tool.
>
>
Exactly.

It's a pity that the multimedia functionalities of squeak have been left
behind.

As much as I appreciate all the work done on lots of interesting
projects, audio and video processing should have been a priority for squeak.

Imagine all the things one could make with such a great development
paradigm if those functionalities were built-in.

c.
> Stef
> _______________________________________________
> SqueakAudio mailing list
> [hidden email]
> http://www.create.ucsb.edu/mailman/listinfo/squeakaudio
>
>


--
http://www.cesaremarilungo.com

_______________________________________________
SqueakAudio mailing list
[hidden email]
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

simonxholland
In reply to this post by Stephen Travis Pope
Stephen Travis Pope wrote

> 1) ...... All that would need to be  
> done would be to turn my DLLCC libraries into Squeak VM plug-ins and  
> write wrapper classes to mirror the DLLCC external interfaces.
> ....
> 2) The GUI application......
>. ...
> So, is anyone interested ......?

I am keen to see job 1 done.
However I am guessing this will principally need C skills.
Unfortunately my C skills are non-existent but my smalltalk skills are fine,
and I have some experience of creating VW  DLCCs.

So while I  couldn’t progress this solo, I would be more than happy
to lend a hand to someone with C skills.

Simon Holland


_______________________________________________
SqueakAudio mailing list
SqueakAudio@create.ucsb.edu
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio


Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

Stephen Travis Pope

Hi all,

It really shouldn't involve C programming, just editing and running a  
simple makefile to compile the glue code that links VW's DLLCC to the  
PortMIDI library.

stp

--
    Stephen Travis Pope  --  Santa Barbara, California, USA
    http://HeavenEverywhere.com     http://FASTLabInc.com
 
 



On Aug 1, 2007, at 1:33 AM, Simon Holland wrote:

>
> Stephen Travis Pope wrote
>
>> 1) ...... All that would need to be
>> done would be to turn my DLLCC libraries into Squeak VM plug-ins and
>> write wrapper classes to mirror the DLLCC external interfaces.
>> ....
>> 2) The GUI application......
>> . ...
>> So, is anyone interested ......?
>
> I am keen to see job 1 done.
> However I am guessing this will principally need C skills.
> Unfortunately my C skills are non-existent but my smalltalk skills  
> are fine,
> and I have some experience of creating VW  DLCCs.
>
> So while I  couldn’t progress this solo, I would be more than happy
> to lend a hand to someone with C skills.
>
> Simon Holland

_______________________________________________
SqueakAudio mailing list
[hidden email]
http://www.create.ucsb.edu/mailman/listinfo/squeakaudio

pastedGraphic.tiff (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

simonxholland
Hi Stephen
OK, I’ll give it a go.
( As you undoubtedly know,  Squeak requires setInterpreter to be in the plugin but
SmartSyntaxInterpreterPlugin can generate that, so it looks OK.)
Things are extremely busy this month, so please don’t wait up,
but I am on the case :-)
Cheers
Simon

On Aug 03, 2007, at  09:18pm Stephen Travis Pope wrote:
>It really shouldn't involve C programming, just editing and running a  
> simple makefile to compile the glue code that links VW's DLLCC to the  
> PortMIDI library.
> stp
Reply | Threaded
Open this post in threaded view
|

Re: Siren on Squeak

simonxholland
(Cross posted to squeak audio and vw-dev)

Dear All

I am writing primitives to port Stephen Pope’s portmidi_lite VisualWorks plugin to Squeak (on Mac Intel for now).

To test everything possible before linking to the portmidi library, I wrote a series of test plugins using the arguments, return types, and pointer manipulation etc required by portmidi_lite. These show that the primitives do the appropriate proxyinterpreter stack manipulation, type conversion and object creation while avoiding garbage collection, and generally exchange data just fine with the test plugins.

But to transfer this to portmidi_lite, the portmidi library must be linked in. After removing the VW-specific includes from Stephen's portmidi_lite.c (renamed as noted below). and supplying the necessary .h’s , the make compiles and links without error.

However, the plugin then fails to load at runtime.

More specifically, when I run the automatically generated make to rebuild the VM/plugins and to link my slang-generated glue code to portmidi_lite.c and to the portmidi library, this all runs to completion and compiles with no errors. The plugin is created and put in the right place (as an external) and looks sensible via nm. However, the plugin fails to load at run-time.

On attempting to load the plugin, Squeak complains to the console
“ioLoadModule  could not load shared object: /Users/simon/squeak/build/Squeak-3.9-12.app/Contents/MacOS/PortMidiLitePlugin.“  This message originates from vm/dlfcn-dyld.c , where it wraps a Mach error code NSObjectFileImageInappropriateFile – ‘file was not an appropriate type of object file’.

In the Makefile.inc for linking the portmidi plugin, I have

PLIBS=$PLIBS -L/Users/simon/squeak/platforms/unix/plugins/PortMidiLitePlugin/i386

The folder i386 contains
   libportmidi.a
   pmmac.o
   pmmacosxcm.o
   pmutil.o
   portmidi.LinkFileList
   portmidi.o
   ptmacosx_mach.o

The contents of this folder is a fresh build of the portmidi library for intel Mac created using the Xcode project provided by the portmidi guys. (The previous attempt, using just the single file libportmidi.a in this folder gave the same result.)

For completeness, up a level at
Users/simon/squeak/platforms/unix/plugins/PortMidiLitePlugin
we have the following files
   SirenDLLCC.h   (this just includes debug defines)
   portmidi.h
   portmidi_lite.h
   porttime.h
   spPortMidiLitePlugin.c  
(a renamed version of portmidi_lite.c with the VW includes removed – this has includes for the four .h’s)

Any thoughts would be greatly appreciated.

Simon Holland