0.8.22

This Manual is released under the Creative Commons Attribution-Share Alike 3.0 Unported license.


Table of Contents

Introduction
Dependencies
Optional Includes
Installing Denemo from Source Code
Getting Started
What Happens at Startup
Some Common Keyboard Shortcuts
Some Common Mouse Shortcuts
Overall View of Denemo
General Concepts
The Denemo Window
The Print Preview Pane
The Main Menubar
File
Edit
View
Input
More
Playback
Help
Toolbar
Playback Controls
Midi In Controls
Object Menu
Score
Adding Markings
Music Snippets
Playing Notes into Denemo - MIDI
Playing Notes into Denemo - Audio (Souncard Mic Input)
A Survey of the Input Methods
Adding Key/Mouse Shortcuts
More Commands
Adding More Features
Adding Your Own Features
An even easier way
Writing Scheme Scripts
Variables Defined in Scheme
Functions Callable from Scheme
Denemo Directives
The Directive Fields
Directive Edit Scripts
Introduction
Initialization Scripts
Edit Scripts
LilyPond Editing
Introduction
Using the LilyPond Window
Detail
Using the Denemo From the PC keyboard
Note Entry
Chord Entry
Inserting LilyPond Directives
Publishing
Advanced Features
Musical Score that Do Things!
Piano Staffs, Orchestral Scores etc
Single Staff Polyphony
Entering Vocal Music
Entering Figured Bass
Entering Chord Symbols
Denemo Command Line Options

Introduction

Denemo lets you create musical scores. You can type music in using the keyboard or play it in using a MIDI contoller or the microphone input. You can edit your music - the display shows you what you are working on in music notation - and you can playback to check how it sounds. You can preview and print the score or parts to the highest standards used in the music publishing industry - thanks to the Lilypond music typesetting program.

Denemo does not attempt to show the appearance of the finished score, it just shows you enough to enable you to enter the music efficiently. To see the finished score you press Print Preview.

Obtaining and Installing Denemo

Denemo is available from a variety of sources for different distributions. The latest stable release (tar.gz and .deb formats) is available for download from http://download.savannah.gnu.org/releases/denemo/. You can install Denemo from the Debian unstable repositories, using the command apt-get install denemo. Builds for Macintosh are available from the Gnu-Darwin project. The Denemo development branch can be downloaded using anonymous CVS or Git.

Anonymous Git checkout:

git clone git://git.savannah.gnu.org/denemo.git

Anonymous CVS checkout:

cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/denemo.git co -d denemo master

Dependencies

To build Denemo from a source package, the following dependent packages should be installed first. Remember to install the development packages as well (check your distribution for the specific package name):

[Note]For Debian Users

Type apt-cache showsrc denemo at a command line to determine what are the package names for Denemo dependencies. Type apt-get build-dep denemo to build the dependent files or use apt-get to install the packages individually by copying and pasting there names to the command line.

  • g++ 2.95 or higher

  • flex 2.5.4a or higher

  • bison 1.35 or higher

  • cdbs

  • gettext

  • libgtk2.0-dev

  • gtk+ 2

  • libglib2.0-dev

  • libxml2

  • libxml2-dev

  • LilyPond 2.4

  • autoconf 2.59 or higher

  • automake1.7

  • libaubio

  • libfftw3-dev

  • libportaudio

Optional Includes

Denemo uses other applications for playback and printing. You may need to install the following applications, and edit the preferences menu to tell Denemo which you want it to use.

  • csound (optional, www.csounds.com)

  • A PDF viewer (ghostview, evince etc)

  • A midi player such as timidity

  • An image viewer such as EOG

Installing Denemo from Source Code

Denemo is available in a variety of formats. The current stable release is available either as source code or in binary format. The Development branch of Denemo is available as a GIT source tree.

Procedure 1. To install from source code:

  1. Open a terminal window.

  2. Change directories to the directory to which you downloaded the Denemo source package.

  3. Uncompress the source package using standard Linux tools (tar and gunzip).

  4. Change directories to the uncompressed directory.

Procedure 2. Generating a Configure Script

Git does not come with a Configure script; generate one by typing and pressing Enter after the line:

  • ./autogen.sh

Procedure 3. To compile from source, press Enter after each line:

  1. ./configure.

  2. make.

  3. make install.

  4. If you are not logged in as root user, type su and your root password, or alternately type sudo and your user password.

Getting Started

Most people will start with playing around with Denemo via the pc keyboard. The default setup means that keys a-g represent the note names and 0-6 the different durations (whole note, half note etc). When the cursor is on blank space pressing key "0" then key "a" will append a whole-note A, pressing "1 b" will append a half-note B etc. If the duration is not changing you can simply type the note name, it will use the last entered duration. If you do type a duration it appears as a brown note at the cursor until you have given it a note name.

When the cursor is moved on to a note (with the arrow key right or mouse) then a-g edits the note name. To insert a note before a note at the cursor use A-G. When the cursor is on a note the keys 0-6 change the duration of the note, while Shift-0 6 insert a note before the cursor. (If you use the numeric keypad you can use Shift-KP 0-6 for this). The arrow keys move the cursor around, the period key adds a dot while Alt-a-g add notes to the chord at the cursor.

[Note]Note
When in the appending position the cursor shows as a large blue or red rectangle on a note-position. Blue indicates a note can be appended at that point without overflowing the measure. Red indicates that the measure is already full. When the cursor is a smaller green rectangle it indicates that you are not in the appending position: you can edit the note/object at the cursor or insert before it. The vertical blue line indicates the insertion point.

You can find more shortcuts by exploring the menu system - e.g. under the Notes/Rests menu the Select Duration submenu gives Remove Dot with the shortcut Control-period shown next to the command.

What Happens at Startup

On starting a Denemo up to two music scores (called init.denemo) are loaded, and any actions associated with them are run. The first of these is provided with the system and does essential initialization, the second you can provide yourself in the file ~/.denemo/actions/init.denemo (where ~ means your home directory).

In addition, on startup a set of keyboard and mouse shortcuts, and a selection of optional menu items are loaded. You are offered a choice on startup. Once you have settled on the set you wish to use, and perhaps started to customise it you can save it for next time using "Save as Default Command Set" in the command set manager.

[Note]Note
You should exit and re-start Denemo after creating a new command set to be sure of getting your keybindings to work.

[Note]Note
The "Score Titles, Controls etc" checkbox is undocumented, unfortunately. What it does is to show/hide a button bar where Titles and such can be displayed. The menu items you need are under Score->Titles etc and Movement->Titles etc. When you set a title, composer, etc the Titles etc button bar will become populated.

[Note]Note
The Playback Controls are undocumented, unfortunately. Mostly obvious commands, the lerft/right arrows move the start and end playback point forwards and backwards, while the up/down arrows set the start and end playback points to the current cursor position. See the links from the features list "To-do List" on the website.

Some Common Keyboard Shortcuts

Here are a few of the keyboard shortcuts that are commonly used in Denemo.

  • Letters a-g edit the note at the cursor to be A-G, if the cursor is in the appending position then notes are added. Letters A-G (either caps lock or shift) insert a note at the cursor.
  • Numbers 0-6 are used to refer to the note durations Whole Note ... 64th Note. They insert a duration at the cursor, which you then give a pitch to with a note name. With the shift key held (or the CapsLock on) 0-6 edits the duration of the note at the cursor. The corresponding Numeric Keypad keys can be used instead.
  • "." dots a note, Ctrl-"." undots it.
  • Alt-0-6 inserts a rest.
  • Alt-a-g Add notes to a chord. Or position the cursor and use Insert to add a note, Ctrl-Insert to remove it.
  • 7 starts a slur, 8 extends it, while 9 reduces it.
  • Shift-/ inserts a cautionary accidental

Some Common Mouse Shortcuts

Here are a few of the mouse shortcuts that are commonly used in Denemo.

  • Scroll Wheel pans up/down to bring staffs out of view into the window.
  • Shift Key and Scroll Wheel pans the score left/right.
  • Control Key and Scroll Wheel zooms.
  • Shift Key and Left mouse button drags notes up and down.
  • CapsLock AND Shift key with Left mouse drag inserts a crescendo
  • CapsLock AND AltGr key with Left mouse drag inserts a diminuendo

For more serious use of Denemo, for transcribing hundreds of measures of music, for example, you should explore other key shortcut schemes. These are offered when you start Denemo, until you decide to save one of them as your default scheme. The Arranger scheme uses two-key bindings such as "b,s" for start repeat barline and "b,e" for end repeat barline. For shortcuts like these to work the notenames are denoted by a double keypress, e.g. "b,b" for the note b. This works because the Arranger scheme is mainly for use with MIDI keyboard for inserting notes. Composer shortcuts is another scheme concentrating on rapid entry from the pc-keyboard. The LilyPond shortcuts scheme will be familiar to those who know the LilyPond music typesetting language, as well as including commands which generate easier-to-read LilyPond output.

Denemo is used via the computer keyboard, MIDI controller or playing in via a musical instrument. Quite a few mouse operations are also included by default. Clicking on the score will select items, and the status bar at the bottom will describe the item clicked. Right-clicking on items in the score allows you to edit any special attributes, (called Directives, see the section called “Denemo Directives”), that they may have. Clicking on the initial clef, key or timesignature lets you edit these, clicking to the right or left of the measures visible moves you forwards and backwards in the score. Selections can be made by dragging with the mouse from one note to another. And right-clicking any menu item gets help and the opportunity to set a shortcuts for the menu item. Furthermore, scripts are available in the menu system that give the mouse further uses.

Overall View of Denemo

General Concepts

The unit of work in Denemo is a musical score, which can be saved in a single file (with .denemo suffix). This is represented on the screen by a "tab". If you have several tabs open at once they appear just above the music in the main window, and you can switch between them by clicking on the tab.

One score may contain several movements, which you can move between, insert and delete with the Movements menu. A movement is a continuous piece of music with titles etc.

Within a movement there are staffs (arranged vertically) and within the staffs Denemo Objects. These can be notes, chords and Denemo Directives (see the section called “Denemo Directives”). The notes and chords are displayed in conventional format (though not fully typeset). The Denemo Directives are used for most things that are not chords or notes: Metronome marks, repeat barlines etc are good examples. They can also be attached to chords, individual notes in a chord, to a staff as a whole and to the score as a whole; in this case the directive can be thought of as an attribute of the object it is attached to. Each Denemo Directive carries its own display method. For example the Close Repeat barline appears as a Denemo Object in the converional music notation, while a Directive attached to a staff (e.g. Smaller Staff) may appear in a menu under a tools icon to the right of the staff. In the case of "Smaller Staff" the directive directs the LilyPond typesetter to make the staff smaller, and it can be edited from the menu under the tools icon to the left of the clef. Another tools icon appears if directives are attached to voices within a staff, again to the left of the clef, below the staff one.

The command Edit Object gives access to editing Denemo Directives, which generally have their own edit methods. You can use the Print View to indicate the padding that you wish to apply to some item, or to show where you want to drag it to.

The titles of the current movement can be set in the movement menu, and for the whole score in the score menu. In the movement menu you can cause a page break before the movement.

[Note]Note

When a file is loaded it opens at the point where you left off editing it.

The Denemo Window

Figure 1. Main Window

Main Window

The main window has menus and toolbars at the top. The Titles Etc appear next, along with any extra menu items which you may have placed there (e.g. the Print Part button). With View->Score View checked there is next the drawing area where the music input is displayed. When zoomed out you see just the few measures you are working on. By dragging the red bar at the bottom of the score upwards you get space for more of the music. If you have many staffs they may not all fit: you can still drag the red bar upwards to see several lines of just one or two staffs for instance. With View->Print View checked there is another pane showing the print preview of your score. Below this is a "Console Pane" showing any LilyPond messages while typesetting the music. At the bottom is a status line showing which movement you are in and what sort of object the cursor is on. If there are any MIDI filters that active they will be noted at the right in the status bar. The small colored rectangle is the Denemo Cursor , which shows where notes etc will be added/edited next - the insertion point is marked as a blue vertical bar. Selected music is indicated by a blue background.

The menus in Denemo are unusual: they not only let you do some particular action, but also each menu item lets you enquire what the action does in more detail and lets you set keyboard/mouse shortcuts for the actions. All this extra functionality & more comes with right-clicking the menu item, while the usual left click is for executing the action itself. The menus can always be torn off for working with particular items (e.g. working with different movements or with measures, dynamics etc.). Also available by right-clicking is creating new actions - often by modifying ones that are already there.

The Print Preview Pane

The print preview pane is shown by checking View->Print View. Right clicking in this pane allows you to refresh the print preview (the program hangs waiting for LilyPond to finish).

Right clicking in this pane also allows you to choose offsets to apply to items that LilyPond has positioned badly.Or you can select an amount of padding to apply to some object. This is generally a better way of indicating that it is too close to something else, since other objects will move away from it as needed - that is, if you later edit something it will behave more intelligently. The actual editing is always done in the Score View pane, choosing Edit Object while the cursor is on the offending object and then dragging in the Print Preview window to indicate the amount of change required.

The Main Menubar

The Main Menubar has submenus for overall control of the program. It contains the following submenus:

  • File

  • Navigation

  • Edit

  • View

  • Mode

  • Input

  • Playback

  • More

  • Help

  • Educational

File

Use the File menu to perform global operations related to storing and retrieving from file systems. The File menu contains the following Menu Items:

Menu ItemDescription
NewCreate score from scratch.
OpenOpen an existing Denemo file.
Add StaffsOpen an existing Denemo file and append the staffs from the (first) movement of it to the staffs in the current movement.
Add MovementsOpen an existing Denemo file and append the movements from it to the current score.
Open RecentOpen a file recently edited.
Open Standard TemplateCreate score from a stock template.
Open from GalleryCreate score from an example in the Gallery.
Open Custom TemplateCreate score from a template you have saved.
New WindowOpen another instance of Denemo.
Open in NewOpen an existing Denemo file in a new tab (or "page") so that both can be used at once.
SaveSave the current file.
Save AsSave the current file with a new name.
Save PartsSaves a set of parts (staves) in LilyPond format.
Export PDFRun LilyPond on the current file to create a PDF.
PrintDisplays the score in a pdf view, from which it can be printed.
Print excerptDisplays only the selection in image viewer, from which it can be saved.
Print Current PartDisplays one part taken from the score in a pdf view, from which it can be printed.
Score WizardOpen a Score Setup Wizard.
CloseClose the current score but keep other Denemo scores open.
QuitClose the current scores and exit Denemo.

Edit

Use the Edit menu to access common editing commands.

Menu ItemDescription
UndoUndo the pitch and rhythm just added.
RedoRedo the pitch and rhythm just added.
SelectMenu items for selecting music in the score.
CutCopy the selected notation to the clipboard and delete the selection.
CopyCopy the selected notation to the clipboard.
PastePaste the copied notation at the cursor point.
Paste LilyPond NotesPaste text as LilyPond notes. Open a .ly file in a text editor, copy some notes and then execute this command to capture them into Denemo.
Edit ObjectA general interface to editing whatever is at the cursor, especially Directives attached to notes/chords.
Change PreferencesSet external programs (LilyPond, PDF viewer etc.), autosave interval etc. These values will bre remembered when you re-start the program
Customize Commands, Shortcuts... 
Quick settings checkbox One touch setting of keyboad shortcuts
Save Command Set. Save your current customization of the menu commands and shortcuts.
Manage Command Set. Hide/Delete/Show menu items, set keyboard shortcuts, set cursor shapes, load/save all these.

View

Use the View menu to toggle toolbars and palettes used with the mouse.

Menu ItemDescription
Score ViewShows the score in panorama format for editing. The printed score will generally look different.
Print ViewShows the score as engraved by the LilyPond typesetter. You cannot edit in this window, but you can drag items to indicate how you want an item edited.
Lyrics ViewShows any lyrics for the current staff/voice. Each verse has its own tab, when selected the lyric placement shows in the Denemo display, so you can adjust by typing in the lyrics view window
Rhythms PatternsAllows custom rhythm patterns. Enter rhythms by setting up patterns and then overlay the rhythms with pitches via MIDI or microphone
Note and Rest EntryNotes and rests buttons – the highlighted button is current duration – click a button to enter a note/rest, or to edit the note under the cursor in edit mode
Articulation PaletteA (limited) palette of expression marks etc to apply to notes. More are in the menu system under Markings.
Score Titles, Controls etcIf this is checked any Titles, indent settings etc applying to the score can be shown as buttons at the top of the score. They must be created with their graphic field set for this.
Menu of ObjectsMenu of all the Denemo commands listed under type of object
Show LilyPondPops up a window for customizing the LilyPond
Show Scheme ScriptPops up a window for showing scripts written in scheme to control Denemo

Input

Choose whether to use external sources (Audio from the Mic input or MIDI) for Denemo. To use these you may need to review the settings in Edit->Prefs first.

More

Add commands to Denemo. Extra commands are available (those which not everyone will want) via this menu. More Commands gives commands shipped with Denemo, while My Commands gives ones that you have created locally. Note that the extra commands can also be loaded at the menu where you are looking for them (you right-click on a menu item, and if there are more commands for that menu the More Commands for this Menu item will show),

Update Commands from the Internet allows you to get the latest versions of commands directly from ftp://denemo.org. They are stored in the .denemo/download directory in your home directory. You can set a preference to have this happen in the background every time you start Denemo, if you prefer.

Playback

Use the Playback menu to start playback of your score. Denemo lets you hear your score, using an external MIDI player, or Csound.

Menu ItemDescription
PlayPlays from the start marker to the end marker
StopStops the playback
Play Using CsoundPlay this score (Csound) using .orc file specified in Playback Properties.

Help

Use the Help menu to get help using Denemo.

Menu ItemDescription
HelpLaunch a browser to view this manual.
Chat to Other UsersConnects you to a site with other users to give advice.
AboutView Denemo version information.

Toolbar

Use the Toolbar to access common Denemo commands quickly. The Tool Bar contains the following icons:

IconDescription
Creates a new document.
Creates a new document using the score wizard.
Opens the Open File dialog box.
Saves the current file
Runs LilyPond to convert the current file to PDF and sends it to the printer for printing
Undoes the last action. (Currently Undo only works for adding notes)
Redoes the previous undo action. (Currently Redo only works for adding notes).
Cuts the current selection to the clipboard.
Copies the selected notation to the clipboard.
Pastes the current clipboard item at the cursor position.
Jumps to the first measure of the movement.
Jumps to the last measure of the movement.

Playback Controls

Use this frame to control MIDI playback of the current movement. It has the following controls:

IconDescription
Runs DenemoFirst script.
Runs DenemoGoBack script.
Moves the start playback position backwards. Runs DenemoGoBack script.
Sets start playback position to cursor. Runs DenemoStartToCursor script.
Moves the start playback position forwards. Runs DenemoNext script.
Runs DenemoRewind script.
Runs DenemoStop script.
Runs DenemoPlay script.
Starts playing back while recording from MIDI-in.(Runs DenemoRecord scriptto do this).
Moves the end playback position backwards.Runs DenemoGoForward script.
Sets the end playback position to the cursor.Runs DenemoEndToCursor script.
Moves the end playback position forwards. Runs DenemoLast script.
LoopRuns DenemoLoop script.
ResetInternal Synth only. Performs a reset on the synth.
PanicJack only. Emits jack panic.
Set from SelectionSets the selection to be the start/end. Note first use in a session is buggy.
TempoFor movements with a single tempo this tempo is changed for rest of the playback. If the movement has an embedded MIDI tempo change, the change will be altered proportionally. The movement tempo setting itself is not altered - you are just altering the playback.(See next button or Movements->MIDI Tempo for setting that)
Set TempoSets the overall tempo of the movement to the value fixed by the Tempo slider
VolumeReduces the current volume by the % set. Again, this applies only to playback and proportionally affects embedded dynamics.
SetCalls the DenemoSetPlaybackIntervalToSelection script.

Midi In Controls

Use this frame to control MIDI input to the current movement. It has the following controls:

IconDescription
Sets the end sharps and flats to use.
MIDI->ScoreDirects the MIDI in to the score or to a MIDI recorder. The MIDI recorder is active when Record button is pressed. When you wish to return to score editing, this button re-directs MIDI-in to the score.
DeleteDeletes your MIDI recording.
ConvertConverts your MIDI recording to Notation. Not yet at all practical!

Object Menu

The object menus give you actions (such as insert, delete ...) ordered by the objects (notes, staffs, measures ...) that they act on.

Menu ItemDescription
ScoreSettings that apply to the whole score.
MovementsInsert/remove navigate, change the properties of movements.
Staffs/VoicesInsert/remove, navigate, swap, change the properties of staffs or voices
MeasuresInsert/remove navigate measures .
Notes/RestsThe first menu item in this menu depends on which mode you have chosen. For example in Classic mode there is a function to move the cursor to a new note while in Insert mode the function inserts a note of the given name. These menu items are present mainly to allow you to set shortcuts – it would be too slow to use them for actually entering notes/rests. I addition there are menu items for inserting rests, deleting, tied notes, setting the notehead style and stem direction, grace notes, triplets, transposing and more
ChordsInsert/remove notes from a chord.
ClefsInsert change or set the initial clef.
KeysInsert a change or set the initial key.
Time SignaturesInsert a change or set the initial time signature.
MarkingsInsert/remove tempo indications, dynamics, slurs, trills etc.
CursorNavigation of the (Denemo) cursor.
BookmarksCreate/delete or move to bookmarked positions in the current movement.
LyricsCreate and delete lyrics.
OtherEnter chord symbols, figured basses or LilyPond directives. Clear overlays.

Score

In the score properties dialog things that affect the whole piece can be set, as well as the titles of the current movement. In the score properties dialog you can include directives to apply to all the movements.

[Note]Note

When a file is loaded it opens with the final movement set as the current movement.

Adding Markings

Dynamics, Slurs, Trills, Tempo Indications, and much more a found in the Markings menu

You can collect together your favorite ones, either by assigning shortcuts, or creating a menu of favorite commands which just invoke the action you use.

Procedure 4. Adding Markings using the Articulation palette

Some ornaments and articulations have been collected together as a palette.

Example 1. 

    Music Snippets

    The Music Snippet toolbar lets you keep a number of snippets of music for pasting into your score. You can enter notes following a rhythmic pattern of a snippet. If you have a pattern in your music that appears many times you only need to type it once. By selecting it and clicking Create Snippet you install that snippet on the toolbar. Then as you enter notes (in Insert Mode) the notes follow the rhythmic pattern chosen. Pressing a duration key goes back to adding notes of the prevailing duration. You can have several snippets like this and switch between them using the space bar (or other keybinding of your choice). Another (more musical) way of entering rhythms is to "drum" them in using the keys on the computer keyboard for quarter-note, eighth-note etc, a curious sort of "musical instrument" where you change key for different durations. Use the numeric keypad for this. Drumming in is quickly learnt and, by playing in the notes rhythmically you can keep your place in the music. Use the immediate feedback option for this, so that you get a bell to confirm when you have completed a measure.

    The snippets toolbar is also where "special" notes such as Breve, Longa will appear.

    Using Input->Midi or Audio allows you to enter pitches directly. If you have entered your piece of music as pure rhythm you can overlay with the pitches using a MIDI controller or musical instrument with mic, headphones out or pickup attached to your soundcard.

    Playing Notes into Denemo - MIDI

    Denemo can take pitches directly from MID input. Select Input->Midi Input. The control window allows you to choose the enharmonic range. Under Mode->MIDI are various "MIDI filters" that allow you to control how the MIDI input is used: with none active the behaviour is as if you had entered the notes using the pc-keyboard (except that octave, accidental and note name are all entered in one go). You can also use Advance on Edit to put the pitches onto pre-entered rhythms, or Check Pitches (where you play through the piece and a warning is issued if you hit a wrong note).

    These MIDI filters are scheme scripts, so they can be tailored to do whatever you wish. One example is a filter that enables you to enter Figured Bass figures by playing the notes corresponding to the figures while holding down the bass note. Chords could be entered using similar code.

    Playing Notes into Denemo - Audio (Souncard Mic Input)

    Denemo can listen for, and detect the pitch of notes on the mic input of the computer; it doesn't attempt to guess the rhythm - such systems do not work well - but you will find that playing the notes in time will help you to play them in, as well as make playing them in a musical experience rather than a chore.

    Playing the notes in can be much quicker than using the keyboard since the note octave and accidental are all given just by playing the note. If you are able to play a musical instrument then this will probably be much faster for you than typing note names, octave shifts and accidentals at the computer keyboard. Using the headphones out of an electronic keyboard avoids "noises-off" interfering with the pitch detection. Many microphones and pickups benefit from some pre-amplification - it is worth getting the level right before you begin.

    When you select the Input->Audio on the Main Menu the Pitch Recognition window pops up. While the mouse pointer is inside the score drawing area the score is sensitive to pitches heard via the microphone input. The background colour of the score changes to show that the notes will be entered into the score.

    There are two ways of using the pitch entry - Overlay mode (default) and Insert mode. The button marked Insert causes notes to be entered into the current measure in the prevailing rhythm - the mode is set to Insert for this. The button marked Overlays overlays the notes already present with the pitches you sound. There is a third button, marked Tuning, which is a state-of-the art musical instrument tuner.

    Music is entered into the measure which holds the cursor. If you are overlaying a rhythm already entered, then the first un-overlayed note in the measure is overlayed by the note detected. You can delete the overlay using the regular delete keys, or clear them altogether if you want to start over in a measure. If you are in Insert mode then the notes detected will be inserted at the cursor position.

    Use the enharmonic shift to select whether Bb or A# should be entered when you enter the given pitch - you can usefully go as far as B# and Fb.

    Use the transpose control to shift up or down by octaves.

    Most of the other settings would require study of the Aubio documentation to understand, but the one marked threshold may be useful to make the detection less sensitive to ambient noises if using a microphone with an acoustic instrument.

    The best set-up is to plug the headphones-out socket of an electronic keyboard into the mic input, and choose a piano setting on the electronic keyboard.

    If you don't have any musical instrument that you can plug directly into the mic in, then you can use an acoustic instrument with a microphone, in which case move your microphone closer or further from your instrument to get reliable detection. Too close and you get double detections, too far and you get missed ones. To check for good detection open a piece of music, set Overlay mode and put the cursor in the first measure and play the piece in – the notes should all turn blue if you have perfect detection. It is worth while getting perfect detection – more than one or two miss-detects per piece of music and you may want to use the Insert rather than the Overlay method.

    A Survey of the Input Methods

    Introduction

    Denemo allows you to explore all the actions (insert/delete/edit/navigate...) using the menus. So, for example, inserting notes can be found under Notes/Rests while inserting a Staff comes under Staffs/Voices.

    [Note]Note
    When you have found the action you need you can right click on the menu item to get an explanation of the action and to view/set a key press- a keyboard shortcut - to activate the action. If you are setting a lot of keyboard shortcuts for menu items you can check the Edit->Keyboard Setup->Allow Quick Shortcut Edits button, whereupon you can set the keyboard shortcut just by pressing the desired key while the menu item is selected. In addition you can customize the mouse actions to initiate commands, and set the cursor that will show while certain mouse conditions apply.

    Denemo offers several ways of entering music: typing at the keyboard, playing in via a MIDI keyboard (controller), playing in acoustically using a microphone or choosing items from the menu system.

    Using the menus for everything would be very slow, but next to each menu item is the keypress that you can use instead. If there is no keypress shown, and you want to use that item often, then right click on the menu item and you can set a key combination for that menu action. Right clicking is also useful for getting a description of what the menu action is.

    Typing at the keyboard can be very fast, if you forget which keypress you need you can consult the menu system to find out. This method is good for touch typists.

    For entering a lot of already written-out music, playing the music in via a MIDI keyboard or microphone can offer the fastest and most musical method.

    One way to do this is enter the music as pure rhythms, ignoring the note names. The durations show as brown notes. Each duration sounds its own pitch and length as you enter the durations. As you start each measure the bell will sound so that you can keep your eyes on the score you are copying without needing to look up and check that you haven't miss-typed. If you are a reading musician you will find that you tap in the rhythm rhythmically which helps to keep your place in the piece you are entering.

    Once you have entered the rhythms you choose an external source from the Input menu, placing the cursor in the first measure, play the notes via MIDI or a microphone plugged into the mic input of your soundcard. When you play notes in via MIDI they give their pitches to the rhythm you have notated. By this means you can enter a piece of music in the time taken to play it twice - once to give the rhythm and once to give the pitches. If the piece modulates strongly you may need to shift the set of accidentals used to match the score.

    The Audio Input button introduces a special entry mode where the pitches you play in will overlay the rhythm, appearing as blue notes. You can delete any wrong pitches using the usual delete keys, without deleting the rhythm. In fact if you have an "interloper" (an extra spurious note) you can delete it and the other pitches will all move along to their correct places.

    Another method of playing music in acoustically doesn't involve entering the rhythm separately. For this select Input->Audio and then choose Insert instead of Overlays on the Pitch Recognition Panel that pops up. With Insert the sounded notes are entered as in the prevailing rhythm. The same applies if you have MIDI, only you just need to select Insert mode to enter the notes in that case. So by choosing a rhythm (e.g. half-note, quarter-note, or a custom rhythm pattern) and playing in the pitches you can enter the music into a blank score.

    For MIDI input there are special modes (MIDI filters), such the "AngryDelete" filter. With this filter on notes are entered normally until, but if you make a mistake and press the wrong note just hit the next one much louder and it will make the correction for you! MIDI filters are found under Input->MIDI

    The oldest Denemo keymaps are no longer supported. (see the section called “Adding Key/Mouse Shortcuts”). (Input via MIDI keyboard and Mic in is now available). Denemo shortcuts also work on Numeric Keypad.

    Score Setup

    Denemo provides different ways to set up scores:

    • Create template with the special name "default.denemo". If this is placed at the top level of your templates directory (that is ~/.denemo/templates/default.denemo), then it will be opened each time you start a new score.

    • Create an init.denemo score with everything you want to start up with, and any actions you want to be taken before you begin. This will be opened when you first start Denemo (that is once per Denemo session). See the section called “Musical Score that Do Things!” for details on what actions you can have Denemo perform before you start.

    • Use a Template

    • Use shortcut keys to add staves and set attributes

    • Use the Setup Wizard

    • Use Menus

    Using Templates to Setup Scores

    Denemo comes with a few preinstalled templates. You can also design your own templates as well.

    1. Navigate to File, New From Template, The Open dialog box appears.

    2. Double click on a template name from the list of templates. The dialog box closes and the template appears.

    [Note]Note

    Adjust the clef, key and time signatures as needed.

    Using Shortcuts to Setup Scores

    Inserting attributes with shortcut keys is an effective way to quickly customize a template.

    • Navigate to the Staff you want to change an attribute using one of these shortcuts:

      • Select Staffs/Voices-\>StaffDown to move down one staff

      • Select Staffs/Voices-\>StaffUp to move up one staff

    Using Templates to Setup Scores

    Denemo Comes with a wide range of prebuilt templates for standard vocal and instrumental scores. If you have a custom score setup you use over and over create a score layout using the Setup Wizard and save it as a template.

    1. Click on File-\>New From Template, The Open Dialog box appears displaying the currently available Templates.

    2. Double click on the template name in the righthand pane. The template loads in the Main Denemo Window.

      [Note]Note

      The currently active staff will be black. All other staves will be yellow, until they are active.

    Adding Key/Mouse Shortcuts

    Denemo allows you to choose which keys activate which commands. It also allows you to choose Mouse press/release gestures (in combination with keys such as Shift, NumLock, CapsLock etc).

    To choose a shortcut for a menu item, right-click on the item and choose the Create Mouse Shortcut, or the Edit Shortcuts option. The Set Mouse Shortcut Dialog requires you to set which button and action you want to use and then to hold/lock the keyboard modifier while clicking on the big button. The setting you have chosen is shown, and you click ok to accept it.

    To set a keyboard shortcut, and to delete any sort of shortcut, use the Edit Shortcuts menu item. This dialog also allows you to choose a cursor to show while certain mouse actions are underway.

    If your choice of keyboard shortcut already belongs to another command, you are warned about this, and given the chance to change your mind or steal the shortcut. Also, you can choose whether to distinguish between keypresses with, say the NumLock down and those without or to ignore it. If the NumLock is set but no command for that key specifically requires it then the setting of NumLock is ignored and the keypress is treated as if the NumLock was off.

    The menu item that activates the command shows the shortcuts that exist in bright blue lettering. PrsL-CapsLoc, for example, is the Press action on the Left mouse key while the CapsLock light is on. In the default command set this is linked to the BeginSlur command, so that together with the RlsL-CapsLoc for the release of the left mouse button, you can "draw" slurs by using the mouse. Similarly, Shift with left mouse button (MveL-Shift) is set to allow you to drag notes up and down the staff. (This is using Command MoveNoteToCursor, which is found under Notes/Rests/Edit/Edit Note/To Cursor)

    More Commands

    Adding More Features

    It is possible to add more commands to the set that Denemo ships with. Some of these are shipped with Denemo, but not added automatically so as to keep the menu sizes manageable. Generally, you right-click to find more menu items to add; once added you can set a keyboard/mouse shortcut and keep the command in your default setup.

    Adding Your Own Features

    You can also get Denemo to remember a frequently used sequence of actions - it can be installed in the menu system and given a keyboard shortcut just like any other command.

    To do this you right-click and choose Show Scheme Script. (You do not have to understand what a Scheme Script is to use this!). In the little window that pops up set Record Scheme Script and then do the set of steps you wish Denemo to remember, using the menu items, not keyboard, for each step.

    As a simple example, suppose you wanted a command to delete the next note (there are commands to delete the previous note and the current note, so why not?). You would enter some notes, put on Record Scheme Script and then from the menu Cursor select Cursor Right (to move on to the note to be deleted), and with the Notes/Rests->Delete->Delete Object menu item you would delete the note. (Each time you use a menu item you will see a new command entered into the Scheme window). Now turn off Record Scheme Script and you can experiment with your new command by pressing Execute in the Scheme Script window. To save this new command for future use, you right click on a menu item (in the menu where you would like the command to appear) and choose "Save Script as New Menu Item", this will ask you to make up a name for your new command as well as a label for the menu item etc.

    You can save the command in your default sequence of commands (via Edit->Customize Commands...->Manage Command Set->Save as Default Command Set). If not you will be asked if you want to save your new commands when you exit. Otherwise you can re-load via the More->My Commands menu item.

    An even easier way

    There is an even easier way of adding your own favorite LilyPond tweaks, which is by modifying a tweak that has already been done. This can be done by using the text-edit dialog on an existing Denemo Directive (usually found under the Advanced button provided by an edit script). Here you can see the actual LilyPond text that will be inserted, and there is a button to create a script to generate whatever you choose to enter. You can also enter the name of graphic images (.png files) that are to be used to represent your item in the display, and say where it should be positioned.

    Once you have created the script, it can be saved in the menu system by right clicking on an item in the menu where you want to place the command, and choosing "Save Script as New Menu Item" as above.

    Writing Scheme Scripts

    If you are a programmer you will have guessed that you can edit the Scheme Script window to create any command you want. Even if you are not familiar with Scheme you may find that you can adapt other scripts to do what you want.

    A good example of this is a script to insert a particular LilyPond directive into the score. This is all that many scripts do: it is easy to see the piece of LilyPond in the Scheme Script window, and by changing it you can create a new command.

    For example, from the More menu select the command /menus/ObjectMenu/Instruments/Orchestral/RehearsalMark (the files are laid out in folders/directories in the same way as the menu system itself). Then choose Get Script from the right click menu. With this command its script is appended to the Scheme Script window. Here you can see the part that says

    • (d-DirectivePut-standalone-postfix "RehearsalMark" " \\mark \\default" )

    which is inserting the LilyPond directive "\mark \default" which inserts the default rehearsal mark. (The extra \s are needed to tell Scheme that you literally mean a \ sign). You can change this to insert any other LilyPond that you need - always doubling the \ signs. The you can save as a new menu item, or use Save Script to customize the script you started with.

    More ambitious programmers will need to know all the commands available. Besides the complete Denemo command set (the list is given in the Command Management window) there are the following additional Scheme procedures defined.

    • d-InitializeScript deprecated - init.scm is now run automatically. (parameter: action-name) runs a script init.scm in the menupath attached to the action whose name is given. Used by commands that need a time-consuming initialization step which can be skipped on subsequent calls.
    • d-GetType returns a scheme string indicating the type of the current object
    • d-GetNoteName returns a scheme string, giving the note name a-g of the current note
    • d-GetNote returns a scheme string, the note name, accidental and octave of the current note (LilyPond notation)
    • d-GetNotes returns a scheme string, the notes of a chord separated by NULL characters
    • d-PutNoteName takes a string argument, a note in LilyPond notation. Changes the note at the cursor. Not for use with multi-note chords.
    • d-DiatonicShift Deprecated.
    • d-NextObject moves cursor to next object, returning TRUE if current object has changed
    • d-NextChord as d-NextObject, but skipping non-chord objects. chords includes rests and chords with 1 or more notes.
    • d-NextNote as d-NextChord but skipping rests (i.e. chords with 0 notes).
    • d-NextStandaloneDirective as NextObject, stopping on a standalone directive. Using d-DirectiveGet-standalone tag a directive of a particular tag can be found.
    • (d-Directive-type? optional-tag) where type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note.This returns #t if the cursor is on a directive of type (with tag optional-tag if optional-tag is present) else #f
    • (d-DirectivePut-standalone? tag) inserts a standalone directive with the given tag at the current cursor position and places the cursor on it.
    • (d-DirectiveGetTag-type) where type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note. This returns the tag if the cursor is on a directive of type else #f
    • (d-DirectiveGetTagForTag-type tag) returns the tag passed in if the cursor is on directive of type with that tag, else it returns the tag of the first directive of type that is present at the cursor, else #f
    • d-WarningDialog Pass a string argument to pop up a warning.
    • d-GetOption (parameter string of options). Takes a null separated set of options and pops up a dialog offering them to the user. Returns the one chosen or #f if the user cancels.
    • d-GetChar returns a string containing a single character from the user (blocks waiting for a keypress)
    • d-GetKeypress returns a string representing a keypress from the user (blocks waiting for a keypress) (e.g. Up for the up arrow key etc.)
    • d-GetCommand returns a string containing the command name for the user's keypress (blocks waiting for a keypress)
    • d-GetUserInput takes three strings, displays and returns the user's response as a string.
    • d-GetMidi
    • d-PutMidi
    • d-PlayMidiKey
    • d-BassFigure
    • d-GetNoteAsMidi
    • d-RefreshDisplay
    • d-InputFilterNames sets the status bar
    • d-Chordize Ensure that even a single note is treated as a chord - needed for some LilyPond constructs (e.g. fingerings)

    Standard Denemo commands that pop up dialogs will work as usual if no argument is passed to them from Scheme. In general if a string consisting of strings of the form "name=value\0" is passed these will be used and no popup will occur. The field "name" will be given the value "value". The \0 is a NULL character that separates the assignment strings. As a shorthand if there is only one value being passed you can just pass the value. The names of the fields depend on the action being called. So for example

    Example 2. 

    (d-Open "filename=myfile.denemo\0")

    will open the file "myfile.denemo".

    This feature is being rolled out, and currently works for

    • d-InsertLilyDirective (directive, display. minpixels) (deprecated function)
    • d-AttachLilyToChord (prefix, postfix, display) deprecated see d-DirectiveGet-chord-* and d-DirectivePut-chord-* below
    • d-AttachLilyToNote (prefix, postfix, display) deprecated see d-DirectiveGet-note* and Put below
    • d-StaffProperties understands a couple of property=value settings
    • d-InitialClef
    • d-InsertClef
    • d-InitialKey
    • d-InsertKey
    • d-Open filename
    • d-ScoreProperties (fontsize= size of font to be used for score)

    Variables Defined in Scheme

    Variable NameMeaning
    DenemoPref_username---
    DenemoPref_denemopath---
    DenemoPref_temperament---
    DenemoPref_midi_in---
    NotationMagick::NOTATIONSTRING---
    DenemoPref_sequencer---
    DenemoPref_midi_audio_output---
    DenemoPref_fluidsynth_audio_driver---
    DenemoPref_fluidsynth_midi_driver---
    DenemoPref_fluidsynth_soundfont---
    DenemoPref_browser---
    wrap:Op9---
    wrap:Op8---
    wrap:Op7---
    wrap:Op6---
    wrap:Op5---
    wrap:Op4---
    wrap:Op3---
    wrap:Op2---
    wrap:Op1---
    DenemoPref_lilypath---
    DenemoPref_midiplayer---
    wrap:Op0---
    DenemoPref_audioplayer---
    cue-Delete---
    DenemoPref_csoundcommand---
    cue-SetPadding---
    DenemoPref_pdfviewer---
    cue-EditText---
    DenemoPref_imageviewer---
    cue-OffsetPositionOne---
    cue-OffsetPositionAll---
    cue-SetRelativeFontSize---
    cue-PlaceBelow---
    cue-PlaceAbove---
    cue-Advanced---
    stop---
    DENEMO_VERSION---
    DENEMO_ACTIONS_DIR---
    DENEMO_LOCAL_ACTIONS_DIR---

    Functions Callable from Scheme

    All functions are prefixed by d- when called from scheme. For example the command Help is called thus (d-Help).
    Command NameHelpLabelMenu Path
    DirectiveGet-movementcontrol-tx"Gets the value of the tx field (a string) of the movementcontrol directive with the passed tag."----
    HideLilyPondComments out the chord in the LilyPond output.Hide on Printing/ObjectMenu/ChordMenu
    InsertFminNo Tooltip yetInsert F Minor--
    Set1Set the prevailing duration to <span size="10000" face="Denemo">1</span><span size="10000" face="Denemo">1</span>--
    SetDurationInTicks"Takes an integer, Sets the number of ticks (PPQN) for the object at the cursor, returns #f if none; if the object is a chord it is set undotted"----
    DirectiveGet-header-gx"Gets the value of the gx field (a string) of the header directive with the passed tag."----
    InsertKeyInsert/Edit a key change at the cursor positionKey Signature Change--
    Change1Change the current note to a <span size="10000" face="Denemo">1</span><span size="10000" face="Denemo">1</span>--
    SmallFontEndPrinting resumes normal size music.End Small Size/ObjectMenu/Directives
    DirectiveGet-chord-display"Gets the value of the display field (a string) of the chord directive with the passed tag."----
    DirectiveGet-timesig-override"Gets the value of the override field (a string) of the timesig directive with the passed tag."----
    InitialKeySet the initial key signature of the current staffInitial Key--
    AllegroAssaiGives Allegro Assai tempo indicationAllegro Assai/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    Insert1Insert a <span size="10000" face="Denemo">1</span><span size="10000" face="Denemo">1</span>--
    DirectivePut-chord-ty"Writes the ty field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Preview4BarsPrint preview of current bar and the next three.Preview Four Measures/MainMenu/FileMenu
    InsertClefInsert/Edit a change of clef at the cursorClef Change--
    DirectiveGet-movementcontrol-y"Gets the value of the y field (a string) of the movementcontrol directive with the passed tag."----
    InsertCminNo Tooltip yetInsert C Minor--
    1In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">1</span> In edit mode changes the current note to <span size="10000" face="Denemo">1</span> or appends a <span size="10000" face="Denemo">1</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">1</span> at the cursor<span size="10000" face="Denemo">1</span>--
    MajorOrMinorDetermine if the chord played is major or minorMajorMinor/MainMenu/Educational/Aural Training/Chord-Comparison
    DirectivePut-score-minpixels"Writes the minpixels field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-header-ty"Gets the value of the ty field (a string) of the header directive with the passed tag."----
    DirectiveGetForTag-standalone"Takes a optional tag. Returns that tag if a standalone directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    Finger3Inserts fingering for finger 3Finger 3/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    ScriptCallback"Takes the the name of a scripted command. Runs the script stored for that command. Scripts which invoke other scripted commands use this (implicitly?) "----
    InsertGminNo Tooltip yetInsert G Minor--
    ChangeRest0Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">0</span>Change a <span size="10000" face="Denemo">0</span>rest--
    SetTuningStaffAt this time in playback the current staff's tuning will switch to the temperament selected when this command is invoked.Set Tuning for Current Staff/ObjectMenu/Directives/Tuning
    DirectiveGet-timesig-gy"Gets the value of the gy field (a string) of the timesig directive with the passed tag."----
    ClefChooserChoose any sort of clef. If the cursor is at the start change initial clef, else insert chosen clef.Clef Chooser/ObjectMenu/ClefMenu
    InsertDminNo Tooltip yetInsert D Minor--
    InsertRest0Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">0</span>Insert a <span size="10000" face="Denemo">0</span>rest--
    GetNoteDuration"Returns the duration in LilyPond syntax of the note at the cursor, or #f if none"----
    DirectiveGet-note-ty"Gets the value of the ty field (a string) of the note directive with the passed tag."----
    InitialClefChange the initial clef of the current staffInitial Clef--
    DirectiveGet-movementcontrol-x"Gets the value of the x field (a string) of the movementcontrol directive with the passed tag."----
    NotationMagick::RandomWithinClefRangeNo help----
    Set0Set the prevailing duration to <span size="10000" face="Denemo">0</span><span size="10000" face="Denemo">0</span>--
    EndVoltaEnds a volta, that is a n'th time barEnd 1st/2nd time bar/ObjectMenu/MeasureMenu
    DirectiveGet-header-tx"Gets the value of the tx field (a string) of the header directive with the passed tag."----
    DirectivePut-chord-postfix"Writes the postfix field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    StaffPropertiesChange the properties of the current staffStaff Properties--
    EnterRestInserts a rest in the prevailing durationInsert Rest/ObjectMenu/NotesRests/RestEntry
    Change0Change the current note to a <span size="10000" face="Denemo">0</span><span size="10000" face="Denemo">0</span>--
    DirectiveGet-timesig-gx"Gets the value of the gx field (a string) of the timesig directive with the passed tag."----
    AddVoiceAdds a new voice (part), to the current staff. It is tricky to switch between the voices. Suggest to use merge staffsAdd Voice--
    InsertASharpminNo Tooltip yetInsert A# Minor--
    Insert0Insert a <span size="10000" face="Denemo">0</span><span size="10000" face="Denemo">0</span>--
    F-MajorIdentify Scale Notes that are soundedF Major/MainMenu/Educational/Aural Training/Identify-Scale-Note
    DirectivePut-note-ty"Writes the ty field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetDirectiveTagActionScript"Sets an "action script" on the directive of the given tag"----
    Finger2Inserts fingering for finger 2Finger 2/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    MoveNoteToCursorMoves the nearest note to join the cursorTo Cursor/ObjectMenu/NotesRests/EditNote
    DirectivePut-movementcontrol-override"Writes the override field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-voice-minpixels"Writes the minpixels field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertDSharpminNo Tooltip yetInsert D# Minor--
    NotationMagick::AskNewNotationstringNo help----
    0In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">0</span> In edit mode changes the current note to <span size="10000" face="Denemo">0</span> or appends a <span size="10000" face="Denemo">0</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">0</span> at the cursor<span size="10000" face="Denemo">0</span>--
    SetBarNumberEnter a number to change the lilypond bar number. The printout will continue to count up from there.(Print) Set bar number/ObjectMenu/MeasureMenu
    InsertGSharpminNo Tooltip yetInsert G# Minor--
    NotationMagick::InsertMemberRandomlyLyNo help----
    DirectiveGet-header-y"Gets the value of the y field (a string) of the header directive with the passed tag."----
    MoveToGMoves cursor to nearest note GMove to G--
    GetNotes"Returns a space separated string of LilyPond notes for the chord at the cursor position or #f if none"----
    EndSecondTimeBarCloses the second time bar peviously opened (printing)Close Second Time Bar/ObjectMenu/MeasureMenu/Repeats
    DirectiveGet-timesig-ty"Gets the value of the ty field (a string) of the timesig directive with the passed tag."----
    DeleteAfterDeletes the staff after the current staffDelete Staff After--
    ChangeToGChanges note at cursor to nearest note G Rhythm is unchangedChange to G--
    DirectiveGet-chord-tx"Gets the value of the tx field (a string) of the chord directive with the passed tag."----
    OpenSecondTimeBar(Print) start a second time bar, must be followed by EndVoltaStart a Second Time Bar/ObjectMenu/MeasureMenu
    DirectivePut-chord-prefix"Writes the prefix field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DeleteStaffDeletes the current staffDelete Current Staff--
    DirectivePut-movementcontrol-gy"Writes the gy field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NotationMagick::InsertListRandomlyLyNo help----
    ClosingBarlineInserts a closing barline (a double bar with last one thicker).Closing Barline/ObjectMenu/MeasureMenu
    AddGAdds note G to the chord at cursor Cursor height determines which octaveAdd G--
    DeleteBeforeDeletes the staff before the current staffDelete Staff Before--
    InsertCSharpminNo Tooltip yetInsert C# Minor--
    DirectiveGet-header-x"Gets the value of the x field (a string) of the header directive with the passed tag."----
    AddNoteGInserts note G after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert G After--
    C-MajorIdentify Scale Notes that are soundedC Major/MainMenu/Educational/Aural Training/Identify-Scale-Note
    GetCommand"Intercepts the next keypress and returns the name of the command invoked, before invoking the command. Returns #f if the keypress is not a shortcut for any command"----
    DirectiveGet-timesig-tx"Gets the value of the tx field (a string) of the timesig directive with the passed tag."----
    Finger1Inserts fingering for finger 1Finger 1/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    StartDownStemsStems from now on point downward.Stems Down/ObjectMenu/NotesRests/StemControl
    DirectivePut-staff-minpixels"Writes the minpixels field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertFSharpminNo Tooltip yetInsert F# Minor--
    InsertGInserts note G before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert G--
    GraceAfterPrint note following this note as grace note. Beware! Denemo display does not show the grace note properly, but typesetter will understand. Multiple grace notes to follow will need separate start { and end } block directives to group them.Grace After Current/ObjectMenu/NotesRests/GraceNotes
    DirectivePut-chord-tx"Writes the tx field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-movementcontrol-gx"Writes the gx field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertBminNo Tooltip yetInsert B Minor--
    MoveToFMoves cursor to nearest note FMove to F--
    SecondTimeBarCloses first time bars and starts second time bar(s) (printing)Second Time Bar/ObjectMenu/MeasureMenu/Repeats
    GetNote"returns LilyPond representation of the (highest) note at the cursor, or #f if none"----
    AddLastInserts a new staff at the end of the scoreAdd Last Staff--
    DirectivePut-header-override"Writes the override field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ChangeToFChanges note at cursor to nearest note F Rhythm is unchangedChange to F--
    OpenFirstTimeBar(Print) start a first time bar, must be followed by EndVolta.Start a First Time Bar/ObjectMenu/MeasureMenu
    DirectivePut-chord-display"Writes the display field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-timesig-y"Gets the value of the y field (a string) of the timesig directive with the passed tag."----
    AddInitialInserts a new staff at the top of the scoreAdd Initial Staff--
    Beam1234Beams end on each quarter note (up to 4).Beam 4 Beats/ObjectMenu/NotesRests/Beaming
    AddFAdds note F to the chord at cursor Cursor height determines which octaveAdd F--
    AddAfterInserts/Adds a new staff after the current staffAdd Staff After--
    DirectivePut-movementcontrol-ty"Writes the ty field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-note-tx"Gets the value of the tx field (a string) of the note directive with the passed tag."----
    InsertEminNo Tooltip yetInsert E Minor--
    AddNoteFInserts note F after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert F After--
    Db-PentascaleIdentify Scale Notes that are soundedDb Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    GetCommandKeypress"Returns the last keypress that successfully invoked a command "----
    StartUpStemsStems from now on point upward.Stems Up/ObjectMenu/NotesRests/StemControl
    DirectivePut-note-minpixels"Writes the minpixels field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertAminNo Tooltip yetInsert A Minor--
    DirectivePut-header-gy"Writes the gy field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertFInserts note F before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert F--
    Finger0Inserts fingering for open stringFinger 0/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    NotationMagick-RandomWithinClefRangeDiatonicInsert a random note within clef range, only diatonic notes according to current keysignature.Diatonic within clef range/ObjectMenu/NotationMagick/SingleRandomNote
    ChangePadNo help----
    DirectiveGet-timesig-x"Gets the value of the x field (a string) of the timesig directive with the passed tag."----
    InsertCflatmajNo Tooltip yetInsert Cb Major--
    NotationMagick::RandomChromaticLyNo help----
    MoveToEMoves cursor to nearest note EMove to E--
    FirstTimeBarCloses a repeated section and starts a first time bar (printing)First Time Bar/ObjectMenu/MeasureMenu/Repeats
    PutWholeMeasureRests"Insert rests at the cursor to the value of the one whole measure in the key signature and return the number of rests inserted"----
    AddBeforeInserts a new staff before the current staffAdd Staff Before--
    DirectivePut-movementcontrol-tx"Writes the tx field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-note-tx"Writes the tx field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ChangeToEChanges note at cursor to nearest note E Rhythm is unchangedChange to E--
    SetPaddingNo help----
    SmallFontStartMusic after this is printed in a small size.Small Size/ObjectMenu/Directives
    DirectivePut-score-graphic"Writes the graphic field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MoveToVoiceDownGo to the lower numbered voice on this staff without altering selectionMove to Voice Down--
    DirectivePut-header-gx"Writes the gx field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    HideMovementHides the movement on printing.(Print) Hide Movement/ObjectMenu/MovementMenu
    AddEAdds note E to the chord at cursor Cursor height determines which octaveAdd E--
    DirectivePut-timesig-override"Writes the override field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MoveToVoiceUpGo to the higher numbered voice on staff without altering selectionMove to Voice Up--
    InsertGflatmajNo Tooltip yetInsert Gb Major--
    AddNoteEInserts note E after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert E After--
    Ab-PentascaleIdentify Scale Notes that are soundedAb Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    GetKeypress"Intercepts the next keypress and returns a string containing the name of the keypress (the shortcut name). Returns #f if keyboard interception was not possible."----
    DirectivePut-movementcontrol-y"Writes the y field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-chord-minpixels"Writes the minpixels field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-chord-y"Gets the value of the y field (a string) of the chord directive with the passed tag."----
    InsertDflatmajNo Tooltip yetInsert Db Major--
    InsertEInserts note E before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert E--
    PrestoPrint Presto in bold italics above the chord.Presto/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    NotationMagick-RandomWithinClefRangeChromaticInsert a random note within clef range. Full chromatic spectrum.Chromatic within clef range/ObjectMenu/NotationMagick/SingleRandomNote
    InsertAflatmajNo Tooltip yetInsert Ab Major--
    DirectivePut-header-ty"Writes the ty field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MoveToDMoves cursor to nearest note DMove to D--
    UploadRoutineNo help----
    CloseRepeatCloses a section that starts with an Open Repeat. Not needed with 1st and 2nd time bars. (Printing)Close a Repeat Section/ObjectMenu/MeasureMenu/Repeats
    DirectivePut-timesig-gy"Writes the gy field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GetNoteName"Returns the name of the (highest) note in any chord at the cursor position, or #f if none"----
    ChangeToDChanges note at cursor to nearest note D Rhythm is unchangedChange to D--
    VoiceDownGo to the lower numbered voice on this staff, extending selection if anyVoice Down--
    CheckForIncompleteMeasuresChecks each measure for complete number of beats, ignoring Anacrusis and ShortMeasure ones. Stops at anything bad.Check for Irregular Measures/MainMenu/NavigationMenu/Seek
    DirectivePut-voice-graphic"Writes the graphic field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-movementcontrol-x"Writes the x field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-chord-y"Writes the y field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MovementPageBreakPrints this movement starting on a new pagePage Break Before/ObjectMenu/MovementMenu
    AddDAdds note D to the chord at cursor Cursor height determines which octaveAdd D--
    VoiceUpGo to the higher numbered voice on staff, extending selection if anyVoice Up--
    InsertEflatmajNo Tooltip yetInsert Eb Major--
    NotationMagick::RandomDiatonicLyNo help----
    DirectivePut-header-tx"Writes the tx field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    AddNoteDInserts note D after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert D After--
    ParseJsonNo help----
    Eb-PentascaleIdentify Scale Notes that are soundedEb Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    SwapMovementsSwap this movement with the one beforeSwap Movements--
    ChangeRelativeFontSizeNo help----
    GetChar"Intercepts the next keypress and returns a string containing the character. Returns #f if keyboard interception was not possible."----
    DirectivePut-timesig-gx"Writes the gx field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-standalone-minpixels"Writes the minpixels field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertBflatmajNo Tooltip yetInsert Bb Major--
    InsertDInserts note D before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert D--
    AndantePrint Andante in bold italics above the chord.Andante/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    SetValueNo help----
    InsertTiedNoteInserts a duplicate of the current note, tiedTied note--
    NotationMagick-InsertPoolShuffledInserts all notes, shuffled, from a user-specified pool of notes in Lilypond syntaxInsert shuffled pool/ObjectMenu/NotationMagick
    DirectiveGet-movementcontrol-postfix"Gets the value of the postfix field (a string) of the movementcontrol directive with the passed tag."----
    DirectiveGet-note-y"Gets the value of the y field (a string) of the note directive with the passed tag."----
    InsertFmajNo Tooltip yetInsert F Major--
    OpenRepeatMarks the point where a repeat will start. A correspond close, or first and second time bars are needed.Open Repeat Section/ObjectMenu/MeasureMenu/Repeats
    RemoveDotNo Tooltip yetRemove Dot--
    DebugObject"Prints out information about the object at the cursor"----
    DirectivePut-header-y"Writes the y field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    JoinVoicesMerge this staff as a voice on the previous staffJoin Voices--
    SetRelativeFontSizeNo help----
    OpenMyDefaultTemplateOpens the template Default.denemo in the user's custom template folder.Open Default Template/MainMenu/FileMenu
    AddDotNo Tooltip yetAdd Dot--
    DirectivePut-staff-graphic"Writes the graphic field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-timesig-ty"Writes the ty field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleTupletNumberingControl whether tuplet numbers will be printed over tuplets.Tuplet Numbering on/off/ObjectMenu/NotesRests/Tuplets
    DenemoPref_autosaveNo help----
    SplitVoicesSplit off the next voice as a separate staffSplit Voices--
    StemDownAlters a StemNeutral object to stem down.StemDown--
    DirectiveGet-movementcontrol-prefix"Gets the value of the prefix field (a string) of the movementcontrol directive with the passed tag."----
    DirectivePut-note-y"Writes the y field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertCSharpmajNo Tooltip yetInsert C# Major--
    Bb-PentascaleIdentify Scale Notes that are soundedBb Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    DenemoPref_maxhistoryNo help----
    SwapStaffsSwap this staff with the one higher up. Note this actually swaps voices.Swap Staffs--
    InfoDialog"Takes a message as a string. Pops up the message for the user to take note of as a informative message"----
    StemUpAlters a StemNeutral object to stem up.StemUp--
    DirectiveGet-movementcontrol-minpixels"Gets the value of the minpixels field (a string) of the movementcontrol directive with the passed tag."----
    InsertFSharpmajNo Tooltip yetInsert F# Major--
    DirectivePut-header-x"Writes the x field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    AllegroPrint Allegro in bold italics above the chord.Allegro/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    DenemoPref_savepartsNo help----
    FlattenNo Tooltip yetFlatten--
    DirectivePut-timesig-tx"Writes the tx field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NotationMagick-InsertNoteFromPoolInserts one note from a user-specified pool of notes in Lilypond syntaxNote from pool/ObjectMenu/NotationMagick/SingleRandomNote
    InsertBmajNo Tooltip yetInsert Bmaj--
    DenemoPref_createclonesNo help----
    MultiMeasureRestsCreates a multi-measure rest from the whole measure rests after the cursor. You must create the whole measure rests first.Multi-Measure Rests/ObjectMenu/NotesRests/RestEntry
    SharpenNo Tooltip yetSharpen--
    GetCursorNote"Returns the note name for the line or space where the cursor is"----
    DirectiveGet-movementcontrol-display"Gets the value of the display field (a string) of the movementcontrol directive with the passed tag."----
    DirectiveGet-chord-x"Gets the value of the x field (a string) of the chord directive with the passed tag."----
    DenemoPref_lilyentrystyleNo help----
    CommandManagementView help, change and save keyboard shortcutsManage Command Set--
    StagedDeleteDeletes the object at the cursor. For Chords it deletes the chord stage by stage.Delete/MainMenu/EditMenu
    RemoveNoteFromChordRemove a note from the current chordRemove note--
    DirectiveGet-header-postfix"Gets the value of the postfix field (a string) of the header directive with the passed tag."----
    ScoreIndentIndent the first system of every movement by the given amount.Indent/ObjectMenu/Score/Print Layout
    DirectivePut-standalone-graphic"Writes the graphic field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DenemoPref_immediateplaybackNo help----
    SaveAccelsSave the current commands and keyboard shortcuts as the defaultSave Command Set--
    ChangeOffsetNo help----
    AddNoteToChordAdd a note to the current chord The cursor position determines which note to addAdd note--
    DirectivePut-timesig-y"Writes the y field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertEmajNo Tooltip yetInsert Emaj--
    ANS-7::IntervalCalcDownNo help----
    DenemoPref_modalNo help----
    PreferencesSet and save your preferences for how Denemo operates on startup. Edit .denemo/denemorc for missing onesChange Preferences--
    WarningDialog"Takes a message as a string. Pops up the message for the user to take note of as a warning"----
    InsertSeptupletNo Tooltip yetInsert Septuplet--
    F-PentascaleIdentify Scale Notes that are soundedF Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    DirectiveGet-layout-minpixels"Gets the value of the minpixels field (a string) of the layout directive with the passed tag."----
    DirectivePut-chord-x"Writes the x field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertAmajNo Tooltip yetInsert Amaj--
    D.C.AlFinePuts a da capo in the score. Position is adjusted via the numbers in the script.D. C. al fine/ObjectMenu/ChordMenu/Markings/TextMarks
    DenemoPref_persistenceNo help----
    DirectivePut-movementcontrol-graphic"Writes the graphic field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertSextupletNo Tooltip yetInsert Sextuplet--
    latex-escapeNo help----
    NotationMagick-TwelveToneRowGenerates twelve notes of the prevailing duration, each is unique so the whole chromatic range gets inserted in a random manner. Twelve Tone Row/ObjectMenu/NotationMagick
    InsertDmajNo Tooltip yetInsert Dmaj--
    DirectiveGet-header-prefix"Gets the value of the prefix field (a string) of the header directive with the passed tag."----
    DenemoPref_cursor_highlightNo help----
    InsertWholeMeasureRestInserts/Appends a rest measure; if the current measure is empty, it simply places the whole measure rest in it. Do not invoke in a populated measure preceding an empty measure.Insert Whole Measure Rest/ObjectMenu/NotesRests/RestEntry
    ANS-7::IntervalCalcUpNo help----
    InsertQuintupletNo Tooltip yetInsert Quintuplet--
    DirectivePut-timesig-x"Writes the x field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ShiftCursor"Shifts the cursor up or down by the integer amount passed in"----
    DenemoPref_applytoselectionNo help----
    SaveSelectionSave the selected music. Not sure if this is workingSave Selection--
    ReduceSlurShorten a slur that ends at the cursor.Shorten Slur from End/ObjectMenu/NotesRests/Slurs
    InsertQuadtupletNo Tooltip yetInsert Quadtuplet--
    DirectiveGet-note-x"Gets the value of the x field (a string) of the note directive with the passed tag."----
    DirectivePut-chord-graphic"Writes the graphic field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DenemoPref_startmidiinNo help----
    ScorePropertiesChange some of the properties of the current score. This will start up a dialog windowScore Properties--
    DirectivePut-movementcontrol-postfix"Writes the postfix field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    IndentAlter the indent of the opening system for the current movement.Indent/ObjectMenu/MovementMenu/Print Layout
    EndTupletNo Tooltip yetEnd Tuplet--
    scheme-escapeNo help----
    InsertGmajNo Tooltip yetInsert Gmaj--
    DirectiveGet-header-display"Gets the value of the display field (a string) of the header directive with the passed tag."----
    DenemoPref_modeNo help----
    PasteClipboardPaste LilyPond notes from the text clipboardPaste LilyPond notes--
    StartTripletNo Tooltip yetStart Triplet--
    C-PentascaleIdentify Scale Notes that are soundedC Pentascale/MainMenu/Educational/Aural Training/Identify-Scale-Note
    DirectiveGet-timesig-postfix"Gets the value of the postfix field (a string) of the timesig directive with the passed tag."----
    DirectiveGet-paper-minpixels"Gets the value of the minpixels field (a string) of the paper directive with the passed tag."----
    InsertCmajNo Tooltip yetInsert Cmaj--
    GetUserInput"Takes three strings, title, prompt and initial value. Shows these to the user and returns the user's string."----
    docport2No help----
    TransposeSelectionOpens a dialog to get an interval, then transposes by that interval.Transpose Selection/MainMenu/EditMenu/Transpose
    DenemoPref_strictshortcutsNo help----
    InsertTripletNo Tooltip yetInsert Triplet--
    ShiftRealOctaveDownShifts current notes/selection down one octave while preserving accidental status. This means real transpositionShift Octave Down/MainMenu/EditMenu/Shift
    DirectivePut-note-x"Writes the x field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Set98TimeNo Tooltip yetSet 9/8 Time--
    DenemoPref_resolutionNo help----
    DirectivePut-movementcontrol-prefix"Writes the prefix field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    WholeMeasureRestInserts a whole measure rest at the cursorWhole Measure Rest/ObjectMenu/NotesRests/RestEntry
    InsertDupletNo Tooltip yetInsert Duplet--
    IsSlurEnd"Returns #t if there is a chord with slur ending at cursor, else #f"----
    DirectivePut-header-graphic"Writes the graphic field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PastePaste the selected musicPaste--
    ExtendSlurExtends the slur finishing at the cursor.Extend Slur/ObjectMenu/NotesRests/Slurs
    InsertSixtyfourthRestInsert sixty-fourth note rest<span size="10000" face="Denemo">x</span>--
    html-escapeNo help----
    DenemoPref_display_refreshNo help----
    docport1No help----
    DirectivePut-note-graphic"Writes the graphic field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-timesig-prefix"Gets the value of the prefix field (a string) of the timesig directive with the passed tag."----
    CutCutCut--
    ScoreCopyrightCopyright notice, centered at the bottom of the first page. To insert the copyright symbol, see Lilypond Text encoding.Copyright/ObjectMenu/Score/Titles Etc
    InsertThirtysecondRestInsert thirty-second note rest<span size="10000" face="Denemo">w</span>--
    DenemoPref_animation_stepsNo help----
    DirectivePut-score-ty"Writes the ty field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Set128TimeNo Tooltip yetSet 12/8 Time--
    CopyCopyCopy--
    DirectivePut-movementcontrol-display"Writes the display field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertSixteenthRestInsert sixteenth-note rest<span size="10000" face="Denemo">v</span>--
    ChangeHold2PedalLonger release time but notes will fade out eventually.69 Hold Pedal #2 On/Off/ObjectMenu/Directives/MIDI
    DenemoPref_overlaysNo help----
    DirectiveGet-header-minpixels"Gets the value of the minpixels field (a string) of the header directive with the passed tag."----
    Set68TimeNo Tooltip yetSet 6/8 Time--
    DirectivePut-header-postfix"Writes the postfix field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    HTTP"Takes 4 parameters and makes http transaction with www.denemo.org"----
    TransposeNoteTransposes the note at the cursor by the amount set by other commands.Transpose Note/MainMenu/EditMenu/Transpose
    InsertEighthRestInsert eighth-note rest<span size="10000" face="Denemo">u</span>--
    DenemoPref_continuousNo help----
    ShiftRealOctaveUpShifts current notes/selection up one octave while preserving accidental status. This means real transpositionShift Octave Up/MainMenu/EditMenu/Shift
    Set38TimeNo Tooltip yetSet 3/8 Time--
    XmlDocumentVariableNo help----
    DirectiveGet-timesig-display"Gets the value of the display field (a string) of the timesig directive with the passed tag."----
    ExtraOffsetNo help----
    AugmentAugments the current Note/Chord/Rest. Quarter Note becomes Half Note.Augment/ObjectMenu/NotesRests
    InsertQuarterRestInsert quarter-note rest<span size="10000" face="Denemo">t</span>--
    IsSlurStart"Returns #t if there is a chord with slur starting at cursor, else #f"----
    DenemoPref_jacktransportNo help----
    DirectivePut-score-gy"Writes the gy field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    RedoRedoRedo--
    DirectiveTextEdit-layout"Takes a tag. Lets the user edit (by running the editscript named by the tag) a layout directive of the passed in tag. Returns #f if none"----
    SlurTwoCreates a slur from current note to next note.Slur with Next Note/ObjectMenu/NotesRests/Slurs
    InsertHalfRestInsert half-note rest<span size="10000" face="Denemo">s</span>--
    DenemoPref_jacktransport_start_stoppedNo help----
    DirectivePut-header-prefix"Writes the prefix field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-score-override"Writes the override field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    UndoUndoUndo--
    MovementPiecePrints the name given above and to the left at the start of the movement.Piece/ObjectMenu/MovementMenu/Titles Etc
    InsertWholeRestInsert whole-note rest<span size="10000" face="Denemo">r</span>--
    DenemoPref_rtcsNo help----
    Set64TimeNo Tooltip yetSet 6/4 Time--
    DirectivePut-timesig-graphic"Writes the graphic field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    QuitQuit the Denemo programQuit--
    ChangeLegatoPedalSkips the attack portion of the VCA's envelope. For phrasing like wind or brass or guitar hammer-on.68 Legato Pedal On/Off/ObjectMenu/Directives/MIDI
    DenemoPref_toolbarNo help----
    DirectiveGet-scoreheader-minpixels"Gets the value of the minpixels field (a string) of the scoreheader directive with the passed tag."----
    DirectivePut-score-y"Writes the y field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Set24TimeNo Tooltip yetSet 2/4 Time--
    DetachQuitCallback"Removes a callback from the current musical score"----
    ToggleBlankModeNo Tooltip yetToggle Blank Mode--
    SetTransposeIntervalFromSelectionSets the interval for a transpose operation from the first two notes of the current selection.Set Transpose Interval/MainMenu/EditMenu/Transpose
    DirectiveDelete-layout"Deletes a layout directive of the passed in tag. Returns #f if not deleted"----
    lyimport::load-fileNo help----
    DenemoPref_notation_paletteNo help----
    SelectionToEmptyMeasureCreates a selection to the next empty measure in the current staffSelection to next empty measure/MainMenu/EditMenu/Select
    Set34TimeNo Tooltip yetSet 3/4 Time--
    DirectivePut-header-display"Writes the display field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleRestModeNo Tooltip yetToggle Rest Mode--
    DiminishDiminishs the note/chord/rest. Quarter Note becomes Eight Note. Diminish/ObjectMenu/NotesRests
    string-needs-escape?No help----
    SetNonprinting"Sets the Non Printing attribute of a chord (or note/rest) at the cursor. For a rest this makes a non printing rest, for a note it makes it ia pure rhythm (which will not print, but can be assigned pitch, e.g. via a MIDI keyboard. Pass in #f to unset the attribute"----
    DenemoPref_midi_in_controlsNo help----
    InsertBlankTwoHundredFiftySixthNoteNo Tooltip yetInsert Two Hundred and Fifty Sixth Note Skip--
    DirectivePut-timesig-postfix"Writes the postfix field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CloseClose the current score. Other windows will stay openClose Score--
    GoToMeasureEndMove the Cursor to the end of the measureGo To Measure End--
    string-escapeNo help----
    DenemoPref_playback_controlsNo help----
    DirectiveGet-score-ty"Gets the value of the ty field (a string) of the score directive with the passed tag."----
    InsertBlankOneHundredTwentyEighthNoteNo Tooltip yetInsert One Hundred and Twenty Eighth Note Skip--
    DirectivePut-voice-override"Writes the override field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PrintPartDisplays the final finished score for the current part (that is current staffPrint Part--
    DirectiveGet-layout-height"Gets the value of the height field (a string) of the layout directive with the passed tag."----
    merge-shuffle-list!No help----
    MovementSubtitlePrints the given name below the title of the current movement.Subtitle/ObjectMenu/MovementMenu/Titles Etc
    XmlDocumentCommandNo help----
    char-escape-specNo help----
    DenemoPref_articulation_paletteNo help----
    Set44TimeNo Tooltip yetSet 4/4 Time--
    DirectiveTextEdit-scoreheader"Takes a tag. Lets the user edit (by running the editscript named by the tag) a scoreheader directive of the passed in tag. Returns #f if none"----
    InsertBlankSixtyfourthNoteNo Tooltip yetInsert Sixty Forth Note Skip--
    PrintDisplays the final finished score in a pdf viewer. From this you can print the file using the print command of the viewerPrint--
    ANS-7::IntervalGetStepsNo help----
    ChangeSoftPedalLeft Piano Pedal. Lowers the volume of any notes played.67 Soft Pedal On/Off (Left Piano Pedal)/ObjectMenu/Directives/MIDI
    DenemoPref_console_paneNo help----
    DirectiveGet-keysig-minpixels"Gets the value of the minpixels field (a string) of the keysig directive with the passed tag."----
    Set42TimeNo Tooltip yetSet 4/2 Time--
    AttachQuitCallback"Takes a script as a string, which will be stored. All the callbacks are called when the musical score is closed"----
    InsertBlankThirtysecondNoteNo Tooltip yetInsert Thirty Second Note Skip--
    DirectivePut-timesig-prefix"Writes the prefix field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    TransposeOctaveUpInstructs the LilyPond Engraver to transpose this score one octave up.(Print) Transpose Octave Up/ObjectMenu/Score
    string-escaperNo help----
    DenemoPref_lyrics_paneNo help----
    InsertTwoGraceNotesBeamedInserts two grace notes at the cursor beaming them together. Follow with a duration key.Insert Two/ObjectMenu/NotesRests/GraceNotes
    DirectiveGet-score-gy"Gets the value of the gy field (a string) of the score directive with the passed tag."----
    Set32TimeNo Tooltip yetSet 3/2 Time--
    InsertBlankSixteenthNoteNo Tooltip yetInsert Sixteenth Note Skip--
    DirectiveGet-layout-width"Gets the value of the width field (a string) of the layout directive with the passed tag."----
    SearchBookmarkSearches for a named Bookmark in the current staff.Search Bookmark/MainMenu/NavigationMenu/Bookmarks
    InsertTiedNoteDurationAttaches a tied note: you must give the duration after invoking this function.Attach Tied Note/ObjectMenu/NotesRests/TiedNotes
    GetNonprinting"Returns #t if there is an object at the cursor which has any printing behavior it may have overridden"----
    DenemoPref_visible_directive_buttonsNo help----
    DirectiveDelete-scoreheader"Deletes a scoreheader directive of the passed in tag. Returns #f if not deleted"----
    InsertBlankEighthNoteNo Tooltip yetInsert Eigth Note Skip--
    PrintExcerptPreviewDisplays a musical excerpt in your image viewerPrint Excerpt--
    CreateButtonNo help----
    DenemoNo help----
    DenemoPref_autoupdateNo help----
    flip-coinNo help----
    IntelligentDeleteDeletes a single object at the cursor, an empty measure or the complete selection.Delete/MainMenu/EditMenu
    InsertBlankQuarterNoteNo Tooltip yetInsert Quarter Note Skip--
    DirectivePut-staff-override"Writes the override field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-timesig-display"Writes the display field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PrintSelectionDisplays selected music from score in your pdf viewerPrint Selection--
    MovementTitlePrints the name given as a title above the current movement.Title/ObjectMenu/MovementMenu/Titles Etc
    DirectiveGetTag-timesigNo help----
    DenemoPref_rhythm_paletteNo help----
    DirectiveGet-score-y"Gets the value of the y field (a string) of the score directive with the passed tag."----
    InsertBlankHalfNoteNo Tooltip yetInsert Half Note Skip--
    PrintPreviewDisplays the final finished score in your pdf viewerPrint Preview--
    DirectiveGet-layout-override"Gets the value of the override field (a string) of the layout directive with the passed tag."----
    Set22TimeNo Tooltip yetSet 2/2 Time--
    ChangeSustenutoPedalMiddle Grand Piano Pedal. All Notes currently active (without a note off) will not have a note-off until Sustenuto Off.66 Sustenuto Pedal On/Off (Middle Grand Piano Pedal)/ObjectMenu/Directives/MIDI
    DenemoPref_object_paletteNo help----
    DirectiveGet-timesig-minpixels"Gets the value of the minpixels field (a string) of the timesig directive with the passed tag."----
    DirectiveGet-scoreheader-height"Gets the value of the height field (a string) of the scoreheader directive with the passed tag."----
    SetPrefs"Takes xml representation of a preference and adds it to the Denemo preferences"----
    InsertBlankWholeNoteNo Tooltip yetInsert Whole Note Skip--
    CloseLilyBlockCloses a LilyPond Block (there must be a matching open, {, earlier)(Print) Close } a LilyPond Block/ObjectMenu/Directives/Print Transpositions
    Insert98TimeNo Tooltip yetInsert 9/8 Time--
    AutoAccidentalsPrints accidentals according to a chosen style. Affects following notes only.(Print) Accidental Printing/ObjectMenu/Directives
    TwoHundredFiftySixthNoteInsert 256th-note256th--
    DirectiveTextEdit-clef"Takes a tag. Lets the user edit (by running the editscript named by the tag) a clef directive of the passed in tag. Returns #f if none"----
    BookmarkNonPrintingAdds a custom Denemo bookmark without Lilypond output.Add non-printing Bookmark/MainMenu/NavigationMenu/Bookmarks
    FiguredBassFilterOnStart filtering MIDI events, First note is bass, hold this down while entering notes for figures. Pedal changes harmony on same bass.Figured Bass Filter On/MainMenu/InputMenu/MIDI
    Insert128TimeNo Tooltip yetInsert 12/8 Time--
    HighlightCursor"Turn highlighting of cursor off/on"----
    DirectivePut-score-tx"Writes the tx field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    OneHundredTwentyEighthNoteInsert 128th-note128th--
    ConfigureScoreStart up a wizard to create a new score. This allows you to set various properties of the scoreScore Wizard--
    DirectiveGet-layout-gy"Gets the value of the gy field (a string) of the layout directive with the passed tag."----
    ToggleCursorHighlightShows up the position of the cursor more clearly (off/on)Cursor Highlighting Off/On/MainMenu/NavigationMenu/Cursor
    DirectiveGet-scoreheader-width"Gets the value of the width field (a string) of the scoreheader directive with the passed tag."----
    SixtyfourthNoteInsert sixty-fourth-note<span size="10000" face="Denemo">6</span>--
    DirectivePut-note-override"Writes the override field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ExportPDFExport the score as a PDF document fileExport PDF--
    ScoreTagline Centered at the bottom of the last page.Tagline/ObjectMenu/Score/Titles Etc
    ThirtysecondNoteInsert thirty-second-note<span size="10000" face="Denemo">5</span>--
    DirectiveDelete-clef"Deletes a clef directive of the passed in tag. Returns #f if not deleted"----
    SavePartsSave Parts: each staff becomes a file in lilypond formatSave Parts--
    Insert68TimeNo Tooltip yetInsert 6/8 Time--
    Directive-timesig?No help----
    ChangePortamentoSlides between 2 notes. Can be adjusted with 5 - Portamento Time65 Portamento On/Off/ObjectMenu/Directives/MIDI
    DirectiveGet-clef-minpixels"Gets the value of the minpixels field (a string) of the clef directive with the passed tag."----
    DirectivePut-score-gx"Writes the gx field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Chordize"Enforces the treatment of the note at the cursor as a chord in LilyPond"----
    SixteenthNoteInsert sixteenth-note<span size="10000" face="Denemo">4</span>--
    OpenOctaveUpOpens a block to be transposed up one octave This must be followed by a CloseBlock "}" to end the transposed section.(Print) Open { Octave Up/ObjectMenu/Directives/Print Transpositions
    DirectiveGet-layout-gx"Gets the value of the gx field (a string) of the layout directive with the passed tag."----
    Insert38TimeNo Tooltip yetInsert 3/8 Time--
    DirectiveGetTag-keysigNo help----
    InputFilterNames"Takes a string putting it on the status bar listing active filters"----
    DenemoBarTypesets the Denemo barlines, regardless of the timing.Typeset Barlines Literally/ObjectMenu/Score
    DirectiveGet-scoreheader-override"Gets the value of the override field (a string) of the scoreheader directive with the passed tag."----
    EighthNoteInsert eighth-note<span size="10000" face="Denemo">3</span>--
    MidiFilterOffTurn off any MIDI filter script currently active.MIDI Filter Off/MainMenu/InputMenu/MIDI
    Insert64TimeNo Tooltip yetInsert 6/4 Time--
    AdjustXes"Adjusts the horizontal (x-) positioning of notes etc after paste"----
    BookmarkNamedAdds a Denemo bookmark combined with a custom Lilypond Rehearsal MarkAdd named Bookmark/MainMenu/NavigationMenu/Bookmarks
    QuarterNoteInsert quarter-note<span size="10000" face="Denemo">2</span>--
    DirectiveGet-clef-height"Gets the value of the height field (a string) of the clef directive with the passed tag."----
    NewMovementCreate a new movement, usign any default templateNew Movement--
    DirectivePut-score-x"Writes the x field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GraceNoteSwitcherTransforms the current selected notes into grace notes.Grace Note (On/Off)/ObjectMenu/NotesRests/GraceNotes
    HalfNoteInsert half-note<span size="10000" face="Denemo">1</span>--
    DirectivePut-chord-override"Writes the override field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertMovementAfterInsert a new movement after the current oneInsert Movement After--
    DirectiveGet-layout-ty"Gets the value of the ty field (a string) of the layout directive with the passed tag."----
    ScorePoetName of the poet, flush-left below the subsubtitle.Poet/ObjectMenu/Score/Titles Etc
    CheckLilyVersion"Returns a boolean if the installed version of LilyPond is greater than or equal to the passed in version string"----
    DenemoPref_fluidsynth_reverbNo help----
    WholeNoteInsert whole-note<span size="10000" face="Denemo">0</span>--
    InsertMovementBeforeInsert a new movement before the current oneInsert Movement Before--
    Insert24TimeNo Tooltip yetInsert 2/4 Time--
    DirectiveGet-scoreheader-gy"Gets the value of the gy field (a string) of the scoreheader directive with the passed tag."----
    ChangeHoldPedalHold Pedal On/Off (Right Piano Pedal). Deactivates Note-Off until set to "Off"64 Hold Pedal (Right Piano Pedal)/ObjectMenu/Directives/MIDI
    DenemoPref_fluidsynth_chorusNo help----
    PrevStandaloneDirective"Moves the cursor the previous object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move"----
    OctaveDownOctave DownOctave Down--
    DirectiveGet-clef-width"Gets the value of the width field (a string) of the clef directive with the passed tag."----
    AngryDeleteMIDI notes struck loudly delete the previous note before taking effect.Angry Delete/MainMenu/InputMenu/MIDI
    DirectiveGet-score-minpixels"Gets the value of the minpixels field (a string) of the score directive with the passed tag."----
    Insert34TimeNo Tooltip yetInsert 3/4 Time--
    ANS-7::Base7NoteTableRNo help----
    DenemoPref_fluidsynth_sample_rateNo help----
    JumpDownOctaveMoves cursor down an octave.Octave Down/MainMenu/NavigationMenu/Cursor
    DirectiveGet-score-tx"Gets the value of the tx field (a string) of the score directive with the passed tag."----
    OctaveUpOctave UpOctave Up--
    DirectiveGet-layout-tx"Gets the value of the tx field (a string) of the layout directive with the passed tag."----
    CheckPitchesCompares note from MIDI with current note, if equal in pitch, advances to next note, else beeps.Check Note Pitches/MainMenu/InputMenu/MIDI
    Insert44TimeNo Tooltip yetInsert 4/4 Time--
    Directive-keysig?No help----
    GetLilyVersion"Returns the installed LilyPond version"----
    ClearClipboard"Clears the Denemo Music Clipboard"----
    DenemoPref_fluidsynth_period_sizeNo help----
    RehearsalMarkAdds a Denemo bookmark combined with a default Rehearsal MarkAdd Rehearsal/Bookmark/ObjectMenu/Directives
    GAppend/Edit GG--
    NewWindowCreate working area (tab with an empty score in it)New Tab--
    DirectiveGet-scoreheader-gx"Gets the value of the gx field (a string) of the scoreheader directive with the passed tag."----
    DirectiveGetTag-clefNo help----
    DenemoPref_zoomNo help----
    CloseReopenRepeatCloses and open repeat block and opens a new one.Close and Reopen Repeat/ObjectMenu/MeasureMenu/Repeats
    FAppend/Edit FF--
    DirectivePut-standalone-override"Writes the override field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-clef-override"Gets the value of the override field (a string) of the clef directive with the passed tag."----
    SaveTemplateSave the score as a template for re-use as a starting point for new scoresSave Template--
    ScoreOpusName of the opus, flush-right below the arranger.Opus/ObjectMenu/Score/Titles Etc
    DenemoPref_system_heightNo help----
    DirectiveGet-score-gx"Gets the value of the gx field (a string) of the score directive with the passed tag."----
    EAppend/Edit EE--
    OpenMyTemplateStart a new score from one of your own template filesOpen custom template--
    DirectiveGet-layout-y"Gets the value of the y field (a string) of the layout directive with the passed tag."----
    Insert42TimeNo Tooltip yetInsert 4/2 Time--
    GetLabel"Takes a command name and returns the label for the menu item that executes the command or #f if none"----
    ChangeExpressionAka "Sub Volume" or "Percent Volume". The "real" volume. Use Volume as initial value for each staff/channel and change further cresc/desc with expression. 11 Expression/ObjectMenu/Directives/MIDI
    NextStandaloneDirective"Moves the cursor the next object that is a Denemo Directive in the current staff. Returns #f if the cursor did not move"----
    DAppend/Edit DD--
    DirectiveGet-voice-minpixels"Gets the value of the minpixels field (a string) of the voice directive with the passed tag."----
    Insert32TimeNo Tooltip yetInsert 3/2 Time--
    DirectiveGet-scoreheader-ty"Gets the value of the ty field (a string) of the scoreheader directive with the passed tag."----
    JumpUpOctaveMoves cursor up one octave.Octave Up/MainMenu/NavigationMenu/Cursor
    CAppend/Edit CC--
    DirectiveGet-clef-gy"Gets the value of the gy field (a string) of the clef directive with the passed tag."----
    MidiAdvanceOnEditAdvances the cursor on MIDI note entry. Use in Edit mode.MIDI Advance on Edit/MainMenu/InputMenu/MIDI
    Insert22TimeNo Tooltip yetInsert 2/2 Time--
    DENEMO_OVERRIDE_LILYPONDNo help----
    PrevBookmarkSeach backward for bookmarks in the current staff.Prev Bookmark/MainMenu/NavigationMenu/Bookmarks
    BAppend/Edit BB--
    OpenExampleStart a new score from a built-in exampleOpen Example--
    DirectiveGet-layout-x"Gets the value of the x field (a string) of the layout directive with the passed tag."----
    DirectiveGet-score-x"Gets the value of the x field (a string) of the score directive with the passed tag."----
    AddKeybinding"Takes a command name or command id and binding name and sets that binding on that command returns the command id that previously had the binding or #f if none"----
    DENEMO_OVERRIDE_GRAPHICNo help----
    ShiftDownShifts the selected Notes and Chords down a diatonic stepShift Down/MainMenu/EditMenu/Shift
    AAppend/Edit AA--
    DirectiveGet-score-override"Gets the value of the override field (a string) of the score directive with the passed tag."----
    OpenTemplateStart a new score from a built-in template fileOpen Template--
    DirectiveGet-scoreheader-tx"Gets the value of the tx field (a string) of the scoreheader directive with the passed tag."----
    ScoreMeterMeter string, flush-left below the poet.Meter/ObjectMenu/Score/Titles Etc
    Directive-clef?No help----
    DENEMO_OVERRIDE_EDITORNo help----
    MoveToMeasureRightMoves the cursor to the first object in the previous measureleaving selection, if any, unchangedMove to Measure Right--
    DirectiveGet-clef-gx"Gets the value of the gx field (a string) of the clef directive with the passed tag."----
    SaveAsSave the score under a new nameSave As--
    SetInitialSopranoClefNo Tooltip yetSet Soprano Clef--
    DirectiveGetTag-voiceNo help----
    ChangePanWhere in the stereo field the channel sound will be placed.10 Pan/ObjectMenu/Directives/MIDI
    DENEMO_OVERRIDE_VOLUMENo help----
    InsertSnippet"Inserts music Snippet from passed id Returns #f if not possible"----
    MoveToMeasureLeftMoves the cursor to the first object in the next measure leaving selection, if any, unchangedMove to Measure Left--
    DirectivePut-layout-override"Writes the override field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-staff-minpixels"Gets the value of the minpixels field (a string) of the staff directive with the passed tag."----
    DirectiveGet-score-height"Gets the value of the height field (a string) of the score directive with the passed tag."----
    SetInitialTenorClefNo Tooltip yetSet Tenor Clef--
    GetId"Takes a command name and returns and id for it or #f if no command of that name exists"----
    DENEMO_OVERRIDE_DURATIONNo help----
    TextAbovePrints your text above the music at this pointArbitrary Text/ObjectMenu/NotesRests/Markings
    MeasureRightMoves the cursor to the first object in the previous measure, extending selection if anyMeasure Right--
    SetInitialAltoClefNo Tooltip yetSet Alto Clef--
    DirectiveGet-scoreheader-y"Gets the value of the y field (a string) of the scoreheader directive with the passed tag."----
    DENEMO_OVERRIDE_REPEATNo help----
    NextBookmarkSeach forward for bookmarks in the current staff.Next Bookmark/MainMenu/NavigationMenu/Bookmarks
    MeasureLeftMoves the cursor to the first object in the next measure, extending selection if anyMeasure Left--
    DirectiveGet-clef-ty"Gets the value of the ty field (a string) of the clef directive with the passed tag."----
    SaveSave the scoreSave--
    ShiftUpShifts the selected Notes and Chords up a diatonic stepShift Up/MainMenu/EditMenu/Shift
    MoveToStaffDownMoves the cursor to the staff below without altering selectionMove to Staff Down--
    DirectiveGet-voice-override"Gets the value of the override field (a string) of the voice directive with the passed tag."----
    OpenNewWindowOpen a file containing a music score for editing in a separate working area (tabOpen In New--
    DirectivePut-layout-gy"Writes the gy field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-score-width"Gets the value of the width field (a string) of the score directive with the passed tag."----
    ScoreInstrumentName of the instrument, centered below the subsubtitle. Also centered at the top of pages (other than the first page).Instrument/ObjectMenu/Score/Titles Etc
    GetMenuPath"Takes a command name and returns the menu path to that command or #f if none"----
    MoveToStaffUpMoves the cursor to the staff above without altering selectionMove to Staff Up--
    MovementPropsChange properties of this movementChange Properties--
    SetInitialg8clefNo Tooltip yetSet G8 Clef--
    DirectiveGet-scoreheader-x"Gets the value of the x field (a string) of the scoreheader directive with the passed tag."----
    ChangeBalanceBalance. Typically used for a stereo signal tweak without changing the pan itself. Like a CD player. 8 Balance/ObjectMenu/Directives/MIDI
    SelectSnippet"Selects music Snippet from passed id Returns #f if not possible"----
    StaffDownMoves the cursor to the staff below, extending selection if anyStaff Down--
    DirectiveGet-clef-tx"Gets the value of the tx field (a string) of the clef directive with the passed tag."----
    DirectiveGet-note-minpixels"Gets the value of the minpixels field (a string) of the note directive with the passed tag."----
    SetInitialBassClefNo Tooltip yetSet Bass Clef--
    Directive-voice?No help----
    StaffUpMoves the cursor to the staff above, extending selection if anyStaff Up--
    FingeringsDoublestrokePlace a fingering instruction on a noteFingerings/ObjectMenu/NotesRests
    DirectivePut-layout-gx"Writes the gx field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-score-postfix"Gets the value of the postfix field (a string) of the score directive with the passed tag."----
    SetInitialTrebleClefNo Tooltip yetSet Treble Clef--
    DirectiveGetTag-staffNo help----
    DeleteSelection"Deletes all objects in the selection Returns #f if no selection else #t."----
    TransposeStaffPrintPrints this staff (only) transposed. This is in addtion to any score-wide transposition(Print) Transpose/ObjectMenu/StaffMenu
    ToggleReduceToDrawingAreaHides/Shows menus, panes etc. The ones shown are those checked in the view menu.Hide/Show Menus--
    DirectivePut-scoreheader-override"Writes the override field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    AddMovementsAdd movements from a Denemo fileAdd Movement--
    SpaceNumberIdentify the space number in which the note is display onIdentify space number/MainMenu/Educational/Note-Reading
    PopPushPositionPops a position from the stack of cursor positions, pushes the current position, then moves the cursor to the popped positionPop and Push Position--
    DirectiveGet-staff-override"Gets the value of the override field (a string) of the staff directive with the passed tag."----
    DirectiveGet-clef-y"Gets the value of the y field (a string) of the clef directive with the passed tag."----
    ScoreDedicationThe dedicatee of the music, centered at the top of the first page.Dedication/ObjectMenu/Score/Titles Etc
    AddStaffsAdd staffs from a Denemo fileAdd Staffs--
    PopPositionPops a position from the stack of cursor positions, moving the cursor therePop Position--
    DirectivePut-layout-ty"Writes the ty field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-score-prefix"Gets the value of the prefix field (a string) of the score directive with the passed tag."----
    InsertSopranoClefNo Tooltip yetNew Soprano Clef--
    PopClipboard"Pops the Denemo clipboard (cut/copy buffer) from a stack created by d-PushClipboard. Returs #f if nothing on stack, else #t."----
    ChangeModwheelChange the Modwheel value of a channel/staff1 Modwheel/ObjectMenu/Directives/MIDI
    OpenOpen a file containing a music score for editingOpen--
    CreateSnippetFromObject"Creates a music Snippet comprising the object at the cursor Returns #f if not possible, otherwise an identifier for that snippet"----
    PushPositionPushes the current cursor position onto a stackPush Position--
    DirectiveGet-chord-minpixels"Gets the value of the minpixels field (a string) of the chord directive with the passed tag."----
    InsertTenorClefNo Tooltip yetNew Tenor Clef--
    ANS-7::PillarOfFifthNo help----
    DirectivePut-scoreheader-gy"Writes the gy field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DenemoPasteNo help----
    GoToSelectionStartMoves the cursor to the first object in the selection without altering the selection. returns #f if no selectionTo Selection Start--
    DirectiveGet-clef-x"Gets the value of the x field (a string) of the clef directive with the passed tag."----
    LoadDefaultComposerNumberkeysWrapper/Dummy for KeypressesReset Keys in Composer Mode/MainMenu/MoreMenu
    InsertAltoClefNo Tooltip yetNew Alto Clef--
    ChordCommentAttach a textual comment to the chord at the cursorComment/ObjectMenu/NotesRests
    SwapPointAndMarkSwaps the active end of the selectionSwap Ends of Selection--
    DirectivePut-layout-tx"Writes the tx field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-score-display"Gets the value of the display field (a string) of the score directive with the passed tag."----
    ANS-7::InsertMemberRandomlyNo help----
    PushClipboard"Pushes the Denemo clipboard (cut/copy buffer) onto a stack; Use d-PopClipboard to retrieve it."----
    NewStart a new musical scoreNew File--
    LineNumberIdentify the line number in which the note is displayedIdentify line number/MainMenu/Educational/Note-Reading
    GoToMarkMoves the cursor to the Mark without altering the selectionTo Mark--
    Directive-staff?No help----
    DirectiveGet-note-override"Gets the value of the override field (a string) of the note directive with the passed tag."----
    merge-shuffle-listNo help----
    DirectivePut-scoreheader-gx"Writes the gx field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ScoreComposerName of the composer, flush-right below the subsubtitle.Composer/ObjectMenu/Score/Titles Etc
    FlattenEnharmonicSetShifts the set of accidentals one step flatterShift Accidentals Flatwise--
    MoveCursorRightMoves the cursor one object right, without altering the selectionMove Cursor Right--
    DirectiveGetTag-layoutNo help----
    DirectivePut-clef-override"Writes the override field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Insertg8clefNo Tooltip yetNew G8 Clef--
    SharpenEnharmonicSetShifts the set of accidentals one step sharperShift Accidentals Sharpwise--
    PrevNote"Moves the cursor the previous object of type CHORD which is not a rest in the current staff. Returns #f if the cursor did not move"----
    CursorRightMoves the cursor one object right, altering the selection if anyCursor Right--
    ChangeGenericGeneric 0xB Control Change - User can give the midi bytes, too. Generic Control Change/ObjectMenu/Directives/MIDI
    DirectivePut-layout-y"Writes the y field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-standalone-minpixels"Gets the value of the minpixels field (a string) of the standalone directive with the passed tag."----
    DirectivePut-score-postfix"Writes the postfix field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertBassClefNo Tooltip yetNew Bass Clef--
    AdjustPlaybackEnd"Adjust end time for playback by passed number of seconds. Returns #f for bad parameter "----
    CursorUpMoves the cursor one scale step upCursor Up--
    OpZeroWrapper/Dummy for KeypressesOpZero/MainMenu/MoreMenu
    InsertTrebleClefNo Tooltip yetNew Treble Clef--
    ANS-7::InsertListRandomlyNo help----
    DirectivePut-scoreheader-ty"Writes the ty field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    StaffCommentSaves textual comments for this staffComment/ObjectMenu/StaffMenu
    CursorDownMoves the cursor one scale step downCursor Down--
    DirectivePut-clef-gy"Writes the gy field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ExecuteSchemeExecute the scheme code from the scripting windowExecute Scheme--
    SetMovementTempoSets the (initial) tempo in quarter notes per minute.MIDI Tempo/ObjectMenu/MovementMenu
    MoveCursorLeftMoves the cursor one object left, without altering the selectionMove Cursor Left--
    DirectiveTextEdit-standaloneNo help----
    DirectivePut-score-prefix"Writes the prefix field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ScoreArrangerName of the arranger, flush-right below the composer.Arranger/ObjectMenu/Score/Titles Etc
    AdjustPlaybackStart"Adjust start time for playback by passed number of seconds. Returns #f for bad parameter "----
    DirectiveGet-chord-override"Gets the value of the override field (a string) of the chord directive with the passed tag."----
    AppendMeasureAllStaffsAppends a blank measure to every staff in this movementAppend Measure All Staffs--
    DirectivePut-layout-x"Writes the x field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CursorLeftMoves the cursor one object left, altering the selection if anyCursor Left--
    TallerStaffsNo Tooltip yetTaller Staffs--
    DirectivePut-scoreheader-tx"Writes the tx field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NextRhythmMake next snippet the current snippet. Notes entered will follow the rhythmic pattern of this snippetNext Snippet--
    DenemoPrintAllHeadersNo help----
    NextNote"Moves the cursor the next object of type CHORD which is not a rest in the current staff. Returns #f if the cursor did not move"----
    RhythmNo help----
    Directive-layout?No help----
    ChangeVolumeChange the Volume of a channel/staffVolume/ObjectMenu/Directives/MIDI
    DirectivePut-clef-gx"Writes the gx field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ShorterStaffsNo Tooltip yetShorter Staffs--
    BlankNo help----
    DirectiveGetTag-paperNo help----
    OpNineWrapper/Dummy for KeypressesOpNine/MainMenu/MoreMenu
    DirectivePut-score-display"Writes the display field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    WidenMeasuresNo Tooltip yetWiden Measures--
    SetPlaybackInterval"Set start and/or end time for playback to the passed numbers/strings in seconds. Use #t if a value is not to be changed. Returns #f for bad parameters "----
    DirectiveGet-layout-postfix"Gets the value of the postfix field (a string) of the layout directive with the passed tag."----
    MvntCommentStores textual comments for this movementComment/ObjectMenu/MovementMenu
    RestNo help----
    DirectivePut-scoreheader-y"Writes the y field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    InsertRhythmNo Tooltip yetInsert Snippet--
    DenemoSetPlaybackIntervalToSelectionNo help----
    SelectAllStaffsSelects the whole movement / All staffsSelect All Staffs/MainMenu/EditMenu/Select
    NoteNo help----
    DirectivePut-clef-ty"Writes the ty field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveTextEdit-score"Takes a tag. Lets the user edit (by running the editscript named by the tag) a score directive of the passed in tag. Returns #f if none"----
    DirectiveGet-standalone-override"Gets the value of the override field (a string) of the standalone directive with the passed tag."----
    ChangePitchNo Tooltip yetChange Pitch--
    DenemoSetPlaybackEndNo help----
    ScoreTitlePrints the name given as a title centered at the start of the score.Title/ObjectMenu/Score/Titles Etc
    EditModeNo help----
    DirectiveGet-voice-postfix"Gets the value of the postfix field (a string) of the voice directive with the passed tag."----
    ShrinkMeasuresNo Tooltip yetShrink Measure--
    GetMidiOffTime"Return a number, the midi time in seconds for the end of the object at the cursor; return #f if none "----
    ForceCautionNo Tooltip yetForce Cautionary Accidental--
    DirectiveGet-layout-prefix"Gets the value of the prefix field (a string) of the layout directive with the passed tag."----
    DenemoSetPlaybackStartNo help----
    ANS-7::RandomChromaticNo help----
    InsertModeNo help----
    ChangeProgramChange the Program of the current channel/staffProgram/ObjectMenu/Directives/MIDI
    DeleteMeasureAllStaffsDelete the current measure in all staffsDelete Measure All Staffs--
    DirectivePut-scoreheader-x"Writes the x field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PrevChord"Moves the cursor the the previous object of type CHORD in the current staff. Returns #f if the cursor did not move"----
    DenemoVolumeNo help----
    ClassicModeNo help----
    OpEightWrapper/Dummy for KeypressesOpEight/MainMenu/MoreMenu
    DeleteMeasureDelete the current measure in this staff, leaving the staff shortStaff Delete Measure--
    DirectivePut-clef-tx"Writes the tx field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    doublestrokeNo help----
    ScoreCommentStores any textual commentary you may have for this score.Comment/ObjectMenu/Score
    ModelessNo help----
    Directive-paper?No help----
    DirectiveGet-voice-prefix"Gets the value of the prefix field (a string) of the voice directive with the passed tag."----
    DenemoVolume::ValueNo help----
    GetMidiOnTime"Return a number, the midi time in seconds for the start of the object at the cursor; return #f if none "----
    ToggleGraceMakes the note at the cursor a grace note, if it is one, makes it normalGrace Note Off/On--
    DirectiveGet-layout-display"Gets the value of the display field (a string) of the layout directive with the passed tag."----
    SelectStaffSelects the whole staffSelect Staff/MainMenu/EditMenu/Select
    DirectiveGetTag-movementcontrolNo help----
    DirectiveDelete-score"Deletes a score directive of the passed in tag. Returns #f if not deleted"----
    DenemoTempoNo help----
    DirectiveGet-scoreheader-postfix"Gets the value of the postfix field (a string) of the scoreheader directive with the passed tag."----
    DirectivePut-movementcontrol-midibytes"Writes the midibytes field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetGraceNo Tooltip yetSet Grace--
    ReminderAccidentalShows the accidental in the print out inside (). Display shows accidental but plain.Reminder Accidental/ObjectMenu/NotesRests/EditNote
    SetInitialVolumeToZeroMutes playback on this staff by placing a volume=zero directive at the start.Mute/ObjectMenu/StaffMenu/Playback
    AppendMeasureNo Tooltip yetStaff Append Measure--
    DirectivePut-clef-y"Writes the y field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleArpeggioNo Tooltip yetApreggio (Off/On)--
    DenemoTempo::ValueNo help----
    ChangeChannelChange the Channel of a staffChannel/ObjectMenu/Directives/MIDI
    DirectiveGet-voice-display"Gets the value of the display field (a string) of the voice directive with the passed tag."----
    InsertMeasureAfterInsert a blank measure in current staff after the current measureStaff Insert Measure After--
    NextChord"Moves the cursor the the next object of type CHORD in the current staff. Returns #f if the cursor did not move"----
    MoveToCMoves cursor to nearest note CMove to C--
    GetTemperament"Return name of current temperament"----
    DirectivePut-layout-graphic"Writes the graphic field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    OpSevenWrapper/Dummy for KeypressesOpSeven/MainMenu/MoreMenu
    InsertMeasureBeforeInsert a blank measure before the current one (in current staff)Staff Insert Measure Before--
    DirectiveGet-scoreheader-prefix"Gets the value of the prefix field (a string) of the scoreheader directive with the passed tag."----
    ChangeToCChanges note at cursor to nearest note C Rhythm is unchangedChange to C--
    DrumGM2CustomConvert General Midi drum-staffs to user-notation drum-staffs. Please edit the script to enter your own values.Drum GM2 Custom /MainMenu/EditMenu/MIDI
    AddCAdds note C to the chord at cursor Cursor height determines which octaveAdd C--
    DirectivePut-clef-x"Writes the x field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleUpprallNo Tooltip yetUp Prall (Off/On)--
    DenemoLoopNo help----
    ConvertDrum2GmSingleSelectionConverts between the midi-drum notation and a user-drum notation. The user can set his/her drummap in a template in ~/.denemo/templates or choose any other copy he made of the template file to have drummaps for different drummers avaible.Convert GM-Drum to User-Drum/MainMenu/EditMenu
    ANS-7::RandomDiatonicNo help----
    DirectiveTextEdit-voice"Takes a tag. Lets the user edit (by running the editscript named by the tag) a voice directive of the passed in tag. Returns #f if none"----
    DirectivePut-voice-postfix"Writes the postfix field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GetSharpest"Return name of sharpest degree of current temperament"----
    DirectivePut-score-midibytes"Writes the midibytes field (a string) of the score directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleThumbNo Tooltip yetThumb (Off/On)--
    DirectivePut-layout-postfix"Writes the postfix field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CautionaryAccidentalForces the accidental on the note to be printed.Cautionary Accidental/ObjectMenu/NotesRests/EditNote
    Directive-movementcontrol?No help----
    AddMeasureInsert a blank measure after the current one (in all staffs)Insert Measure After--
    DirectiveGet-scoreheader-display"Gets the value of the display field (a string) of the scoreheader directive with the passed tag."----
    SetLongaSets Longa as the prevailing duration, installing it as a musical snippet.Longa/ObjectMenu/NotesRests/SelectDuration
    ToggleStoppedNo Tooltip yetStopped (Off/On)--
    DenemoLastNo help----
    DirectiveGetTag-scoreheaderNo help----
    ZoomDialogScales the display by value given by user.Set Display Scale/MainMenu/ViewMenu/Zoom
    InsertMeasureInsert a blank measure before the current one (in all staffs)Insert Measure Before--
    PrevSelectedObject"Moves the cursor to the previous object in the selection. Returns #t if the cursor moved"----
    DirectiveGet-clef-postfix"Gets the value of the postfix field (a string) of the clef directive with the passed tag."----
    AddNoteCInserts note C after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert C After--
    OpSixWrapper/Dummy for KeypressesOpSix/MainMenu/MoreMenu
    DirectivePut-voice-prefix"Writes the prefix field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DeletePreviousObjectDelete to the left of the cursor.Delete Previous Object--
    GetFlattest"Return name of flattest degree of current temperament"----
    DirectivePut-layout-prefix"Writes the prefix field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    AdagioAttaches tempo marking to chord at cursorAdagio/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    DenemoForwardNo help----
    InsertCInserts note C before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert C--
    DirectivePut-scoreheader-graphic"Writes the graphic field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleSforzatoNo Tooltip yetSforzato (Off/On)--
    ReloadDrumHashReloads the drum map which is needed for DrumGm2UserReload the "Drum GM to User" map/MainMenu/EditMenu
    MoveToBMoves cursor to nearest note BMove to B--
    DirectiveDelete-voice"Deletes a voice directive of the passed in tag. Returns #f if not deleted"----
    DirectivePut-voice-midibytes"Writes the midibytes field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-clef-prefix"Gets the value of the prefix field (a string) of the clef directive with the passed tag."----
    ToggleSegnoNo Tooltip yetSegno (Off/On)--
    DenemoNextNo help----
    FortissimoPlaces a ff sign on the chord at the cursorFortissimo/ObjectMenu/ChordMenu/Markings/TextMarks/Dynamic Markings
    DirectivePut-voice-display"Writes the display field (a string) of the voice directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DeleteObjectDelete the object at the cursorDelete Object--
    UpbeatConvert the current measure to a partial measure. Also known as upbeat or anacrusis.Upbeat (convert current measure)/ObjectMenu/MeasureMenu
    GetMidiTuning"Return a string of tuning bytes (offsets from 64) for MIDI tuning message"----
    ToggleReverseTurnNo Tooltip yetReverse Turn (Off/On)--
    DirectivePut-layout-display"Writes the display field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CursorToHighestNoteMoves the cursor to the highest note on current horizontal position (in a chord or on a single note)Cursor to highest note/MainMenu/NavigationMenu/Cursor
    DenemoGoForwardNo help----
    ToggleTieTies/unties the note at the cursorToggle Tie--
    DirectivePut-scoreheader-postfix"Writes the postfix field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NextSelectedObject"Moves the cursor to the next object in the selection. Returns #t if the cursor moved"----
    ANS-7::randomNo help----
    ChangeToBChanges note at cursor to nearest note B Rhythm is unchangedChange to B--
    Directive-scoreheader?No help----
    OpFiveWrapper/Dummy for KeypressesOpFive/MainMenu/MoreMenu
    DirectiveGet-clef-display"Gets the value of the display field (a string) of the clef directive with the passed tag."----
    LargoAttaches Largo to chordLargo/ObjectMenu/ChordMenu/Markings/TextMarks/Tempo Indications
    DirectiveGet-staff-prefix"Gets the value of the prefix field (a string) of the staff directive with the passed tag."----
    AddBAdds note B to the chord at cursor Cursor height determines which octaveAdd B--
    DirectiveGetTag-scoreNo help----
    DirectiveGet-staff-postfix"Gets the value of the postfix field (a string) of the staff directive with the passed tag."----
    DenemoPauseNo help----
    MasterVolume"Takes a double or string and scales the volume; returns the volume set "----
    TogglePrallNo Tooltip yetPrall (Off/On)--
    DirectiveTextEdit-paper"Takes a tag. Lets the user edit (by running the editscript named by the tag) a paper directive of the passed in tag. Returns #f if none"----
    ANS-7::CalculateDiatonicStepDownNo help----
    AddNoteBInserts note B after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert B After--
    DirectiveTextEdit-staff"Takes a tag. Lets the user edit (by running the editscript named by the tag) a staff directive of the passed in tag. Returns #f if none"----
    AccentSelectionSwitcherAdds the > accentAccent (On/Off)/ObjectMenu/NotesRests/Markings/Articulations
    DirectivePut-scoreheader-prefix"Writes the prefix field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-staff-midibytes"Writes the midibytes field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    TogglePrallPrallNo Tooltip yetPrall Prall (Off/On)--
    TmbalesStyleChanges to a drum staffTmbales Style Staff/MainMenu/EditMenu/MIDI
    DenemoPlayNo help----
    ScorePrologInserts LilyPond syntax for include files etc at head of score.LilyPond Score Prolog/ObjectMenu/Score
    DirectivePut-clef-graphic"Writes the graphic field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    TogglePrallMordentNo Tooltip yetPrall Mordent (Off/On)--
    ANS-7::CalculateDiatonicStepUpNo help----
    CursorToLowestNoteMoves the cursor to the lowest note on current horizontal position (in a chord or on a single note)Cursor to lowest note/MainMenu/NavigationMenu/Cursor
    PutClipObj"Takes a staff number m and a object number n. Inserts the (m, n)th Denemo Object from Denemo Clipboard into the staff at the cursor position"----
    Playback::LoopNo help----
    PrevObjectInMeasure"Moves the cursor to the previous object in the current measure, returning #f if the cursor was on the first object"----
    DirectiveDelete-paper"Deletes a paper directive of the passed in tag. Returns #f if not deleted"----
    InsertBInserts note B before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert B--
    MovementTempo"Takes an integer or string number of beats (quarter notes) per minute as the tempo for the current movement; returns the tempo set "----
    OpFourWrapper/Dummy for KeypressesOpFour/MainMenu/MoreMenu
    DenemoStopNo help----
    DirectivePut-scoreheader-display"Writes the display field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NonPrintingStaffHides the staff in LilyPond print out.Non-Printing Staff/ObjectMenu/StaffMenu
    DirectiveGet-staff-display"Gets the value of the display field (a string) of the staff directive with the passed tag."----
    MoveToAMoves cursor to nearest note AMove to A--
    DirectivePut-clef-postfix"Writes the postfix field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleOpenNo Tooltip yetOpen (Off/On)--
    ChangeToAChanges note at cursor to nearest note A Rhythm is unchangedChange to A--
    Directive-score?No help----
    DirectiveDelete-staff"Deletes a staff directive of the passed in tag. Returns #f if not deleted"----
    GetClipObjects"Takes a staff number m, Returns the number of objects in the mth staff on the Denemo Clipboard or #f if none."----
    DenemoRewindNo help----
    TenutoSelectionSwitcherToggles the Tenuto Line _ On/OffTenuto (On/Off)/ObjectMenu/NotesRests/Markings/Articulations
    DirectivePut-note-midibytes"Writes the midibytes field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleFlageoletNo Tooltip yetFlageolet (Off/On)--
    DirectiveGet-paper-height"Gets the value of the height field (a string) of the paper directive with the passed tag."----
    ANS-7::MakeDiatonicNo help----
    SmallerStaffThe current staff will print in a smaller size. Use this for the solo part above a piano accompanimentSmaller Staff/ObjectMenu/StaffMenu
    DirectiveGetTag-noteNo help----
    MasterTempo"Takes a double or string and scales the tempo; returns the tempo set "----
    DirectiveTextEdit-keysig"Takes a tag. Lets the user edit (by running the editscript named by the tag) a keysig directive of the passed in tag. Returns #f if none"----
    SetBreveSets Prevailing Duration to BreveBreve/ObjectMenu/NotesRests/SelectDuration
    ToggleCodaNo Tooltip yetCoda (Off/On)--
    DenemoPreviousNo help----
    DynamicsDialogChoose dynamics and midi volume level.Dynamics/ObjectMenu/Directives
    NextObjectInMeasure"Moves the cursor to the next object in the current measure, returning #f if there were no more objects to the left in the current measure"----
    DirectivePut-clef-prefix"Writes the prefix field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ANS-7::CalculateRealOctaveDownNo help----
    AddAAdds note A to the chord at cursor Cursor height determines which octaveAdd A--
    OpThreeWrapper/Dummy for KeypressesOpThree/MainMenu/MoreMenu
    GetClipObjType"Takes a staff number m and a object number n. Returns the type of object at the (m, n)th position on the Denemo Clipboard or #f if none."----
    DenemoGoBackNo help----
    DirectiveGet-paper-width"Gets the value of the width field (a string) of the paper directive with the passed tag."----
    DirectivePut-staff-postfix"Writes the postfix field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    AddNoteAInserts note A after note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert A After--
    Zoom"Takes a double or string and scales the display; return #f for invalid value else #t "----
    ToggleTripletingInserts a start triplet or end tuple alternately.Toggle Triplet Entry Off/On/ObjectMenu/NotesRests/Tuplets
    ToggleStaccatissimoNo Tooltip yetStaccatissimo (Off/On)--
    DirectiveDelete-keysig"Deletes a keysig directive of the passed in tag. Returns #f if not deleted"----
    InsertAInserts note A before note at cursor Cursor determines which octave Note is inserted in the prevailing rhythmInsert A--
    DenemoFirstNo help----
    StaccatissimoSelectionSwitcherToggles StaccatissimoStaccatissimo (On/Off)/ObjectMenu/NotesRests/Markings/Articulations
    DirectivePut-chord-midibytes"Writes the midibytes field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-clef-display"Writes the display field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleMordentNo Tooltip yetMordent (Off/On)--
    DirectiveTextEdit-chord"Takes a tag. Lets the user edit (by running the editscript named by the tag) a chord directive of the passed in tag. Returns #f if none"----
    ANS-7::CalculateRealOctaveUpNo help----
    GlissandoInserts a glissandoGlissando/ObjectMenu/ChordMenu/Markings/TextMarks
    SetTuplet"Set passed string as numerator/denominator for a tuplet open at cursor"----
    LongaAppend/Insert Longa durationLonga/ObjectMenu/NotesRests/EditDuration
    ToggleTurnNo Tooltip yetTurn (Off/On)--
    DirectiveGet-paper-override"Gets the value of the override field (a string) of the paper directive with the passed tag."----
    ANS-7::/No help----
    Directive-note?No help----
    LoadCommandset"Takes a file name for xml format commandset, loads commands, returns #f if it fails"----
    DesignateVoiceThese commands are used when entering several voices per staff. VoiceOne is for the upper voice-it sets the direction of slurs, beams, etc. up to avoid clashes. VoiceTwo is for the lower voice, and it sets the directions down. Additional voices beyond two are offset slightly to the right. Designate Voice/ObjectMenu/NotesRests/StemControl
    PrevObject"Moves the cursor to the left returning #t if the cursor moved"----
    ANS-7::*No help----
    DirectiveGet-keysig-height"Gets the value of the height field (a string) of the keysig directive with the passed tag."----
    DeleteRhythmDelete the selected music snippet/rhythm patternDelete Snippet--
    DirectiveGetTag-chordNo help----
    OpTwoWrapper/Dummy for KeypressesOpTwo/MainMenu/MoreMenu
    Paste::MeasureBreakInClipboard?No help----
    DirectiveGet-standalone-height"Gets the value of the height field (a string) of the standalone directive with the passed tag."----
    ANS-7::Base7NoteTableNo help----
    DirectivePut-staff-prefix"Writes the prefix field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ANS-7::-No help----
    CreateRhythmCopy selection as music snippet or rhythm pattern for notes to follow as they are enteredCreate Snippet--
    IRCRuns your browser on a page giving access to denemo's internet relay chatChat to Other Users/MainMenu/HelpMenu
    GetTuplet"Returns a string numerator/denominator for a tuplet open object or #f if cursor not on a tuplet open"----
    ToggleTrillNo Tooltip yetTrill (Off/On--
    DirectiveGet-paper-gy"Gets the value of the gy field (a string) of the paper directive with the passed tag."----
    ClearOverlayClear the list of pitches that overlay the notesClear Overlay--
    ClearKeybindings"Clears all keybindings returns #t"----
    StaccatoSelectionSwitcherAdds the staccato dot or removes itStaccato (On/Off)/ObjectMenu/NotesRests/Markings/Articulations
    DirectivePut-standalone-midibytes"Writes the midibytes field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ToggleTenutoNo Tooltip yetTenuto (Off/On)--
    DirectiveDelete-chord"Deletes a chord directive of the passed in tag. Returns #f if not deleted"----
    DirectiveGet-keysig-width"Gets the value of the width field (a string) of the keysig directive with the passed tag."----
    DoubleBarlineInsert a double barline at cursor position.Double Bar/ObjectMenu/MeasureMenu
    MeasureComplete?No help----
    BreveAppend/Insert BreveBreve/ObjectMenu/NotesRests/EditDuration
    DirectiveGet-chord-height"Gets the value of the height field (a string) of the chord directive with the passed tag."----
    ToggleStaccatoNo Tooltip yetStaccato (Off/On)--
    ANS-7::mathNo help----
    TempoInsert tempi and/or metronome marks, printed or notTempo/ObjectMenu/Directives
    GetType"Returns the name of the type of object at the cursor"----
    OverfullMeasure?No help----
    NextObject"Moves the cursor to the right returning #t if this was possible"----
    DirectiveGet-paper-gx"Gets the value of the gx field (a string) of the paper directive with the passed tag."----
    ANS-7::string->numberNo help----
    ToggleRhythmToggle audible feedback on/offToggle Audible Feedback--
    SaveKeybindings"Takes a file name, saves keybindings from actions/menus returns #f if it fails"----
    OpOneWrapper/Dummy for KeypressesOpOne/MainMenu/MoreMenu
    FullDurationMeasure?No help----
    DirectivePut-staff-display"Writes the display field (a string) of the staff directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ANS-7::number->stringNo help----
    DirectiveGet-keysig-override"Gets the value of the override field (a string) of the keysig directive with the passed tag."----
    ToggleRestToggle between note entry and rest entryToggle Rest Mode--
    Directive-chord?No help----
    GoToEmptyMeasureMove cursor to the next point in the current staff where the music ends.Go To Next Empty Measure/MainMenu/NavigationMenu/Seek
    UnderfullMeasure?No help----
    DirectiveGet-note-height"Gets the value of the height field (a string) of the note directive with the passed tag."----
    ToggleFermataNo Tooltip yetFermata (Off/On)--
    ToggleEditToggle between current mode and edit modeToggle Edit Mode--
    DirectiveGetTag-standaloneNo help----
    EmptyMeasure?No help----
    AddDotSelectionSwitcherAdds an Augmentation Dot to current note/chord/rest.Add Dot/ObjectMenu/NotesRests/EditNote
    DirectiveGet-movementcontrol-midibytes"Gets the value of the midibytes field (a string) of the movementcontrol directive with the passed tag."----
    ToggleAccentNo Tooltip yetAccent (Off/On)--
    DirectiveGet-paper-ty"Gets the value of the ty field (a string) of the paper directive with the passed tag."----
    DirectiveTextEdit-note"Takes a tag. Lets the user edit (by running the editscript named by the tag) a note directive of the passed in tag. Returns #f if none"----
    LocateDotDenemo"Returns the directory holding the user's preferences"----
    StringNumFollowed by a number, places string number on note.String Number/ObjectMenu/NotesRests/Markings/Strings
    LoadKeybindings"Takes a file name, loads keybindings from actions/menus returns #f if it fails"----
    InsertLongaRestInsert a rest with longa durationLonga Rest/ObjectMenu/NotesRests/RestEntry
    ToggleEndDiminuendoNo Tooltip yetEnd Diminuendo--
    ANS-7::+No help----
    DirectiveGet-keysig-gy"Gets the value of the gy field (a string) of the keysig directive with the passed tag."----
    MidiTempoSend a Midi command to change the tempo to a new bpm. No printout.Set Tempo/ObjectMenu/Directives/MIDI
    GoToMeasureEndMove the Cursor to the end of the measureGo To Measure End--
    DiatonicShift"Moves the note at the cursor by the number of diatonic steps passed in"----
    DirectiveGet-standalone-width"Gets the value of the width field (a string) of the standalone directive with the passed tag."----
    FetchCommandsRefreshes the set of commands available from Denemo.org. Use More Commands after this has finishedUpdate Commands from Internet--
    TypesettingOnTurns on typesetting from this point forward in all staffs.TypesettingOn/ObjectMenu/Directives
    DirectiveGet-paper-tx"Gets the value of the tx field (a string) of the paper directive with the passed tag."----
    LoadCommand" pass in a path (from below menus) to a command script. Loads the command from .denemo or system if it can be found. It is used at startup in .denemo files like ReadingNoteNames.denemo which executes (d-LoadCommand "MainMenu/Educational/ReadingNoteNames") to ensure that the command it needs is in the command set."----
    DirectiveGet-standalone-postfix"Gets the value of the postfix field (a string) of the standalone directive with the passed tag."----
    MyCommandsAllows choosing extra commands/menu items from your own collection of extrasMy Commands--
    GetHelp"Takes a command name and returns the tooltip or #f if none"----
    ParenthesizeNoteEnclose the note at the cursor in ( ) when printed.Parenthesize Note/ObjectMenu/NotesRests
    MeasureFillStatusNo help----
    ToggleStartDiminuendoNo Tooltip yetStart Diminuendo--
    ANS-7::AlterationNo help----
    DirectiveGet-keysig-gx"Gets the value of the gx field (a string) of the keysig directive with the passed tag."----
    MoreCommandsAllows choosing standard extra commands/menu itemsMore Commands--
    Major7Minor7OrDominant7Determine which seventh chord is soundedMajor7Minor7Dominant7/MainMenu/Educational/Aural Training/Chord-Comparison
    DirectiveGet-score-midibytes"Gets the value of the midibytes field (a string) of the score directive with the passed tag."----
    DirectiveGet-chord-width"Gets the value of the width field (a string) of the chord directive with the passed tag."----
    ToggleEndCrescendoNo Tooltip yetEnd Crescendo--
    DirectiveDelete-note"Deletes a note directive of the passed in tag. Returns #f if not deleted"----
    LHFingerFollowed by a number, print Left Hand fingering on noteLeft Hand Fingering/ObjectMenu/NotesRests/Markings/Strings
    Directive-standaloneNo help----
    InsertBreveRestInsert a rest with breve durationBreve Rest/ObjectMenu/NotesRests/RestEntry
    DirectiveGet-paper-y"Gets the value of the y field (a string) of the paper directive with the passed tag."----
    InitializeScript"Takes a command name. called by a script if it requires initialization the initialization script is expected to be in init.scm in the menupath of the command passed in."----
    ANS-7::MakeWhiteKeyNo help----
    DirectivePut-standaloneNo help----
    MarkStatus"Returns #f if mark is not set"----
    BarNumbersTurns bar numbering on/off in print out.Bar Numbers On/Off/ObjectMenu/StaffMenu/Numbering
    ToggleStartCrescendoNo Tooltip yetStart Crescendo--
    InsertNoteInChord"Takes a LilyPond note name, and adds that note to the chord"----
    DirectiveGet-keysig-ty"Gets the value of the ty field (a string) of the keysig directive with the passed tag."----
    AboutGives the version number etc of this programAbout--
    DirectiveGet-note-width"Gets the value of the width field (a string) of the note directive with the passed tag."----
    TypesettingOffTurns off typesetting from that point until turned on.TypesettingOff/ObjectMenu/Directives
    DirectiveGet-standalone-prefix"Gets the value of the prefix field (a string) of the standalone directive with the passed tag."----
    HelpOpens a browser on the user manualBrowse Manual--
    ParenthesizeChordEnclose the chord in ( ) on printing.Parenthesize Chord/ObjectMenu/ChordMenu
    DirectiveGet-paper-x"Gets the value of the x field (a string) of the paper directive with the passed tag."----
    GetRelativeFontSize"Deprecated - gets an integer from the user via a dialog"----
    PlaybackPropertiesAllows you to specify properties used in playing back (midi and csoundPlayback Properties--
    GetSaved"Gets the saved status of the current musical score"----
    ToggleEndSlurInsert/delete end slur on this noteEnd Slur--
    MajorMinorAugmentedOrDiminishedDetermine if the chord sounded is Major Minor Augmented or DiminishedMajorMinorAugmentedDiminished/MainMenu/Educational/Aural Training/Chord-Comparison
    DirectiveGet-voice-midibytes"Gets the value of the midibytes field (a string) of the voice directive with the passed tag."----
    DirectiveGetForTag-movementcontrol"Takes a optional tag. Returns that tag if a movementcontrol directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DirectiveGet-keysig-tx"Gets the value of the tx field (a string) of the keysig directive with the passed tag."----
    SetFontSizeChoose the font size of for the score, and hence how much space it takes up.(Print)Set Overall Score Size/ObjectMenu/Score
    ToggleBeginSlurInsert/delete begin slur on this noteBegin Slur--
    ChangeLongaChange current note duration to LongaLonga/ObjectMenu/NotesRests/ChangeDuration
    DirectiveGet-standalone-gy"Gets the value of the gy field (a string) of the standalone directive with the passed tag."----
    StartTupletAsks for ratio of tuplet and then puts in a start for that. Use EndTuplet command after entering tuplet notes. Note that the Denemo display will not automatically group the tuplet, but it will print with expected beaming etc.Start Arbitrary Tuplet/ObjectMenu/NotesRests/Tuplets
    SetPointExtends the selection to the current cursor positionSet Point--
    PutRest"Inserts a rest at the cursor; either passed in duration (note prevailing duration not supported properly)."----
    DirectivePut-paper-override"Writes the override field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GetPadding"Returns the padding that has been set by dragging in the Print view window"----
    PlayCSoundPlay using CSound...Csound Playback--
    SetSaved"Sets the status of the current musical score to saved, or unsaved if passed #f"----
    GetPrevailingTimeSigNo help----
    TremoloInserts LilyPond directive to make preceding note tremolo.\nGive the duration of the subdivisions required using a duration key.Tremolo/ObjectMenu/NotesRests
    DirectiveGet-standalone-display"Gets the value of the display field (a string) of the standalone directive with the passed tag."----
    DirectiveGet-keysig-y"Gets the value of the y field (a string) of the keysig directive with the passed tag."----
    StopStopStop--
    TitlePageMakes this movement a title page (no music)Set Movement as Title Page/ObjectMenu/Score/Titles Etc
    DirectivePut-standalone-gy"Writes the gy field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PlayPlayPlay--
    UnsetMarkGets rid of the selection.Unset Mark--
    NextDirectiveOfTagNo help----
    MeasureEmpty?No help----
    MajorOrAugmentedDetermine if chord sounded is Major or AugmentedMajorAugmented/MainMenu/Educational/Aural Training/Chord-Comparison
    DirectivePut-paper-gy"Writes the gy field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGetForTag-layout"Takes a optional tag. Returns that tag if a layout directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    %module-public-interfaceNo help----
    GetOffset"Returns the offset that has been set by dragging in the Print view window"----
    ANS-7::ChangeChordNotesNo help----
    ApplyToSelectionFollowed by a shortcut: applies the shortcut to each note in the selection.Apply Shortcut to Notes in Selection/MainMenu/EditMenu/Select
    RefreshDisplay"Re-draws the Denemo display, which can have side effects on the data"----
    DirectiveGet-staff-midibytes"Gets the value of the midibytes field (a string) of the staff directive with the passed tag."----
    SetMarkSets the start point for a selection, the end point of the selection is unalteredSet Mark--
    Directive-standalone?No help----
    InsertLongaInsert a LongaLonga/ObjectMenu/NotesRests/InsertNote/InsertDuration
    SetScoreHeaderFieldNo help----
    DirectiveGet-keysig-x"Gets the value of the x field (a string) of the keysig directive with the passed tag."----
    SetInitialAflatminNo Tooltip yetSet Ab Minor as Initial Keysig--
    SetAccidental"Takes a LilyPond note name, changes the note at the cursor to have the accidental passed in either LilyPond string or integer -2..+2. Returns #f if cursor is not on a note position. "----
    HideOssiaPlace this at the end of the music to be printed from the Ossia staffHide Ossia/ObjectMenu/StaffMenu/Ossia
    DirectiveGet-standalone-gx"Gets the value of the gx field (a string) of the standalone directive with the passed tag."----
    DeleteMovementDelete the current movementDelete Movement--
    PrevDirectiveOfTagNo help----
    DenemoPlayCursorToEndPlayback all staffs from the current cursor position to the end of the movement.Play from Cursor to End/MainMenu/PlaybackMenu
    GetTextSelection"Returns the text on the clipboard"----
    DirectivePut-standalone-postfix"Writes the postfix field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    PreviousMovementGo to the previous movementPrevious Movement--
    GetNoteAsMidi"Returns the MIDI key number for the note at the cursor, or 0 if none"----
    DirectivePut-paper-gx"Writes the gx field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DeleteDynamicDeletes a dynamic attached to the chord at the cursor.Delete/ObjectMenu/ChordMenu/Markings/TextMarks/Dynamic Markings
    DirectivePut-keysig-override"Writes the override field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    NextMovementGo to the next movementNext Movement--
    SetInitialEflatminNo Tooltip yetSet Eb Minor as Initial Keysig--
    DiminishedOrMinorDetermine if the chord sounded is Diminished or MinorDiminishedMinor/MainMenu/Educational/Aural Training/Chord-Comparison
    ANS-7::InsertNotesNo help----
    DirectivePut-standalone-gx"Writes the gx field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGetForTag-paper"Takes a optional tag. Returns that tag if a paper directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    RepeatEndStartInserts a barline ending one repeated section and starting anotherRepeat End-Start/ObjectMenu/MeasureMenu
    DirectiveGet-note-midibytes"Gets the value of the midibytes field (a string) of the note directive with the passed tag."----
    SetInitialBflatminNo Tooltip yetSet Bb Minor as Initial Keysig--
    D-AnacrusisNo help----
    ChangeBreveChange current note duration to BreveBreve/ObjectMenu/NotesRests/ChangeDuration
    GetOption"create a dialog with the options & return the one chosen, of #f if the user cancels"----
    GetCursorNoteAsMidi"Gets the MIDI key number for the note-position where the cursor is"----
    SetInitialFminNo Tooltip yetSet F Minor as Initial Keysig--
    ApplyToSelectionFollowed by a shortcut: applies the shortcut to each note in the selection.Apply Shortcut to Notes in Selection/MainMenu/EditMenu/Select
    DirectivePut-paper-ty"Writes the ty field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ANS-7::GetChordNotesNo help----
    PutNoteName"Takes a LilyPond note name, and changes the note at the cursor to that note"----
    ShowOssiaPlace this at the end of the music to be printed from the Ossia staffShow Ossia/ObjectMenu/StaffMenu/Ossia
    DirectivePut-keysig-gy"Writes the gy field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MoveToEndCursor to end of staff/voice, without extending selection if anyMove to End--
    FirstChordInSelectionNo help----
    DirectiveGet-standalone-ty"Gets the value of the ty field (a string) of the standalone directive with the passed tag."----
    ForceBarlineInsert barline at cursor, Denemo's measure count is unaffected.Insert Barline/ObjectMenu/MeasureMenu
    DirectivePut-standalone-prefix"Writes the prefix field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    MoveToBeginningCursor to start of staff/voice, without extending selection if anyMove to Beginning--
    NextChordInSelectionNo help----
    MezzoForteAttach mf indication to a chord.Mezzo Forte/ObjectMenu/ChordMenu/Markings/TextMarks/Dynamic Markings
    ANS-7::Ans2LyNo help----
    GoToEndCursor to end of staff/voice, extending selection if anyGo to End--
    BassFigure"Returns a string for the bass figure for the two MIDI keys passed in"----
    SetInitialCminNo Tooltip yetSet C Minor as Initial Keysig--
    DirectivePut-paper-tx"Writes the tx field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    BassClefNoteNameSpeedTest%tests your ability to read the notes of the bass clef staffBass Clef Note Name Speed Recognition/MainMenu/Educational/Note-Reading
    DirectiveGetForTag-header"Takes a optional tag. Returns that tag if a header directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DirectivePut-keysig-gx"Writes the gx field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    OneShotTimerNo help----
    DirectiveGet-chord-midibytes"Gets the value of the midibytes field (a string) of the chord directive with the passed tag."----
    SetInitialGminNo Tooltip yetSet G Minor as Initial Keysig--
    Chord?No help----
    ANS-7::Ly2AnsNo help----
    RepeatEndInsert a barline indicating the end of a repeated section.Repeat End Barline/ObjectMenu/MeasureMenu
    InsertBreveInsert a BreveBreve/ObjectMenu/NotesRests/InsertNote/InsertDuration
    PlayMidiKeyNo help----
    DirectivePut-standalone-ty"Writes the ty field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialDminNo Tooltip yetSet D Minor as Initial Keysig--
    HideMenus"Hides all the menus"----
    CreateOssiaStaffCreates a small staff above the current staff for inserting cues, ossia passages etc. Use Show Ossia and Hide Ossia to show specific measures.Create Ossia Staff/ObjectMenu/StaffMenu/Ossia
    ChangeChordNotes"Takes a string of LilyPond note names. Replaces the notes of the chord at the cursor with these notes, preserving other attributes"----
    GoToBeginningCursor to start of staff/voice, extending selection if anyGo to Beginning--
    OutputMidiBytesNo help----
    DirectivePut-paper-y"Writes the y field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ChangeRest8Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">8</span>Change a <span size="10000" face="Denemo">8</span>rest--
    SplitMeasureSplit the current measure into two at the cursor.Split Measure at Cursor/ObjectMenu/MeasureMenu
    DirectivePut-standalone-display"Writes the display field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-keysig-ty"Writes the ty field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GoToMeasureOpens a dialog for going to a numbered measureGo to Measure--
    PutMidiNo help----
    SetTransposeIntervalFromNoteSets the current note as the note that c should transpose to.Set Transpose Interval from Note/MainMenu/EditMenu/Transpose
    InsertRest8Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">8</span>Insert a <span size="10000" face="Denemo">8</span>rest--
    InsertBarlineInserts specialized barline at the cursor position. Mostly not workingInsert Barline--
    DirectiveGet-standalone-tx"Gets the value of the tx field (a string) of the standalone directive with the passed tag."----
    SetInitialASharpminNo Tooltip yetSet A# Minor as Initial Keysig--
    Set8Set the prevailing duration to <span size="10000" face="Denemo">8</span><span size="10000" face="Denemo">8</span>--
    NoteNameSpeedTest%tests your ability to name the notes of the scaleNote Name Speed Recognition/MainMenu/Educational/Note-Reading
    DirectiveGetForTag-scoreheader"Takes a optional tag. Returns that tag if a scoreheader directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DirectiveGet-standalone-midibytes"Gets the value of the midibytes field (a string) of the standalone directive with the passed tag."----
    SetInitialDSharpminNo Tooltip yetSet D# Minor as Initial Keysig--
    DirectivePut-paper-x"Writes the x field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Change8Change the current note to a <span size="10000" face="Denemo">8</span><span size="10000" face="Denemo">8</span>--
    PlayNoteNo help----
    RepeatStartInsert a barline indicating the start of a repeated section.Repeat Start Barline/ObjectMenu/MeasureMenu
    SwitchMensuralBarlinesDraw the barlines only between the staves but not inside.(Print) Mensural Barlines (On/Off)/ObjectMenu/MovementMenu
    DirectivePut-keysig-tx"Writes the tx field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DENEMO_OVERRIDE_CHANNELNo help----
    SetMidiCapture"Takes one bool parameter - MIDI events will be captured/not captured depending on the value passed in, returns previous value."----
    SetInitialGSharpminNo Tooltip yetSet G# Minor as Initial Keysig--
    Insert8Insert a <span size="10000" face="Denemo">8</span><span size="10000" face="Denemo">8</span>--
    FindEditPointSearches backward for the start of non-printing notes.Find Edit Point/MainMenu/NavigationMenu/Seek
    AddMovement"Appends a new movement without copying staff structure."----
    DENEMO_OVERRIDE_TEMPONo help----
    AttachLilyToChordAttach or edit attached LilyPond text to the chord at the cursor. This can be used for attaching and placing text and much more. See LilyPond documentation.Attach Lilypond to Chord--
    DirectivePut-standalone-tx"Writes the tx field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    8In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">8</span> In edit mode changes the current note to <span size="10000" face="Denemo">8</span> or appends a <span size="10000" face="Denemo">8</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">8</span> at the cursor<span size="10000" face="Denemo">8</span>--
    ReBarRemoves gaps in duration of measures, redistributes the notes according to the time signature.Adjust the Measure Lengths/ObjectMenu/MeasureMenu
    DirectiveGet-note-postfix"Gets the value of the postfix field (a string) of the note directive with the passed tag."----
    DENEMO_OVERRIDE_TRANSPOSITIONNo help----
    SingleAndSelectionSwitcherNo help----
    DirectiveGet-paper-postfix"Gets the value of the postfix field (a string) of the paper directive with the passed tag."----
    TransposeScorePrintPrints the score transposed by the interval selected by SetTransposeIntervalFromSelection(Print) Transposed/ObjectMenu/Score
    ChangeRest7Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">7</span>Change a <span size="10000" face="Denemo">7</span>rest--
    AttachLilyToNoteAttach or edit attached LilyPond text to the note at the cursor. This can be used for guitar fingerings, cautionary accidentals and much more. See LilyPond documentation.Attach Lilypond to Note--
    DirectivePut-keysig-y"Writes the y field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DENEMO_OVERRIDE_ONCENo help----
    GetMidi"Intercepts a MIDI event and returns it as a 4 byte number"----
    SetInitialCSharpminNo Tooltip yetSet C# Minor as Initial Keysig--
    NextSelectedObjectAllStaffsNo help----
    InsertRest7Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">7</span>Insert a <span size="10000" face="Denemo">7</span>rest--
    ReadingNoteNamesSolfege%tests your ability to name the notes of the scaleSolfege Note Name Recognition/MainMenu/Educational/Note-Reading
    DeleteDirectiveDelete a directive attached to chord/note at cursor.Delete a Directive--
    DirectiveGetForTag-keysig"Takes a optional tag. Returns that tag if a keysig directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DENEMO_OVERRIDE_STEPNo help----
    DirectivePut-movementcontrol-minpixels"Writes the minpixels field (a string) of the movementcontrol directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-standalone-y"Gets the value of the y field (a string) of the standalone directive with the passed tag."----
    SetInitialFSharpminNo Tooltip yetSet F# Minor as Initial Keysig--
    CursorGoDownNo help----
    Set7Set the prevailing duration to <span size="10000" face="Denemo">7</span><span size="10000" face="Denemo">7</span>--
    AnacrusisInsert a LilyPond Directive to give an eighth note upbeatInsert Anacrusis/ObjectMenu/MeasureMenu
    DENEMO_OVERRIDE_RAMPNo help----
    UnHideNotesReverts the "Stop drawing notes" command(Print) Start drawing notes (again)/ObjectMenu/StaffMenu
    SetInitialBminNo Tooltip yetSet B Minor as Initial Keysig--
    DirectiveGet-paper-prefix"Gets the value of the prefix field (a string) of the paper directive with the passed tag."----
    Change7Change the current note to a <span size="10000" face="Denemo">7</span><span size="10000" face="Denemo">7</span>--
    NextHigherMove cursor to next note higher than cursor posiitonNext Higher/MainMenu/NavigationMenu/Seek
    DirectivePut-keysig-x"Writes the x field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GetPrevailingClef"Returns the prevailing clef at the cursor. Note that non-builtin clefs like drum are not handled yet."----
    DENEMO_OVERRIDE_RELATIVENo help----
    GetPassword"Asks the user for a password which is returned"----
    Insert7Insert a <span size="10000" face="Denemo">7</span><span size="10000" face="Denemo">7</span>--
    EditKeysigDirectiveEdit any directives attached to key signature.Edit Key Signature Directives--
    DeleteBarlineJoins two measures together. Always start with cursor on barline to be deleted. Does not work in all cases!Merge with Previous Measure/ObjectMenu/MeasureMenu
    DirectiveGet-note-prefix"Gets the value of the prefix field (a string) of the note directive with the passed tag."----
    DENEMO_OVERRIDE_PERCENTNo help----
    DirectivePut-standalone-y"Writes the y field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CursorGoUpNo help----
    PageBreak(Print) Forces a new page at this barline.Page Break/ObjectMenu/MeasureMenu
    7In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">7</span> In edit mode changes the current note to <span size="10000" face="Denemo">7</span> or appends a <span size="10000" face="Denemo">7</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">7</span> at the cursor<span size="10000" face="Denemo">7</span>--
    EditTimesigDirectiveEdit any directives attached to time signature.Edit Time Signature Directives--
    DENEMO_MIDI_MASKNo help----
    SetInitialEminNo Tooltip yetSet E Minor as Initial Keysig--
    GetHighestNoteNo help----
    DirectiveGet-paper-display"Gets the value of the display field (a string) of the paper directive with the passed tag."----
    ChangeRest6Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">6</span>Change a <span size="10000" face="Denemo">6</span>rest--
    ReadingNoteNames%tests your ability to name the notes of the scaleNote Name Recognition/MainMenu/Educational/Note-Reading
    EditClefDirectiveEdit any directives attached to clef.Edit Clef Directives--
    DirectiveGetForTag-timesig"Takes a optional tag. Returns that tag if a timesig directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DirectiveGet-keysig-postfix"Gets the value of the postfix field (a string) of the keysig directive with the passed tag."----
    DENEMO_MIDI_INTERPRETATION_MASKNo help----
    GetUserName"Asks the user for a user name which is returned"----
    DirectivePut-layout-minpixels"Writes the minpixels field (a string) of the layout directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialAminNo Tooltip yetSet A Minor as Initial Keysig--
    GetLowestNoteNo help----
    InsertRest6Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">6</span>Insert a <span size="10000" face="Denemo">6</span>rest--
    MetronomeMarkingAdds a metronome marking to chord. Edit the attached LilyPond for the value and position.Add Metronome Marking to Chord/ObjectMenu/Directives
    DENEMO_MIDI_ACTION_MASKNo help----
    HideNotesStops the Lilypond engraving of notes(Print) Stop drawing notes/ObjectMenu/StaffMenu
    DirectiveGet-standalone-x"Gets the value of the x field (a string) of the standalone directive with the passed tag."----
    SetInitialCflatmajNo Tooltip yetSet Cb Major as Initial Keysig--
    replace-nthNo help----
    Set6Set the prevailing duration to <span size="10000" face="Denemo">6</span><span size="10000" face="Denemo">6</span>--
    FindNextLowerNoteMoves cursor to next note that is lower than the cursor.Next Lower/MainMenu/NavigationMenu/Seek
    GetPrevailingKeysig"Returns the prevailing keysignature at the cursor"----
    DENEMO_OVERRIDE_DYNAMICNo help----
    DirectivePut-paper-graphic"Writes the graphic field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    Change6Change the current note to a <span size="10000" face="Denemo">6</span><span size="10000" face="Denemo">6</span>--
    EditMovementDirectiveEdit any directives attached to movement.Edit Movement Directives--
    NoOpDoes absolutely nothing. Use to "blank" a shortcut.Null Operation/MainMenu/MoreMenu
    DirectiveGet-keysig-prefix"Gets the value of the prefix field (a string) of the keysig directive with the passed tag."----
    GetLyric"Returns the lyric for the note at the cursor"----
    LineBreak(Print) Start a new line (i.e. system) at this measure.Line Break/ObjectMenu/MeasureMenu
    Insert6Insert a <span size="10000" face="Denemo">6</span><span size="10000" face="Denemo">6</span>--
    DirectiveGet-note-display"Gets the value of the display field (a string) of the note directive with the passed tag."----
    DENEMO_OVERRIDE_HIDDENNo help----
    EditScoreDirectiveEdit any directives attached to score.Edit Score Directives--
    DirectivePut-standalone-x"Writes the x field (a string) of the standalone directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialGflatmajNo Tooltip yetSet Gb Major as Initial Keysig--
    6In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">6</span> In edit mode changes the current note to <span size="10000" face="Denemo">6</span> or appends a <span size="10000" face="Denemo">6</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">6</span> at the cursor<span size="10000" face="Denemo">6</span>--
    VERSION_MAJORNo help----
    EditVoiceDirectiveEdit any directives attached to voice.Edit Voice Directives--
    SetHeaderFieldNo help----
    PutTextClipboardNo help----
    DirectiveGetForTag-clef"Takes a optional tag. Returns that tag if a clef directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DiatonicInterval%tests your ability to find the diatonic interval name between two notesDiatonic Interval Detection/MainMenu/Educational/Note-Reading
    DirectivePut-paper-minpixels"Writes the minpixels field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialDflatmajNo Tooltip yetSet Db Major as Initial Keysig--
    DocumentCommandNo help----
    DirectivePut-paper-postfix"Writes the postfix field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ChangeRest5Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">5</span>Change a <span size="10000" face="Denemo">5</span>rest--
    DeleteLilyPondOnChordDeletes the LilyPond attached to the chord at the cursor.Delete LilyPond on Chord/ObjectMenu/ChordMenu/Directives
    VERSION_MINORNo help----
    DirectiveGet-keysig-display"Gets the value of the display field (a string) of the keysig directive with the passed tag."----
    StartStaffReverts the "Stop Drawing Staff" command(Print) Start drawing staff (again)/ObjectMenu/StaffMenu
    SetInitialAflatmajNo Tooltip yetSet Ab Major as Initial Keysig--
    DenemoKeypressActivatedCommandNo help----
    InsertRest5Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">5</span>Insert a <span size="10000" face="Denemo">5</span>rest--
    VERSION_MICRONo help----
    OpenOctaveDownOpens a block printing an octave lower: must be terminated with CloseLilyBlock(Print) Open { Octave Down/ObjectMenu/Directives/Print Transpositions
    CursorToNote"Takes LilyPond note name string. Moves the cursor to the line or space"----
    DirectiveGet-chord-gy"Gets the value of the gy field (a string) of the chord directive with the passed tag."----
    Set5Set the prevailing duration to <span size="10000" face="Denemo">5</span><span size="10000" face="Denemo">5</span>--
    EditStaffDirectiveEdit any directives attached to staff.Edit Staff Directives--
    DirectiveTextEdit-movementcontrol"Takes a tag. Lets the user edit (by running the editscript named by the tag) a movementcontrol directive of the passed in tag. Returns #f if none"----
    FinishCadenzaReturns to normal barlines etc after a cadenzaEnd Cadenza/ObjectMenu/Directives
    DirectivePut-paper-prefix"Writes the prefix field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ShortInstrumentNamePrints shortened form of instrument name before this staff for second and subsequent systemsShort Instrument Name/ObjectMenu/StaffMenu
    Change5Change the current note to a <span size="10000" face="Denemo">5</span><span size="10000" face="Denemo">5</span>--
    DirectivePut-note-postfix"Writes the postfix field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    EditDirectiveEdit any directives attached to chord/note at cursor.Edit Directives--
    DirectivePut-keysig-graphic"Writes the graphic field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialEflatmajNo Tooltip yetSet Eb Major as Initial Keysig--
    Insert5Insert a <span size="10000" face="Denemo">5</span><span size="10000" face="Denemo">5</span>--
    EditObjectEdit the object at the cursor.Edit Object--
    CountSteps%tests your ability to find the number of diatonic notes between two notesStep Counting Exercise/MainMenu/Educational/Note-Reading
    DirectivePut-header-minpixels"Writes the minpixels field (a string) of the header directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-chord-gy"Writes the gy field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialBflatmajNo Tooltip yetSet Bb Major as Initial Keysig--
    DirectiveGetForTag-score"Takes a optional tag. Returns that tag if a score directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    5In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">5</span> In edit mode changes the current note to <span size="10000" face="Denemo">5</span> or appends a <span size="10000" face="Denemo">5</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">5</span> at the cursor<span size="10000" face="Denemo">5</span>--
    DeleteLilyPondOnNoteDeletes the LilyPond attached to the note where the cursor is.Delete LilyPond on Note/ObjectMenu/NotesRests/Directives
    ChangeValueNo help----
    DirectiveDelete-movementcontrol"Deletes a movementcontrol directive of the passed in tag. Returns #f if not deleted"----
    NotationMagick::RandomWithinClefRangeChromaticNo help----
    StopStaffStop drawing the staff and barlines in Lilypond. Notes are still drawn.(Print) Stop drawing staff/ObjectMenu/StaffMenu
    SetInitialFmajNo Tooltip yetSet F Major as Initial Keysig--
    DirectivePut-paper-display"Writes the display field (a string) of the paper directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    ChangeRest4Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">4</span>Change a <span size="10000" face="Denemo">4</span>rest--
    ShortMeasureAllow too few notes/rests in this measure. LilyPond will engrave this measure (in all staffs) with the short duration given by notes already present when this command was issued.Short Measure/ObjectMenu/MeasureMenu
    NotationMagick::RandomWithinClefRangeDiatonicNo help----
    DirectivePut-keysig-postfix"Writes the postfix field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    GetMeasureNumber"Returns the measure number at cursor position."----
    InsertRest4Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">4</span>Insert a <span size="10000" face="Denemo">4</span>rest--
    InsertLilyDirectiveInsert or edit a directive in the LilyPond music typesetting language. This can be used for extra spacing, transposing or almost anything. See LilyPond documentation for ideas.Insert Lilypond--
    CadenzaOnTurns off barlines etc for cadenzaStart Cadenza/ObjectMenu/Directives
    DirectiveGet-note-gy"Gets the value of the gy field (a string) of the note directive with the passed tag."----
    Set4Set the prevailing duration to <span size="10000" face="Denemo">4</span><span size="10000" face="Denemo">4</span>--
    DirectivePut-note-prefix"Writes the prefix field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    CHORDNo help----
    InsertDynamicInserts a dynamic marking at the cursor positionInsert Dynamics--
    DirectiveGet-movementcontrol-height"Gets the value of the height field (a string) of the movementcontrol directive with the passed tag."----
    InstrumentNamePrint Instrument name before staff at start of score,Instrument Name/ObjectMenu/StaffMenu
    SetInitialCSharpmajNo Tooltip yetSet C# Major as Initial Keysig--
    DirectiveTextEdit-header"Takes a tag. Lets the user edit (by running the editscript named by the tag) a header directive of the passed in tag. Returns #f if none"----
    Change4Change the current note to a <span size="10000" face="Denemo">4</span><span size="10000" face="Denemo">4</span>--
    TUPOPENNo help----
    EditChordsAllows chord symbols to be added to the current note. E.G.cis:dim7 for c-sharp diminished 7th. See Lilypond docs for notationEdit Chord Symbols--
    StepSkipOrSame%tests your ability to determine if note is moving by a step or skipStep, Skip, or Same?/MainMenu/Educational/Note-Reading
    DirectivePut-scoreheader-minpixels"Writes the minpixels field (a string) of the scoreheader directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialFSharpmajNo Tooltip yetSet F# Major as Initial Keysig--
    DirectiveGetForTag-voice"Takes a optional tag. Returns that tag if a voice directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    Insert4Insert a <span size="10000" face="Denemo">4</span><span size="10000" face="Denemo">4</span>--
    DirectivePut-keysig-prefix"Writes the prefix field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    EndBeamInstructs LilyPond engraver to stop previously started manual beaming. Print effect only.End Beam/ObjectMenu/NotesRests/Beaming
    TUPCLOSENo help----
    DeactivateTimeSignatureStencilDeactivates the stencil for Time Signatures for the whole score, which prevents them from getting drawn and taking space. But the logic is still active.(Print) Don't engrave Time Signatures/ObjectMenu/Score
    DirectivePut-note-gy"Writes the gy field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialBmajNo Tooltip yetSet B Major as Initial Keysig--
    4In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">4</span> In edit mode changes the current note to <span size="10000" face="Denemo">4</span> or appends a <span size="10000" face="Denemo">4</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">4</span> at the cursor<span size="10000" face="Denemo">4</span>--
    CLEFNo help----
    DirectiveGet-movementcontrol-width"Gets the value of the width field (a string) of the movementcontrol directive with the passed tag."----
    SetImmediatePlaybackTurns on the playing back of notes as you enter them.Turn On Immediate Playback/MainMenu/EditMenu
    GetEndTick"Returns the tick count (PPQN) for the end of the object at the cursor, or #f if none"----
    DirectiveDelete-header"Deletes a header directive of the passed in tag. Returns #f if not deleted"----
    ChangeRest3Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">3</span>Change a <span size="10000" face="Denemo">3</span>rest--
    TIMESIGNo help----
    HideFiguredBassHide the figured bass on the current staff on printingHide Figures (Print)--
    SplitChordSplit a chord into a specific amount of smaller notes while preserving original duration, generating tuplets if necessary. Not for rests.Split Note/Chord/ObjectMenu/NotesRests
    InsertRest3Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">3</span>Insert a <span size="10000" face="Denemo">3</span>rest--
    DirectivePut-note-display"Writes the display field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectivePut-keysig-display"Writes the display field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    KEYSIGNo help----
    DeleteFiguredBassDelete the figured bass on the current staffDelete Figures--
    HideEmptyStaffsControls whether staffs containing only rests are printed.Hide Empty Staffs (Off/On)/ObjectMenu/Score/Print Layout
    DirectiveGet-chord-gx"Gets the value of the gx field (a string) of the chord directive with the passed tag."----
    SetInitialEmajNo Tooltip yetSet E Major as Initial Keysig--
    Set3Set the prevailing duration to <span size="10000" face="Denemo">3</span><span size="10000" face="Denemo">3</span>--
    BARLINENo help----
    EditFiguredBassAdd a bass figure to the current note. Use | sign to split the duration of a note so as to have multiple figures on one note. See Lilypond docs for other notationInsert/Edit Figured Bass--
    DirectiveGet-movementcontrol-override"Gets the value of the override field (a string) of the movementcontrol directive with the passed tag."----
    UpDownOrSame%tests your note tracking abilityTrace Note Direction/MainMenu/Educational/Note-Reading
    DirectivePut-keysig-minpixels"Writes the minpixels field (a string) of the keysig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    SetInitialAmajNo Tooltip yetSet A Major as Initial Keysig--
    DirectiveGet-header-height"Gets the value of the height field (a string) of the header directive with the passed tag."----
    DirectiveGetForTag-staff"Takes a optional tag. Returns that tag if a staff directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    Change3Change the current note to a <span size="10000" face="Denemo">3</span><span size="10000" face="Denemo">3</span>--
    StartBeamInstructs the LilyPond engraver to start a beam here. (Print effect only)Start Beam/ObjectMenu/NotesRests/Beaming
    STEMDIRECTIVENo help----
    BreathMarkInserts a Breath MarkBreath Mark/ObjectMenu/Directives
    SetInitialDmajNo Tooltip yetSet D Major as Initial Keysig--
    DirectiveTextEdit-timesig"Takes a tag. Lets the user edit (by running the editscript named by the tag) a timesig directive of the passed in tag. Returns #f if none"----
    MEASUREBREAKNo help----
    ForteAttaches Forte to chord and MIDI volumeForte/ObjectMenu/ChordMenu/Markings/TextMarks/Dynamic Markings
    Insert3Insert a <span size="10000" face="Denemo">3</span><span size="10000" face="Denemo">3</span>--
    GetBaseDurationInTicks"Returns the number of ticks (PPQN) for the chord without dots or tuplet effects at the cursor, or #f if not a chord. The value is -ve for special durations (i.e. non-standard notes)"----
    DirectivePut-chord-gx"Writes the gx field (a string) of the chord directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    STAFFBREAKNo help----
    DeleteVerseDeletes current verse of lyrics from current voiceDelete Verse--
    DirectiveGet-movementcontrol-gy"Gets the value of the gy field (a string) of the movementcontrol directive with the passed tag."----
    DuplicateChordDuplicate a note or chord. Not for rests.Duplicate Note/Chord/ObjectMenu/NotesRests
    3In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">3</span> In edit mode changes the current note to <span size="10000" face="Denemo">3</span> or appends a <span size="10000" face="Denemo">3</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">3</span> at the cursor<span size="10000" face="Denemo">3</span>--
    DirectiveGet-header-width"Gets the value of the width field (a string) of the header directive with the passed tag."----
    DirectiveGet-chord-postfix"Gets the value of the postfix field (a string) of the chord directive with the passed tag."----
    DYNAMICNo help----
    AddVerseAdd a verse of lyricsAdd Lyric Verse--
    RecreateTimebaseRecalculates the timing of each note.Create Timebase/MainMenu/PlaybackMenu
    ChangeRest2Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">2</span>Change a <span size="10000" face="Denemo">2</span>rest--
    SetInitialGmajNo Tooltip yetSet Initial Keysig to G Major--
    DirectiveDelete-timesig"Deletes a timesig directive of the passed in tag. Returns #f if not deleted"----
    GRACE_STARTNo help----
    InsertStemInserts a stem neutral object. After this automatic stem directions are active. You can click on this tag and use Sharpen/StemUp etc commands to change stem directionAuto Stemming--
    InsertRest2Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">2</span>Insert a <span size="10000" face="Denemo">2</span>rest--
    LineOrSpace%tests your ability to recognize the difference between line and spaceLine and space recognition/MainMenu/Educational/Note-Reading
    DirectivePut-timesig-minpixels"Writes the minpixels field (a string) of the timesig directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-note-gx"Gets the value of the gx field (a string) of the note directive with the passed tag."----
    SetInitialCmajNo Tooltip yetSet Initial Keysig to C Major--
    DirectiveGetForTag-note"Takes a optional tag. Returns that tag if a note directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    Finger5Inserts fingering for finger 5Finger 5/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    GRACE_ENDNo help----
    DirectiveGet-movementcontrol-gx"Gets the value of the gx field (a string) of the movementcontrol directive with the passed tag."----
    Set2Set the prevailing duration to <span size="10000" face="Denemo">2</span><span size="10000" face="Denemo">2</span>--
    HideHides the object at cursor position with a lilypond directive. Currently only Notes and the three Signatures. No rests!(Print) Hide object/ObjectMenu/Directives
    InsertAflatminNo Tooltip yetInsert Ab Minor--
    DirectiveGet-header-override"Gets the value of the override field (a string) of the header directive with the passed tag."----
    LYRICNo help----
    MezzoPianoprints mp and outputs MIDI vol change#Mezzo Piano/ObjectMenu/ChordMenu/Markings/TextMarks/Dynamic Markings
    Change2Change the current note to a <span size="10000" face="Denemo">2</span><span size="10000" face="Denemo">2</span>--
    GetDurationInTicks"Returns the number of ticks (PPQN) for the object at the cursor, or #f if none"----
    DirectiveGet-timesig-height"Gets the value of the height field (a string) of the timesig directive with the passed tag."----
    FIGURENo help----
    ChangeNoteheadChange the type of notehead for the current noteSet Notehead--
    AddDuplicateMeasureInserts a copy of the current measure after the present measure.Insert Duplicate Measure After/ObjectMenu/MeasureMenu
    Insert2Insert a <span size="10000" face="Denemo">2</span><span size="10000" face="Denemo">2</span>--
    DirectivePut-note-gx"Writes the gx field (a string) of the note directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGet-chord-prefix"Gets the value of the prefix field (a string) of the chord directive with the passed tag."----
    LILYDIRECTIVENo help----
    InsertTimeSigEdit/Insert a time signature change for the current measureTime Signature Change--
    DirectiveGet-movementcontrol-ty"Gets the value of the ty field (a string) of the movementcontrol directive with the passed tag."----
    AmbitusPrints the ambitus before each staff of the score.Ambitus Off/On/ObjectMenu/Score
    2In insert mode, changes prevailing rhythm to <span size="10000" face="Denemo">2</span> In edit mode changes the current note to <span size="10000" face="Denemo">2</span> or appends a <span size="10000" face="Denemo">2</span> if no current note In classic mode inserts a <span size="10000" face="Denemo">2</span> at the cursor<span size="10000" face="Denemo">2</span>--
    DirectiveGet-header-gy"Gets the value of the gy field (a string) of the header directive with the passed tag."----
    FAKECHORDNo help----
    InitialTimeSigSet the initial time signature of the current staffInital Time Signature--
    InsertEflatminNo Tooltip yetInsert Eb Minor--
    ChangeRest1Changes a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">1</span>Change a <span size="10000" face="Denemo">1</span>rest--
    DiminishedOrAugmentedDetermine if the chord sounded is Diminished or AugmentedDiminishedAugmented/MainMenu/Educational/Aural Training/Chord-Comparison
    DirectivePut-clef-minpixels"Writes the minpixels field (a string) of the clef directive with the passed int tag. Creates the directive of the given type and tag if it does not exist."----
    DirectiveGetForTag-chord"Takes a optional tag. Returns that tag if a chord directive exists at the cursor, else returns the tag of the first such directive at the cursor, or #f if none"----
    DirectiveGet-timesig-width"Gets the value of the width field (a string) of the timesig directive with the passed tag."----
    Finger4Inserts fingering for finger 4Finger 4/ObjectMenu/NotesRests/Markings/Strings/Fingerings
    PARTIALNo help----
    InsertBflatminNo Tooltip yetInsert Bb Minor--
    InsertRest1Inserts a rest at cursor position Sets prevailing rhythm to <span size="10000" face="Denemo">1</span>Insert a <span size="10000" face="Denemo">1</span>rest--
    SetTuningAllStaffsAt this time during playback switch to the temperament set when this command was invoked.Set Tuning Across All Staffs/ObjectMenu/Directives/Tuning
    DirectiveGet-chord-ty"Gets the value of the ty field (a string) of the chord directive with the passed tag."----

    Denemo Directives

    These give attributes to objects that are not built-in but can be changed by the user.

    Denemo Directives can be attached at almost every level of a Denemo score and can modify the behavior of the element concerned. They contain fields to describe how the element's properties should be modified, either in the display or in the printing. Elements, such as clefs notes etc have their own built-in display and print properties; Denemo Directives allow you (or scripts you invoke) to modify them for many more purposes than the built-in set allows. This means Denemo can grow - you can add features - without getting a new version.

    For example the drum clef is not built-in to Denemo. Instead a directive attached to the clef has a field (graphic) set to an image of the drum clef, and another field (postfix) set to the LilyPond syntax for a drum clef, while another field (override) is set to indicate that these values should replace the normal ones, rather than adding to them.

    The elements that can be modified in this way are the following:

    • score: the LilyPond fields (prefix and postfix) are placed at the start of the score and just before each movement. The display field is shown at the top of the display.
    • scoreheader: Attached to the score. The postfix field is put inside a \header{} block at the start of the score.
    • movementcontrol: Attached to a movement. The prefix field is placed before the movements \score{} block, the postfix after it.
    • header: Attached to a movement. As scoreheader but for \header[] blocks inside the movement's score block.
    • paper: Attached to the score. The postfix is placed inside a \paper{} block.
    • layout: Attached to a movement. The postfix is placed inside a \layout{} block in the movement's scoreblock.
    • clef: Attached to a clef or clef change. The graphic holds the displayed icon, gx,gy its position. The postfix field is put into the music at the point where the clef is found, replacing the normal text if the override is set.
    • timesig: Attached to a time signature or time signature change. The graphic holds the displayed icon, gx,gy its position. The postfix field is put into the music at the point where the time signature is found, replacing the normal text if the override is set.
    • keysig: as timesig but for key signatures. (e.g. used to supress keysignatures in drum clef).
    • staff: The postfix field modifies the whole staff context, with the display field printed at the start of the staff
    • voice: The postfix field modifies the voice context, with the display field printed at the start of the staff containing the voice
    • standalone: A directive not attached to an music element - it comes with the music and is used for things like repeat bars etc.
    • chord: The prefix field is emitted before the LilyPond for the chord and the postfix after it.
    • note: The prefix field is emitted before the LilyPond for the note and the postfix after it. Examples are fingerings attached to notes etc. Again the display and graphic fields a placed in the display positioned relative to the note via the coordinate fields gx, gy (for the graphic) and tx, ty for the display text.

    The Directives are sufficiently important to have their own commands.

    • d-DirectivePut-type-field where type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note and field is one of display, tx, ty, gx, gy, graphic, prefix, postfix, override, midibytes. These commands take two arguments, a tag (string) and a value to set. For example

      Example 3. 

      (d-DirectivePut-note-postfix "LHFinger" "3")
      will put the fingering 3 on (after) the note at the cursor.
    • d-DirectiveGet-type-field type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note and field is one of display, tx, ty, gx, gy, graphic, prefix, postfix, override, midibytes. This function returns the value in the field or #f if there is no directive with the given tag at the cursor.
    • d-DirectiveDelete-type type is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note. This function returns #t or #f if a directive with the given tag was deleted.

    The Directive Fields

    The fields of the Denemo Directive can control the Denemo Display and the LilyPond output.

    The fields in d-DirectiveGet/Put have the following meanings

    • postfix - A fragment of LilyPond to be output (after the LilyPond for any object the directive is attached to).
    • prefix - A fragment of LilyPond to be output (before the LilyPond for any object the directive is attached to).
    • display - text to be shown in the Denemo Display
    • tx, ty - where to show the text in the Denemo Display
    • graphic - For directives that are in the music this is a .png image to be shown in the Denemo Display (the directory bitmaps holds these). The graphic can be saved for a command using the right-click -> Save Graphic command, after selecting a portion of the print preview as the image required. For directives attached to the score, movement etc the string set here will be displayed on the button in the button box for that sort of directive (see Show Score Titles etc in view menu for showing this button box).
    • gx, gy - where to show thegraphic in the Denemo Display
    • minpixels - how much space to leave for this item in the Denemo Display
    • override - Contains bits to determine whether the LilyPond contained in the Directive (postfix and/or prefix fields) should override the normal LilyPond output, and whether the Graphic should replace the normal Denemo display for the item. A further tranche of bits controls MIDI output for the directive, which can override the normal MIDI interpretation of the music and provide additional information not explicit in the music notation (e.g. the tempo of an Adagio marking).
    • midibytes - a string of numbers (in hexadecimal format) whose interpretation is given by the MIDI bits in the override field

    The override field contains the following bits:

    • DENEMO_OVERRIDE_LILYPOND : override the LilyPond output normally used at this point, rather than adding to the normal output. The text used is in the prefix and postfix fields.
    • DENEMO_OVERRIDE_GRAPHIC : overrides what Denemo would normally show in the display with the image named in the graphic field of the directive

    The MIDI bits in the override field are as follows

    • DENEMO_OVERRIDE_VOLUME : the MIDI velocity to use
    • DENEMO_OVERRIDE_DURATION : affects the duration of a note. not yet implemented
    • DENEMO_OVERRIDE_REPEAT : indicates that an earlier passage should be repeated (from a directive of the same tag). not yet implemented
    • DENEMO_OVERRIDE_CHANNEL : midibytes field gives the MIDI channel to use (? implemented?)
    • DENEMO_OVERRIDE_TEMPO : midibytes field gives the tempo to use.

    The interpretation of these flags is modified by the following flags:

    • DENEMO_OVERRIDE_ONCE : the value in midibytes is to be used just for the item the directive is attached to. not yet implemented
    • DENEMO_OVERRIDE_STEP : the value in midibytes is to be used from this point on
    • DENEMO_OVERRIDE_RAMP : the value in midibytes is to be used as a starting value, a corresponding directive (i.e. with the same tag) gives the findal value, values are then interpolated between these. not yet implemented
    • DENEMO_OVERRIDE_RELATIVE : value in midibytes is used relative to the current value (otherwise it is an absolute value; e.g. an absolute velocity etc)
    • DENEMO_OVERRIDE_PERCENT : value in midibytes is interpreted as percentage value. not yet implemented

    These flags are combined together to get the combination required for the directive using the scheme procedure called logior.

    Here is an example, making a step-change in volume of 0x40 in the MIDI output, and printing "più mosso" in the output score

    ;;;;;;;;;; piu mosso

    (d-DirectivePut-standalone-minpixels "StepTempo" 20)

    (d-CursorLeft)

    (d-DirectivePut-standalone-override "StepTempo" (logior DENEMO_OVERRIDE_TEMPO DENEMO_OVERRIDE_STEP DENEMO_OVERRIDE_RELATIVE))

    (d-DirectivePut-standalone-midibytes "StepTempo" "40")

    (d-DirectivePut-standalone-display "StepTempo" "piu mosso")

    (d-DirectivePut-standalone-postfix "StepTempo" "^\\markup {\\bold \\italic \"più mosso\"}")

    (d-RefreshDisplay)

    In this example the directive is a standalone directive. MIDI commands are being extended to apply to chords and notes. Implementation of the commands for Voices, Movements, Score etc are not yet done.

    Directive Edit Scripts

    Introduction

    Score and movement directives can define a value for their graphic - a button then appears at the top of the score which can be used to edit the directive. Likewise Staff and Voice directives show as a properties icon before the staff to which they apply (staff directives above, voice directives below). Clicking on these lets you edit the directive.

    The command EditDirective can be used when the cursor is on a Denemo Directive object, or an object with a Denemo Directive attached to it. What happens then is determined by a script named after the "tag", or name of the directive. For example the command RehearsalMark creates a Directive with tag "RehearsalMark" and EditDirective runs a script called RehearsalMark.scm.

    There is also a low-level editing dialog which is invoked if no editing script exists or directly from scheme using (d-DirectiveTextEdit-* tagname). This allows you to edit and delete a directive directly. The other directive editing commands are EditScoreDirective EditMovementDirective EditStaffDirective EditVoiceDirective EditClefDirective EditKeysigDirective EditTimesigDirective for directives attached to the relevant objects.

    The low level edit of directives from scheme uses the following command:

    • (d-DirectiveTextEdit-<field> <tagname>). Where <tagname> specifies the directive to be edited and <field> is one of score, scoreheader, movementcontrol, header, paper, layout, clef, timesig, keysig, staff, voice, standalone, chord or note.

    For example (d-DirectiveTextEdit-paper "PrintAllHeaders") gives low-level access to the directive setting the print all headers command in the paper block of the LilyPond output.

    Initialization Scripts

    Each menu can have an initialization script, which can contain procedures that would be too time consuming to define every time they are needed. These scripts are guaranteed to be run before any menu item is activated within the menu. They can be read/written using the right click menu on any scripted menu item.

    Edit Scripts

    Each directive has a tag field, so that it can be recognized by the scripts that manipulate it. In particular for each tag there can be an edit script, for editing a directive of that tag. Edit scripts are kept in a directory actions/editscripts parallel with the directory actions/menus where the commands themselves are kept.

    You can read and write edit scripts by using the low level editing dialog on a directive with the tag you are writing for.

    [Note]Note
    The low level editing dialog is the one that is presented if there is no edit script. Edit scripts can themselves give access to this dialog by including an option cue-Advanced which calls (d-DirectiveTextEdit-field tag) for the appropriate field and tag. For an example see the edit script for Instruments -> Orchestra -> RehearsalMark.

    They have available functions to enable editing of directives which are defined in actions//denemo.scm executed at startup. The functions and variables for script editing are

    • d-GetOption followed by a nul separated list of options, offers the options to the user and returns one, or #f if the user cancels.
    • Extra-Offset tag type context. Takes three string options: tag is the name of the directive to be edited, which must be the name of a LilyPond object, type is the type of directive (note, chord, standalone, staff, voice or score), context is the LilyPond context of the object. Only tag is required. Shifts the object in the LilyPond output.
    • SetPadding tag type context. As Extra-Offset, it sets the space left around the item in the LilyPond engraving process.
    • SetRelativeFontSize tag type context. As Extra-Offset, it shifts the font size of the following text in the LilyPond engraving process.
    • CreateButton tag label this is just a convenience function to put a button with the passed in label onto a button box at the top of the screen. Scripts can attach actions to such tagged buttons.
    • Useful variables defined: (define stop "\0") (define cue-Advanced "Advanced") (define cue-PlaceAbove "Place above staff") (define cue-PlaceBelow "Place below staff") (define cue-SetRelativeFontSize "Set Relative Font Size") (define cue-OffsetPositionAll "Offset Position (All)") (define cue-OffsetPositionOne "Offset Position (One)") (define cue-EditText "Edit Text") (define cue-SetPadding "Set Padding") (define cue-Delete "Delete")

    LilyPond Editing

    Introduction

    From version 0.7.8 we have the ability to edit the LilyPond output within Denemo. This approach immediately makes Denemo able to do many more things (e.g. multiple verses for songs) with the music still editable from within Denemo. The gallery of examples and the standard templates contain examples which you can use.

    These can be used without knowing the LilyPond language (provided a suitable template or example file exists). Alternatively, with a general idea of how a LilyPond file works tweaks from the LilyPond documentation can be inserted into the LilyPond output and stored with the Denemo, leaving open the possibility of further editing of the notes within Denemo without the need to re-apply tweaks or keep separate LilyPond files.

    Using the LilyPond Window

    Under the View menu is a Show LilyPond item which pops up a window with the LilyPond output in it. The text is interspersed with buttons which enable you to hide or show the various sections or to create custom versions. The text in bold can be altered and the alterations are kept in the Denemo file.

    The two windows are kept in sync, so you can move back and forth between editing textually and editing in Denemo.

    Right clicking on the text gives a menu for actions on the LilyPond text. There is one for moving the cursor to the LilyPond text for the current Denemo object. Moving the cursor in the text window with the arrow keys causes the Denemo window cursor to move in synchronism.

    This menu also includes a Print command that operates on the visible LilyPond text in the window. This means you can open specific custom score blocks and print from them, or even make a temporary edit for just one print. If you save the program while a choice of custom scoreblocks is open then these are remembered. So when you reload and hit Print those score blocks will be printed.

    Detail

    Several custom scoreblocks can be kept, and by making the one(s) desired visible, the same Denemo file can be used to print a variety of things from the same music input. For example, a full score or a set of parts, or several voices on group of staffs or even a piano reduction. The custom scoreblocks can be are named using the comment on the first line (see the template Piano.denemo for an example).

    The various Voices/Staffs for the different Movements are separated by buttons. These are labelled by enumerating the movements and staffs in order, so the first voice in the first movement has the music defined as "MvmntIVoiceIMusic" and so on. Within these music blocks you can insert arbitrary LilyPond text between notes, (the insertion points are marked by grey blocks) and the text inserted will appear as a LilyPond directives in the main Denemo window.

    The main Denemo window also moves its cursor to correspond with where you are editing. (It should of course move the cursor immediately you click on a point in the music, but, as yet, it only moves the cursor when you press a key just before the note name - one of the arrow keys will do).

    Custom score blocks are created by right-clicking on the Standard score block and selecting create custom score block. You can cut and paste another score block, or start from the text of the standard one. If you print a single part from all movements, you get the standard scoreblock for this and can add it to your custom score block so that a single print command prints, e.g. both a full score and parts. Using the \book {} block you can put these into separate files (stored in the folder .denemo in your home folder).

    The music defined by MvmntIVoiceIMusic is then used in the score blocks at the end of the LilyPond window, by the expression \MvmntIVoiceIMusic. This means that the same music can be output in several different ways, so that the same Denemo file can contain custom score blocks to output the music as a Piano Score with several voices or separate parts, for example.

    The definitions for MvmntIVoiceIMusic actually look like this

    • MvmntIVoiceIProlog = {\MvmntIVoiceITimeSig \MvmntIVoiceIKeySig \MvmntIVoiceIClef}
    • MvmntIVoiceIMusic = {\MvmntIVoiceIProlog \MvmntIVoiceI}

    Where \MvmntIVoiceI is the actual block of notes you have written, while the other definitions hold the time signature, clef etc. By using these, you can print the same music with different clefs, still maintaining the ability to edit the notes in Denemo.

    Note that the normal Denemo Print commands are still operate as they do if you never look at the LilyPond window. What happens is that if you select the Print Current Part menu item then this creates a tailored standard scoreblock for that part. However, if you use the File->Print command then it prints the first custom scoreblock that is open (visible) (or the standard scoreblock if you do not have any custom scoreblocks).

    [Note]Note
    Bugs: Clicking (as opposed to using the arrow keys) in the LilyPond text does not move the cursor in the Denemo window. Moving the text cursor in a lyric (etc.) does not move the Denemo cursor, so you cannot easily see where in the music it comes. Inserting LilyPond text after last note of a movement has to be done in Denemo. When you delete a LilyPond directive textually you have to move the cursor to start re-inserting it. LilyPond notes cannot be parsed back in (would be useful for importing music from arbitrary LilyPond files). LilyPond inserts at notes can only be completely deleted in the Denemo window - inserts are not merged.

    Using the Denemo From the PC keyboard

    Note Entry

    Basic Note entry is to type a number key 0-8 for the duration of the note followed by a letter key a-g for the note name. If the duration is the same as the last entered note then just the note name is needed. The duration can be dotted with the period key, and the octave adjusted with comma (for down) or apostrophe (for up).

    When you append music by pressing a duration key you get a brown note, indicating a duration which has not been given a pitch. Once you have pressed a note-name it becomes that note printed in black. Prior to that it is a pure rhythm and will play back as a drum beat and will print as a space.

    When not appending music, you need to use the shift key to insert a new note, or set the caps lock. So Shift-a inserts the note A etc. Plain "a" edits the note at the cursor to be an A. Likewise with the numeric keypad the Shift key can be used to insert a note duration, while the plain number keys edit the duration of the note at the cursor. (If you do not have a numeric keypad, you have to use Shift-0,1, etc to do insertion of a duration).

    Chord Entry

    The standard keybinding for entering a note in a chord is the Insert key. This enters the note at the cursor position. There are also commands to enter a named note Alt-a, Alt-b... are the standard shortcuts for this.

    Inserting LilyPond Directives

    Denemo allow you to insert LilyPond directives between notes, prefixing and postfixing the individual notes of a chord or the whole chord itself and at the start of each staff in a score and at the start of each score. This means that the score can be tailored to a great extent without ever resorting to editing LilyPond files themselves. (Re-loading from an edited LilyPond file is generally unsuccessful). These LilyPond directives are now just a special case of DenemoDirectives - see discussion elsewhere.

    To put a LilyPond directive on an individual note of a chord, put the cursor on that note and invoke

  1. Other->AttachLilyToNote
  2. To put a LilyPond directive between chords, place the cursor at the insertion point, and invoke

  3. Other->InsertLilyPond
  4. Such a LilyPond insert can be locked, which means you will be warned if you try to delete it while you are deleting notes.

    When you have inserted a LilyPond directive a green bar is printed at that point below the staff. In addition if you specify some display text it will be shown. If the LilyPond inserted is text to be printed above staff the notation ^text can be used. Denemo will show this text above the staff. Likewise, _text will cause text to be printed under the staff. If you wish to annotate your music use %text, which Denemo will print, but LilyPond will not (a newline character is automatically inserted for you to ensure this happens). LilyPond attached to chords or notes shows the display text only. The status bar also shows some of the information.

    Note and Rest Entry Toolbar

    This toolbar can be used to enter notes using the mouse. It also shows what the prevailing duration is, that is what duration of note will be inserted when you press a note name key.

    Publishing

    Creating paper scores with Denemo is done via an intermediate PDF file. Denemo takes care of this for you, provided you have set the name of a PDF view in the Preferences. Once this is done click on Print Preview, or Print Part, wait for LilyPond to typeset your score the PDF viewer will pop-up, and you can print using the facilities of that program.

    [Note]Note

    LilyPond is quite slow - be patient!

    Advanced Features

    Musical Score that Do Things!

    By saving a Denemo score with a script defined (in the script window) you can create music lessons, automatic midi player ... the possibilities are (literally) endless. When you open such a score, the script is run - it can take user input and manipulate the score, or do other actions as your fancy takes you.

    There is a special score init.denemo that is run on startup. By editing this you can startup with whatever template and whatever actions you wish to be performed. If you set it to do something that quits Denemo, you may need to delete the file before using Denemo normally again. Your local init.denemo is stored in the directory .denemo/actions in your home directory.To create it put the script you want in the script window and use SaveAs selecting ~/.denemo/actions/init.denemo as your file to save to.

    Piano Staffs, Orchestral Scores etc

    Piano staffs, and staff groups can be created using the context field of the score->properties dialog. You can set a piano staff within a staff group by setting successively the StartPiano and StartGroup contexts on a single staff, or more generally setting StartPiano, EndPiano on adjacent staffs within a staff group.

    [Note]Note
    It is possible to set silly combinations – some will not print anything. Check that you have a Start and End staff for each type and that they are not miss-matched.

    Single Staff Polyphony

    Denemo permits the use of mutiple staves for part work, as well as enabling multiple voices on a single staff. To add voices to the current staff do the following:

    1. Go to the measure(s) where you want to add the second voice

    2. Use Add Voice to Current Staff item.Then open the staff properties. This dialog box will appear.

    3. If this is a different instrument than the other voice, open the instrument drop down list and choose the appropriate instrument. The default name for this voice should be ok.

    4. Click Ok to close the dialog box.

    5. To switch voices use VoiceDown, VoiceUp under staff menu. or using the keyboard shortcuts

      [Note]Note

      The stem positioning positioning may not look correct in the Denemo window, but it will look correct in the printed output.

    6. For every beat your voice is silent you need to add a null note, which is achieved with the following sequence of key strokes: 1. n puts you in null mode, 2. r toggles a rest 3. then type the rest value you need to add, with the appropriate key binding.

    7. For the beats that contain notes just enter them as you would normally see section x.

      [Note]Note

      If you choose not to enter rests in null mode the visual output will be the same but these notes will be heard during midi playback of your score.

    8. To leave the new voice and return to the previous one type

    .

    Entering Vocal Music

    Choose Lyrics->Add Verse. You need to have the Lyrics View visible (see View menu). Each verse has a separate tab, with the current verse for the current staff being visible at any one time. Use -- to extend syllables over more notes (see LilyPond documentation).

    Entering Figured Bass

    To enter figures choose Other->Insert/Enter figured bass. There are some shortcuts that enable all the work to be done with the numeric keypad. A brief summary is given by right clicking the option. The conventions are described in the LilyPond docs.

    Entering Chord Symbols

    To enter chord symbols choose Other->Insert/Enter chord symbols. A brief summary is given by right clicking the option. The conventions are described in the LilyPond docs.

    Denemo Command Line Options

    Denemo --help shows the options for opening particular files at startup.