denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Denemo-devel] Another customization thread


From: Richard Shann
Subject: [Denemo-devel] Another customization thread
Date: Tue, 17 Jun 2008 08:44:53 +0100

Hi,
I've been thinking (following on from custom menus).

Another place where customization of the menus would seem helpful has
occured to me. I'll motivate this by an example:
When entering figured basses (or lyrics, or what you will) I put my
cursor on a note, press a key to invoke Insert/Edit Figured Bass, and
then type in the figures, pressing Return at the end.
If I forget/miss-type the first keypress, I find that I have been
entering music instead, and have serious problems in clearing up the
mess.
Since I will be spending a quarter of an hour entering figured bass, I
don't need to have all the note-editing machinary lying around on my
keyboard.
One way to analyze this, is to say that on pressing the "Insert/Edit
Figured Bass" key I am switching mode - until I press Return all my
keypresses have a different meaning. Pressing Return switches me back to
the mode set in the Mode menu.

OK, so I could avoid damaging my music when entering other sorts of
things by having a mode specially for that other sort of thing (and
keeping the mode switch keypress out of fumble-keypress-range). But, of
course, I am only one of a few hundred people world-wide who want to
enter figured bass into music, and none of the others have ever heard of
Denemo. So, adding Mode Switches for every possible way of working would
clutter up the interface with things most people never need.

Here is the customize opportunity: with an Add Mode menu item you could
get to specify the keymap which you want loaded, the name of the mode
and the keypress that loads it. Once you have done this your mode switch
can be placed in the Mode menu (or wherever you like), where it shows
with its name and shortcut (and tooltip when you right click it).
As with LilyPond inserts, we can provide a range of such modes (e.g.
Guitar Fingering mode, in which you can navigate and press keys 1-5
which invoke the insert of the appropriate guitar fingering, but not
change the duration using 1-5).
These could be loaded or unloaded to the user's tastes. And as with
LilyPond inserts, the community can submit mode switch files to
Denemo.org which become available to other users of Denemo.

This could lead in to a general revision of modes in Denemo, which have
grown like Topsy. Instead of multi-purpose (modal) functions, we could
have single-purpose functions and switching mode could be achieved by
switching keymap file. We would have to watch that the switch was fast
enough for those switches (e.g. Insert/Edit) which some people might
want to use in the manner of a key stroke. (An example of a quick mode
switch that I use is entering a note tied to a note of different
duration: I enter the note then hit "tied note" then I hit Toggle
Insert/Edit then edit the duration then I hit Toggle Insert/Edit again
and continue. Or something like that.) This switch needs to be fast,
whereas switching to entering lyrics might not need to be.

This work could also be part of the route to making the insertion of
lyrics (etc.) more natural - instead of a dialog popping up, the text
could appear under the music. The same keypresses would apply -
backspace in particular - but the behaviour on screen would be less
distracting.

 A last example: Rhythm mode, for example, is of use if you are entering
drum notation, (and would be of even more use if the keymap in use was
specialized to the task in hand). But, unless you are doing that (or
entering rhythms for overlaying with pitches), you don't want it
littering your Mode menu. At the moment, rhythm mode doesn't actually
prevent you from changing pitch, because the keybindings for cursor
up/down etc are still active. This makes for confusion, and leaves the
source code littered with if(xxx_MODE) conditionals.

Richard









reply via email to

[Prev in Thread] Current Thread [Next in Thread]