Shorthand Musical Notation for Csound

I’ve been working on a music notation system for Csound. It is text-based, user-defined (with a builtin/default notation), and supports simple notations similar to ABC notation. It integrates with Csound - produces Csound data and invokes Csound for rendering. It has a system for creating interface-like specifications for instruments (p-fields are specified with names and default values). Symbols defined for the notation are handled by operators - either builtin operators for handling common functions, or custom scripted operators for arbitrary manipulations (mainly custom articulation symbols which override one or more P-fields).

Example composition (using the builtin notation):
!1 A- B D C B : A-----, E# A- B D C B : ,A-----, E# A- B D C B : , ~AA<G<E<F<GACECA , E# A- B D C B A----

This uses 4 voices, polyphony (two at a time), varied note lengths, slurred notes, and dynamic tuning.
(I do not see an option to upload audio, but I can at least assert that it rendered nicely using slightly adjusted random instruments)

It is currently functional and suitable for my own use. However, I do not think it is appropriate for immediate publication, as it does have a few major deficiencies: inconsistent coding, lots of stuff needs to be renamed, and it has obvious vulnerabilities. I think it might be worth sharing, and am thinking about turning it into an open-source project, should there be a substantial amount of interest.

I have no serious experience running an open source project, much less managing and integrating other peoples’ contributions. I do have experience with all aspects of hacked-together synth development (multiple personal projects).

The project also includes some bonus material relating to what I am using it for: It uses a dynamic/relative tuning system, which allows for actual pitch shifts to be used in place of key changes. The builtin instruments use an envelope application algorithm which can handle rapid/instantaneous magnitude shifts.

If this seems like it would be a useful or interesting, feel free to comment.

Hi,

Interesting! Maybe I missed it, how do you use it in practice? Wirh some separate script or somehow within csd?
Is there any documentation of the main principles?

Tarmo

L, 30. august 2025 00:52 jrhart via The Csound Community <noreply@forum.csound.com> kirjutas:

The notation handler [in its current state] is csound front-end consisting of a set of LUA scripts which are invoked by command line with the name of the file containing the composition (and supporting modules referenced by name within the composition file). The scripts automatically generate a CSD file and invoke csound (by a system call). It also auto-plays the resulting sound file. All of this is only what gets it to function as a personal project (and would probably be replaced with something suitable for cross-platform and general usage).

I do have a document covering most concepts, but it is somewhat outdated and disorganized (biggest omissions I can think of is the parameterized randomization and function table generation).

I do not intend at present to openly distribute the private project (perhaps if a team is formed and a proof of concept implementation is needed to help with design goals). The simplest way I can think of to do a more detailed demonstration would be to set up a temporary forum for the project, with file sharing (ogg-vorbis) and text/csd files. I’d update and post the documentation and some samples, accept other’s test submissions, run the script (making any corrections or additions needed for useful output), and post the results (also with whatever I adjusted).