The mockup I created got a bit abandoned as other projects asked for attention, but I figured to publish it anyway.
This is *very rough*, and meant only to show the general idea of a notation editor where 'reuse' is made possible by building up the composition as a 'tree' where the same building block may appear many times.
This example shows a simple 2-trumpet accompaniment to a blues chord progression. It is built up from the following 'building blocks':
- a 'fragment' containing a 1-trumpet figure (in lilypond notation)
- 'transpositions', which produce a transposed version of their underlying block
- 'repeats', which repeat their underlying block
- 'concatenations', which concatenate their underlying blocks.
- 'merges', which merge their underlying blocks
The whole piece is built up around one fragment, which is transposed, then merged with the un-transposed instance of the fragment, yielding a 2-trumpet version. Then this block is further repeated, transposed etc. to produce the whole tree.
On the left, you see a traditional 'tree view' of the structure. The main window shows a representation that is more easily navigated. The vertical line is the 'cursor', and by dragging you can move the song around. below is a 'piano roll' visualization of the end-result. Above, you see a 'staircase view'. Initially, it simply shows the composition consists of a concatenation of 6 blocks. By expanding the blocks in the tree view on the left, you will also see that reflected in the main 'staircase view'.
The 'tree view' on the left can be manipulated with shift-up, shift-down, ctrl-c, ctrl-x, ctrl-v.
The fragment can be manipulated by clicking it (any instance of it), modifying the lilypond at the bottom, and hitting 'update'. Notice that all instances of the fragment are updated at once.
You can start the application with this link
- open it with 'java web start' (javaws).
This is an unfinished mockup, so beware and be gentle, but hopefully illustrates what i'm dreaming about