Songwrite 2 version 0.3 – user guide

Jean-Baptiste “Jiba” LAMY (jibalamy @



Copyright (c) 2002-2011 Lamy Jean-Baptiste.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

1  Introduction

Songwrite 2 is a music score and songbook editor. This software is especially designed for musicians who do not master solfege (like me!) and to Linuxian musicians. Songwrite 2 can edit staffs, but also tablatures (for guitar, bass, banjo,...) and flute fingerings (for tin whistle, recorder,...); it also manages lyrics. Songwrite 2 can play and print the partitions.

Songwrite 2 is a free software (libre software) written in Python. It is available under GNU GPL (including this documentation). Make pleasure to the author: do not confound "Free Software" and "Freeware"! In addition to being "Freeware", a Free Software is available as source code; it is allowed to modify and redistribute freely these sources.

1.1  Requirements for Songwrite 2

Python, Gtk, Cairo, PyGtk and PyCairo are required for running Songwrite 2, as well as the dialog box generator EditObj 2.

LATEX and GhostScript are required for printing.

Evince is required for viewing PDF files before printing; any other PDF viewer can be used too.

Timidity is required for playing partitions; any other midi player can be used too (e.g. playmidi).

All these pieces of software should normally included in any “good” Linux distribution, but EditObj 2. See section ?? for using other programs than the default ones.

1.2  Mailing list

To subscribe to the Songwrite mailing, send a mail at . To unsuscribe, send a mail to .

1.3  History

Long ago, Songwrite 2 was called Songwrite 1 and even GTablature. Here are the various versions in a chronological order:

  1. GTablature was the first version of a tablature editor, written with Python and Gtk.
  2. Songwrite 1 was a rewrite of GTablature using Tk instead of Gtk. In fact, switching from Gtk to Gtk 2 was a pain, and thePython Gtk API was instable. This version also introduced the use of EditObj 1 for generating dialog boxes.
  3. Songwrite 2 is a full rewrite of Songwrite 1, still in Python but with a new interface based on Gtk 2 and Cairo. It seems that Python Gtk2 API has improved in the while! Songwrite 2 uses now EditObj 2, my new dialog box automatic generator, and it also has a new plugin systems.

2  Editing a song

Songwrite 2 is designed to edit “songs” (sorry for musicians that play without singing :-). When it starts, a new song is created and edited. By default, a single guitar instrument is present.

2.1  Song

The EditionSong and instruments displays the following dialog box, which allows to modify the song’s properties (you can also double-click on the song’s title).

It is possible to define the title, the authors, the copyright, and to add comments. The song’s language is used when exporting lyrics to LATEX. Finally, the “print font size” and “number of bars per line” options define the partition’s size when printing.

2.2  Instruments

The Instrument menu allows to add or to remove instruments in the song. In Songwrite 2, the various instruments’ partitions are organized vertically, and the lyrics are treated in the same way. Here is the InstrumentAdd menu’s dialog box:

For the same instrument, several views are sometimes available, for example a guitar partition can be represented as a tablature or as a staff.

In the Songwrite 2 main window, simply click on the corresponding tablature or staff to select an instrument. The InstrumentEdit menu allows to edit the instrument properties (you can also double-click on the instrument icon or the staff’s key).

The properties available depend on the instrument and the view, for example the “capo” (capodastre) property is available for guitare but not for vocals. This dialog box allows to choose the MIDI sound bank used for playing (instrument), the partition tonality (tonality, sometimes called armor), the key(s) displayed on a staff (G or F key), the tuning of a guitar, etc. Finally, the “view as” property allows to change the instrument’s view: using it, you can transform automatically a tablature to a staff, or vice versa.

2.2.1  Tuning string instruments

The tuning dialog box allows to modify the tuning of an instrument. It is possible to add, remove or reorder the strings, and to modify the strings open note. For drum instruments, the tuning is similar, each “string” corresponding to a drum patch.

If your favorite instrument is missing in the add instrument dialog box, do not hesitate to mail me its tuning, so as I can add it in the next release! It is also possible to implement “special” tuning such as the first string of the Banjo 5G, with a little Python code (see the additional_instruments plugin, in file songwrite2/plugins/additional_instruments/

2.2.2  Tin whistle tonality

In the instrument mode, the “instrument tonality” property can be used to choose the tin whistle tonality; it defaults to D. It is different from the partition’s tonality, for example a tin whistle in D can play a tune in G.

2.3  Rhythm and bars

To select on or more bars, you need to select at least one note in the desired bar. The EditionRhythm and bars menu edits the select bars (or all bars if none are selected), with the following dialog box:

The two first figures correspond to the rhythm (here, 4/4). It is also possible to activate syncope picking; for 6/8 rhythm, it corresponds to a “jig” rhythm.

Only x/4 (whatever x is) and y/8 (where y = 3, 6, 9, 12,...) rhythms are currently supported.

Finally, the EditInsert/remove beats and EditInsert/remove bars allow to insert or remove a given number of beats or bars at the current location (use negative number for removal).

2.4  Entering notes

To write a melody, click on the partition at the location of the first note. Then add a note by pressing keys 0 to 9: for tablatures, it correspond to the fret number, for staffs, only 0 is used, and for tin whistles, the figure correspond to the number of closed holes on the flute (press a second time on the same key to obtain the octavo).

It is possible to select several notes by dragging the mouse. The + and - keys modify the selected notes’ pitch; with staffs, it allows for sharps (#) and flats (b), and for tin whistles, half-holes. The Note menu proposes several submenus for transposition or for rearranging the selected notes at a given fret number (for tablatures). To obtain additional lines above or below a stafs, simply move a note enough high or low with the + or - key.

Directional keys can be used for moving around in the partition; in Songwrite 2, the horizontal distance is proportional to time. The current note duration is used by Songwrite 2 for determining the horizontal cusor speed, you may need to change the current duration for moving faster or slower.

Notes’ duration can be modified with the toolbar’s buttons, the Duration menu or the * (inscrease duration) and / (reduce duration) keys, however Songwrite 2 automatically adjust the note duration when you enter the next note (NB for some instruments that play several voice simultaneously, it can be problematic; in this case, it is possible to desactivate this behavious in the preferences).

2.4.1  Copy and paste

Songwrite 2 uses a Linux-like copy-paste system: to copy a group of notes, select them. To move the selection, perform a drag-drop on one of the selected notes. Press Escape to cancel the drag drop.

To paste the notes selected previously, click the mouse middle button (usually the mouse roll). It is possible to adjust the exact pasting location by moving the mouse while keeping the middle button pressed.

Here again, Songwrite 2 uses the selected duration for aligning horizontally the pasted notes.

2.4.2  Special effects

Songwrite supports the following special effects: accentuation, hammer/pull/legato, slide, dead notes, bend, tremolo, roll, harmonic, fermata, appoggiatura and strumming directions. Special effects can be added using the toolbar, the keyboard shortcuts or the dialog box of the NoteEdit menu.

For effects that link two notes (hammers/pull/legato and slides), the effect must be set on the first note. For rolls, the effect should be set on the lower note of a chord (although it is still allowed to apply it to all the note of the chord, as needed in Songwrite 1).

Notes can gain new properties depending on their special effect, e.g. the bend pitch property for bends.

It is not possible to put more than one special effect of the same category on the same note.

2.4.3  Rests

Rests are added automatically by Songwrite 2, when printing or exporting to PDF.

2.4.4  Keyboard shortcuts

up, down, left, right
move the current position
origin, end
go to the beginning or the end of the song
0 to 9
add note (tablatures: fret number, tin whistle fingering: number of covered holes, staffs: use only 0)
+, -
increase or decrease the note pitch
/, *
increase or decrease the note duration
toggle doted duration
toggle accentuation
delete all selected notes
normal (remove special effect)
slide to the following note
hammer, pull or legato
dead note
strumming direction up
strumming direction down
strumming direction down (with thumb)
plays from the current position

2.5  Repeats

Repeats are entered in the dialog box of the EditionRepeats and playlist menu. To add new groups of bars in the playlist, select the desired bars and click the “+” button on the left of the dialog box. To repeat several time given bars, add them several times.

Only playlist which can be translated into musical symbols (“:” with symbol “1”, “2”,...) are correctly shown and printed.
Songwrite 2’s title bar display the number of the currently selected bar.

2.6  Lyrics

In Songwrite 2, lyrics are managed as instruments, and they are added using the InstrumentAdd dialog box. Lyrics blocs must be placed just below the corresponding vocals instrument (however, it is possible to have several lyrics blocs below the same vocals, when these lyrics share the same vocal melody). Typically, one uses a lyrics blocs for each strophe, and one for the chorus.

Then, click in the lyrics rectangle and type the text. Songwrite 2 automatically aligns the syllables on the vocals, and reduce the font size if needed. The following keys have a special meaning:

space, tab
next syllable
next syllable in the same word
sing the previous syllable over two notes (warning, it works ONLY if the two notes are linked, with a hammer / pull / legato special effect)
\\ (two backslashes)
end of the verse (breakline when printing)
new lyrics on the same vocals

Finally, as the final print out is done with Lilypond and LATEX, you can use LATEX code in the lyrics!

2.7  Playing, printing, exporting and importing

When your song is ready, you can play it with the SongPlay menu and its friends.

The File(Preview) print menu exports the song to PDF and display the result (by default with Evince). For printing, use the print command in Evince.

Finally, the FileImport and FileExport menus allow import and export with the following formats:


Songwrite formatXXXML format (Songwrite 1 and 2 .sw.xml files)
Rich Midi TablatureXXMidi with meta event for string numbers
Ascii tablature(X)XImport works with Songwrite 2 Ascci tab, but may not work with other...
Lilypond XNo lyrics
PostScript X 
Guitar Pro(X) Experimental Guitar Pro 3 / 4 import
ABCX Used for traditionnal music (e.g.

2.7.1  Command line

In command line, –import and –export options are used to import and export files.

For example, the following command line imports a file in ABC format, changes the view type to tin whistle fingering, and exports it in PDF:

songwrite2 --import abc --script "from songwrite2.plugins.fingering \

    import TinWhistleView ; song.partitions[0].set_view_type(TinWhistleView)" \

    --export pdf fichier.pdf

3  Songbook

A songbook allows to regroup several songs together. To display the songbook dialog box, either use the FileNew songbook menu, or open an already saved songbook (with FileOpen). The dialog box allows to modify the songbook’s properties, and to add song in the book or to remove them (using the + and - buttons on the left). It also allows to switch rapidly from a song to another, by clicking them on the list.

Songwrite 2 does not save the songs inside the songbook, but only their (relative) filename, so you must keep your song files!

When a songbook is opened, the FileSave menu saves both the current song and the songbook. The FileSave as menu saves only the current song, while the FileSave songbook as menu saves only the songbook.

Finally, use the File(Preview) print songbook menu for printing the songbook.

4  Configuration

To change the Songwrite 2 configuration, click the EditPreferences menu. The default configuration should fit for almost all Linux distributions.

This document was translated from LATEX by HEVEA.