Written music
From Arnout Engelen
Contents |
[edit] Notation editors
For printing written music, I usually write it in Rosegarden and then export to Lilypond
Rosegarden is, however, a bit too `big': it follows much of the 'monolithic' DAW tradition. The 'small, interchangable, interconnected applications each performing a specific task' model is much more elegant.
One of the big advantages of Rosegarden is that you can sync up an audio track with your in-progress arrangement. It should be possible to achieve such a synchronization between separate audio playback and notation applications, though.
This would require the following:
- an audio player able to sync to a timebase master
- newer versions of jack.play can do this
- a notation editor able to sync to a timebase master. This one would (ideally) listen to the bar/beat/tick information, and leave frame numbers alone.
- to make jumps, the notation editor could emit jack_transport_reposition events with the 'valid' bitmask set to tell the timebase master which fields are supported (see here).
- a timebase master that can relate frame numbers to bar/beat/tick information (with some help from the user)
Open questions:
- can we elegantly support timestretching - i guess not, as variable speed in that sense in jack is still post-1.0 open research.
This approach would drop some common assumptions: - frame 0 is BBT 1:1:0000
See also:
- http://www.mail-archive.com/hydrogen-devel@lists.sourceforge.net/msg00543.html
- http://osdir.com/ml/audio.jackit/2003-07/msg00146.html
[edit] Other options
[edit] Nted
Pro:
- Jack-enabled AlsaMidi output
Con:
- only 4/4 measures (?)
- no repeats (?)
- no keyboard note entry
- ugly anti-aliasedness
[edit] museScore
Free and open source music notation & composition software for Linux & Windows. Currently looking for a Mac developer. MuseScore website: http://musescore.org MuseScore could be enhanced to export object page position in order to create automatic score following. See http://n2.nabble.com/Exporting-note-object-page-positions-td685266.html#a685266 for the discussion.
[edit] canorus
immature still, but promising
[edit] ultimate
If I got to design a notation editor, what would it look like?
- structure
- internal structure should not be sequencer-like, but 'conceptual' (e.g. for elegantly representing triplets)
- re-usable 'blocks'.
- Contain either notes or other blocks. Other blocks may have a transposition correction.
- Notes stored in concert pitch, these have time signatures and can have a pickup measure.
- entering
- a 'grid' can contain
- block instances: blocks with transposition information and whether/how to repeat
- repeats, time signature changes
- a 'grid' can contain
- playing/previewing
- sync to JACK timebase master on BBT info (not frames)
- emit JACK/ALSA midi signals. leave making the sounds to the pro's ;).
- file input/output
- input: midi, musicxml, perhaps an own file format if needed
- output: musicxml, lilypond
[edit] datamodel
Score : [Track]
Track : [StartMeasure, BlockInstance]
BlockInstance : Transposition, Block, Repeat
Repeat : none | Int times | until Int | until next | until end
Transposition : Interval
Interval : Int notes Int semitones
Block : NoteBlock | BlocksBlock
NoteBlock : TODO
BlocksBlock : [Offset, BlockInstance]
