About

This page intends to become a growing place for lisp stuff, especially libraries related to music. While most of this code is written by myself, I am also providing some links to third-pary libraries that I use often.

While all of them work in "pure" Common Lisp, some of them are more specifically related to the music composition environments OpenMusic ( OM ) and PWGL. However, by using the abstraction layer ompw they should work in both environments, as well as in Common Lisp alone.

Please do send me your comments or report any bugs you find.

PS: I am reachable at (reverse "moc.liamg ta ettorps.nailik").

Last modification: Wed, 05 Mar 2008 17:10:36 +0100

ksquant

A library for quantization and score manipulation. It extends PWGLs score notation format (ENP-Score-notation), which is based on a hierarchical tree representation, by a simpler structure, called simple-format.

In terms of rhythm, this is a flat format; only an event's time offset is represented (not it's hierarchical nesting in possibly multile layers of tuplets).

On the other hand, it can represent all other score structures and attributes like ENP-Score-notation. From multiple voices and parts to enharmonically correct pitch notation, expressions etc...

There is a paper describing its features in more detail.

Requirements: ompw, iterate.

The latest release (0.1.3) is available here.

Show all releases.

gecol

Gecol aims at providing CFFI bindings to allow for constraint programming in Lisp using Gecode.

Mauricio Toro is currently working on a port for Gecode 2.0.

It is hosted outside at http://common-lisp.net/project/gecol/.

cl-osc

This library implements the basics of reading and writing OpenSoundControl messages. The release is preliminary, if you are interested in using this software, please contact me first to check out some lisp implementation specific details.

There is doc extracted from the source.

The latest release is available here.

om-patches

These patches make it possible to download a library like smc and install it either for OM or for PWGL, without changing anything.

To install these patches download the files below and place them in one of these folders:

for OM version 4: /Applications/OM4.x/Patches/

for OM version 5: /Applications/OM-5.x.y/patches/ you might need to create the folder "patches" (not "Patches").

mcl-load-compile-unix.lisp

This is a patch for MCL to load and compile lisp source files that have line endings of either MAC or UNIX style.

om-asdf.lisp

A version of ASDF ready to use in OM.

ompw

OMPW provides an abstraction layer for writing Lisp libraries that can be used in "pure" Common Lisp, but also in the OM or PWGL environments.

It defines a macro define-box that expands differently, depending on the current system being used.

It also features the easy creation of menus in PWGL and OM, again providing a common syntax for all supported environments.

The latest release (0.2.6) is available here.

Show all releases.

ompw-utils

A place for keeping usefull utility functions, such as list! or mat-trans .

Requirements: ompw.

The latest release (0.1.4) is available here.

Show all releases.

ompw-testlib

A library for testing the box and menu creation features of ompw. It also serves as a kind of documentation.

Requirements: ompw.

The latest release (0.1.2) is available here.

Show all releases.

smc

SMC is a constraint solving engine, implemented on top of screamer that uses the rule syntax of PWConstraints by Mikael Laurson and thus is basically compatible with it.

It has been developed for actually understanding PWConstraints better, but also to allow for some experimental extensions.

For instance, there is an argument solution-p that allows for a "stopper function" to be passed - if it returns t the current partial solution is considered to be finished and the search is stopped. This makes it possible to generate solutions of different lengths.

Requirements: ompw, screamer, iterate.

The latest release (0.1.3) is available here.

Show all releases.

useful-devices

A library written by Jacopo Baboni Schilingi and myself for containing a (probably) small number of general lisp utilities.

Requirements: ompw.

The latest release (0.1.2) is available here.

Show all releases.

iterate

Iterate is an external Common Lisp library that I often use in the code I write. To install it you can simply download the package from the following link and put it in the same folder as other user libraries. This will allow OM or PWGL to find the library, when it is needed.

It will be compiled and loaded as all the other libraries - the only difference is that no menu will be added, because no boxes are defined, i.e. you won't use its functions (or rather macros in this case) directly in patches.

You can download it from:

http://common-lisp.net/project/iterate/releases/iterate-current.tar.gz

screamer

You can find further information on screamer here.

In OM, this library is already installed by default.

If you need it, for convenience, you can download it from my site.