There are several elements to Siren:
If you're using VisualWorks Smalltalk, connect to the Cincom public repository table store.cincomsmalltalk.com:5432_store_public and load the newest blessed "Siren" package. The post-build actions will try to down-load and file-in a couple of files off this site. The full release archive files below include the Smalltalk source parcels, doc files, demo workspace contents, sound/score test data, DLLCC external interface C files and makefiles (e.g., PortAudio, Loris), this web site, etc.
Siren7.5.zip The Siren 7.5 release: ST source parcels, virtual image, docs, demo data, external interfaces (May, 2007)
Support Library Sources LibSndFile, PortAudio, PortMIDI, FFTW, etc. with compiled binaries for several platforms
Go to Cincom to get the free non-commercial-use version of the VisualWorks 7.5 release for all platforms
The Siren home page is at FASTLabInc.com.
There are several on-line Smalltalk tutorials, just ask Google, or down-load the Squeak CD-ROM, which has an excellent reference library on it, or go to Stephan Ducasse's free Smalltalk book list, or simply grab the free PDF file of The Art and Science of Smalltalk, by Simon Lewis, Prentice-Hall 1995-1999.
To make full use of the Smalltalk code, there are several external packages that use DLLCC C/C++ glue code to access the LibSndFile, PortAudio, PortMIDI, FFTW and OSC libraries; the SWIG-based I/O Interfaces to both CSL (C++ signal synthesis/processing library) and Loris (analysis/resynthesis tool using bandwidth-enhanced partials) provide their own Smalltalk models that mirror the C++ class structure of these packages.
To install these, download and install the required packages, then look in the DLLCC folder and run the makefile there for each target library. The links for these are,
The experimental SWIG interfaces are in the folders SWIG_Loris and SWIG_CSL; to use them, you need,
- libsndfile - http://www.zip.com.au/~erikd/libsndfile
- portmidi - http://www-2.cs.cmu.edu/~music/portmusic
- portaudio - http://www.portaudio.com
- fftw - http://www.fftw.org
To build Siren, you start with a 7.5 VisualWorks Smalltalk virtual image and load the following packages from the release file set,
Then, in a Store browser, on the Cincom public repository, load SmaCC* and SWIG before loading the Siren package.
- Advanced Tools
Siren uses several external interfaces (based on the DLLCC framework or SWIG) for access to external data and I/O. The Smalltalk code for these interfaces is in the category MusicIO-External.
Sound file read/write -- libSndFile -- see http://www.mega-nerd.com/libsndfile
Streaming MIDI I/O -- PortMidi -- see http://www.cs.cmu.edu/~music/portmusic
Streaming sound I/O -- PortAudio -- see http://www.portaudio.com
Fast Fourier Transform -- FFTW -- see http://fftw.org
You need to have these libraries installed, and compile and link the C-language interface libraries in the subdirectory DLLCC for sound or MIDI I/O to work with Siren. Binaries are available for Mac OSX. There are pre-compiled versions of the required libraries on the CSL web site at CREATE; look at http://FASTLabInc.com/CSL.
To get Loris, http://sourceforge.net/projects/loris
To get CSL, http://FASTLabInc.com/CSL
I tend to re-implement my tools every 5 years or so, and to rename them at that time. Since I started using Smalltalk in 1983 (or maybe it was 1984, I can't remember), I've called the tools DoubleTalk, HyperScore ToolKit, MODE, and, now, Siren. Each of these generations reflected my interest at the time, so DoubleTalk included facilities for algorithmic composition using Petri Nets and wrote score files for compilation with cmusic, while the HyperScore ToolKit supported MIDI and focused on real-time interactive composition.
The MODE is written for ParcPlace/ObjectShare's VisualWorks/Smalltalk system, and is best suited for algorithmic composition and digital sound file mixing and processing. It was completed in 1992, and has been extended very little since then. It is still available from the CREATE FTP site and works with current VisualWorks systems.
Siren (the name is not an acronym) is written for the VisualWorks Smalltalk system.
Various versions and components of Siren's predecessors (The HyperScore ToolKit and the MODE) are documented in the book "The Well-Tempered Object: Musical Applications of Object-Oriented Software Technology" (S. T. Pope, ed. MIT Press, 1991), in papers in the Proceedings of the 1986, 1987, 1989, 1991, 1992, 1994, 1996, and 1997 International Computer Music Conferences (ICMCs), in an article on the "Interim DynaPiano" in Computer Music Journal 16:3, Fall, 1992 (heartily recommended--it's also on the web), in the book Musical Signal Processing (C. Roads, S. T. Pope, G. DePoli, and A. Piccialli, eds. Swets & Zeitlinger, 1997), and in several documents on the Web page http://www.create.ucsb.edu/~stp/publ.html. There are more MODE- and Smoke-related documents (including several of the above references) in the directory Doc.
The Siren virtual image also includes an "outline" text for a brief introduction to, and self-paced demo of, the system. New users are encouraged to read and experiment with the Siren outline (the text contents of which are also included on the web site).
Siren and its predecessors stem from music systems that I've developed in the process of composing and realizing my music. Of the early ancestors, the MShell (1980-83) was the score processing shell used for "4" (1980-82); ARA (1982-4) was an outgrowth of the Lisp system used for "Bat out of Hell" (1983); the DoubleTalk system (1984-7) was based on the Smalltalk-80-based Petri net editing system used for "Requiem Aeternam dona Eis" (1986); the HyperScore ToolKit's various versions (1986-90) were used (among others) for "Day" (1988), and the MODE (1990-96) was developed to realize "Kombination XI" (1990) and "Paragraph 31: All Gates are Open" (1993).
Siren-on-Squeak (1996-2002) was a simple re-implementation of the MODE in the Squeak version of Smalltalk; it added the representations and tools I needed for "Four Magic Sentences" (1998-2000). Siren 7.4 added tools from the realizations of "Eternal Dream" (2002) and "Leur Songe de la Paix" (2003). The newest release incorporates new code from "Jerusalem's Secrets" and "Ora penso invece che il mondo..." (2005-6).
In each of these cases, some amount of effort was spent--after the completion of the composition--to make the tools more general-purpose. If Siren works well for other composers, it is because of its idiosyncratic approach, rather than its attempted generality.