David Kastrup [Fri, 13 Dec 2013 05:24:17 +0000 (06:24 +0100)]
Adapt documentation for optional arguments now that lookahead is permissible
David Kastrup [Fri, 13 Dec 2013 05:01:43 +0000 (06:01 +0100)]
Parser: properly disambiguate pitches from music in function arguments
In many instances, function arguments were parsed greedily without
looking at the function argument predicates first. This did not allow
using subsequent function arguments of type pitch and duration since
they were combined into one music expression.
David Kastrup [Thu, 12 Dec 2013 17:57:09 +0000 (18:57 +0100)]
Parser: remove command_element and command_event synonyms of tempo_event
David Kastrup [Thu, 12 Dec 2013 16:19:15 +0000 (17:19 +0100)]
Parser: remove pitch_arg and PITCH_ARG
David Kastrup [Thu, 12 Dec 2013 15:43:34 +0000 (16:43 +0100)]
Parser: inline a few "common" expressions occuring only once now
David Kastrup [Wed, 11 Dec 2013 19:25:29 +0000 (20:25 +0100)]
Remove all closed music expressions
David Kastrup [Wed, 30 Oct 2013 20:01:39 +0000 (21:01 +0100)]
Permit event functions to use a non-closed argument list.
David Kastrup [Mon, 25 Nov 2013 16:29:23 +0000 (17:29 +0100)]
Add location data to extra_tokens_ stack in lexer.
David Kastrup [Thu, 12 Dec 2013 14:34:33 +0000 (15:34 +0100)]
Parser: let MYREPARSE and MYBACKUP back up even in presence of lookahead
This implies that the lookahead token must not yet have made an impact
on the state stack other than causing the reduction of the current
rule, or switching the lookahead token while Bison is mulling it over
will cause trouble.
Since an LALR(1) works on the top of the stack, this can usually be
guaranteed. The "Too much lookahead" message is not produced. If
these constructs are misused, the parser should typically complain
about the replacement token being unexpected.
The advantage is the ability to vastly simplify syntax rules that up
to now have to avoid lookahead tokens with a lot of drudgework.
David Kastrup [Wed, 11 Dec 2013 20:35:53 +0000 (21:35 +0100)]
Move the extra_token mechanism out of the lexer proper
Calling lex->pop_extra_token explicitly in the parser's yylex function
makes things considerably more robust. It also allows pushing and
popping the EOF condition, necessary for backing up right at the end
of a file, like with ##{ \relative { c d e f } #} where the music
expression is checked against being a pitch, and then is backed up.
David Kastrup [Sat, 14 Dec 2013 15:08:33 +0000 (16:08 +0100)]
Issue 3726: toplevel-music-functions should be a session variable
We don't want changes in a .ly file to bleed into subsequent files.
David Kastrup [Sat, 14 Dec 2013 21:33:53 +0000 (22:33 +0100)]
Issue 3728: Allow score and book identifiers at top level, and score identifiers in book(part)s
Instead of
xxx = \score { ... }
yyy = \book { ... }
\score { \xxx }
\book { \yyy }
you can now just write
xxx = \score { ... }
yyy = \book { ... }
\xxx
\yyy
Book and bookparts at top level are distinguished by virtue of only
books having a \paper block.
David Kastrup [Sat, 14 Dec 2013 21:29:12 +0000 (22:29 +0100)]
Regularize score handling (origin and copying)
Scores get their origin set when score_body is called, and when encountered
in \xxx and constructs, are properly copied.
David Kastrup [Sat, 14 Dec 2013 19:59:30 +0000 (20:59 +0100)]
Issue 3727: Allow header blocks and output definitions in \score to precede music
This addresses a frequent complaint of users.
Mike Solomon [Sat, 14 Dec 2013 10:14:58 +0000 (12:14 +0200)]
Simplifies pure documentation in the CG.
Removes old information about lists and articulates everything in terms
of unpure-pure-containers.
Devon Schudy [Fri, 6 Dec 2013 21:14:46 +0000 (16:14 -0500)]
Make parsing of articulation shorthands more robust. (issue 3664)
Allow articulation shorthands to be any post-event. Commit
6baa453 tried
to restrict them to ArticulationEvents, but actually allowed anything.
As opposed to previously, return a dummy PostEvents on error as
fallback rather than an incomplete ArticulationEvent causing followup
errors and a crash.
Signed-off-by: David Kastrup <dak@gnu.org>
David Kastrup [Sun, 8 Dec 2013 23:08:38 +0000 (00:08 +0100)]
Issue 3713: default for baseline-skip not available in the lists for repeatCommands
Martin Tarenskeen [Thu, 12 Dec 2013 06:09:11 +0000 (06:09 +0000)]
Doc: Add mention of LibreOffice
Issue 3686
OooLilyPond works for LibreOffice as well as OpenOffice.
James Lowe [Tue, 10 Dec 2013 22:02:12 +0000 (22:02 +0000)]
Doc: Add links to LP user blog for Video Tutorials
Issue 3540
Added referfences and links to Video Tutorials
for beginners via LilyPond user Ben Lemon's blog
David Kastrup [Sat, 7 Dec 2013 16:38:11 +0000 (17:38 +0100)]
Remove outdated dependencies on .pfa files, replace with .pfb where feasible.
This may be related to issue 3674: Multiprocessor builds fail on some platforms.
David Kastrup [Sun, 8 Dec 2013 17:53:57 +0000 (18:53 +0100)]
Issue 3712: Ponding about Turkish Ebook by Server Acim
See
<URL:http://lists.gnu.org/archive/html/bug-lilypond/2013-12/msg00051.html>
for the announcement.
Keith OHara [Sat, 7 Dec 2013 22:23:28 +0000 (14:23 -0800)]
documentation: staff-spacing, resolve collisions
Keith OHara [Tue, 12 Nov 2013 01:24:56 +0000 (17:24 -0800)]
slurs avoid stafflines: move far enough; issue 3628
Keith OHara [Sat, 7 Dec 2013 07:33:24 +0000 (23:33 -0800)]
markup: scale the shift of super/sub-scripts by font-size
David Kastrup [Wed, 4 Dec 2013 16:30:21 +0000 (17:30 +0100)]
Simplify extract-beam-exceptions
David Kastrup [Wed, 27 Nov 2013 12:49:48 +0000 (13:49 +0100)]
Issue 3679: Rewrite the autobeam logic to use GUILE fractions rather than moments
This makes the arithmetic considerably clearer.
Janek Warchoł [Sat, 7 Dec 2013 21:58:06 +0000 (22:58 +0100)]
CG: remove information about frogs and frog meister
frogs list is dead, and the frog meister was a good idea
but it gets out of touch from reality (since a few months
previous Frog Meister didn't actually participate in development).
Phil Holmes [Sun, 8 Dec 2013 23:26:45 +0000 (23:26 +0000)]
Release: update news.
Phil Holmes [Sun, 8 Dec 2013 23:26:29 +0000 (23:26 +0000)]
Release: bump VERSION.
David Kastrup [Sun, 8 Dec 2013 14:23:14 +0000 (15:23 +0100)]
Merge branch 'translation' into 'master'
Jean-Charles Malahieude [Sat, 7 Dec 2013 11:20:52 +0000 (12:20 +0100)]
PO: updates from FTP
David Kastrup [Fri, 6 Dec 2013 21:45:16 +0000 (22:45 +0100)]
Issue 3706: Allow computed identifiers for \change
This makes it possible to write
\change #'Staff = #"high"
(or other computed expressions) just like it is possible with
\new #'Staff = #"high" { ... }
Werner Lemberg [Tue, 3 Dec 2013 15:40:03 +0000 (16:40 +0100)]
Issue 3695: Fix LILF table in emmentaler
From <URL:http://lists.gnu.org/archive/html/bug-lilypond/2013-11/msg00113.html>:
Now, for recent versions of emmentaler (same font file), LILC contains:
(subfont . "feta20")
(subfont . "feta-alphabet20")
(subfont . "feta-flags20")
(subfont . "feta-noteheads20")
(subfont . "parmesan20")
(subfont . "parmesan-noteheads20")
[...]
but the subfonts array has not been updated in
these commits.
Janek Warchoł [Tue, 19 Jun 2012 10:02:01 +0000 (12:02 +0200)]
XY-extent: more accurate docstring
David Kastrup [Tue, 23 Apr 2013 15:02:47 +0000 (17:02 +0200)]
Add Changes entry for -dstrokeadjust and "Usage" entry.
David Kastrup [Tue, 23 Apr 2013 14:49:19 +0000 (16:49 +0200)]
Implement option -dstrokeadjust in order to get stroked stems and strokeadjustment
This makes the stroke drawing primitives for long rounded rectangles
dependent on the setting of currentstrokeadjust. As a result,
low-resolution bitmap devices (up to 150 dpi or so) will get stroke
adjustment applied automatically. The option needs to get invoked
explicitly to get stroke adjustment for PDF, giving a large file size
increase and markedly better previews on a number of PDF previewers.
David Kastrup [Thu, 11 Apr 2013 15:27:14 +0000 (17:27 +0200)]
Issue 2658: Be serious about setstrokeadjust in PostScript primitives
This particularly concerns draw_round_box which is used for drawing
lines with a rounded ending. If the width/height ratio or its inverse
exceeds 2, the box is considered to be a "line". In this case, first
a clipping path is established representing the whole shape and
extended widely in the area of the "main stroke". The reason for this
extension is to avoid both clip area and stroke competing for the
outline. While this is not a problem for the PostScript or PDF
rendering model, the Cairo bitmap rendering library employs
Porter-Duff compositing for antialiasing amounting to "cheap man's
antialiasing" not requiring a higher rendering resolution but relying
on edges affecting a single pixel to be independent.
Porter-Duff requires us not to have multiple parallel strokes or clip
areas if we want to avoid wrong sub-pixel grayness levels (and
consequently lines appearing too thick or thin) in Cairo-based
previewers like Evince.
After establishing the clip area, a stroke is drawn through. This
stroke may (at the PostScript device's discretion) employ
strokeadjustment further correcting the apparent thickness.
Ghostscript employs stroke adjustment when rendering at a resolution
below 150dpi. Stroke adjustment does not pass into PDF, however, when
ps2pdf runs.
Ghostscript performs sub-pixel rendering for antialiasing which
reduces the amount of discontinuities possibly caused by joining
stroke-adjusted shapes with full shapes.
It turns out that sharper contours can be achieved by using strokepath
and fill instead of a plain stroke. However, the resulting crisper
stems tend to combine worse with beams, so this approach has not been
pursued.
David Kastrup [Thu, 18 Apr 2013 19:39:50 +0000 (21:39 +0200)]
Don't meddle with Ghostscript's choice of currentstrokeadjust
It should be appropriate for device and resolution by default.
David Kastrup [Thu, 11 Apr 2013 15:22:43 +0000 (17:22 +0200)]
Make stroke_and_fill? PostScript operator that fills conditionally
David Kastrup [Thu, 11 Apr 2013 10:01:40 +0000 (12:01 +0200)]
Make music-drawing-routines.ps require PostScript 2.0
There is no point having conditional code around setstrokeadjust and
its ilk any more.
Keith OHara [Sat, 30 Nov 2013 02:01:21 +0000 (18:01 -0800)]
Completion_*_engraver: add means to preserve scale factor; issue 3650
Keith OHara [Sat, 30 Nov 2013 01:12:19 +0000 (17:12 -0800)]
Reduce offsets of \super and \sub
This brings chordNames and text superscripts into better agreement
with the shifts in user-provided scans.
Keith OHara [Fri, 29 Nov 2013 00:03:51 +0000 (16:03 -0800)]
script-column: earlier scripts support later scripts; issue 3683
Keith OHara [Fri, 29 Nov 2013 01:58:46 +0000 (17:58 -0800)]
small padding adjustment; issue 3630
Keith OHara [Fri, 29 Nov 2013 00:14:29 +0000 (16:14 -0800)]
hairpin: start at left edge of a rest
Janek Warchoł [Fri, 6 Dec 2013 22:53:37 +0000 (23:53 +0100)]
web: remove old news
In particular, remove the entry about the LilyPond Report,
which is no longer reachable.
Devon Schudy [Sun, 24 Nov 2013 12:07:10 +0000 (07:07 -0500)]
Support articulations and breaths in MIDI. (issue 3664)
Articulations and breaths can alter the length and volume of the note.
(Breaths affect the previous chord.) This is controlled by their
midi-length and midi-extra-velocity properties. The standard articulations
now have these properties where appropriate.
(seconds->moment s context) is a convenience function for making
absolute durations.
Devon Schudy [Sun, 24 Nov 2013 03:39:50 +0000 (22:39 -0500)]
Support properties on articulations.
Shorthand articulations like -. can now be ArticulationEvents, not just
articulation names. Previously a shorthand created a new ArticulationEvent
with its name, so there was no way to give it properties. Now it can be (and
is, by default) an ArticulationEvent.
Note that redefining a shorthand to a string (e.g. dashDot = "staccatissimo")
still creates propertyless articulations, regardless of \staccatissimo.
Werner Lemberg [Thu, 5 Dec 2013 14:01:48 +0000 (15:01 +0100)]
Issue 3694: Use standard inclusion scheme for FreeType headers.
The most recent FreeType release (2.5.1) has changed locations for header
files. Using the standard way, this is not visible to applications.
Janek Warchoł [Fri, 29 Nov 2013 15:47:43 +0000 (16:47 +0100)]
let RhythmicStaff use default barline extent
There is no reason to make barlines in RhythmicStaff special.
The purpose of the deleted code was probably to ensure that
the barlines were visible at all (despite the fact that there
is just one staffline in a RhythmicStaff). However, currently
barline code takes care of this by default.
This makes barlines in DrumStaff and RhythmicStaff similar.
A comment by Keith:
The book by Kurt Stone happens to have some bar-lines in single-line percussion
staves that are as tall as a 4/4 time-signature. Other examples in the same
book have short bar-lines like these here, and looking at some scores the short
bar-lines are more common.
David Kastrup [Thu, 28 Nov 2013 16:32:52 +0000 (17:32 +0100)]
Issue 3682/2: Change documentation and regtests for \beamExceptions
David Kastrup [Thu, 28 Nov 2013 14:24:17 +0000 (15:24 +0100)]
Issue 3682/1: Implement \beamExceptions function fishing exceptions from beamed music.
David Kastrup [Wed, 4 Dec 2013 09:00:38 +0000 (10:00 +0100)]
Implement event-chord-reduce for reducing chords to single notes
David Kastrup [Thu, 28 Nov 2013 16:25:11 +0000 (17:25 +0100)]
Add unfold-repeats-fully function which will expand repeats in the data
David Kastrup [Mon, 25 Nov 2013 11:17:03 +0000 (12:17 +0100)]
Add regtest for copy/modify semantics of make-relative macro
David Kastrup [Fri, 22 Nov 2013 12:36:56 +0000 (13:36 +0100)]
Add regtest for music argument semantics of make-relative macro
David Kastrup [Sun, 1 Dec 2013 11:58:15 +0000 (12:58 +0100)]
Run scripts/auxiliar/update-with-convert-ly.sh
David Kastrup [Fri, 22 Nov 2013 12:34:50 +0000 (13:34 +0100)]
convert-ly rule for new make-relative semantics accepting music arguments
This only works when the "reference pitch" is the first or last of
the list.
David Kastrup [Fri, 22 Nov 2013 08:54:26 +0000 (09:54 +0100)]
Issue 3673: Make make-relative able to deal with music rather than just pitches
The old behavior of make-relative was too cumbersome to use in many
cases.
This variant allows, for example:
withOctave =
(ly:music?)
(make-relative
(music) music
#{ \context Bottom << $music \transpose c c' $music >> #}))
\relative
\new Staff \withOctave {
\partial 4. c'8 e g |
c2 e,4 g |
c,8 c' b a <g d'> <f c'> <e b'> <d a'> |
<c g'>1 | \bar "|."
}
David Kastrup [Sun, 24 Nov 2013 23:59:55 +0000 (00:59 +0100)]
Issue 3675: Make convert-ly -d only ever update on changed files
Previously, it updated unconditionally whenever a new stable version
came out, leading to merge conflicts. When the final applied
conversion is to an unstable version and the following stable version
is not beyond the conversion target, the following stable version is
used.
Note that this rule does not make a factual difference for continuous
updates of a code base (the normal use case for
scripts/auxiliar/update-with-convert-ly.sh), but it makes a difference
for the conversion/import of code that may have fallen behind a lot
(like with the LSR import, or when converting archived files).
Devon Schudy [Fri, 29 Nov 2013 03:05:13 +0000 (19:05 -0800)]
Grace notes: only shorten previous note if overlapping
Previously a grace note after a rest shortened the last note before the
rest.
This patch shortens the previous note to the start of the grace note
rather than by the length of the grace note, so notes before rests
aren't affected unless the grace notes are longer than the rest.
Devon Schudy [Fri, 29 Nov 2013 03:00:02 +0000 (19:00 -0800)]
Fix spurious error playing initial grace notes (issue 1412)
This happens because the MIDI output starts at tick 0, regardless of
when the first event is. Initial grace notes start start at negative
ticks, so midi_walker::output_event thinks they're out of order. Fixed
by starting at the first event.
Keith OHara [Sat, 23 Nov 2013 03:50:26 +0000 (19:50 -0800)]
define-grobs.scm: use a property for TrillPitch offset; issue 3465
Keith OHara [Sat, 23 Nov 2013 04:46:49 +0000 (20:46 -0800)]
page-breaking: allow ragged pages to be compressed
David Kastrup [Mon, 25 Nov 2013 18:33:34 +0000 (19:33 +0100)]
Issue 3676: Bar checks display the wrong location
This one is just embarrassing. The lexer used last_input_ where it
should have been using here_input (), resulting in music identifiers
and some other stuff to be located one token early.
Phil Holmes [Sun, 24 Nov 2013 22:05:27 +0000 (22:05 +0000)]
Release: update news.
Phil Holmes [Sun, 24 Nov 2013 22:05:16 +0000 (22:05 +0000)]
Release: bump VERSION.
Keith OHara [Sun, 24 Nov 2013 10:15:18 +0000 (11:15 +0100)]
Issue 1553: Staff stretching problem in 2.13.50+
optimal-page-breaking.cc needs to protect unsigned subtraction.
Signed-off-by: David Kastrup <dak@gnu.org>
David Kastrup [Sat, 23 Nov 2013 13:08:15 +0000 (14:08 +0100)]
Merge remote-tracking branch 'origin/translation' into staging
Jean-Charles Malahieude [Sat, 23 Nov 2013 11:32:58 +0000 (12:32 +0100)]
Doc-fr: Updates NR rhythms and spacing
David Kastrup [Thu, 21 Nov 2013 08:37:26 +0000 (09:37 +0100)]
Issue 3672: NR: a few typos in connection with paper size
David Kastrup [Mon, 18 Nov 2013 13:52:00 +0000 (14:52 +0100)]
Issue 3658: variables cannot be used in \tempo command
David Kastrup [Mon, 18 Nov 2013 13:59:35 +0000 (14:59 +0100)]
parser: allow Scheme expressions for unsigned_number
David Kastrup [Mon, 18 Nov 2013 13:51:42 +0000 (14:51 +0100)]
parser: let unsigned_number check NUMBER_IDENTIFIER for correctness
David Kastrup [Sun, 17 Nov 2013 18:29:06 +0000 (19:29 +0100)]
Issue 3663: Crash with \repeat ... \alternative and \remove "Bar_engraver"
This approach is just poking around in the dark and removing Scheme
error messages. In particular substituting the original glyph for
left-bar-line and right-bar-line (when missing) in calls to
span-bar::compound-bar-line seems fishy, and the original logic
for setting left-bar-broken if left-bar-line is not even present
is also not clear to me.
The results for the example in the bug report:
form = \new Staff \with {
\remove "Bar_engraver"
} \repeat volta 2 {
s1
} \alternative {
s1 % first ending
s1 % second ending
} % form
\score {
<<
\form
>>
} % score
are also not identical with the 2.16 results: the volta brackets now
run into each other; before there was a gap.
It fixes the crash. I have no idea what a proper fix would look like.
David Kastrup [Sat, 16 Nov 2013 17:25:03 +0000 (18:25 +0100)]
Issue 3666: Format error message for argument errors more nicely
Actually, using display-lily-music here would be nicer, but it does not
cater for anything but music automatically like music->make-music
does.
David Kastrup [Mon, 18 Nov 2013 11:37:59 +0000 (12:37 +0100)]
Issue 3668: Let NullVoice have an existence in MIDI
Issue 3457 omitted to introduce the NullVoice context into MIDI. This
implementation is incomplete (see the TODO in performer-init.ly), but
at least it does not let the context structure go off the deep end in
MIDI.
David Kastrup [Fri, 22 Nov 2013 09:30:23 +0000 (10:30 +0100)]
GC-related fix of volta-repeat-iterator
This problem was introduced with issue 355.
David Kastrup [Thu, 21 Nov 2013 08:37:26 +0000 (09:37 +0100)]
Issue 3672: NR: a few typos in connection with paper size
Keith OHara [Wed, 20 Nov 2013 22:11:49 +0000 (14:11 -0800)]
Revert "optimal-page-breaking: signed/unsigned bug; issue 1553"
This reverts commit
7e771a83cafb00e0ed58400a93b728e283c4ad9c.
David Kastrup [Mon, 18 Nov 2013 19:59:15 +0000 (20:59 +0100)]
Issue 3656/2: disambiguate our own ::to_string from std::to_string
David Kastrup [Tue, 12 Nov 2013 16:56:31 +0000 (17:56 +0100)]
Issue 3656: Problems building Lilypond 2.17.95 with libc++ for use with llvm
std-vector.hh did not include config.hh but relied on it
Keith OHara [Thu, 14 Nov 2013 01:10:32 +0000 (17:10 -0800)]
optimal-page-breaking: signed/unsigned bug; issue 1553
Keith OHara [Thu, 14 Nov 2013 02:51:59 +0000 (18:51 -0800)]
align-interface: clarify handling of empty staves
Keith OHara [Wed, 20 Nov 2013 00:46:40 +0000 (16:46 -0800)]
pge-breaking: do not try to fill ragged-pages; issue 3441
Keith OHara [Wed, 13 Nov 2013 21:47:28 +0000 (13:47 -0800)]
page-breaking: keep the degree of stretching in Line_details; issue 3441
The prioritization of cache_line_details() needs this information
to recognize the best configurations.
Keith OHara [Thu, 7 Nov 2013 05:39:15 +0000 (21:39 -0800)]
\transpose: leave triple-sharps intact; issue 1009
David Kastrup [Tue, 19 Nov 2013 17:48:10 +0000 (18:48 +0100)]
Merge branch 'origin/translation' into staging
David Kastrup [Tue, 19 Nov 2013 17:30:52 +0000 (18:30 +0100)]
NR: \overrideTimeSignatureSettings works fine without instantiating context
This is another by-product of issue 3140.
David Kastrup [Fri, 15 Nov 2013 16:58:55 +0000 (17:58 +0100)]
Let simple_music possibly return a pitch in \chordmode
David Kastrup [Sat, 16 Nov 2013 15:23:59 +0000 (16:23 +0100)]
Make sure optional arguments accepted as pitches stay pitches when reparsing
David Kastrup [Sat, 16 Nov 2013 12:24:11 +0000 (13:24 +0100)]
Let a PITCH_IDENTIFIER optionally be followed by octave modifiers
This makes pitch identifiers more similar to note names. There is no
point in keeping the distinction just for triggering syntax errors
on music that has no sensible other interpretation.
David Kastrup [Fri, 15 Nov 2013 16:36:49 +0000 (17:36 +0100)]
Make make_music_from_simple return music rather than a list in \chordmode
David Kastrup [Sat, 16 Nov 2013 13:09:53 +0000 (14:09 +0100)]
parser: move FRACTION into embedded_scm_bare_arg
It's a closed expression; not having to parse it with separate rules
reduces the amount of cruft in the rules.
David Kastrup [Sat, 16 Nov 2013 11:50:42 +0000 (12:50 +0100)]
Fold function_arglist_backup_common into function_arglist_backup
After the last refactoring, function_arglist_backup does not need a closed
variant, so there is no point in an extra non-terminal.
David Kastrup [Tue, 19 Nov 2013 10:15:03 +0000 (11:15 +0100)]
Merge branch 'issue3648' into staging
Contains enough related commits that its better to do as one merge
commit for the sake of bisection and/or reverting.
David Kastrup [Thu, 14 Nov 2013 14:48:24 +0000 (15:48 +0100)]
Run scripts/auxiliar/makelsr.py
David Kastrup [Thu, 7 Nov 2013 19:16:57 +0000 (20:16 +0100)]
Issue 3648/7: Give several examples of durations without explicit pitches
David Kastrup [Tue, 5 Nov 2013 20:55:13 +0000 (21:55 +0100)]
Issue 3648/6: Regtest for rhythmic sequences.
David Kastrup [Sat, 9 Nov 2013 14:46:53 +0000 (15:46 +0100)]
Issue 3648/5: Explain isolated durations in NR "Rhythms"