Commit 750aceb5 authored by SVN-Git Migration's avatar SVN-Git Migration

Imported Upstream version 1.1.4

parent 4f3b087a
cmake_minimum_required(VERSION 2.4)
project(frescobaldi NONE)
set(VERSION "1.0.2")
set(VERSION "1.1.4")
option(HANDBOOK "Install Frescobaldi User Guide" ON)
option(BYTECOMPILE "Byte-compile Python modules on install" ON)
......@@ -31,8 +31,14 @@ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/frescobaldi DESTINATION ${BIN_INSTA
else(EXISTS ${CMAKE_SOURCE_DIR}/prebuilt)
endif(EXISTS ${CMAKE_SOURCE_DIR}/prebuilt)
Changes in 1.1.4 -- July 28th, 2010
* Bugfixes:
- Fix Point and Click when running from 'run' script
Changes in 1.1.3 -- July 25th, 2010
* General:
- Tabs can be reordered (can be turned off)
- Tabs don't get automatic shortcuts, they sometimes conflict with ours
- the right tool dock has been made slightly larger by default
* New: Session Management, in two ways:
- Basic session management: if you log out with Frescobaldi running and then
back in, Frescobaldi will reopen the documents that were open at logout.
- Advanced named session support. A session defines a list of open documents,
and optionally a base directory. More features will be added later to be
able to use this as a light-weight project tool.
* Context sensitive LilyPond help:
- added support for internals reference: contexts, grobs and engravers
* Bugfixes:
- Fix crash when editing toolbars
* Installation:
- A 'run' script has been added to run Frescobaldi from the tarball (or even
SVN) without installing.
- Using CMake out-of-source is now easier: icons and translations are not
rebuilt anymore so the Frescobaldi install procedure does not need LilyPond
and 'convert' (from ImageMagick) anymore. The icons and translations are in
the prebuilt/ directory. Simply removing this directory restores the old
behaviour (useful when you want to develop Frescobaldi from a release
tarball, although a fresh SVN checkout is recommended in that case).
* Translations:
- Dutch updated by Wilbert Berendsen
- Turkish updated by Server Acim
Changes in 1.1.2 -- July 8th, 2010
* New features:
- Segno bar line added (available in LilyPond 2.13.19 and higher)
- It is now possible to configure the path that is used to find
files that are included via the LilyPond \include command.
- New 'Close other' action to close all documents except the current
- Print and View icons in the toolbar to print music and open PDF and MIDI
files in their external helper applications
* Printing:
- Printing generated PDF files now uses a print dialog, instead of just
sending the PDF to the 'lpr' command.
* Run LilyPond:
- warn if the document contains a conflicting point and click setting
* General:
- print and email actions have moved to the File menu
- close button on document tabs (can be turned off in Settings->Editor Comp.)
- warnings and notifications have a "dont ask again" checkbox, and can be
turned back on in the settings
- progress indicator saves the build time in document metainfo
* Autocompletion:
- only popup completions from the expansion manager on blank lines
* Settings dialog:
- the settings have been organized in more logical groups
* Installation:
- building the icons from SVN or out-of-source requires LilyPond >= 2.13.19
* Translations:
- Dutch updated by Wilbert Berendsen
- French updated by Valentin Villenave
- Italian updated by Gianluca D'Orazio
Changes in 1.1.1 -- May 3rd, 2010
* LilyPond Documentation Browser:
- Indexing help items fixed with new website (2.13+)
* Fixed Python error message on opening settings dialog with recent SIP/PyQt
* Translations:
- Dutch updated by Wilbert Berendsen
- Turkish updated by Server Acim
Changes in 1.1.0 -- March 26th, 2010
* It is now possible to use multiple versions of LilyPond easily from within
Frescobaldi. LilyPond instances can be configured under Settings, Paths.
There is also a custom Run LilyPond command where a version can be chosen,
among other options. And Frescobaldi can be configured to automatically
choose a LilyPond version according to the document's \version statement.
* Score Wizard, Choir:
- New lyric option "Distribute stanzas" to spread the stanzas between staves.
This option only has effect when there are three or more staves, and is very
useful if there is a large number of stanzas that apply to all voices.
- Lyric placement is fine-tuned when LilyPond >= 2.13.4 is used, using the
staff-affinity setting, so lyrics are placed close to the staff they belong
to. If lyrics apply to multiple voices, the are centered between staves.
This improves the layout of vocal music if the systems are vertically
streched by LilyPond to fill the page nicely.
- New checkbox to create rehearsal MIDI files. If checked, one MIDI file is
generated for each voice, with the voice standing out in a clear sound and
the other voices in a lower volume. Repeats are unfolded and lyrics for the
current voice are also added to the MIDI file.
* Score Wizard, Score settings:
- New checkbox option to wrap the score in a \book block.
* New dialog to insert special characters from the Unicode table, with the
ability to assign keyboard shortcuts to often used characters.
* New command: Copy Lyrics with hyphenation removed
* Expansion Dialog:
- has now some documented default keyboard shortcuts
* Quick Insert Panel:
- New buttons for \halfopen and \snappizzicato
- It is now possible to assign keyboard shortcuts to the articulation buttons
* Repeat last expression: don't append space
* Email files: select files with checkboxes instead of Ctrl+Click
* Installation:
- byte compiling the Python modules can be supressed by adding
-DBYTECOMPILE=NO to the cmake command line
- building the icons from SVN or out-of-source requires LilyPond 2.13.11+
* Some workarounds for subtle SIP 4.10/KDE 4.4 garbage collection bugs
Changes in 1.0.2 -- February 18th, 2010
* Make Frescobaldi working with SIP 4.10 and KDE 4.4
......@@ -82,7 +194,7 @@ Changes in 0.7.17 -- November 29th, 2009
- Fix crash when swichting to a document opened using the Open File dialog
when multiple files were opened at the same time
- All pitch manipulation functions better detect the end of unbracketed markup
expressions like: g g g-\markup \sharp g g g. Frescobaldo now knows the
expressions like: g g g-\markup \sharp g g g. Frescobaldi now knows the
number of arguments each markup command has and will not mistake the g after
\sharp for a markup argument.
* Installation:
......@@ -3,31 +3,60 @@ How to install Frescobaldi:
To install Frescobaldi in /usr/local:
cmake .
make install
cmake .
make install
To install Frescobaldi in your distributions default KDE4 directory (also
recommended for creating installable distribution packages):
cmake . -DCMAKE_INSTALL_PREFIX=$(kde4-config --exec-prefix)
make install
cmake . -DCMAKE_INSTALL_PREFIX=$(kde4-config --exec-prefix)
make install
Out-of-source builds are also possible, e.g.:
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$(kde4-config --exec-prefix)
make install
Try Frescobaldi without installing:
If you install Frescobaldi from a released tarball, the LilyPond musical symbol
icons in pics/ and the translations in po/ are already prebuilt.
Just run the 'run' script:
If you build Frescobaldi out-of-source (or if you install Frescobaldi from SVN),
those icons and translations need to be generated. In that case you also need
LilyPond, ImageMagick and GNU Gettext.
If your system is missing some necessary software, the script will inform you.
If everything is fine, Frescobaldi will be added to your Applications menu
and started right away without installing anything. An executable 'frescobaldi'
will be created in the current directory as well.
Running the 'run' script again will give you the option to remove Frescobaldi
from your Applications menu.
Installing Frescobaldi from SVN:
If you install Frescobaldi from a SubVersion checkout, you need a very recent
LilyPond, ImageMagick and GNU Gettext to built the LilyPond-generated icons and
the translations.
If you install Frescobaldi from a released tarball (e.g.
frescobaldi-1.1.3.tar.gz), the icons and translations are already prebuilt.
The shell script creates a tar ball from a SVN checkout.
This is the development (1.1) branch of Frescobaldi. It depends on:
- Python 2.6
- python-dbus (
- Qt >= 4.6
- SIP >= 4.9.3
- PyQt4 >= 4.6
- KDE4 >= 4.3.2. Modules needed: kdelibs, Okular and Konsole
- PyKDE4 >= 4.0.2 Rev 2
You also might need to install some of the the corresponding -dev packages from
the above to install Frescobaldi from this source package.
CMake command line options:
......@@ -45,33 +74,26 @@ command line.
If you get errors about missing Python modules, but you're sure that they are
installed, CMake might be finding the wrong Python version. If you e.g. install
PyKDE4 inside Python 2.5 but CMake is finding Python 2.6 then you get errors
PyKDE4 inside Python 2.6 but CMake is finding Python 2.5 then you get errors
about missing modules. You can fix this by explicitly defining the Python
interpreter to use. Add -DPYTHON_EXECUTABLE=/usr/bin/python2.5 to the cmake
interpreter to use. Add -DPYTHON_EXECUTABLE=/usr/bin/python2.6 to the cmake
command line in that case.
If you install Frescobaldi from a SVN checkout (or have removed the prebuilt/
directory) the icons in pics/ will need to be rebuilt using LilyPond and convert
(from ImageMagick). You can define the locations of those programs using the
LILYPOND_EXECUTABLE and the CONVERT_EXECUTABLE CMake variables. Otherwise the
programs are searched for in the PATH environment variable. You need at least
LilyPond-2.13.19 to build the icons.
Frescobaldi depends on:
- KDE 4.1.2 or higher, esp. kdelibs, Okular and Konsole
- Qt 4.4 or higher
- Python 2.4, 2.5 or 2.6
- python-dbus (
- SIP 4.7.7 til 4.10
- PyQt4 4.4.3 or higher
- PyKDE4 4.0.2 or higher
KDE 4.2 or higher is recommended. If you use KDE 4.1,
you also need lilypond-kde4 (
You also might need to install some of the the corresponding -dev packages from
the above to install Frescobaldi from this source package.
If you install Frescobaldi from a SVN checkout (or have removed the prebuilt/
directory) the translations in po/ will need to be rebuilt using Gettext's
msgfmt tool. If this tool is not in your $PATH, you can define the
Other useful programs:
Other useful programs to use with Frescobaldi:
Some other useful programs to use together with Frescobaldi are:
- LilyPond (of course!)
......@@ -26,13 +26,16 @@ features:
* A powerful Rumor panel, using the Rumor program to enter music by playing it
on a MIDI keyboard or even your computer keyboard
* Quick buttons to open, send, play or print LilyPond-generated files
* Sessions to easily edit on groups of related files
* Built-in LilyPond documentation browser with editor context menu support
(right-click a command in the editor to lookup its documentation)
* Comprehensive User Guide with help buttons on all dialogs
* Other tools like built-in terminal, blank staff paper generator, etc.
* Translated into Dutch, English, French, German, Italian, Czech, Russian,
Spanish, Turkish and Polish.
Spanish, Galician, Turkish and Polish.
Frescobaldi is Free Software, freely available under the GNU General Public
License (GPL). You are welcome to help find bugs and add features or
translations. Frescobaldi is developed at
See INSTALL for installation instructions.
TODO for Frescobaldi (ideas)
TODO for Frescobaldi (also some random ideas)
Music length related (needs infrastructure to compute duration of music
......@@ -13,6 +14,12 @@ expressions):
- auto-insert comments with the bar number (every 5 measures or so)
Pitch related:
- command to re-interpret pitches (change alterations, e.g. based on key
signature), useable to fix wrong accidentals after import of a MIDI file
Filtering music expressions:
- split out e.g. articulations or dynamics and put them in a separate expression
......@@ -20,15 +27,21 @@ Filtering music expressions:
- (re)combine music expressions
- Add/remove slurs etc. to selected music fragment
Score Wizard:
- support nested groups in part list (e.g. StaffGroup or GrandStaff)
- separate \score { } for the MIDI output
- idea: support multiple movements (i.e. number of scores) (idea of M. Moles)
- idea: some font settings, e.g. default fonts, title font, etc.
- idea: load/save score setups
- Session save and restore (possibly combined with named sessions like Kate)
- Support other programs besides LilyPond like mup, abc, pmw, cmn, etc.
......@@ -38,8 +51,11 @@ Editing:
such as paper size, raggedness, margins, bar and pagenumbering, headers,
distances, staff size, default fonts, etc.
- Full normalize the source document layout (indent properly, line breaks at
sensible places, add { } to ambiguous markup constructs, etc.
- Command to fully normalize the source document layout (indent properly, line
breaks at sensible places, add { } to ambiguous markup constructs, etc.
- Mixed indent (indent with tabs and/or spaces without converting them to each
- Convert plain input text to markup commands:
- easy entry of lyric text strophes
......@@ -56,6 +72,33 @@ Editing:
- Document structure browser
Running LilyPond:
- separate "server" process that runs LilyPond and communicates with clients
like Frescobaldi. This way a user can exit Frescobaldi while a job is
running, and have job feedback from the systray and can e.g. start LilyPond
jobs from a file manager service menu. The server process exits when there is
nothing to do, and is automatically started when there is something to do.
Communication should be done via D-Bus.
- A wizard to download LilyPond binaries from and install them into
a local directory to explore different versions of LilyPond without needing
to install them via a distribution's package manager.
PDF Preview:
- tighter coupling with editor part, possibly by using a custom PDF (or even
SVG) widget instead of embedding Okular:
- highlight object text cursor is at
- right-click object and show relevant options in context menu (by looking
at the linked position in the document the type of object can be determined)
- generate \override #'extra-offset command (or other offset types) by
simply dragging an object
- select rectangular section in PDF also selects relevant portion in input
- quick PNG of current document (e.g. copied to clipboard or some snippet board)
......@@ -78,25 +121,34 @@ User interface:
- list view for opened documents (like Kate)
- import wizard for MIDI files and other files
- export to OpenDocument Text using the LilyPond EPS backed (generate vector
or raster images for every system and then put them together as paragraphs).
If possible put on clipboard for direct pasting in apps like
- Cut and assign: check mode of cut-out fragment and reuse (e.g. \lyricmode)
- Context sensitive context menu to do all sorts of things on the current
cursor position or text selection
Pitch related:
- transpose music
- relative -> absolute and vice versa
Score Wizard:
- more than one voice for Tablature instruments (Guitar, Jazz Guitar)
New LilyPond features (as soon as 2.14 is out):
- snappizicato articulation
- halfopen articulation
- Print dialog for printing generated PDFs, instead of just calling 'lpr'
- Session save and restore (combined with named sessions like Kate)
......@@ -5,53 +5,67 @@
import sys, os
missing = []
def mkver(major, minor, release):
return major * 65536 + minor * 256 + release
# these are checks for modules Frescobaldi needs, but you can tailor it
# for other needs.
def checkModules():
missing = []
for module in (
# these are checks for modules Frescobaldi needs, but you can tailor it
# for other needs.
for module in (
"sip", "PyQt4", "PyQt4.QtCore", "PyQt4.QtGui",
"PyKDE4", "PyKDE4.kdecore", "PyKDE4.kdeui", "PyKDE4.kparts", "PyKDE4.kio",
"dbus", "dbus.mainloop.qt",
exec "import %s" % module
exec ("import %s" % module) in globals()
return missing
if missing:
sys.stderr.write("The following Python modules are missing:\n")
for m in missing:
sys.stderr.write(" %s\n" % m)
errors = []
mkver = lambda major, minor, release: major * 65536 + minor * 256 + release
def checkVersions():
# versions
errors = []
# versions
if sys.version_info[:2] not in ((2,4), (2,5), (2,6)):
errors.append("Python version %s.%s.%s found, but need 2.4, 2.5 or 2.6." %
if sys.version_info[:2] != (2, 6):
errors.append("Python version %s.%s.%s found, but need 2.6.\n"
"(Use cmake -DPYTHON_EXECUTABLE=/path/to/python2.6)" %
if sip.SIP_VERSION < mkver(4, 7, 7):
errors.append("(python-)sip version %s found, but need at least 4.7.7." %
if sip.SIP_VERSION < mkver(4, 9, 1):
errors.append("(python-)sip version %s found, but need at least 4.9.1." %
if PyQt4.QtCore.PYQT_VERSION < mkver(4, 4, 3):
errors.append("PyQt4 version %s found, but need at least 4.4.3." %
if PyQt4.QtCore.PYQT_VERSION < mkver(4, 6, 0):
errors.append("PyQt4 version %s found, but need at least 4.6.0." %
if PyKDE4.kdecore.pykde_version() < mkver(4, 0, 2):
if PyKDE4.kdecore.pykde_version() < mkver(4, 0, 2):
errors.append("PyKDE4 version %s found, but need at least 4.0.2." %
if dbus.version < (0, 82, 4):
if dbus.version < (0, 82, 4):
errors.append("python-dbus version %s found, but need at least 0.82.4." %
'.'.join(map(str, dbus.version)))
if errors:
return errors
if __name__ == "__main__":
missing = checkModules()
if missing:
sys.stderr.write("The following Python modules are missing:\n")
for m in missing:
sys.stderr.write(" %s\n" % m)
errors = checkVersions()
if errors:
sys.stderr.write("Some packages have outdated versions:\n")
for e in errors:
sys.stderr.write(e + '\n')
......@@ -273,29 +273,52 @@ Text=\\new Lyrics \\lyricsto "(|)" { }\n
Text=\\times 2/3 { (|) }
Default Shortcut=Ctrl+3
Name=Voice One
Name[nl]=Stem 1 (\\voiceOne)
Default Shortcut=Alt+1
Name=Voice Two
Name[nl]=Stem 2 (\\voiceTwo)
Default Shortcut=Alt+2
Name=Voice Three
Name[nl]=Stem 3 (\\voiceThree)
Default Shortcut=Alt+3
Name=Voice Four
Name[nl]=Stem 4 (\\voiceFour)
Default Shortcut=Alt+4
Name=One Voice
Name[nl]=Eenstemmig (\\oneVoice)
Default Shortcut=Alt+0
Name=Breath Mark
Name[nl]=Ademhalingsteken (\\breathe)
Name=Markup Bold
Name[nl]=Markup Vet (bold)
Text=\\markup \\bold { (|) }
Default Shortcut=Alt+M, Alt+B
Name=Markup Italic
Name[nl]=Markup Cursief (italic)
Text=\\markup \\italic { (|) }
Default Shortcut=Alt+M, Alt+I
......@@ -18,5 +18,5 @@ X-DocPath=frescobaldi/index.html
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui name="frescobaldi" version="10">
<kpartgui name="frescobaldi" version="13">
<Menu name="file" noMerge="1"><text>&amp;File</text>
......@@ -14,13 +14,18 @@
<DefineGroup name="save_merge" append="save_merge" />
<Action name="file_save"/>
<Action name="file_save_as"/>
<DefineGroup name="revert_merge" append="revert_merge"/>
<DefineGroup name="revert_merge" append="revert_merge"/>
<Action name="file_print_music"/>
<DefineGroup name="print_merge" append="print_merge"/>
<Action name="file_email_documents"/>
<Action name="file_close"/>
<Action name="file_close_other"/>
<DefineGroup name="close_merge" append="close_merge"/>
......@@ -51,8 +56,6 @@
<Action name="doc_back"/>
<Action name="doc_forward"/>
<Separator />
<Action name="session_list"/>
<Separator />
<Menu name="lilypond"><text>&amp;LilyPond</text>
......@@ -60,10 +63,10 @@
<Separator />
<Action name="lilypond_run_preview"/>
<Action name="lilypond_run_publish"/>
<Action name="lilypond_run_custom"/>
<Action name="lilypond_abort"/>
<Menu name="lilypond_actions"><text>&amp;Generated Files</text>
<Action name="actions_email"/>
<Action name="lilypond_actions"/>
<Separator />
<Menu name="insert"><text>&amp;Insert</text>
<Action name="version_insert"/>
......@@ -74,6 +77,8 @@
<Action name="edit_insert_braces"/>
<Action name="insert_quote_single"/>
<Action name="insert_quote_double"/>
<Separator />
<Action name="edit_insert_specialchars"/>
<Separator />
<Menu name="lilypond_edit_pitch"><text>&amp;Pitch</text>
......@@ -120,10 +125,13 @@
<Action name="bar_ww"/>
<Action name="bar_cswc"/>
<Action name="bar_cswsc"/>
<Separator />
<Action name="bar_segno"/>
<Menu name="lilypond_lyrics"><text>&amp;Lyrics</text>
<Action name="lyrics_hyphen"/>
<Action name="lyrics_dehyphen"/>
<Action name="lyrics_copy_dehyphen"/>
<Separator />
<Menu name="lilypond_source"><text>&amp;Source Document</text>
......@@ -138,6 +146,14 @@
<Menu name="sessions"><text>&amp;Sessions</text>
<Action name="sessions_new"/>
<Action name="sessions_save"/>
<Action name="sessions_manage"/>