Underscore: A Music Notation Editor
Screenshot of Underscore 0.5a pre-alpha in action. It's a pity none of the buttons on the toolbar work yet.
What is Underscore
Underscore is a music notation editor that I've been working in.
It's in the relatively early stages, and probably will never be
completed. Underscore it written in the
Euphoria programming language.
- Printing Almost Works
I can actually print a couple of bars. The barline
logic is missing (as are the barlines), and it's
still mostly broken.
- Code Posted
It's mostly broken, but I've posted
it anyway. Enjoy!
- Toolbar Added
The combo is correctly filled with a list
of known MIDI devices, but there isn't any MIDI
playback support yet. And none of the other toolbar
buttons work yet.
- New Font
I've created the Tin Pan Alley font to go with
the program. It's based on a the Brahms font I
found in a PDF file somewhere on the internet. I'm still
working on the Ingrid font, but I'm having trouble
with the scanner.
- Better Grouping Logic
Grouping is now a two-pass process. The first pass
groups of eighth notes, and can deal with groups that
contain a rest as the first or last element. The second
pass builds beat-sized groups.
- Automatic Beaming
Beaming works (more or less) in both directions.
- Added GNU General Public License.
Underscore will be my first GPL application - once I get
around to posting the code.
- Win32Lib font optimization.
The device's font was set and restored on every write -
a very expensive operation. This caused Underscore
to move like a slug when there were a lot of elements on
the screen. Screen rendering is now quite fast. The hack
isn't 100% correct yet, though...
Download Underscore Source Code
The code is constantly in flux, but basically I took the idea from
Noteworthy Composer that just about
everything should be done from the (computer) keyboard.
Almost every action has a single letter code associated with it.
For example, press the C key to insert a clef on the staff:
Press the C key again to select a different clef. Repeated
pressing will toggle through all the clefs:
Press K inserts a key signature:
Press K again, changing the sharps to flats:
And press K again toggles the flats back to sharps, and
adds an additional sharp:
Press T for a time signature:
And press T again to toggle through the signatures:
The blue note above the staff displays the current note's duration.
The red block indicates the position of the cursor. Pressing
Enter inserts a note at the cursor position; pressing
Space inserts a rest.
The following keystrokes alter the attributes of the note that
is inserted at the cursor position:
- Up: Move cursor up one step
- Down: Move cursor down one step
- 1: Set duration to whole note
- 2: Set duration to half note
- 3: Set duration to quarter note
- 4: Set duration to eighth note
- 5: Set duration to sixteenth note
- 6: Set duration to thirty-second note
- S: Add sharp to note
- F: Add flat to note
- N: Add natural to note
- .: Add dot to note duration
What's The Current Status
It's unlikely I'll get back to this program in the near future,
if at all. The program works well enough to do some simple things,
but not much beyond:
- Basic editing
- Multiple staffs
- Saves/Reads files
In addition, the navigation keys are broken.
The following are missing (roughly in the order or priority)
- MIDI Playback
- Line Thickening
- Part Extraction
- MIDI file creation