The Siren Music and Sound Package in Smalltalk

Late-breaking news: Siren 9C now runs on Squeak and Cuis Smalltalk!

What is Siren?

Siren is an open-source software framework for music composition and production; it is a collection of about 350 classes written in the Smalltalk programming language and is compatible with several of the popular Smalltalk implementations such as Squeak, Cuis and VisualWorks, (with varying supported options, Squeak being the main development platform at present). Siren includes cross-platform support for MIDI, audio and OpenSoundControl I/O; the source code and documentation files are all available via the down-load links below. The source code and pre-compiled Smalltalk virtual images are available from the Siren Github site.

Impatient? Watch the videos!

  • The 2007 Siren Demo Video -- A 55-minute screencast showing all the core concepts of Siren

  • Siren + CSL Integrated Demo (2020) -- A 32-minute screencast showing the use of Siren with CSL and MIDI synthesis back-ends
  • OK, but what does it sound like?

    You might also want to watch the 15-minute audio/visual sampler movie or the trailer from my film Secrets, Dreams, Faith and Wonder.

    There are excerpts of my pieces on the web (also in MP3 format) here and here at HeavenEverywhere.

    There are several elements to Siren:

    The relationships between the Smoke language kernel and the various higher-level musical objects, drivers, and GUI tools are shown in the figure below; next to it is a code browser showing a Siren example method.

    siren siren

    What do the Siren GUI applications look like?

    There are screen shots of the Siren GUIs here, and an older (1998) version here.

    What's New?

    Siren 9.0C is available for Squeak and Cuis on github (see the link above) as well as via the VisualWorks parcel manager or here.
    Many parts of Siren were upgraded, enhanced, or rewritten for the 7.5 release. All of the external interfaces (e.g., for sound I/O, MIDI, FFTW, and other external libraries) have been rewritten to be more portable and robust. The entire EventScheduler has been updated, and there are several new packages, such as the CSL and Loris application packages.
        In addition to this, Francois Pachet's pitch class framework was ported from his MusEs system. The support for OpenSoundControl has been updated and improved, so that Siren can serve as an OSC-generating client for servers written in several languages, such as CSL and SuperCollider.
        Two new tools - the SirenUtility and the SirenTransport - have been added to assist users with general environment maintenance and with session state, and data persistency has been incorporated into the SirenSession class.
        Lastly, the documentation, including the web pages, the on-line Siren workbook, and the complete reference manual, have been greatly enhanced in Siren 7.5.

    What files are there to down-load?

    For Squeak and Cuis, see the Siren Github repository; 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.
     
  • Siren_9.0.zip  The Siren 9.0 release: VisualWorks source parcels, virtual image, docs, demo data, external interfaces (May, 2020).

  • See also Siren9 github repo at https://github.com/stpope/Siren9 (most up-to-date)

  • Siren7.5.zip  The Siren 7.5 release: ST source parcels, virtual image, docs, demo data, external interfaces (May, 2007)

  • Go to Cincom to get the free non-commercial-use version of the VisualWorks release for all platforms

  • Ancient History
    utility panel

    What Documentation is there?

    The Siren home page is at FASTLabInc.com.

    There are several on-line Smalltalk tutorials, just ask Google, 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.

    Other references to related software can be found in Stephen Pope's publication list.

    External Library Interfaces

    To make full use of the Smalltalk code, there are several external packages that use DLLCC (dynamic-linked library and C connect) 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. The main external library interfaces are:

        Sound file read/write -- libSndFile
        Streaming MIDI I/O -- PortMidi
        Streaming sound I/O -- PortAudio
        Fast Fourier Transform -- FFTW

    To install these, look in the DLLCC folder and run the makefile there for each target library.
    The experimental SWIG interfaces (sadly no longer supported) are in the folders SWIG_Loris and SWIG_CSL; to use them, you need,
    and/or
    Look in the workbook SWIG page for further instructions.
    transport

    Building Siren

    To build Siren, you start with a 9.0 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 the Siren package.

    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.
    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; look at http://FASTLabInc.com/CSL.

    To get Loris, http://sourceforge.net/projects/loris

    To get CSL, http://FASTLabInc.com/CSL

    What is the Difference between the MODE and Siren?

    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, though the core is portable to other dialects.

    Where's More Documentation?

    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://heaveneverywhere.com/stp/publs.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).

    transport

    History

    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).  More recently, see my film soundtrack "Secrets, Dreams, Faith and Wonder."

    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. 


    Stephen Travis Pope

    Created: 1997.11.08; LastEditDate: 2023.01.01