Well, what's this? - abresee/note GitHub Wiki

There's two main pieces to this project: a [software system](Note Software), and a [conceptual, analytical system](Note Semantics).

Note Software

The software system has three parts

Audio Engine

The audio engine (currently referred to as "core") is a library written in C++ for the generation of audio from an abstract description of the audio. Boost.Python provides a transparent python module packaging of this library. In the prototype, we're only covering 12 tone equal temperament (or 12TET) and metered music (that is, music for which a concept of "tempo" and "beat" makes sense). gstreamer is used as the backbone of this system, and thus audio can easily be output in any way that gstreamer supports.

Composition Manager

the composition manager's purpose is to provide a system for managing the creation of any kind of musical composition. We're using Django's ORM features for this. In the prototype, we're implementing a single concrete system of composition.

Composition Editor

the composition editor's purpose is to display, edit, import, and export compositions, using the composition manager as its backend. This is a web application, using Django's templating features to render pages initially and then jQuery and AJAX communication with the Django instance on the server for client-side behavior. This is designed to integrate with the audio engine in order to allow dynamic playback of compositions.

The reason these components MUST necessarily be at least partially decoupled is that it is key to the purpose of this project that there is no "vendor lock" in any part of the music creation stack. Right now, Django keeps the two later parts tightly coupled, but hopefully this will either not be an issue, or will be something we can figure out how to transition out of later.

Note Semantics

The conceptual part is a new system for describing music abstractly in order to supercede western musical notation and analysis. This system is being created from the ground up in order to allow human-comprehensible descriptions of music on any level of abstraction, and by necessity and design will be able to express any concept from any system of musical notation or analysis. The system shall consist of extremely low level components that are then used to build larger abstractions. There's a pretty big assumption here that we will be able to somehow determine suitable primitives with which to build larger systems in a generic, fully extensible way. Let's hope this isn't a wild goose chase :)

The software project's purpose is as an implementation of the conceptual system (we need to name these things!). Other possible implementations could be a system not directly involving computers (such as a group of musicians with or without one or more conductors reading from some kind of display [printed sheets, electronic displays, etc].