Idea for a new notation editor

Do you typeset your scores on Linux? Share your thoughts, tips, and tricks here.

Moderators: MattKingUSA, khz

Post Reply
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Idea for a new notation editor

Post by raboof »

One thing that has always irked me about the popular notation editors is that a lot of the 'structure' of your song gets lost: when notes are copy-pasted (common in pop music :) ), their relationship is not recorded.

In programmers' terms, this violates the "don't repeat yourself" mantra, and like when programming, it is error-prone and makes your score less maintainable. The one `notation editor' that is of help here is Lilypond, but editing Lilypond by hand is rather cumbersome, and most frontends either don't support these features or don't present enough guidance to use them effectively.

I'm exploring the idea of building up a score out of 'fragments', where each 'fragment' might appear many times in a composition, sometimes 'processed' (merged with other fragments, transposed, etc). The main point is when you modify a fragment, this affects all locations in the song where the fragment is (directly or indirectly) used.

I mocked up a small example to demonstrate how a simple 12-bar accompaniment can be built up by applying some simple operations (transposition, merging, repetition and concatenation) on a 2-bar fragment.

http://arnout.engelen.eu/files/dev/linu ... mockup.png

When you'd now alter the 2-bar fragment at the bottom, the entire 12-bar block should change accordingly.

This mockup serves only to show the general idea: the rendered notes aren't quite right and it doesn't show what the UI to interact with such a piece should look like. More on that later :).
studio32

Re: Idea for a new notation editor

Post by studio32 »

Isn't it possible to implement it in a existent notation editor to avoid having a lot of tools which are all in a alpha or beta state?
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: Idea for a new notation editor

Post by raboof »

studio32 wrote:Isn't it possible to implement it in a existent notation editor to avoid having a lot of tools which are all in a alpha or beta state?
I see what you mean, this approach is so different that I don't see much room for reuse without hauling in enormous amounts of extra work. That said, I do try to keep the project focused on notation, and connect to external apps where possible. I'm even sourcing out the rendering to lilypond right now ;).
nils
Established Member
Posts: 537
Joined: Wed Oct 22, 2008 9:05 pm
Has thanked: 35 times
Been thanked: 94 times
Contact:

Re: Idea for a new notation editor

Post by nils »

I will forward this to the Denemo mailing list. Denemo is the Notation-Editor which has already many unique and innovative features and the scripting-interface is very powerful. Additionally we work closly with lilypond. So when it can be done with lilypond it can be done more easier with Denemo.

Nils
User avatar
nathan
Site Admin
Posts: 405
Joined: Mon Dec 11, 2006 8:53 pm
Location: Phoenix, AZ
Been thanked: 5 times
Contact:

Re: Idea for a new notation editor

Post by nathan »

This is an intriguing idea; I think this is a cool idea for compositional tool. I'm looking forward to seeing where it goes, either as standalone project or as an addition to an existing code base.
nils
Established Member
Posts: 537
Joined: Wed Oct 22, 2008 9:05 pm
Has thanked: 35 times
Been thanked: 94 times
Contact:

Re: Idea for a new notation editor

Post by nils »

studio32

Re: Idea for a new notation editor

Post by studio32 »

Take also a look at Impro-Visor, java compozing app
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: Idea for a new notation editor

Post by raboof »

NilsGey wrote:I will forward this to the Denemo mailing list.
Thanks! I'm exploring on my on in Java for a bit now, but if this turns into something solid I'd be great to try and roll it into Denemo!
studio32 wrote:Take also a look at Impro-Visor, java compozing app
Interesting - until now I was using lilypond for rendering the notes, but its output can be rather ugly on-screen (quite contrary to on paper). I'll certainly check whether the code in jMusic/Impro-Visor is powerful enough to build on. Thanks for the pointer!
studio32

Re: Idea for a new notation editor

Post by studio32 »

no problem... build also jack and lilypond support for impro-visor please! ;)
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: Idea for a new notation editor

Post by raboof »

studio32 wrote:build also jack and lilypond support for impro-visor please! ;)
I recently made a patch for jjack (jack connection library for Java) which adds JACK MIDI support - though it might not be `neat' enough for inclusion in the official distro, it's a start: http://arnout.engelen.eu/files/dev/linu ... k/midiout/
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: Idea for a new notation editor

Post by raboof »

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 :).
Last edited by raboof on Thu Jul 16, 2009 9:22 pm, edited 1 time in total.
studio32

Re: Idea for a new notation editor

Post by studio32 »

Revolutionary!

But I have to get used to the way of doing things. It's way different then I am used to be, can't say whether I like it or not. Some denemo devs should look to it...
nils
Established Member
Posts: 537
Joined: Wed Oct 22, 2008 9:05 pm
Has thanked: 35 times
Been thanked: 94 times
Contact:

Re: Idea for a new notation editor

Post by nils »

We already did.
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: Idea for a new notation editor

Post by raboof »

I played with this some more:

http://arnout.engelen.eu/files/dev/linu ... ger.tar.gz

(binary for 32bits linux, sources aren't up anywhere yet but feel free to ask)

To get started: create a new project and add a .arl file. .arl files define 'blocks' which can be named and combined in several ways (a 'fragment' is currently just some notes, blocks can be merged, concatenated, repeated, transposed).

Example:

Code: Select all

import "test2.arl"

block entireSong :
	concatenate
		verse1
		verse2 ;

block trumpetsLow :
  fragment r8 bes r4 bes8 b g4 bes8 g r bes r2 ;

block trumpets :
  merge 
    trumpetsLow
    transpose trumpetsLow major fifth
    ;

block verse1 :
  concatenate
    repeat 4 trumpets	
    repeat 2
      transpose trumpets fourth
    repeat 2 trumpets
    transpose trumpets fifth
    transpose trumpets fourth
    repeat 2 trumpets ;

block verse2 :
  repeat 2 trumpets ;
Via 'Window'->'Show view'->'Other', add the 'label' and 'ruler' views: the 'label' shows a slightly-lilypond-like representation of the current block definition - mainly for testing/debugging.

The 'ruler' window shows the 3d-ish overview of the current block, highlighting the element under the cursor in yellow. Under the 3d-ish overview, a piano roll of the end-result is shown.
Post Reply