Table of Contents
GNU Denemo is a modal, graphical music notation program. (http://Denemo.sourceforge.net). Denemo is a quick clean editor without all the clutter and eye candy of other editors. It places emphasis on your computer's keyboard for inputting notation.(input via midi keyboard is planned for a later release)
Speed is in fact where Denemo excels, with a choice of multiple key binding files it is easy to make Denemo perform to your individual needs. By making notation entry touch type-able Denemo saves your hands from the mouse fatigue associated with common notation packages
Denemo is intended to be used in conjunction with GNU LilyPond (http://www.LilyPond.org), but is adaptable to other computer-music-related purposes as well such as musical analysis. Denemo tries to output LilyPond code for stable releases, but not necessarily the current version. The principle is to stay close enough to permit the use of the LilyPond 'convert-ly' script. Denemo can additionally be used to output ABCmusic notation files.
Denemo is available from a variety of sources for different distributions. The latest stable release is available for download from Denemo's sourceforge download page, there you will also find binary files both in tar.gz format and RPM packages. Thanks to Guenter Geiger, you can get the build Denemo from the Debian unstable repositories, using the command apt-get install Denemo. Additionally a build for macintosh is available gnu-darwin.org. Distribution specific packages are available throughout the internet, if you don't see that latest release of Denemo contact your Distros maintainer and request they add it.
Before building Denemo from CVS or a source package make sure to fulfil the following build requirements, including their development packages (check your distribution for the package name):
g++ 2.95 or higher
flex 2.5.4a or higher
bison 1.35 or higher
gtk+ 2
libxml2
LilyPond 2.4
autoconf 2.59 or higher
The following are not necessary for building Denemo but will help you get the most out of score editing with Denemo:
C Sound
An audio player such as play, or aplay
A midi player such as Timidity
A good text editor with plugins for LilyPond editing: some good choices are Vim, Emacs and Jedit.
To complile Denemo from source make sure you have the latest version of autoconf (at least 2.59), libtools, and automake. Go to the directory where you downloaded the Denemo source tree. If it was a tar.gz file make sure you use the standard Linux tools to uncompress it. For CVS type the following commands at the prompt:
aclocal
libtoolize --force
./autogen.sh
./configure, To enable plugins: ./configure --with-plugins='plugin name'(there are currently two plugins available, a Niff convertor and an analysis plugin)
make
make install
For the latest release start with step four above (./configure {options})
For binary packages use your distributions standard tools (RPM and APT-GET)
The main window of Denemo is where all notation tasks are performed;
The main window consists of the standard File and edit menus, a toggleable noteentry toolbar and additional menus for note entry, navigation and editing.
The primary way to interact with Denemo is with the keyboard. Denemo is extremely keyboard-centric, this permits the user to achieve touch type control of musical editing. It is easy to assign key bindings to functions that don't already have a default one (see the section called “Adding Custom Key Bindings”).
In graphical music editing there are at least two dimensions - up and down (the staff lines), right and left (forwards and backwards). With graphic note entry the adding of note values and pitches with the mouse is slow going. Using the number pad forces your hand to leave the touch typing "Home" keys. No wonder most music notation programs rely on midi entry as the primary way of inputting notation.
LilyPond notation removes the up and down aspects because it is plain text (ASCII), which is linear by nature (typing letters). Denemo, a graphic editor responds to the same ASCII (text) commands, permitting you to enter notation linearly and display it graphicly. With Denemo you won't need to reach for your mouse, except on rare occasions. To get the most out of Denemo it is recommended that you do the LilyPond tutorials http://www.LilyPond.org and the VIM tutorial.http://www.vim.org (At the command line type #vimtutor) Denemo uses key maps to permit a flexible method of inputting notation. The default key map adopts a unique note entry system using LilyPond notes and vim shortcuts. These keyboard shortcuts permit rapid note entry for those already familiar with LilyPond note entry. The speedy entry key map uses a more natural system of finger placement to greatly speed up notation entry. An emacs style key map is planned for a later date for those more comfortable with Emacs. If you prefer a different keyboard shortcut scheme, Denemo permits you to easily create your own key map. (see the section called “Adding Custom Key Bindings”). (Input via MIDI keyboard is planned for later versions of Denemo.) IDenemo also provides language specific keymaps for a few langauages.
Denemo is a modal editor, reminecent of Vim. This means that Demeno uses modes to accomplish various tasks. Currently Denemo sports the following modes: Default, Blank, Replace and Insert modes. Default note entry mode is where you will do most of your notating, such as adding notes and rests. Blank mode permits easy entry of polyphony as described in the section called “Polyphony”. Replace mode is an easy way to correct your work and will be described in detail in the section called “Editing”.
To return to default note entry mode just hit the escape key.
Denemo comes with a variety of templates for many of the common ensemble types. To start notating from a Template navigate to the File menu and choose Open Template. The Choose Template dialog box will open. You will see categories of Templates to choose from. Click on your desired category and choose the template you desire. You most likely will need to adjust the time and key signatures to your needs. See the section called “Basic Score Setup” for more details.
This section is based on the speedy key map. To load the speedy key map go to the edit menu, open the key map dialog box and click the add custom key map. Navigate to ~.Denemo/keymaps/ and select speedy.keymaprc. Save this key map as your default key map and continue.
Procedure 2. Creating a New Score
From the Score menu Choose Headers.
In the Headers dialog box fill in the Composer, Title and Subtitles and other fields as needed then click Ok
Next setup your Clef, Key signature, and Time Signature as described next
The easiest way to add clefs, key signatures, and time signatures, is to use the speedy keyboard shortcuts. You can also, navigate to the Attributes menu and use the appropriate sub-menu as needed. Here are the shortcuts for setting up an initial score:
Table 1.
Action | Shortcut | Action | Shortcut |
---|---|---|---|
Add an initial time signature | Ctrl-p | Insert a time signature change | Ctrl-shift- t |
Add an initial key signature | Alt-k | Insert a key signature change | Shift-K |
Add an initial Clef | Ctrl-c | Insert a Clef change | Shift-C |
Choosing a Clef is a simple process, however here is a quick walk-through:
Click on the
Navigate to the
submenu.Click on either the Set Clef or Change Clef dialog box appears.
or menu items. TheOnce the
dialog box appears choose the Clef you want from the drop down list and click OK
To select a Key Signature do the following:
Click on the
Navigate to the Key Signature submenu.
Click on the Add Key Signature or Change Key Signature menu items. The Add Key Signature or Change Key signature dialog box appears.
Choose the key signature you want from the drop down list
Select either Major or Minor key. Click
To select a Time Signature do the following:
Navigate to the
Menu.Click on Add Time Signature or Change Time Signature. The Add Time Signature or Change Time Signature dialog box appears.
Type the time signature into the fractional text boxes.
If you want the Time signature to change for all parts in your score, check apply to all staffs.
Click OK
Be careful to uncheck the apply to all staffs check box if you only want the time change, clef change or key change to apply to the current staff.
While Denemo comes with a variety of templates to choose from, you may need to create your own custom score, The procedure is fairly easy:
Using either theAdd New Staff After Current Staff or type Ctrlshift A If you need to add staff before the current one type Ctrl shift B. To delete the current staff type Ctrl Shift x or Ctrl shift delete.
menu or keyboard shortcuts add as many staves as you need. From the chooseAdjust key signitures, time signitures and clefs as needed.
Note entry is accomplished either using the keyboard or mouse. Mouse entry is provided for those who just can't break out of mouse mode to use the touch typing power of the keyboard. Midi note entry is planned for a future stage. If midi input is a must try Rumor or Emacs midi inputin conjunction with Emacs and Lilypond.
Denemo comes with a Quickreferece Card as a separate file, for our purposes part of it is included below.
Table 2. Denemo Basic Movements and Note entry
Key Combo | Movement | Command | Action |
---|---|---|---|
a | Move cursor to nearest a | y | Enter a whole note at cursor |
b | Move cursor to nearest b | u | Enter a half note at cursor |
c | Move cursor to nearest c | space | enter a quarter note at cursor |
d | Move cursor to nearest d | i | Enter an eighth note at cursor |
e | Move cursor to nearest e | o | enter a sixteenth note at cursor |
f | Move cursor to nearest f | p | Enter a thirty-second note at cursor |
g | Move cursor to nearest g | Ctrl 7 | Enter a sixty-fourth note at cursor |
. | Insert dot | ||
h | Move left | Raise note a half step | |
l | Move right | - | Lower note a half step |
k | Move up | = | Toggle tie |
j | Move down | r | Toggle rest mode |
' | Move up an octave | Ctrl t | Set initial time signature |
, | Move down an octave | Ctrl shift t | Change time signature |
cntrl j | Jump to next staff | alt k | Set initial key signature |
cntrl k | Jump to previous staff | shift k | Change key signature |
Speedy entry uses the note names, apostrophe and comma to navigate to the staff. (left hand) Rhythmic values are entered using the keys above the right hands 'home' keys. ( right hand). Once learned this touch typing method is both quick and easy.
Now that we know the basic movement and note entry keys, a short tutorial is in order .
Lets look at Figure 6, “First Steps”. We see a c major scale and an arpeggio spread over two octaves. Type the letter 'c', the cursor jumps to the nearest c, (if it is in the wrong octave, type a comma [to go down] , or an apostrophe [to go up]) . We have reached middle c, we could start moving the cursor up note by note using the k key and then down note by note using the k key. A faster method however is to type the letter name of each note and moves the cursor to the exact pitch. This holds true for the notes of a chord or arpeggio, we jump to the note by typing the note name and adjust the octave with the command and apostrophe. This works if within an octave.
Often you will want to enter notes that jump a large interval. To speed up note entry in such circumstances help Denemo determine the direction by moving one step in that direction using the j or k keys. If you have entered a note on middle c and want to enter a b one octave higher, hit the k key before entering the note. Another solution to big leaps would be to first type an apostrophe or comma to get into the intended octave and only then type the note name.
Now that we have an idea how to move around the staff we are ready to add note values. Note values are entered using the right hand. Table 2, “Denemo Basic Movements and Note entry” shows the rhythm entry keys as YUIOP . This yields the following: Y= a whole note, U equals a half note, I equals an eighth note,O equals a sixteenth note, P equals a 32nd note and the space bar equals a quarter note. The following acrostic makes it easy to memorize the basic rhythm entry keys. You Use It On Purpose,(space for quarter note)
Denemo provides two methods of adding rests:
Using Rest Mode
Entering Rests while in insert mode.
One way uses the Alt key to with the YUIOP note values to create a few rests quickly. Rest mode is for entering large quantities of rests quickly using the speedy keyboard shortcut r.
Example 1. Inserting Rests
Figure 7, “Rests” contains a whole rest, a half rest, a quarter rest, an eighth rest and a sixteenth rest. To enter single rests follow do the following:
Move the cursor to the measure you want to add the rest.
Type alt y, a whole rest appears
Type Alt u, a half rest appears
Type Alt space, a quarter rest appears
Type Alt i, an eighth rest appears
Type Alt o, a sixteenths rest appears
Type Alt p, a thirty second rest appears
To enter the same rests using rest mode do the following:
Move the cursor to the measure you want to add the rest.
Type r to enter rest mode
Type y, a whole rest appears
Type u, a half rest appears
Type space, a quarter rest appears
Type i, an eighth rest appears
Type o, a sixteenths rest appears
Type p, a thirty second rest appears
Accidentals are added using the plus and minus keys on the keyboard. Double sharps and flats are added with additional pluses and minuses as needed in any particular key signature.
Figure 8, “Accidentals” shows a chromatic scale starting on middle C and ending on middle C. To add accidentals while typing new notes do the following:
Enter a middle C eighth note (type c and then i, if you need to adjust the octave use the command and apostrophe)
Enter another middle C eighth note, this time type the plus sign (+) immediately afterwards, a C sharp appears
Enter a D eighth note (type d and then i)
Enter a D sharp eighth note (type d and then i and then +)
Continue adding notes until you have an exact copy of the first two measures of Figure 8, “Accidentals”.
To add flats enter the b eighth note in measure 3 then type a dash (-) a b flat appears.
Continue adding flats until you have and exact copy of measures three and four.
To add accidentals to existing notation do the following:
Navigate to the note you want to alter using the h,j,k,l motion keys.
You don't have to be on the exact pitch to add an accidental but make sure to be on the note you want to alter.
Type a + to alter the pitch up a half step and a - to alter the pitch down a half step.
This will produce alterations based on the pitch of the original note. So that a f sharp will become a f double sharp and an e flat will become an e.
For those familiar with LilyPond, Denemo handles accidentals in a more intuitive fashion. LilyPond requires you to explicitly name each note with an accidental even if it is part of the key signature, Denemo only requires an alteration if the accidental is part of the key signature, and it keeps the alteration for the entire measure.
To enter a chord choose a pitch and a rhythm for your base note. Next move the cursor to the next chord tone using the letter name for each note or the j and k keys, hit enter to add the note. To make chord entry easier there is a key binding also for the left hand (Ctrl t)as well. Type Enter to toggle chord tones on and off. This add tones or converts rests to a chord tones. Shift Enter removes tones and switches them to rests.
Figure 9, “Chords” three contains a series of chords. To enter chords:
Create a new file and save it to a convient location.
Navigate to the E above middle C. (type the alphabetical note names or the hjkl movement keys).
Type an aand u, a half note g appears.
Move the cursor to the g one line above and type Enter or Ctrl t. Use Enter when you are adding chord tones with the alphabetic note names, and use Ctrl t when using the h,j,k,l, navigation keys.
Experiment moving the cursor to each additional chord tone in the first chord with the h,j,k,l, navigation keys.
Type Ctrl t to add chord tones. Shift Control will delete chord tones if a wrong note is added accidently.
Continue creating chords until Figure 9, “Chords” has been copied.
To alter chord tones chromatically, type the plus sign to sharpen the note at the cursor by one half-step and the minus sign to flatten the current note by a half step in the same manner you sharpen or flatten any pitch in Denemo
Entering a chord when you are already at the end of the measure (the cursor turns red when this happens) may cause your next note to be added to the beginning of the next measure, or even create a next measure if one didn't already exist.
Denemo has a variety of features to speed editing. To ease correction of notes Replace mode limits the amount of keystrokes needed to change pitches. To enter Replace mode
To edit quickly in Denemo use the following keyboard shortcuts:
Table 3.
Command | Function | Comment |
---|---|---|
m | Add a new measure to all staves at the current cursor position | |
M | Add a new measure to all staves at the end of the score. | |
Ctrl shift A | Add a Staff after current Staff | |
Ctrl shift B | Add a Staff before current Staff | |
Ctrl shift x or Ctrl shift delete | Delete current Staff | |
Ctrl s | Set a mark point at the cursor | |
Shift S | Set selection | |
Alt Shift S | Cancel selection | |
Ctrl C | Copy selection to the Clipboard but leave the area selected | |
Ctrl X | Copy the area between the mark point and the current cursor location to the paste buffer and clear the selection | |
Ctrl V | Paste the buffer at the current cursor position |
To perform common editing tasks the procedure is as follows:
Move the cursor to the beat within the measure you want to edit.
Lasso the notes you want to edit: Type Shift S and use the HJKL keys to extend the lasso to include the notes you want to edit.
Next type the command you want to perform, such as copy Ctrl c or cut Ctrl x
Deselect the notes by typing Alt Ctrl S
Navigate to the measure you want to paste the section in the clipboard and type Ctrl v to paste in the notes from the clipboard.
Denemo is meant to be a front end to LilyPond and the recommended way to add dynamics and expressions is to convert the Denemo score to LilyPond notation and then add them. It is possible, however to add both dynamics and phrasing marks from within Denemo itself.
Table 4. Dynamics and Phrasing
Mark | Name | Shortcut | Marks | Name | Shortcut |
---|---|---|---|---|---|
p | Piano | na | ![]() | accent | Alt Shift greater than |
pp | Pianissimo | na | ![]() | acciaccatura | Currently only in LilyPond |
ppp | Pianissanissimo | na | ![]() | appoggiatura | Currently only in LilyPond |
mf | Mezzo Forte | na | ![]() | arpeggio | Currently only in LilyPond |
f | Forte | na | ![]() | downbow | Currently only in LilyPond |
ff | Fortissimo | na | ![]() | downmordent | Currently only in LilyPond |
fff | Fortissatissimo | na | ![]() | downprall | Currently only in LilyPond |
sfz | Sfortzando | na | ![]() | fermata | Shift Asterisk * |
![]() | flageolet | Currently only in LilyPond | ![]() | glissando | Currently only in LilyPond |
![]() | lheel | Currently only in LilyPond | ![]() | lineprall | Currently only in LilyPond |
![]() | longfermata | Currently only in LilyPond | ![]() | ltoe | Currently only in LilyPond |
![]() | rheel | Currently only in LilyPond | ![]() | marcato | Currently only in LilyPond |
![]() | rtoe | Currently only in LilyPond | ![]() | mordent | w |
![]() | shortfermata | Currently only in LilyPond | ![]() | open | Currently only in LilyPond |
![]() | signumcongruentime | Currently only in LilyPond | ![]() | portato | Currently only in LilyPond |
![]() | staccato | Alt . period | ![]() | prall | Currently only in LilyPond |
![]() | stacctissiimo | Ctrl Alt . period | ![]() | pralldown | Currently only in LilyPond |
![]() | stopped | Currently only in LilyPond | ![]() | prallmordent | Currently only in LilyPond |
![]() | tenuto | Shift _underscore | ![]() | prallprall | Currently only in LilyPond |
![]() | thumb | Currently only in LilyPond | ![]() | prallup | Currently only in LilyPond |
![]() | trill | Ctrl Shift R | ![]() | reverseturn | Currently only in LilyPond |
![]() | turn | Tilde | ![]() | upprall | Currently only in LilyPond |
![]() | upbow | Currently only in LilyPond | ![]() | verylongfermata | Currently only in LilyPond |
![]() | upmordent | Currently only in LilyPond | Start Slur | Currently only in LilyPond |
To add an expression to notation as you type, just enter the note pitch and duration you want and immediately afterwards type the keyboard shortcut corresponding to the expression you want. To add expressions after you have already added notes, use the h,j,k,l keys to position the cursor at the note you want to add an expression to. You won't need to be exactly on the note to add expressions especially at the end of a bar.
Look at Example 2, “”, we see a short musical expression. Lets add the expressions:
Using the keyboard shortcuts enter the low b. (the b on the keyboard and a space)
Type the g (the g on the keyboard and a space)
Typer an a w, a mordent above the g.
Denemo won't place expressions optimally, don't worry it will display correctly in the final published output.
Type the second g the same way you did in the previous step.
Type the a and g eighth notes (using the a and g keys with the i key)
Type two a quarter notes (the a key and a space)
Type Ctrl Shift R, a trill appears above the a.
Type an a quarter note.
Type a tilde ~, a turn appears above the final a quarter note.
Type the final b and c eighth notes.
To add Repeats to scores using Denemo:
Currently Denemo doesn't reliably support added repeats. Repeats such be added to the generated LilyPond file before the section called “Publishing”
Type Ctrl \, the Add Barline dialog box appears
Choose the OK.
menu item and clickNavigate to the measure which ends the repeat
Type Ctrl \, the Add Barline dialog box appears
Choose the OK.
menu item and clickFor a first ending Repeat Choose the OK.
menu item and clickMidi playback. Denemo has the ability to sound your chords through /dev/sequencer as you enter them. It accomplishes this by opening /dev/sequencer and holding it open as long as your still entering notes; if you pause, a timeout will elapse and /dev/sequencer will be closed down until you start note-entry again. This is intentional; it is there to facilitate the use of an external midi player for full-score playback or to have multiple instances of Denemo running at once. Sometimes, though (particularly if you have a fast machine), Denemo may hold open /dev/sequencer for long enough that it interferes with an invocation of playmidi. If this happens, simply be patient and try again.
The above holds true if you are not using alsa for midi playback if you are using alsa for midi playback you will need to either use timidity or if your soundcard has midi capabilities load a soundfont.
To configure Denemo to use a sequencer other than /dev/sequencer and play midi. Go to the
menu and choose . The Set Preferences dialog box will open. In the External Midi Player text box enter the name of your midi player. Example 4 has Timidity entered, but it could be any midi player of your choice. Next enter the name of your audio player. Click the Set Playback Output box and click Ok to save your settings and exit the dialog box. To play your score go to the menu and click .In addition to permitting midi playback, Denemo permits playback using C sound. Denemo will create a simple orchestra file on the fly to play your file, or you can use your own custom orchestra file. By default Denemo outputs Csound with the command csound -d -W, currently to get Denemo to accept different flags you must hard code it into the Denemo source code. A simple orchestra file has been kindly provided by Dave Phillips, and can be found in the templates folder.
Creating scores with Denemo is quick and easy. Once your masterpiece is done, don't rush to the file menu and click print, if you do you will be disappointed. The reason for this is that Denemo is a score preparation application. Once your score is ready it must be then forwarded to a utility to publish your score in its final intended format. This could be a PDF for printing hard copy, a png for inclusion in a web page, a dvi for sending to press, to name a few. The publishing act is handled by backends which currently are LilyPond and ABC. If you have used Denemo's LilyPond mode you may have done much of this work already. The steps to publish your score are as follows:
Convert to an ascii format (LilyPond or abc)
Run your score through convert(for LilyPond files)
Run your file through a parser, check for errors and correct them touch up your file (you will need to read the documentation on LilyPond and ABC)
Reparse your file and continue touch ups until the output is how you want it
Output your final product according to your needs
These steps will be detailed below.
Figure 10, “Score prepared in Denemo” a screen shot of the first few measures of a score prepared in Denemo. It has not been edited using LilyPond mode.
is the LilyPond output of the above score opened in Emacs.And is the abc notation of the same file:
Next Figure 13, “LilyPond file with added articulation and dynamics” is the LilyPond file with slurs and dynamics and additional header information added:
Finally Figure 14, “Final output of LilyPond file” is the output from LilyPond as a .png image
This section will explain how to enter advanced rhthms, chords polyphony etc
Display Command. Control-Shift-left: Decrease the minimum display width of all measures by 10 pixels Control-Shift-right: Increase the same by 10 pixels Control-Shift-up: Decrease vertical space alloted to each staff by 10 pixels Control-Shift-down: Increase vertical space alloted to each staff by 10 pixels
LilyPond treats tuplets as fractions with the top (numerator) signifying the amount of notes normally displayed and the denominator the amount of notes to be displayed instead. If this sounds confusing for musicians raised on triplets, pentuplets etc., it is. So Denemo has simplified this by permitting you to use the triplet name to lay them down easily, it also lets you create custom tuplets if you so desire.
Table 5.
Tuplet | Shortcut | Tuplet | Shortcut |
---|---|---|---|
Duplet | 2 | Triplet | 3 |
Quadruplet | 4 | Pentuplet | 5 |
Sextuplet | 6 | Septuplet | 7 |
Octuplet | 8 |
Table 5, “” lists the keyboard shortcut for adding tuplets in Denemo. To add tuplets do the following:
Place the cursor in the place you want to add the tuplet.
Type the number corresponding to the tuplet you want to enter. (For instance a 3 for a tuplet). The tuplet boundary markers Times 2/3 and Tuplet End appear at the top of the staff. see Figure 15, “Tuplet Markers”
Enter the pitches and durations of the tuplet using the pitch names (a, b, c, d, etc.) and the duration names (yuio space).
Next with the l key move the cursor after the Tuplet End marker.
If you forget to move the cursor beyond the End Tuplet marker Denemo might crash, causing loss of data! This is a bug which is being fixed but be warned!
S: insert a stemboth directive +: stemdown->stemboth, or stemboth->stemup -: stemup->stemboth, or stemboth->stemdown
Under the menu item Other->Insert/Edit Figured Bass is a dialog to enter figures for editing figured basses in the LilyPond output. This is currently only useful when editing a LilyPond file with a figured bass in the score (it can be an empty skeleton, see examples/figuredBassTemplate.ly). It is also possible to use the LilyPond text window to edit directly (see README.LilyPond)
Denemo permits the use of mutiple staves for part work, as well as allowing multiple voices on a single staff. To add voices to the current staff do the following:
Go to the measure(s) where you want to add the second voice
Open the the add second voice to current staff dialog box, either by clicking the
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.
Click Ok to close the dialog box.
Next navigate to the new voice, either with by clicking the
menu and then clicking ToNextScore, or using the keyboard shortcutt cntrl j((shift F)The stem positioning positioning may not look correct in the Denemo window, but it will look correct in the published output.
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.
For the beats that contain notes just enter them as you would normally see section x.
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.
To leave the new voice and return to the previous one type
.
Denemo comes with a number of premade keyboard shortcut maps.These include shortcuts for languages besides English as well alternate key maps made by developers and users of Denemo. It is easy to make your own key map or tweak the key binding of a particular shortcut. This section will detail how to create custom keyboard shortcuts, or an entire custom key binding map.
The Customize Keybindings Dialog box is where all changes to Denemo key bindings are done. This dialog writes to either the default key bindings file or to a custom file of your choice. There are two ways to edit a keybindng file:
Use the Customize Key bindings Dialog box.
Edit the file directly in a text editor
Denemo lets you edit LilyPond files. Currently there are two ways you can interact with LilyPond files using Denemo:
Create your score and then generate LilyPond output
Open a LilyPond format file and edit it both graphically and as text.(This option is currently unavailable in the latest Denemo release.)
These two methods of permit a great deal of flexibility. If you desire to do all your notation within Denemo's graphical environment but still use LilyPond's parser and conversion engine to create PostScript for printing, just do all your work in Denemo and save it as a LilyPond file. You can then run the resulting file through LilyPond as you would any other LilyPond file. If you want to combine the ease of graphic entry with the power of text entry.(in many cases text entry is actually faster). The process of editing a lily pond file within Denemo is as follows:
Open a LilyPond file the same way you would open up a file created in Denemo.
Currently not all LilyPond files will be editable within Denemo. This is dependent on which version of LilyPond you file was created with. Denemo however will open files created within LilyPond and exported to LilyPond format.
The file is broken up into chunks, which are displayed as text in a specialized text editor which pops up under the main notation window.
The Text Window contains the following buttons
, , . The Top Level button take you to the LilyPond header letting you edit header information such as Title, Composer Tagline etc. Interspersed In This Top Level Text Is Music Data - You Can Step Around At The Top level using the previous and next buttons. Anything you type here will be saved when you save your work. The music data is what is being displayed in the normal Denemo graphical window. When you edit graphically the LilyPond text corresponding to the current note is shown in the text window. You select between these two windows with the toggle window button. You can move about in the LilyPond text for the current measure using the previous and next buttons. You can edit the notes textually here, but the changes are not automatically reflected in the graphical window - you have to hit reload for that..One of the things you will notice is that when you have the lily text loaded, the cursor steps on items, such as the initial key signature setting, barlines etc. So if some directive is placed between two notes then the cursor will step on to it, allowing you the option of editing in the text window. The text of the measure is split up into chunks, one for each note, directive etc in the measure. At any stage you can click the reload button. This saves to a temporary file and the reads back in. If you have introduced some LilyPond syntax errors then you are offered the chance to re-edit the file and reload. If you have the environment variable set (eg to emacs or vi) then that editor is started with the line number where the problem occurred.
Having the top level text available means you can edit voices separately or put them temporarily onto separate staves, all without quitting the program - the technique is called "commenting out" and I illustrate this in the example below. The normal way to use Denemo to write a LilyPond file is to start with a template (though it could be some previous, similar piece). The simplest thing you can have is \score { \notes { c'' }} which gives you a score with one staff with a single note, middle c. This is only useful for the simplest of purposes.
A more extensible example is the file in examples/simple.ly Clef = \clef treble Key = \notes \key c \major TimeSig = \notes \time 4/4 MyViolin = \context Voice = MyVln \notes { \Clef \Key \TimeSig c''4 } MyViolinStaff = \context Staff = MyStaff \MyViolin > \score { \MyViolinStaff \paper {} }
The names starting My... are just any made up names you like. In this case MyVln is the name of the voice while MyViolin is the name of the music that has been given to that voice. The music found in the score block at the end is what Denemo displays. You can load up this file, edit the Key and TimeSig definitions, hit reload and start putting in notes Denemo style, saving to a file of your choice at the end.Another template examples/header.ly gives you access to all the titling features of LilyPond and so on.One of the benefits of editing LilyPond is better handling of voices. The examples/twovoices.ly file shows how two voices can be put on one stave. It looks like this:
Key = \notes \key c \minor TimeSig = \notes \time 3/4 ViolinI = \context Voice = VlnI \notes { \Key \TimeSig c''4 d'' e'' } ViolinII = \context Voice = VlnII \notes { \Key \TimeSig a''4 b'' c'' } Violini = \context Staff = Vlns \ViolinI \ViolinII > \score { \Violini \paper {} }
However, Denemo doesn't give an easy way of editing the second voice. One way you can do this is to "comment out" the first voice by putting a % sign at the start of the line that puts it on the staff, thus Violini = \context Staff = Vlns %\ViolinI \ViolinII
when you reload, the first voice is temporarily hidden. However you only see one voice at a time this way. A bolder way is shown in examples/editTwovoices.ly where a temporary staff is created with the same second violin part as appears in the real staff. Now you can edit either voice and see them both on the top staff. When finished you comment out the extra staff thus \score { \Violini % \tempStaff > \paper {} }
and you are ready to print. I should say that Denemo was not written expecting the same music in two staffs, so there may be bugs lurking for the adventurous.
A third way is to create a new score block in the file with just the voice you wish to edit - under the Navigate menu is the option to cycle through the score blocks in the file. If the score block has no \paper block then it will not print out and can just be used for editing. These multiple score blocks are how you include several movements of a piece in a single file - you can then print them all at once getting the page numbering correct.
This version of Denemo for LilyPond editing is just a proof-of-concept exercise really. Before fleshing out the (large) parser with actions for all the rules that LilyPond has I wanted to see that this would work. There is a lot of LilyPond which this version will not read; note especially that include files are not opened, and only the default Dutch note names are understood and the \relative type of notes are not handled, nor lyrics,etc etc. On the plus side, there is the full set of dynamics (Denemo had only a subset), tuplets fancy \bars, \partial, \grace, \repeat volta 2, \alternative and much more. Some bugs: the ties do not show in Denemo when read back in - this is a bit structural and needs a design decision to fix - and if you edit the duration of the last note in a measure the first note of the next measure may need to have its duration set. The handling of the barline '|' is not nice - again we should decide where we are going with this sort of thing. And watch out for deleting the key signature etc if you delete the first measure - on reload you will have to add them back in. Also beware that this version leaks memory - Adam's Brandeburg score gobbles up 2% of my RAM everytime I hit reload. Several of the Denemo menu items are redundant when you have a lily file loaded - for example you set headers just by typing in the text (see examples/headers.ly for a complete set of possibilities) - these menus just refuse to respond - they should be hidden really. The LilyPond editing stuff is only enabled when you build with gtk version 2 ie ./configure --enable-gtk2 it could all be done in gtk 1.0 no doubt, but I hope people will have moved on before we get round to it