[Haskell-cafe] [ANN] karya, music editor

Evan Laforge qdunkan at gmail.com
Mon May 28 03:22:09 UTC 2018

This is an announcement for Karya, which is a music editor written in Haskell.

There are more details at:

or if you just want to listen to music:

Source is at: https://github.com/elaforge/karya

Even if you're not interested in the music part, it's an example of a
haskell program with a GUI, REPL based interface, tests, profiling,
and a shake-based build system, although probably idiosyncratic
implementations of all of the above.  It should run on OS X (well
tested) and X11 (poorly tested).

If you are interested in the music part, this is basically in the
"score writing" genre of software, in that it's suitable for writing a
score in a textual non-realtime way.  But though non-realtime, it's
still interactive, so you can hear what you just wrote.  And though
textual and language-oriented, it's also semi-graphical, so it's
closer to the sequencer / music editor type application than a
music-oriented DSL like Haskore.  It's hard to describe because as far
as I know there's nothing else similar.  If you have used a DAW but
wanted to define higher level abstractions, or if you used Haskore (or
similar) but found it difficult to write music purely textually, you
might be interested in this.  Or if you want to use your own tunings
or scales, or do expressive control of pitch and dynamics.  You'll
need an external MIDI synthesizer though.  There is a direct synthesis
backend, but it's not practically usable yet.

It's somewhat mature, in that I've been using for all my own music for
the last 5 years or so, but of course also has many areas of active
development, from graphics, to language design and interpretation, to
music notation design, to audio synthesis and numerics.

There is some documentation, but it's undoubtedly sparse since I'm the
only user.  Ask if you have questions!  Details will be materialized
on demand.

Some things not mentioned on the "official" page since they're in progress:

- A DSL to notate solkattu, which is Carnatic percussion syllables,
and is a sort of instrument-independent notation for rhythmic
structures, along with rules for realizing on various instruments.
This is closer to a traditional music DSL like Haskore, but winds up
different since it's rhythmically oriented.  There's a small library
of compositions.

- An offline synthesis framework, including a sampler and FAUST-based
synthesizer, built on a streaming audio library.  I'm currently
working on implementing off-line incremental audio rendering, which as
far as I know is unique.

More information about the Haskell-Cafe mailing list