David Kastrup [Sun, 20 Jan 2013 18:57:01 +0000 (19:57 +0100)]
Run scripts/auxiliar/update-with-convert-ly.sh
No particular reason, except that for whatever reason there are a few
still unconverted files that get converted in unrelated issues
involving a convert-ly run.
Zefram [Wed, 2 Jan 2013 19:53:54 +0000 (19:53 +0000)]
factor out some duration processing
New functions duration-log-factor, duration-dot-factor, duration-length,
duration-visual, and duration-visual-length. All concerned with low-level
numerical processing of durations, so that other code doesn't have to
understand dot counts and the like.
Trevor Daniels [Fri, 11 Jan 2013 00:10:00 +0000 (00:10 +0000)]
Doc: clarify example of 'Going back in MIDI time' (3097)
Add a note before the acciaccatura, because, in order to
understand the error (and the solution), you need to compare
the whole duration of the acciaccatura block with the duration
of the previous note. (Thanks Federico!)
David Kastrup [Wed, 9 Jan 2013 14:44:22 +0000 (15:44 +0100)]
Issue 3093: Declare absolute-volume-alist and instrument-equalizer-alist as session-local
At least instrument-equalizer-alist is advertised as sort of a
user-settable variable, and while we ask users to tamper with it, we
might as well restore it at the beginning of next session. This does
not really replace a proper user interface instead of the pathetic
excuse we have for it now.
Mike Solomon [Thu, 10 Jan 2013 07:54:12 +0000 (08:54 +0100)]
Makes all side-positioning based on skylines instead of boxes.
The major work is in side-position-interface.cc, with minor
modifications at several places in the code-base to adapt to this.
This allows for snugger positioning of horizontally-oriented
fingerings.
A side-effect of this patch is that side-positioning of all
cross-staff grobs delves into the element list of axis-groups
in order to better guess position, which results in less
collisions (for example, dynamics are less likely to collide
with cross-staff beams).
Mike Solomon [Thu, 10 Jan 2013 04:10:09 +0000 (05:10 +0100)]
Shows ligature bracket extenders by setting bracket-visibility to ##t.
This bypasses the automatic visibility tests which are done mostly for
tuplet brackets. In the future, it would be good to make a unified
system for brackets in which the tuplet bracket is one of several instead
of the "model" bracket.
Trevor Daniels [Fri, 4 Jan 2013 08:47:49 +0000 (08:47 +0000)]
Doc: Update documentation of \once (2952)
Bring documentation in line with committish ddce9767f975c989800cb99e003039a8bf050b45
by removing statements that limit the use of
\once to bare \override and \set commands.
David Kastrup [Fri, 4 Jan 2013 13:22:57 +0000 (14:22 +0100)]
Issue 3082: Let ChordNameVoice use the same performers as Voice
In particular, ties should be heeded when creating Midi from a
ChordNames context as they result in the omission of the engraved
chord name if an identical chord follows. Reasoning for beams and
slurs is fuzzier, but an articulation different from the same music in
a regular Voice context does not seem to make sense.
David Kastrup [Sun, 23 Dec 2012 14:46:45 +0000 (15:46 +0100)]
Issue 2990: \RemoveEmptyStaves in StaffGroup context crashes
The problem is caused by multiple axis group engravers, and in
particular nested VerticalAxisGroup grobs in connection with the
skyline code. An extensive fix catching any recursive grob definition
will lead to quite more cryptic error messages rather than this
hand-tailored fix for the special case of VerticalAxisGroup nesting.
The solution chosen here is to complain when a VerticalAxisGroup is
announced from a subordinate context and let the current group commit
suicide.
Trevor Daniels [Sun, 30 Dec 2012 10:00:09 +0000 (10:00 +0000)]
Doc: simplify example changing default fonts (3027)
The original function required the global staff size
to be re-entered as myStaffSize, but this can be calculated
from the value of staff-height, so avoiding having to
replicate the value.
David Kastrup [Wed, 2 Jan 2013 11:01:21 +0000 (12:01 +0100)]
Issue 3077: Be more explicit about footnotes on chord constituents
This tries to deal with the suggestions stemming from the
<URL:http://lists.gnu.org/archive/html/lilypond-user/2013-01/msg00021.html>
discussion. It also rewords a bit of following documentation.
David Kastrup [Sat, 15 Dec 2012 08:34:23 +0000 (09:34 +0100)]
Issue 3023: Papersizes with landscape/portrait suffix are not recognized by -dpapersize
This factors out the papersize recognition into a function
lookup-paper-name. It also streamlines error handling somewhat. A
conditional checking paper-default to be non-#f could only ever be
triggered in an error situation. Since it does not make sense to
treat the error condition of "bad paper-alist entry" and "unrecognized
paper format" differently, this has been folded into the simpler case,
namely considering the specified width and height in
set-paper-dimensions as a substitute for the valid default paper size.
PO: remove duplicates entries for hh and cc from ALL_PO_SOURCES
Introduced with version 1.0.1 :
in stepmake/stepmake/C.make
ALL_C_SOURCES = h, c, y and l files
in stepmake/stepmake/Targets.make
ALL_PO_SOURCES = $(ALL_C_SOURCES) $(wildcard $(outdir)/*.hh) $(wildcard $(outdir)/*.cc)
hh and cc files having since then been registered through ALL_CC_SOURCES,
there is no need to double their entry.
Even worse, an "out of tree build" results in a doubled location of
parser.yy and lexer.ll (one of them with a full path).
Zefram [Mon, 24 Dec 2012 23:00:35 +0000 (23:00 +0000)]
canonicalise notional octave of tonic
Nothing deliberately looks at the octave part of the pitch object storing
the tonic of a key-change event; it's not really a meaningful concept.
But comparison with equal? sees the octave, so internal_event_assignment()
reckoned two key changes differing only in this meaningless field to
be different, and therefore not permitted to occur at the same time.
This triggered false warnings of "two simultaneous key-change events"
when two instruments sharing a staff differ in the transposition used
in their music source.
To fix this, always set the octave part of the tonic pitch to the
same value. This is done when transposing, and since \key operates by
invoking transposition this is the only place that needs to canonicalise.
The canonical octave is number -1; that is, the octave obtained by a
note name with no octave suffix, and so the octave that most commonly
occurred under the non-canonicalising system.
Zefram [Sat, 22 Dec 2012 21:43:42 +0000 (21:43 +0000)]
articulate grace notes with time stealing
This change makes \articulate handle grace notes itself, rendering them
to ordinary notes. There are a couple of tweakable parameters controlling
the rendering.
This prevents \articulate causing the many "going back in MIDI time"
errors that it used to. (Inserting a short rest after each note makes it
way too easy for following grace notes to need to steal more time from
the preceding rhythmic event than it has.) In fact, when such errors
occur in the absence of \articulate, \articulate can now fix them.
David Kastrup [Sun, 23 Dec 2012 21:13:08 +0000 (22:13 +0100)]
Make lexer more robust against unexpected EOF
This helps against EOF within strings, multiline comments and other
constructs without losing track when terminating the main input parser
while retaining the lexer.
Torsten Hämmerle [Sat, 29 Dec 2012 16:10:43 +0000 (16:10 +0000)]
\fret-diagram-verbose with capo > 1
Issue 2961
Even if all dots and barrés fit in the default fret-range, the fret-range
will have to be shifted if capo-fret > 1 in order to make sure that the
capo will be the lowest fret in the fret diagram.
David Kastrup [Wed, 26 Dec 2012 21:09:55 +0000 (22:09 +0100)]
Issue 3049: Parser outputs Lyric events for illegal note names
Well, after this patch this is what we still do (using void-music with
duration and post events seems even worse of a followup reaction,
silently dropping duration and post events not much better).
But additionally, an error is flagged. The complaint is "have to be
in Lyric mode for lyrics" which is accurate since in Lyric mode
arbitrary strings and markups may be accepted. At the point the error
is flagged, we don't necessarily have encountered an unquoted string,
so "bad note name" might be even more misleading. Before this issue
originated, the parser likely bombed out with "Unexpected STRING", and
frankly that's not really better than "have to be in Lyric mode".
Johannes Rohrer [Sun, 23 Dec 2012 10:41:16 +0000 (10:41 +0000)]
Makefile: Add dependencies for internals.itexi
Issue 3020
The texinfo file internals.texi for the Internals Reference is
generated from ly/generate-documentation.ly, which in turn relies on
scm/document*.scm and their recursive dependencies to do the actual
work. In the process, settings encoded in various other files get
documented, e.g. from ly/engraver-init.ly and scm/define-*.scm.
Changes to such files do not necessitate, nor trigger, recompiling the
LilyPond binary; yet the only dependency marked for internals.texi in
Documentation/GNUmakefile was on $(LILYPOND_BINARY).
Fix this, for this is obviously inconvenient when hacking the
Internals Reference.
Rather than tediously maintaining a specific list that grows
incomplete whenever the scope of the IR expands, make internals.texi
depend on $(INIT_LY_SOURCES) and $(SCHEME_SOURCES) altogether, similar
to the rules in make/ly-rules.make.
David Kastrup [Thu, 13 Dec 2012 16:15:27 +0000 (17:15 +0100)]
Issue 1029: \thumb should behave like other fingerings
This changes \thumb from a script to an actual bona-fide fingering.
The size tweak is a bit ugly: it might make some sense to resize the
actual glyph to match fingerings, but maybe it should then also be
relocated from "scripts.thumb".
Remove several obsolete vars and functions unlikely to be still in use.
[...]
* lisp/progmodes/compile.el (compile-internal): Remove obsolete
function.
(compilation-parse-errors-function): Fix typo.
[...]
-;; This is a rough emulation of the old hack, until the transition to new
-;; compile is complete.
-(defun compile-internal (command error-message
- &optional _name-of-mode parser
- error-regexp-alist name-function
- _enter-regexp-alist _leave-regexp-alist
- file-regexp-alist _nomessage-regexp-alist
- _no-async highlight-regexp _local-map)
- (if parser
- (error "Compile now works very differently, see `compilation-error-regexp
- (let ((compilation-error-regexp-alist
- (append file-regexp-alist (or error-regexp-alist
- compilation-error-regexp-alist)))
- (compilation-error (replace-regexp-in-string "^No more \\(.+\\)s\\.?"
- "\\1" error-message)))
- (compilation-start command nil name-function highlight-regexp)))
-(make-obsolete 'compile-internal 'compilation-start "22.1")
-
I have for now omitted all optional arguments to compilation-start
since they are incompatible to previous usage:
compilation-start is an autoloaded compiled Lisp function in
`compile.el'.
Run compilation command COMMAND (low level interface).
If COMMAND starts with a cd command, that becomes the `default-directory'.
The rest of the arguments are optional; for them, nil means use the default.
MODE is the major mode to set in the compilation buffer. Mode
may also be t meaning use `compilation-shell-minor-mode' under `comint-mode'.
If NAME-FUNCTION is non-nil, call it with one argument (the mode name)
to determine the buffer name. Otherwise, the default is to
reuses the current buffer if it has the proper major mode,
else use or create a buffer with name based on the major mode.
If HIGHLIGHT-REGEXP is non-nil, `next-error' will temporarily highlight
the matching section of the visited source line; the default is to use the
global value of `compilation-highlight-regexp'.
David Kastrup [Thu, 13 Dec 2012 10:53:02 +0000 (11:53 +0100)]
Issue 2172: Get line and column numbers right.
This uses 1-based columns on all error output, as is the standard for
GNU programs. It also flags version errors as being for line 1
instead of line 0 since the latter confuses Emacs' compilation mode.
The same column convention is used for point-and-click column numbers
in textedit:// URIs. In contrast, the byte offsets into a line (also
in those URIs) are retained 0-based.
For point-and-click, this yields the correct results when using the
definitions for emacs and gvim in scm/editor.scm, the editors
configured to interpret the column number.
It is to be expected that Lilypond-specific shells (like Frescobaldi
called via Okular for point-and-click) have specialized on the
previous wrong behavior and will now exhibit the kind of one-off
behavior that non-LilyPond specific programs did previously when
encountering the error messages.
I don't see a good migration strategy for those except possibly
looking for the version number of LilyPond and deciding whether to do
one-off calculations depending on that.
Adds mention of \kievanOn and \kievanOff functions
to Ancient notation -> Kievan notation documentation
and corrects examples, given changes to the notation
in Issue 2868.