Scorechaser

Scorechaser is a grapical music notation editor for Linux. It is currently only in its infancy, and so not a very useful application yet.



Mission Statement:

Scorechaser aims to be a fully-capable graphical music notation editor and development studio. It aims to support MIDI, audio, and software synthesizers. Multiple simultaneous time signatures, tablature, and customizable instrument definitions should eventually be supported.


Developer Documentation

platform: Linux KDE
development language: C++
audio subsystem: ALSA


Project Release Goals

Version Features
0.001 Goals and concept definitions. No software.
0.002 File format for early development versions.
0.01 Prototype. Master view of score. Describe look and functionality of unimplemented features with msg boxes. Basic Linear Notation Editor. File I/O and display of simple files.
0.02 Basic Event Editor functionality. Linear Editor should properly handle rests and voices. SnapGrid note insertion like in Cakewalk.
0.1 Reasonably functional Event and Linear Notation editors. How to interface with major components should be stable. File format for implemented functionality should be stable. Should be a useable program for a limited set of features. Should allow tablature editing, store some configuration data, and be able to export to a MIDI file.
1.0 Should be a functional and useful program. Most views implemented in some sensible way. Midi playback. Simple inst defs. Interface to most components should be stable.


Theory and Design Concept Definition

The score is the main project file and receives a .sco extension. It is a (compressed) xml file giving all notational and midi information required for the project. It should also store links to all wav and other external files. Scorechaser creates a directory for each project, storing the project file, all customization files, wav files and other stuff in that directory. Users should be able to override the defaults in order to share wav files (e.g. a riff used in more than one project), instrument presets, etc. between projects. There should be a global repository for files that should be available to all projects (instrument presets, tunings, etc.)

Scorechaser is broken into views, as is typical of most music editors. MasterView is in the main window. It's a small entity with a list view of the score. Here, tracks may be shown, hidden, or relocated. Group-level parameters may be edited. Tracks and groups may be nested.

TrackEditor is the track view typical to most music editors. Each displayed track gets a row, and clips belonging to the track are displayed as rectangular boxes in that row. They may be moved and edited in various ways. Only tracks labeled as visible in the MasterView are shown. For simplicity, the tracks are shown in a flat list. Visible groups are shown, but they have few properties and are not editable.

EventEditor brings up a textual display of events for a selected region. It can be used for fine tweaking and filtering of event data. It's similar to the EventView in Cakewalk or Rosegarden.

LinearEditor and ScoreEditor display musical notation. LinearEditor displays a tracks as a single continuous staffs that roll across the screen, while ScoreEditor shows them in page format like a printed score. ScoreEditor allows musical direction symbols such as Segno, D.S. al Coda, and repeat bars. LinearEditor marches through the score in a linear fashion. Repeated bars and sections are displayed as greyed out (and non-edtitable) regions. All tracks in any given LinearEditor and ScoreEditor window must belong to the same Unit (which holds the directional data, time sig, and tempo).

MatrixEditor displays data in a "piano roll" style, as is typical of many music editor programs.

MixerView shows mixer panels to manipulate volume controls, plug-in effects, etc.

Score is the container for musical data. It contains a master time source and a list of Units. Each Unit can have its own tempo, time signature, and musical direction markings, and it contains a list of TrackGroups. A TrackGroup has a list of Tracks and nested TrackGroups. Each level of the hierarchy gets a name and some parameters (like volume) that affect all its children.

A Track contains a list of Clips, and each Clip contains a list of Events. An Event is a base class that holds a time and a type. Derived classes might hold a note, a key signature, or a controller value.