GNU LilyPond is
updated very frequently, the latest version is always available at:
-lurl(ftp://pcnov095.win.tue.nl/pub/lilypond). This FTP site is mirrored
+lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond). This FTP site is mirrored
at a number of sites; consult the project web pages for information
about mirrors.
mailto(daboys@bga.com)
-article(LilyPond Windows NT 4.0 Distribution)(nemail(Jeffrey B. Reed)(daboys@bga.com))(label(contents))
-sect(Windows NT Binary Distribution)
+article(LilyPond Windows NT 4.0/95 Distribution)(nemail(Jeffrey B. Reed)(daboys@bga.com))(label(contents))
+sect(Windows NT/95 Binary Distribution)
subsect(Introduction) label(introduction)
link(Back to top)(contents)
clearpage()
-I'm back from the dead! There have been many changes since my last
-update. Please read information on batch files and update as needed.
-The fonts have changed so you will also need to remove any cached
-fonts. In addition please bring music sources up to date by using
-convert-mudela utility. I used:
+subsect(NEWS) label(news)
-verb(
-% bf(convert-mudela.py -e angels.ly)
+I have made my first attempt at distributing lilypond as a self
+extracting executable for Windows NT 4.0 and Windows 95. The
+executable will extract the distribution in the directory specified by
+the user and create em(lilypond-@TOPLEVEL_VERSION@\lily.bat). This
+batch file initializes the LilyPond environment and fires up a Command
+Prompt. From this Command Prompt you may run:
+
+itemize(
+ it()ly2dvi
+ it()convert-mudela
+ it()mudela-book
+ it()lilypond
+ it()mi2mu
)
-Also please refer to LilyPond documentation for new and changed
-features.
+I have also converted the Manual Pages for the above tools to HTML for
+easy browsing. This release has been tested on Windows NT 4.0sp3 and
+Windows 95 and found to be operational. If you have any troubles and
+or comments please do not hesitate to drop me a line
+url(Jeffrey B. Reed)(mailto:daboys@bga.com).
-subsect(NEWS) label(news)
This is what the version @TOPLEVEL_VERSION@ brings:
verb(
interactive, object-oriented programming language. It is often
compared to code(Tcl), code(Perl), code(Scheme) or code(Java).
+Gsview is used to display and print the music scores created by
+LilyPond.
+
itemize(
it()url(code(MiKTeX))(http://www.snafu.de/~cschenk/miktex/)
it()url(code(Python))(http://www.python.org)
+ it()url(code(gsview))(http://www.cs.wisc.edu/~ghost/gsview/index.html)
)
link(Back to top)(contents)
subsect(Download) label(download)
itemize(
- it() pre-guile version lurl(lilypond-1.0.17.jbr1.bin.zip) nl()
- NOTE: LILYPONDPREFIX=em(LilyPond-dir) for this version
- it()lurl(lilypond-@TOPLEVEL_VERSION@.bin.zip)
+ it()url(lilypond-@TOPLEVEL_VERSION@)(lily1123jbr1.exe)
)
link(Back to top)(contents)
itemize(
it()link(Download)(download) the distribution.
- it()unzip
- it()Set your path variable for lilypond and TeX
- description(
- dit(batch file)
- In a batch file you can add the following entries: nl()
- bf(set LILYPONDHOME=em(LilyPond-dir)) nl()
- bf(set LILYPONDPREFIX=%LILYPONDHOME%\share\lilypond) nl()
- bf(set path=%path%;%LILYPONDHOME%\bin;em(MiKTeX-dir)\miktex\bin) nl()
- bf(set TEXINPUTS=%LILYPONDPREFIX%\tex;%LILYPONDPREFIX%\ps;;) nl()
- bf(set MFINPUTS=%LILYPONDPREFIX%\mf;;) nl()
-COMMENT( dit(Windows Environment)
- In the Windows environment you can select
- properties menu of the My Computer icon. Click on
- the environment tag and add the following to the user
- variables path entry. nl()
- bf(em(LilyPond-dir)\bin;em(MiKTeX-dir)\miktex\bin))
- ) nl()
- it() The first installation of LilyPond also requires these
+ it()run downloaded executable. nl()
+ it() The first installation of LilyPond also requires these
additional steps:
description(
dit(LaTeX geometry package)
itemize(
it()Take a look at url(angels.ly)(angels.ly)
it()Save angels.ly to your local disk
- it()From a Command Prompt run: nl()
- bf(ly2dvi.py angels.ly) nl()
+ it()Execute lilypond-@TOPLEVEL_VERSION@\lily.bat nl()
+NOTE: If you get an em(out of environment memory error), simply increase
+the environment memory by selecting
+em(lilypond-@TOPLEVEL_VERSION@\lily.bat) Properties/Memory and increase
+the available environment memory to 1024.
+ it() From a LilyPond Command Prompt run: nl()
+ bf(ly2dvi angels.ly) nl()
bf(dvips angels.dvi) nl()
- bf(cmd /c angels.ps) nl()
+ bf(start angels.ps) nl()
)
link(Back to top)(contents)
--- /dev/null
+% Creator: mf-to-table.py version 0.7
+% Automatically generated on
+% Do not edit
+% input from out/feta20.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\breverest{4}
+\fetdef\longarest{5}
+\fetdef\multirest{6}
+\fetdef\quartrest{7}
+\fetdef\eighthrest{8}
+\fetdef\sixteenthrest{9}
+\fetdef\thirtysecondrest{10}
+\fetdef\sixtyfourthrest{11}
+\fetdef\hundredtwentyeighthrest{12}
+
+% accidentals
+\fetdef\sharp{13}
+\fetdef\natural{14}
+\fetdef\flat{15}
+\fetdef\flatflat{16}
+\fetdef\sharpsharp{17}
+\fetdef\rightparen{18}
+\fetdef\leftparen{19}
+
+% dots
+\fetdef\dot{20}
+\fetdef\repeatcolon{21}
+
+% balls
+\fetdef\brevisball{22}
+\fetdef\brevisledger{23}
+\fetdef\longaball{24}
+\fetdef\longaledger{25}
+\fetdef\wholeball{26}
+\fetdef\wholeledger{27}
+\fetdef\halfball{28}
+\fetdef\halfledger{29}
+\fetdef\quartball{30}
+\fetdef\quartledger{31}
+
+% scripts
+\fetdef\ufermata{32}
+\fetdef\dfermata{33}
+\fetdef\thumb{34}
+\fetdef\sforzatoaccent{35}
+\fetdef\staccato{36}
+\fetdef\ustaccatissimo{37}
+\fetdef\dstaccatissimo{38}
+\fetdef\tenuto{39}
+\fetdef\umarcato{40}
+\fetdef\dmarcato{41}
+\fetdef\ouvert{42}
+\fetdef\plusstop{43}
+\fetdef\upbow{44}
+\fetdef\downbow{45}
+\fetdef\reverseturn{46}
+\fetdef\turn{47}
+\fetdef\trill{48}
+\fetdef\upedalheel{49}
+\fetdef\dpedalheel{50}
+\fetdef\upedaltoe{51}
+\fetdef\dpedaltoe{52}
+\fetdef\flageolet{53}
+\fetdef\trilelement{54}
+\fetdef\prall{55}
+\fetdef\mordent{56}
+\fetdef\prallprall{57}
+\fetdef\prallmordent{58}
+\fetdef\upprall{59}
+\fetdef\downprall{60}
+\fetdef\accDiscant{61}
+\fetdef\accDiscantF{62}
+\fetdef\accDiscantEh{63}
+\fetdef\accDiscantE{64}
+\fetdef\accDiscantFE{65}
+\fetdef\accDiscantFEh{66}
+\fetdef\accDiscantEE{67}
+\fetdef\accDiscantFEE{68}
+\fetdef\accDiscantEEE{69}
+\fetdef\accDiscantFEEE{70}
+\fetdef\accDiscantS{71}
+\fetdef\accDiscantFS{72}
+\fetdef\accDiscantES{73}
+\fetdef\accDiscantEhS{74}
+\fetdef\accDiscantFES{75}
+\fetdef\accDiscantFEhS{76}
+\fetdef\accDiscantEES{77}
+\fetdef\accDiscantFEES{78}
+\fetdef\accDiscantEEES{79}
+\fetdef\accDiscantFEEES{80}
+\fetdef\accDiscantSS{81}
+\fetdef\accDiscantESS{82}
+\fetdef\accDiscantEESS{83}
+\fetdef\accDiscantEEESS{84}
+\fetdef\accFreebass{85}
+\fetdef\accFreebassF{86}
+\fetdef\accFreebassE{87}
+\fetdef\accFreebassFE{88}
+\fetdef\accStdbass{89}
+\fetdef\accStdbassM{90}
+\fetdef\accStdbassBp{91}
+\fetdef\accStdbassT{92}
+\fetdef\accStdbassTp{93}
+\fetdef\accBayanbass{94}
+\fetdef\accBayanbassT{95}
+\fetdef\accBayanbassE{96}
+\fetdef\accBayanbassTE{97}
+\fetdef\accBayanbassEE{98}
+\fetdef\accBayanbassTEE{99}
+\fetdef\accSB{100}
+\fetdef\accBB{101}
+\fetdef\accOldEE{102}
+\fetdef\accOldEES{103}
+
+% flags
+\fetdef\eighthflag{104}
+\fetdef\sixteenthflag{105}
+\fetdef\thirtysecondflag{106}
+\fetdef\sixtyfourthflag{107}
+\fetdef\deighthflag{108}
+\fetdef\dsixteenthflag{109}
+\fetdef\dthirtysecondflag{110}
+\fetdef\dsixtyfourthflag{111}
+
+% clefs
+\fetdef\altoclef{112}
+\fetdef\caltoclef{113}
+\fetdef\bassclef{114}
+\fetdef\cbassclef{115}
+\fetdef\trebleclef{116}
+\fetdef\ctrebleclef{117}
+
+% timesig
+\fetdef\fourfourmeter{118}
+\fetdef\allabreve{119}
+\fetdef\oldfourfourmeter{120}
+\fetdef\oldallabreve{121}
+\fetdef\oldthreetwometer{122}
+\fetdef\oldsixfourmeter{123}
+\fetdef\oldninefourmeter{124}
+
COMMENT(
I cannot be named .yo, because i'm not a complete document, yodl2x will break.
)
+
whenhtml(
+
nsubsect(Disclaimer)
-This document is written in url(Yodl)(ftp://pcnov095.win.tue.nl/pub/yodl)
-and should foremost produce nice LaTeX() output.
-In other formats, such as html, some things will look a bit different,
-while other things will be simply left out.
-Therefore, the authoritive version of this document is the PostScript version,
-produced via LaTeX().
-As you know, url(no gifs due to patent problems)(http://www.gnu.org/philosophy/gif.html),
-but the png images should be viewable with any current browser
-(jpeg is inappropriate for music images).
-)
+
+This document is written in url(Yodl)(ftp://ftp.lilypond.org/pub/yodl)
+and should foremost produce nice LaTeX() output. In other formats,
+such as html, some things will look a bit different, while other
+things will be simply left out. Therefore, the authoritive version of
+this document is the PostScript version, produced via LaTeX(). As you
+know, url(no gifs due to patent
+problems)(http://www.gnu.org/philosophy/gif.html), but the PNG images
+should be viewable with any current browser . )
\subsection{Music notation}
+Music notation is a system that tries to represent musical ideas
+through printed symbols. Music notation has no precise definition,
+but most conventions have described in reference manuals on music
+notation\cite{read-notation}.
+
In music notation, sounds and silences are represented by symbols that
are called note and rest respectively.\footnote{These names serve a
double purpose: the same terms are used to denote the musical
\label{fig:noteshapes}
\end{center}
\end{figure}
-
Notes are printed in a grid of horizontal lines called \emph{staff} to
-denote their pitch: each line represents the pitch of from the
+denote their pitch: each line represents the pitch of from the
+standard scale (c, d, e, f, g, a, b). The reference point is the
+\emph{clef}, eg., the treble clef marks the location of the $g^1$
+pitch. The notes are printed in their time order, from left to right.
+
+
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+ \score { \notes {
+ a4 b c d e f g a \clef bass;
+ a4 b c d e f g a \clef alto;
+ a4 b c d e f g a \clef treble;
+ }
+ \paper { linewidth = 15.\cm; }
+ }
+ \end{mudela}
+ \caption{Pitches ranging from $a, b, c',\ldots a'$, in different
+ clefs. From left right the bass, alto and treble clef are
+ featured.}
+ \label{fig:pitches}
+ \end{center}
+\end{figure}
+
+The chromatic alterations are indicated by printing a flat sign or a
+sharp sign in front of the note head. If these chromatic alterations
+occur systematically (if they are part of the tonality of the piece),
+then this indicated with a \emph{key signature}. This is a list of
+sharp/flat signs which is printed next to the clef.
+
+Articulation is notated by marking the note shapes wedges, hats and
+dots all indicate specific articulations. If the notes are to be
+bound fluently (legato), the note shapes are encompassed by a smooth
+curve called \emph{slur},
+
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+ c'4-> c'4-. g'4 ( b'4 ) g''4
+ \end{mudela}
+ \caption{Some articulations. From left to right: extra stress
+ (\emph{marcato}), short (staccato), slurred notes (legato).}
+ \label{fig:articulation}
+ \end{center}
+\end{figure}
+
+
+
+Dynamics are notated in two ways: absolute dynamics are indicated by
+letters: \textbf{f} (from Italian ``forte'') stands for loud,
+\textbf{p} (from Italian ``piano'') means soft. Gradual changes in
+loudness are notated by (de)crescendos. These are hairpin like shapes
+below the staff.
+
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+ g'4\pp \< g'4 \! g'4 \ff \> g'4 g' \! g'\ppp
+ \end{mudela}
+ \caption{Dynamics: start very soft (pp), grow to loud (ff) and
+ decrease to extremely soft (ppp)}
+ \label{fig:dynamics}
+ \end{center}
+\end{figure}
-\subsection{Music typography}
+The meter is indicated by barlines: every start of the stress pattern
+is preceded by a vertical line, the \emph{bar line}. The space
+between two bar lines is called measure. It is therefore the unit of
+the rhythmic pattern.
+The time signature also indicates what kind of rhythmic pattern is
+desired. The time signature takes the form of two numbers stacked
+vertically. The top number is the number of beats in one measure, the
+bottom number is the duration (relative to the whole note) of the note
+that takes one beat. Example: 2/4 time signature means ``two beats
+per measure, and a quarter note takes one beat''
+Chords are written by attaching multiple note heads to one stem. When
+the composer wants to emphasize the horizontal relationships between
+notes, the simultaneous notes can be written as voices (where every
+note head has its own stem). A small example is given in
+Figure~\ref{fig:simultaneous}.
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+ \relative c'' {\time 2/4; <c4 e> <d f>
+ \type Staff < \type Voice = VA{
+ \stemdown
+ c4 d
+ b16 b b b b b b b }
+ \type Voice = VB {
+ \stemup e4 f g8 g4 g8 } >
+ }
+ \end{mudela}
+ \caption{Notes sounding together. Chord notation (left, before
+ the bar line) emphasizes vertical relations, voice notation
+ emphasizes horizontal relations. Separate voices needn't have
+ synchronous rhythms (third measure).
+ }
+ \label{fig:simultaneous}
+ \end{center}
+\end{figure}
+
+Separate voices do not have to share one rhythmic pattern---this is
+also demonstrated in Figure~\ref{fig:simultaneous}--- they are in a sense%vaag
+independent. A different way to express this in notation, is by
+printing each voice on a different staff. This is customary when
+writing for piano (both left and right hand have a staff of their own)
+and for ensemble (every instrument has a staff of its own).
+
+
+
+\subsection{Music typography}
+
+Music typography is the art of placing symbols in esthetically
+pleasing configuration. Little is explicitly known about music
+typography. There are only a few reference works
+available\cite{ross,wanske}. Most of the knowledge of this art has
+been transmitted verbally, and was subsequently lost.
+
+The motivation behind choices in typography is to represent the idea
+as clearly as possible. Among others, this results in the following
+guidelines:
+\begin{itemize}
+\item The printed score should use visual hints to accentuate the
+ musical content
+\item The printed score should not contain distracting elements, such
+ as large empty regions or blotted regions.
+\end{itemize}
+
+An example of the first guideline in action is the horizontal spacing.
+The amount of space following a note should reflect the duration of
+that note: short notes get a small amount of space, long notes larger
+amounts. Such spacing constraints can be quite subtle, for the
+``amount of space'' is only the impression that should be conveyed; there
+has to be some correction for optical illusions. See
+Figure~\ref{fig:spacing}.
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+ \relative c'' { \time 3/4; c16 c c c c8 c8 | f4 f, f' }
+ \end{mudela}
+ \caption{Spacing conveys information about duration. Sixteenth
+ notes at the left get less space than quarter notes in the
+ middle. Spacing is ``visual'', there should be more space
+ after the first note of the last measure, and less after second. }
+ \label{fig:spacing}
+ \end{center}
+\end{figure}
+Another clearly visible example of music typography is visible in
+collisions. When chords or separate voices are printed, the notes
+that start at the same time should be printed aligned (ie., with the
+same $x$ position). If the pitches are close to each other, the note
+heads would collide. To prevent this, some notes (or note heads) have
+to be shifted horizontally. An example of this is given in Figure~\ref{fig:collision}.
+\begin{figure}[h]
+ \begin{center}
+ \begin{mudela}
+
+ \end{mudela}
+ \caption{Collisions}
+ \label{fig:collision}
+ \end{center}
+\end{figure}
\bibliographystyle{hw-plain}
\bibliography{engraving,boeken,colorado,computer-notation,other-packages}
are converted immediately to a real which gives the dimension in
points, so they can be mixed with reals, but the result is no longer
of type dimension. The keywords that require a dimension
-(code(\shape) and code(\symboltables)) will not accept this.
+(code(\shape)).
dit(pitch)
A pitch is a string which is the name of a pitch. Example: code(a).
letter and are entirely alphanumeric. It is also impossible to refer
to an identifier whose name is the same as the name of a keyword. The
following words are keywords:
-verb(absdynamic grouping mm relative symboltables
-accepts header musicalpitch remove table
+verb(absdynamic grouping mm relative
+accepts header musicalpitch remove
alternative in name repeat tempo
bar include notenames scm time
cadenza key notes scmfile times
var(dotcount).
dit(code(\font) var(string)) Internal keyword. Used within
-code(\symboltables) to specify the font.
+code(\paper) to specify the font.
dit(code(\grouping) var(durationseq)code(;)) Sets the metric structure of
the measure. Each argument specifies the duration of one metric unit.
file. Using it in a user file will lead to an infinite loop.
dit(code(\mark) var(unsigned)code(;) or code(\mark) var(string)code(;))
-Allowed in music only. Prints a mark over or under (?) the staff.
-You must add code(Mark_engraver) to the Score context and it only
-seems to work if the mark appears at the beginning of a line.
+Allowed in music only. Prints a mark over or under (depending on the
+code(markDirection) property) the staff.
+You must add code(Mark_engraver) to the Score context.
dit(code(\midi) var(statementlist)) Appears in a score block to
indicate that musical output should be produced and to set output
Users should use the abbreviations which are defined in the
initialization file file(dynamic.ly).
-dit(code(\symboltables)) Internal keyword. Used to create symbol
-tables. See initialization files file(paper*.ly), file(feta*.ly), and
-file(table*.ly).
-
-dit(code(\table)) Internal keyword. Used within code(\symboltables)
-to specify the tables. See initialization files.
-
dit(code(\tempo) var(duration) = var(perminute)code(;)) Used within
code(\midi) or within music to specify the tempo. For example,
`code(\midi { \tempo 4 = 76;})' requests output with 76 quarter notes
to 3 shows a number, and if there is no beam it adds a bracket;
setting to 4 shows both a number and a bracket unconditionally.
+dit(code(markScriptPadding)) Determines the extra space added between
+the mark and the closest staff line or note.
+
+dit(code(markDirection)) Determines if marks should be printed above
+or below the staff. Set to code(\up) to print marks above the staff;
+set to code(\down) to print marks below the staff.
+
)
subsubsubsect(Staff properties)
description(
dit(var(integer)) If an integer appears on the left side of an
-assignment then a code(\symboltables) keyword must appear on the right
+assignment then a code(\font) keyword must appear on the right
side. This defines a music font at a particular size. See Voice
property code(\fontsize).
Options to configure include:
description(
-dit(bf(--enable-guile))
- Link in GUILE (experimental)
dit(bf(--enable-printing))
Enable debugging print routines (lilypond bf(-D) option)
dit(bf(--enable-optimise))
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=23
+PATCH_LEVEL=24
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
dnl WARNING WARNING WARNING WARNING
dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
dnl aclocal.m4 -*-shell-script-*-
dnl StepMake subroutines for configure.in
export PACKAGE_NAME
prefix=$HOME/usr
sources=$prefix/src
+
#
#
. ./stepmake/bin/package-zet.sh
chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm
-mkdir -p $prefix/share/lilypond
-ln -sf $LILYPOND_SOURCEDIR/ $prefix/share/lilypond
-rm $prefix/share/lilypond
+mkdir -p $prefix/share/
+ln -sf $prefix/lilypond/ $sources/lilypond
if [ -f ../.gdbinit ];
then
# the debugging.
# class name silence?
-Dstream 1
+Dstream 0
# yydebug
InitParser 1
# lily
Absolute_dynamic_req 1
Atom 1
-Axis_group_administration 0
+Axis_group_administration 1
+Axis_group_spanner 1
+Auto_beam_engraver 0
+Audio_column 1
+Audio_element 1
+Audio_item 1
+Audio_note 1
Bar 1
Bar_req 1
-Beam 0
+Beam 1
Bezier 1
Bezier_bow 1
Bezier_bow_controls 1
-Bezier_controls 0
+Bezier_controls 1
Bow 1
Change_iterator 1
Change_translator 1
Column_info 1
Column_rod 1
Duration_identifier 1
-Engraver 0
-Engraver_group_engraver 0
+Engraver 1
+Engraver_group_engraver 1
General_script_def 1
Graphical_element 1
+Graphical_axis_group 1
Group_change_req 1
Guile 1
-Head_column 0
+Head_column 1
Horizontal_align_item 1
Horizontal_group_item 1
Idealspacing 1
Ineq_constrained_qp 1
Input_translator 1
int_identifier 1
-Item 0
+Item 1
Key_item 1
Lookup 1
Line_spacer 1
Melodic_req 1
Midi_def 1
-Midistrings 0
+Midistrings 1
Mixed_qp 1
Music 1
Musical_pitch 1
Music_iterator 1
Music_output_def 1
-Note_column 0
+Note_column 1
Note_head 1
Note_performer 1
Note_req 1
-Paper_column 0
+Paper_column 1
Paper_score 1
Paper_def 1
+Partial_measure_req 1
+Performance 1
Performer 1
Performer_group_performer 1
Real_identifier 1
Request 1
Request_iterator 1
Rest_collision 1
-Rest_collision_engraver 0
+Rest_collision_engraver 1
Rest_req 1
-Rhythmic_head 0
+Rhythmic_head 1
Rhythmic_req 1
Scope 1
-Score 0
-Score_column 0
-Score_element 0
-Score_engraver 0
+Score 1
+Score_column 1
+Score_element 1
+Score_engraver 1
Score_performer 1
Script_column 1
Script_def 1
Staff_commands 1
Staff_symbol 1
Stem 1
-Stem_info 0
+Stem_info 1
Stem_req 1
+String_identifier 1
+Relative_octave_music 1
Symtable 1
Symtables 1
Text_item 1
Text_req 1
Time_description 1
-Translation_property 0
-Translator 0
-Translator_group 0
+Time_signature_change_req 1
+Translation_property 1
+Translator 1
+Translator_group 1
Voice 1
Voice_iterator 1
Word_wrap 1
return my_prime_list [idx];
}
-unsigned int hash (String s)
+unsigned int string_hash (String s)
{
const char* str = s.ch_C ();
unsigned int result = 0;
return i;
}
-unsigned int hash (int i)
+unsigned int int_hash (int i)
{
return (unsigned) i;
}
+
+unsigned int hash ( );
#define DICTIONARY_ITER_HH
#include "dictionary.hh"
+#include "hash-table-iter.hh"
-template<class K, class V>
-class Hash_table_iter
-{
- Hash_table<K,V> *dict_l_;
- int i;
-public:
- Hash_table_iter(Hash_table<K,V> const &dict)
- {
- i =0;
- dict_l_ =(Hash_table<K,V> *) & dict;
- next_used ();
- }
-
- bool ok ()
- {
- return i < dict_l_->fixed_p_->dict_arr_.size ();
- }
-
- void next_used ()
- {
- while (ok () && dict_l_->fixed_p_->dict_arr_[i].free_b_)
- {
- i ++;
- }
- }
- void operator ++(int)
- {
- i++;
- next_used ();
- }
-
- K key ()
- {
- return dict_l_->fixed_p_->dict_arr_[i].key_;
- }
- V val ()
- {
- return dict_l_->fixed_p_->dict_arr_[i].value_;
- }
- V &val_ref ()
- {
- return dict_l_->fixed_p_->dict_arr_[i].value_;
- }
-};
template<class V>
class Dictionary_iter<V> : public Hash_table_iter<String,V>
#include "string.hh"
#include "array.hh"
-unsigned long prime_list (int idx);
-template<class K, class V>
-struct Hash_table_entry
-{
- K key_;
- V value_;
- bool free_b_;
+#include "hash-table.hh"
- Hash_table_entry() {
- free_b_ = true;
- }
- Hash_table_entry (K s, V v)
- {
- key_ = s;
- value_ = v;
- free_b_ = false;
- }
-};
-unsigned int hash (String);
-unsigned int hash (int);
+unsigned int string_hash (String);
+
template<class V>
struct Dict_initialiser
V value_;
};
-/**
- A hash table of prime size.
-
- We use quadratic probing.
- */
-template<class K, class V>
-class Fixed_size_hash_table
-{
-public:
- Array<Hash_table_entry<K,V> > dict_arr_;
- int size_idx_;
- Fixed_size_hash_table (int size_idx)
- {
- size_idx_ = size_idx;
- int sz = prime_list(size_idx_);
- dict_arr_.set_size (sz);
- }
-
- /// find #s#, or find first empty entry corresponding to #s#
- int lookup (K s)
- {
- int sz =dict_arr_.size ();
- int i = hash (s) % sz;
- int j = 0;
- while (j <= sz/2) {
- if (dict_arr_[i].free_b_)
- return i;
-
- if (dict_arr_[i].key_ == s)
- return i;
-
- j++;
- i = (i + j*j) % sz;
- }
-
- return -1;
- }
-
- /// remove #s# from the hash table.
- V remove (K s)
- {
- assert (false); // Untested routine.
- int sz =dict_arr_.size ();
- int i = hash (s) % sz;
- int j = 0;
- V retval;
- while (j <= sz/2 && dict_arr_[i].key_ != s)
- {
- assert (!dict_arr_[i].free_b_);
-
-
- j ++;
- i = (i + j*j) % sz;
- }
-
- j++;
- int nexti = (i + j*j) % sz;
-
- while (j <= sz/2 && !dict_arr_[i].free_b_)
- {
- dict_arr_[i] = dict_arr_[nexti];
- j++;
- i = nexti;
- nexti = (nexti + j*j)%sz;
- }
-
- return retval;
- }
-};
-
-/**
- Hash table with sliding sizes.
- */
-template<class K, class V>
-class Hash_table
-{
- Fixed_size_hash_table<K,V> * fixed_p_;
-
- /// set size to next prime, and copy contents
- void enlarge ()
- {
- Fixed_size_hash_table<K,V> *f = new Fixed_size_hash_table<K,V> (fixed_p_->size_idx_ +1);
- for (int i=0; i < fixed_p_->dict_arr_.size(); i++)
- {
- if (fixed_p_->dict_arr_[i].free_b_)
- continue;
-
- K nm (fixed_p_->dict_arr_[i].key_);
- int nl = f->lookup (nm);
-
- f->dict_arr_[nl] = Hash_table_entry<K,V> (nm, fixed_p_->dict_arr_[i].value_);
- }
- delete fixed_p_;
- fixed_p_ = f;
- }
-public:
- Hash_table ()
- {
- fixed_p_ = new Fixed_size_hash_table<K,V> (0);
- }
- ~Hash_table ()
- {
- delete fixed_p_;
- }
- void operator = (Hash_table<K,V> const &src)
- {
- if (&src == this)
- return;
-
- delete fixed_p_;
- fixed_p_ = new Fixed_size_hash_table<K,V> (*src.fixed_p_);
- }
- Hash_table (Hash_table<K,V> const &src)
- {
- fixed_p_ = new Fixed_size_hash_table<K,V> (*src.fixed_p_);
- }
-
- void clear ()
- {
- int i= fixed_p_->size_idx_;
- delete fixed_p_;
- fixed_p_ = new Fixed_size_hash_table<K,V> (i);
- }
- bool elem_b (K s) const
- {
- int l = fixed_p_->lookup (s);
-
- return (l >= 0 && !fixed_p_->dict_arr_[l].free_b_) ;
- }
-
- /**
- Find and return element. If #s# is not in the table, create an entry in the table, and init
- */
- V& elem (K s)
- {
- int l;
- while ((l= fixed_p_->lookup (s)) <0)
- {
- enlarge ();
- }
-
-
- fixed_p_->dict_arr_[l].free_b_ = false;
- fixed_p_->dict_arr_[l].key_ = s;
- return fixed_p_->dict_arr_[l].value_;
- }
- V elem (K s) const
- {
- return const_elem (s);
- }
- V const_elem (K k) const
- {
- V retval;
- if (elem_b (k))
- retval = ((Hash_table<K,V>*)this)->elem (k);
- return retval;
- }
- V& operator [] (K k)
- {
- return elem (k);
- }
-
- V operator [] (K k) const
- {
- return const_elem (k);
- }
-
- V remove (K s)
- {
- return fixed_p_->remove (s);
- }
- friend class Hash_table_iter<K,V>;
-};
template<class V>
class Dictionary : public Hash_table<String, V>
{
public:
Dictionary ()
- {}
+ {
+ hash_func_ = string_hash;
+ }
Dictionary (Dict_initialiser<V> *p)
{
+ hash_func_ = string_hash;
for (Dict_initialiser<V> *q = p; q->key_; q++)
elem (q->key_) = q->value_;
char const * flower_version_sz();
-// what the F*** is "int" ?
-// deprecate int, long, etc., use i32, i64, remember: linux-16/linux-64 ?
-/// (i32)
-typedef int i32;
-/// (i64)
-typedef long long I64;
-
template<class T> struct Link_array;
template<class T> struct Array;
template<class T> struct sstack;
struct Data_file;
struct Text_db;
struct Scalar;
+
+typedef unsigned char U8;
+typedef short I16;
+typedef unsigned short U16;
+typedef unsigned U32;
+typedef int I32;
+typedef long long I64;
+
typedef unsigned char Byte;
--- /dev/null
+/*
+ hash-table-iter.hh -- declare Hash_table_iter
+
+ source file of the Flower Library
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef HASH_TABLE_ITER_HH
+#define HASH_TABLE_ITER_HH
+#include "hash-table.hh"
+
+template<class K, class V>
+class Hash_table_iter
+{
+ Hash_table<K,V> *dict_l_;
+ int i;
+public:
+ Hash_table_iter(Hash_table<K,V> const &dict)
+ {
+ i = 0;
+ dict_l_ =(Hash_table<K,V> *) & dict;
+ next_used ();
+ }
+
+ bool ok () const
+ {
+ return i < dict_l_->fixed_p_->dict_arr_.size ();
+ }
+
+ void next_used ()
+ {
+ while (ok () && dict_l_->fixed_p_->dict_arr_[i].free_b_)
+ {
+ i ++;
+ }
+ }
+ void operator ++(int)
+ {
+ i++;
+ next_used ();
+ }
+
+ K key () const
+ {
+ return dict_l_->fixed_p_->dict_arr_[i].key_;
+ }
+ V val () const
+ {
+ return dict_l_->fixed_p_->dict_arr_[i].value_;
+ }
+ V &val_ref ()
+ {
+ return dict_l_->fixed_p_->dict_arr_[i].value_;
+ }
+};
+
+
+#endif /* HASH_TABLE_ITER_HH */
+
--- /dev/null
+/*
+ hash-table.hh -- declare Hash_table_entry, Hash_table
+
+ source file of the Flower Library
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef HASH_TABLE_HH
+#define HASH_TABLE_HH
+
+unsigned int int_hash (int);
+unsigned long prime_list (int idx);
+template<class K, class V>
+struct Hash_table_entry
+{
+ K key_;
+ V value_;
+ bool free_b_;
+
+ Hash_table_entry() {
+ free_b_ = true;
+ }
+ Hash_table_entry (K s, V v)
+ {
+ key_ = s;
+ value_ = v;
+ free_b_ = false;
+ }
+};
+
+/**
+ A hash table of prime size.
+
+ We use quadratic probing.
+ */
+template<class K, class V>
+class Fixed_size_hash_table
+{
+public:
+ Array<Hash_table_entry<K,V> > dict_arr_;
+ int size_idx_;
+ Fixed_size_hash_table (int size_idx)
+ {
+ size_idx_ = size_idx;
+ int sz = prime_list(size_idx_);
+ dict_arr_.set_size (sz);
+ }
+
+ /// find #s#, or find first empty entry corresponding to #s#
+ int lookup (K s, unsigned int initial_hash)
+ {
+ int sz =dict_arr_.size ();
+ int i = initial_hash % sz;
+ int j = 0;
+ while (j <= sz/2) {
+ if (dict_arr_[i].free_b_)
+ return i;
+
+ if (dict_arr_[i].key_ == s)
+ return i;
+
+ j++;
+ i = (i + j*j) % sz;
+ }
+
+ return -1;
+ }
+
+ /// remove #s# from the hash table.
+ V remove (K s, unsigned int initial_hash)
+ {
+ assert (false); // Untested routine.
+ int sz =dict_arr_.size ();
+ int i = initial_hash % sz;
+ int j = 0;
+ V retval;
+ while (j <= sz/2 && dict_arr_[i].key_ != s)
+ {
+ assert (!dict_arr_[i].free_b_);
+
+
+ j ++;
+ i = (i + j*j) % sz;
+ }
+
+ j++;
+ int nexti = (i + j*j) % sz;
+
+ while (j <= sz/2 && !dict_arr_[i].free_b_)
+ {
+ dict_arr_[i] = dict_arr_[nexti];
+ j++;
+ i = nexti;
+ nexti = (nexti + j*j)%sz;
+ }
+
+ return retval;
+ }
+};
+
+/**
+ Hash table with sliding sizes.
+ */
+template<class K, class V>
+class Hash_table
+{
+ Fixed_size_hash_table<K,V> * fixed_p_;
+ /// set size to next prime, and copy contents
+ void enlarge ()
+ {
+ Fixed_size_hash_table<K,V> *f = new Fixed_size_hash_table<K,V> (fixed_p_->size_idx_ +1);
+
+ for (int i=0; i < fixed_p_->dict_arr_.size(); i++)
+ {
+ if (fixed_p_->dict_arr_[i].free_b_)
+ continue;
+
+ K nm (fixed_p_->dict_arr_[i].key_);
+ unsigned int h = (*hash_func_)(nm);
+ int nl = f->lookup (nm, h);
+
+ f->dict_arr_[nl] = Hash_table_entry<K,V> (nm, fixed_p_->dict_arr_[i].value_);
+ }
+ delete fixed_p_;
+ fixed_p_ = f;
+ }
+public:
+ Hash_table ()
+ {
+ hash_func_ = 0;
+ fixed_p_ = new Fixed_size_hash_table<K,V> (0);
+ }
+ ~Hash_table ()
+ {
+ delete fixed_p_;
+ }
+ void operator = (Hash_table<K,V> const &src)
+ {
+ if (&src == this)
+ return;
+
+ delete fixed_p_;
+ fixed_p_ = new Fixed_size_hash_table<K,V> (*src.fixed_p_);
+ hash_func_ = src.hash_func_;
+ }
+ Hash_table (Hash_table<K,V> const &src)
+ {
+ fixed_p_ = new Fixed_size_hash_table<K,V> (*src.fixed_p_);
+ hash_func_ = src.hash_func_;
+ }
+
+ void clear ()
+ {
+ int i= fixed_p_->size_idx_;
+ delete fixed_p_;
+ fixed_p_ = new Fixed_size_hash_table<K,V> (i);
+ }
+ bool elem_b (K s) const
+ {
+ int l = fixed_p_->lookup (s, (*hash_func_)(s));
+
+ return (l >= 0 && !fixed_p_->dict_arr_[l].free_b_) ;
+ }
+
+ /**
+ Find and return element. If #s# is not in the table, create an entry in the table, and init
+ */
+ V& elem (K s)
+ {
+ int l;
+ unsigned int h = (*hash_func_)(s);
+ while ((l= fixed_p_->lookup (s,h)) <0)
+ {
+ enlarge ();
+ }
+
+ fixed_p_->dict_arr_[l].free_b_ = false;
+ fixed_p_->dict_arr_[l].key_ = s;
+ return fixed_p_->dict_arr_[l].value_;
+ }
+ V elem (K s) const
+ {
+ return const_elem (s);
+ }
+ V const_elem (K k) const
+ {
+ V retval;
+ if (elem_b (k))
+ retval = ((Hash_table<K,V>*)this)->elem (k);
+ return retval;
+ }
+ V& operator [] (K k)
+ {
+ return elem (k);
+ }
+
+ V operator [] (K k) const
+ {
+ return const_elem (k);
+ }
+
+ V remove (K s)
+ {
+ return fixed_p_->remove (s, (*hash_func_)(s));
+ }
+ friend class Hash_table_iter<K,V>;
+public:
+ unsigned int (*hash_func_)(K);
+};
+
+
+#endif /* HASH_TABLE_HH */
+
const int FACT = 1 << 20;
/*
- FIXME
+ Thanks to Afie for this too simple idea.
+
+ do not blindly substitute by libg++ code, since that uses
+ arbitrary-size integers. The rationals would overflow too
+ easily.
+ */
- SHOULD TEST THIS
-
- suck me gently with a vacuum cleaner. Thanks to Afie for this wierd idea.
- */
num_ = (unsigned int) (mantissa * FACT);
den_ = (unsigned int) FACT;
+ normalise ();
+ if (expt < 0)
+ den_ <<= -expt;
+ else
+ num_ <<= expt;
normalise ();
- num_ <<= expt;
}
else
{
--- /dev/null
+\score{
+ \notes \relative c''{
+ \time 2/4;
+ c8
+ \repeat 2 { % \bar "|:" iknoort-i ook...
+ c8 c8
+ }
+ c8
+ }
+ \paper{
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
+}
--- /dev/null
+
+corI=\notes\relative c'' {
+\key c;
+
+[g8. \f ( a16 ] ) g2 |
+[g8. ( a16 ] ) g2_"dim." |
+c2. \p ( |
+) g2 g4 ( |
+) c2. ( |
+) g4 [g8. ( a16 ] ) g4 |
+c2. \p ( |
+) g2 g4 |
+c2 \< ( ~ [ \! c8 \> \! ) g ] |
+g2 \p r4 |
+g \mf ( d' c~ |
+c ) b r |
+R2. |
+}
+
+corII=\notes\relative c'' {
+\key c;
+\time 3/4;
+
+R2.*19 |
+r4 r [g8^"solo" \p (\< \! ) e'] |
+g2 \> ( [e8. ) \! c16 ] | % grace note e8 () g2
+g2 r 4 |
+r r \times 2/3 {[e'8 \p ( g, ) g' ]} |
+g4 \> () \! e r |
+r r \times 2/3 {[g8 \p ( e ) g ]} |
+d4 \> () \! g r |
+r r [g,16 ( \p d' e d ] |
+) g,4 r r |
+R2. |
+r4 r c \p ( |
+) g r r |
+g [g8. ( a16 ] ) g4 |
+R2. |
+r4 r [g8^""^"solo" \mf \< () \! e' ] |
+g2 \> [ \! e8. ( c16 ] |
+) g2 r4 |
+R2. |
+r4 r \times 2/3 {[e'8 \f ( g, ) g'] } |
+g4 () e r |
+r r \times 2/3 {[g8 \f ( e ) g] }
+d4 () g r |
+r r [d16 \f ( g, e' d ] |
+[g, d' e ) d ] g,4 r |
+r d'2 \f \> ( | % grace note g8 d2
+[g,8. a16 g8. a16 \! g8. ) a16 ] |
+g4 r r |
+}
+
+trpI=\notes\relative c'' {
+\key c;
+\time 3/4;
+
+R2.*30 |
+}
+
+\score{ <
+ \type StaffGroup = brass <
+ \type Staff = cor <
+ \type Voice = corI { \stemup \corI }
+ \type Voice = corII { \stemdown \corII }
+ >
+ \type Staff = trp <
+ \type Voice = trpI { \stemup \trpI }
+ >
+ >
+>
+ \paper {
+ \translator {\OrchestralScoreContext
+ % The following line causes a SIGSEGV
+ \consists "Multi_measure_rest_engraver";
+ }
+ }
+}
--- /dev/null
+\score{
+ \notes \relative c''{
+ \time 4/4;
+ c4 c c c
+ \partial 4*3;
+ c c c
+ \repeat 2 {
+ \partial 4;
+ c
+ c c c c
+ \partial 4*3;
+ c c c
+ }
+ }
+ \paper{ }
+}
% \version "1.0.14";
-global = \notes {
- \key g;
- \time 3/8;
- \skip 4.*8;
-% 1.1.9 broken
-% \bar ":|";
-}
-
tempi = \notes {
\property Voice.textstyle = "large"
s8^"Allegro assai"
}
dynamics = \notes {
- \type Voice=i
s8\p\< \!s8.\> \!s16 | s4.\p | s8\< s8. \!s16 | s4.\p |
s8\p\< \!s8.\> \!s16 | s4.\p | s8\< s8. \!s16 | s4.\p |
}
+global = \notes {
+ \key g;
+ \time 3/8;
+ <
+ \dynamics
+ \repeat 2 { s4.*8 }
+ >
+}
+
violinei = \notes\relative c''{
- \type Voice=i
- [d8(b)d16] r | g,4. | [a16(b c8)e16] r | g,8~fis4 |
- [d''8(b)d16] r | g,4. | [a16(b c8)fis,16] r | fis8~g4 |
+ d8(b)d16 r | g,4. | a16(b c8)e16 r | g,8~fis4 |
+ d''8(b)d16 r | g,4. | a16(b c8)fis,16 r | fis8~g4
}
violineii = \notes\relative c'{
- \type Voice=i
- [b8(d)b] | [e(g,)e'] | [e(c)a'] | [a(c)a] |
+ b8(d)b | e(g,)e' | e(c)a' | a(c)a |
% copy from violinei: 5-8
- [d8(b)d16] r | g,4. | [a16( b c8)fis,16] r | fis8~g4 |
+ d8(b)d16 r | g,4. | a16( b c8)fis,16 r | fis8~g4
}
viola = \notes\relative c'{
- \type Voice=i
\clef "alto";
- [g8(b)g] | [b(e,)b'] | [c,(a')c,] | [c'(d,)c'] | [b(d)b] |
- [e(g,)e'] | [e(e,<)a' c,>] | <[a(c,> <fis b,> )b,] |
+ g8(b)g | b(e,)b' | c,(a')c, | c'(d,)c' | b(d)b |
+ e(g,)e' | e(e,<)a' c,> | < a(c,> <fis b,> )b,
}
cello = \notes\relative c'{
- \type Voice=i
\clef "bass";
- g4 r8 | e'4 r8 | c4 r8 | d4 r8 | [g,,8 b g] | [b(e,)b'] |
- [c,(a')d,] | [d'(d,)g] |
+ g4 r8 | e'4 r8 | c4 r8 | d4 r8 | g,,8 b g | b(e,)b' |
+ c,(a')d, | d'(d,)g
}
\score{
\type StaffGroup <
- \type Staff = i < \tempi \global \dynamics \violinei >
- \type Staff = ii < \global \dynamics \violineii >
- \type Staff = iii < \global \dynamics \viola >
- \type Staff = iv < \global \dynamics \cello >
+% broken, 1.1.23
+% \type Staff = i < \tempi \global \violinei >
+ \type Staff = i < \global \violinei >
+ \type Staff = ii < \global \violineii >
+ \type Staff = iii < \global \viola >
+ \type Staff = iv < \global \cello >
>
\paper{
\translator { \OrchestralScoreContext }
+ \translator {
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd = "3/8";
+ }
}
\midi{ \tempo 4 = 160; }
}
}
$staff1_voice_1 = \notes {
- [a8.()fis16]
- \repeat 2 { d4 fis4 a4 d'2 [fis'8. e'16] d'4 fis4 gis4 a2 [a8 a8]
- fis'4. e'8 d'4 cis'2 [b8. cis'16] d'4 d'4 a4 }
- \alternative { { fis4 d4 [a8. fis16] } { fis4 d4 [fis'8. fis'16] } }
- fis'4 g'4 a'4 a'2 [g'8 fis'8] e'4 fis'4
- g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 [b8. cis'16] d'4 fis4 gis4 a2 a4
- d'4 d'4 [d'8()cis'8] b4 b4 b4 e'4 [g'8 ()fis'8] [e'8()d'8]
- d'4~cis'4 [a8. a16] d'4.~e'8 [fis'8 g'8] a'2 [d'8 e'8] fis'4. g'8
+ a8.()fis16
+ \repeat 2 { d4 fis4 a4 d'2 fis'8. e'16 d'4 fis4 gis4 a2 a8 a8
+ fis'4. e'8 d'4 cis'2 b8. cis'16 d'4 d'4 a4 }
+ \alternative { { fis4 d4 a8. fis16 } { fis4 d4 fis'8. fis'16 } }
+ fis'4 g'4 a'4 a'2 g'8 fis'8 e'4 fis'4
+ g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 b8. cis'16 d'4 fis4 gis4 a2 a4
+ d'4 d'4 d'8()cis'8 b4 b4 b4 e'4 g'8 ()fis'8 e'8()d'8
+ d'4~cis'4 a8. a16 d'4.~e'8 fis'8 g'8 a'2 d'8 e'8 fis'4. g'8
e'4 d'2 s4
}
$staff1_voice_2 = \notes {
- [a8.()fis16]
- \repeat 2 { a,4 d4 e4 d4~fis4 [fis8. fis16] fis4 d4 d4 cis2
- [e8 e8] a4. a8 a4 a2 [a8. a16] a4 a4 a4 }
- \alternative { { fis4 d4 [a8. fis16] } { fis4 d4 r4 } }
- a4 a4 d'4 d'2 [a8 a8] cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2
- [a8. a16] d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 [g8()dis8] e4 e2
- [e8. e16] d4.~a8 [a8 a8] a2 [g8 g8] a4. a8 g4 fis2 s4
+ a8.()fis16
+ \repeat 2 { a,4 d4 e4 d4~fis4 fis8. fis16 fis4 d4 d4 cis2
+ e8 e8 a4. a8 a4 a2 a8. a16 a4 a4 a4 }
+ \alternative { { fis4 d4 a8. fis16 } { fis4 d4 r4 } }
+ a4 a4 d'4 d'2 a8 a8 cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2
+ a8. a16 d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 g8()dis8 e4 e2
+ e8. e16 d4.~a8 a8 a8 a2 g8 g8 a4. a8 g4 fis2 s4
}
$staff2_voice_1 = \notes {
r4
- \repeat 2 { fis4 a4 a4 b2 [cis'8. cis'16] b4 b4 b4 a2 [cis'8 cis'8]
- d'4. cis'8 d'4 e'2 [e'8. e'16] d'4 d'4 a4 }
- \alternative { { fis4 d4 r4 } { fis4 d4 r4 } }
- d4 e4 fis4 fis'2 [e'8 d'8] e'4 e'4 e'4 e'2 cis'4 d'4. cis'8 d'4 e'2
- [e'8. e'16] a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2
- [cis'8. cis'16] a4.~cis'8 [d'8 d'8] d'2 [d'8 d'8] d'4. d'8 cis'4
+ \repeat 2 { fis4 a4 a4 b2 cis'8. cis'16 b4 b4 b4 a2 cis'8 cis'8
+ d'4. cis'8 d'4 e'2 e'8. e'16 d'4 d'4 a4 }
+ \alternative { { fis4 d4 r4 } { fis4 d4 r4 } }
+ d4 e4 fis4 fis'2 e'8 d'8 e'4 e'4 e'4 e'2 cis'4 d'4. cis'8 d'4 e'2
+ e'8. e'16 a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2
+ cis'8. cis'16 a4.~cis'8 d'8 d'8 d'2 d'8 d'8 d'4. d'8 cis'4
a2 s4
}
$staff2_voice_2 = \notes {
r4
- \repeat 2 { d4 d4 cis4 b,2 [ais,8. ais,16] b,4 b,4 e4 a,2 [a8 a8]
- d4. e8 [fis8 g8] a2 [g8. g16] fis4 fis4 a4 }
+ \repeat 2 { d4 d4 cis4 b,2 ais,8. ais,16 b,4 b,4 e4 a,2 a8 a8
+ d4. e8 fis8 g8 a2 g8. g16 fis4 fis4 a4 }
\alternative { { fis4 d4 r4 } { fis4 d4 r4 } }
- d4 d4 d4 d2 [d8 d8] a4 a4 a4 a2 a,4 d4. e8 [fis8 g8] a2 [g8. g16]
- fis4 d4 e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 [e8()fis8] [g8()gis8] a2
- [g8. g16] fis4.~a,8 [d8 e8] fis2 [b8 b8] a4. a8 a,4 d2 s4
+ d4 d4 d4 d2 d8 d8 a4 a4 a4 a2 a,4 d4. e8 fis8 g8 a2 g8. g16
+ fis4 d4 e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 e8()fis8 g8()gis8 a2
+ g8. g16 fis4.~a,8 d8 e8 fis2 b8 b8 a4. a8 a,4 d2 s4
}
$text = \lyrics{
{ say. can you see,2 by8. the16 dawn's4 ear- ly light2 What8
so8 proud-4. ly8 we4 hailed,2 At8. the16 twi-4 light's last gleam-
ing. Whose8. broad16 }
- % urg, lyric chords broken: 1.1.22
-% { stripes4 and bright stars,2 through8. the16 per-4 il- ous fight,2
-% O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly }
+ { stripes4 and bright stars,2 through8. the16 per-4 il- ous fight,2
+ O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly }
>
stream-4 ing. And8. the16 rock-4 ets' red glare,2 the8 bombs8
burst-4 ing in air,2 gave4 proof4. through8 the4 night2 that8.
\type Staff=staffB <
\global
\clef bass;
+ \property Staff.voltaVisibility = "0"
{\voiceone \$staff2_voice_1 }
{\voicetwo \$staff2_voice_2 }
>
textheight = 230.\mm;
linewidth= 180.\mm;
\translator {
- \GrandStaffContext
- \accepts "Lyrics";
+ \GrandStaffContext
+ \accepts "Lyrics";
}
\translator {
- \BarNumberingStaffContext
+ \BarNumberingStaffContext
+ }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
}
}
}
--- /dev/null
+%{
+ Currently (1.1.22.jcn5), the auto-beam engraver will only engrave
+ sensible beams (hopefully), which means that it will give up the
+ whole beam if:
+ * a rest is encountered
+ * another beam (entered manually) is encountered
+ * there's a 'gap' in the beam note's durations
+
+ There's no smart algorithm, beginning a beam is considered when
+
+ now / beamAutoBegin = 0
+
+ the beam will be ended when
+
+ * now / beamAutoEnd = 0
+%}
+
+\score{
+ \notes \relative c''{
+ \time 2/4;
+ % one beam per measure
+ c8 c c c
+ c16 c c c c c c c
+ % from here on two beams per measure
+ \property Voice.beamAutoEnd = "1/4";
+ c8 c c c
+ % manually override autobeam with weird beaming
+ c8 [c c] c
+ c8 c c r
+ c8 c c4
+ r8 c c c
+ % no autobeaming
+ \property Voice.beamAuto = "0"
+ c8 c c c
+ }
+ \paper{
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ % switch it on (perhaps a bit double, but we want to be able
+ % to switch it off conveniently
+ beamAuto = 1.;
+ % consider starting beam at every 4 note
+ % beamAutoBegin = "1/4";
+ beamAutoEnd = "1/2";
+ }
+ }
+}
-
-
-\version "1.0.14";
+ \version "1.0.14";
onestaff = \type Staff = foo\notes {
\property Staff.instr = instr
\type Staff = bufl { c1 c2 }
>
-scpaper = \paper {\translator {\OrchestralScoreContext}}
-
+scpaper = \paper {\translator {\OrchestralScoreContext}}
+stpaper = \paper{ \translator {\BarNumberingStaffContext }}
-stpaper =\paper{ \BarNumberingStaffContext }
scscore = \score { \grstaff \paper {
\scpaper
}}
\stpaper
}}
-\score {\stscore}
-%\score {\scscore}
+%\score {\stscore}
+\score {\scscore}
minVerticalAlign = 3.0*\staffheight;
maxVerticalAlign = 3.0*\staffheight;
}
- linewidth=-1.;
+% linewidth=-1.;
}
}
%<c1 e g>
c1-m c-min c4-dim c-aug c-sus c-maj
c1-6 c4-7 c-9 c-11 c-13
+ c1-7^5 c-13^5^7^9^11
+ % c1-7^5 c-13^5
c1 g d a e b fis
c1 f bes es as des ges
}
\score{
< \global \one \two >
\paper {
- \translator { \OrchestralPartStaffContext }
+ \translator { \OrchestralPartStaffContext
+ markScriptPadding = "4.0";
+ markHangOn = "Bar";
+ markHangDepth = "1";
+% markDirection = \diown;
+ }
}
}
--- /dev/null
+\version "1.0.15";
+
+\score{
+ \notes \transpose c''{
+ @c1@ @c-7@ @c-7^5@-1-3
+ }
+
+}
--- /dev/null
+\score{
+ <
+ \type Staff \notes\relative c'{
+ c4 d e f
+ \repeat 2 { g a b c }
+% \alternative { { c b a g } { f e d c } } c c c c
+ \alternative { { c b a g } { f e d c } { c d e f } }
+ g g g g
+ \repeat 2 { c c c c }
+ \repeat 2 { c c c c }
+ g g g g
+ }
+ >
+}
\header{
-filename = "twinkle.ly";
-title = "Twinkle Twinkle Little Star";
-
-composer = "Traditional";
-enteredby = "HWN & JCN";
-copyright = "public domain";
+filename = "twinkle.ly";
+title = "Twinkle Twinkle Little Star";
+composer = "Traditional";
+enteredby = "hwn and jcn";
+copyright = "public domain";
}
%{
%}
%{
-Tested Features: lyrics, interleaving lyrics and staffs
+Tested Features: lyrics, interleaving lyrics and staffs, repeats
%}
\version "1.0.14";
tekst = \lyrics{
Al-4 tijd is Kort- jak- je ziek,2
midden4 in_de week maar s,_zon- dags niet.2
-% ugly hack: insertion of empty syllables creates columns on extra
-% moments. The net result is more spacing.
-%
-% probably not necessary anymore
-% midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2
s,_Zon-4 dags gaat ze naar de kerk,2
met4 een boek vol zil- ver werk.2
Al-4 tijd is Kort- jak- je ziek,2
How4 I won- der what you are!2
}
-$top_lyrics = \type Lyrics = top <
- \tekst
->
-
-$treble_staff = \type Staff = treble <
- \global
- \melody
->
-
-$bass_staff = \type Staff = bass <
- \global
- \accompany
->
-
-$middle_lyrics = \type Lyrics = middle <
- \texte
->
-
-$bottom_lyrics = \type Lyrics = bottom <
-% \global
- \texti
- \textii
- \textiii
->
-
-$grand_staff = \type GrandStaff <
- \$treble_staff
- \$middle_lyrics
- \$bass_staff
->
-
\score{
- \repeat 2 { <
- \$treble_staff
- \$middle_lyrics
- \$top_lyrics
- \$grand_staff
- \$bottom_lyrics
- > }
+ <
+ \type Staff=i \repeat 2 < \global\melody >
+ \type Lyrics=top \repeat 2 {} \alternative < \tekst \texte >
+ \type GrandStaff <
+ \type Staff=ii \repeat 2 < \global\melody >
+ \type Staff=iii \repeat 2 < \global\accompany >
+ >
+ \type Lyrics=bottom \repeat 3 {}
+ \alternative < \texti \textii \textiii >
+ >
\paper{
gourlay_maxmeasures = 14.0;
}
}
String
-Binary_source_file::error_str (char const* pos_ch_c_l) const
+Binary_source_file::error_str (char const* pos_ch_C) const
{
assert (this);
- if (!in_b (pos_ch_c_l))
+ if (!in_b (pos_ch_C))
return "";
- char const* begin_ch_c_l = pos_ch_c_l - 8 >? ch_C ();
- char const* end_ch_c_l = pos_ch_c_l + 7 <? ch_C () + length_i ();
+ char const* begin_ch_C = pos_ch_C - 8 >? ch_C ();
+ char const* end_ch_C = pos_ch_C + 7 <? ch_C () + length_i ();
- String pre_str ((Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l);
+ String pre_str ((Byte const*)begin_ch_C, pos_ch_C - begin_ch_C);
pre_str = String_convert::bin2hex_str (pre_str);
for (int i = 2; i < pre_str.length_i (); i += 3)
pre_str = pre_str.left_str (i) + " " + pre_str.cut_str (i, INT_MAX);
- String post_str ((Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l);
+ String post_str ((Byte const*)pos_ch_C, end_ch_C - pos_ch_C);
post_str = String_convert::bin2hex_str (post_str);
for (int i = 2; i < post_str.length_i (); i += 3)
post_str = post_str.left_str (i) + " " + post_str.cut_str (i, INT_MAX);
}
int
-Binary_source_file::line_i (char const* pos_ch_c_l) const
+Binary_source_file::line_i (char const* pos_ch_C) const
{
- if (!in_b (pos_ch_c_l))
+ if (!in_b (pos_ch_C))
return 0;
- return pos_ch_c_l - ch_C ();
+ return pos_ch_C - ch_C ();
}
+U8
+Binary_source_file::get_U8 ()
+{
+ return *(U8*)forward_ch_C (1);
+}
+
+
+U16
+Binary_source_file::get_U16 ()
+{
+ U16 b;
+
+ b = get_U8 () << 8;
+ b |= get_U8 ();
+
+ return b;
+}
+
+
+U32
+Binary_source_file::get_U32()
+{
+ U32 b;
+
+ b = get_U8 () << 24;
+ b |= get_U8 () << 16;
+ b |= get_U8 () << 8;
+ b |= get_U8 ();
+
+ return b;
+}
+
+
#include "source-file.hh"
-class Binary_source_file : public Source_file {
+class Binary_source_file : public Source_file
+{
public:
- Binary_source_file (String& filename_str );
- virtual ~Binary_source_file ();
+ Binary_source_file (String& filename_str );
+ virtual ~Binary_source_file ();
- virtual String error_str (char const* pos_ch_c_l ) const;
- virtual int line_i (char const* pos_ch_c_l ) const;
+ U8 get_U8 ();
+ U16 get_U16 ();
+ U32 get_U32 ();
+ Byte get_Byte () {return get_U8 (); }
+ int get_int () { return get_U32 (); }
+
+ virtual String error_str (char const* pos_ch_C ) const;
+ virtual int line_i (char const* pos_ch_C ) const;
};
-#endif // BINARY_SOURCE_FILE_HH //
+#endif // BINARY_SOURCE_FILE_HH
struct Duration;
struct Duration_iterator;
struct Source_file;
+struct Binary_source_file;
struct Sources;
struct File_storage;
struct Mapped_file_storage;
struct Simple_file_storage;
+
#endif // PROTO_HH
class istream;
-/// class for reading and mapping a file.
+/**
+ class for reading and mapping a file.
+
+ duplicates a lot of Data_file and Text_stream.
+ should look at including Data_file's functionality:
+ get_line (), get_word () here.
+*/
+
class Source_file
{
public:
/** Ugh! filename gets changed! The path to the opened file may
change, since it might be searched in multiple directories. */
Source_file (String filename_str_r );
+
Source_file (String name_str, String data_str);
virtual ~Source_file ();
char const* ch_C () const;
- virtual String error_str (char const* pos_ch_c_l ) const;
+ virtual String error_str (char const* pos_ch_C ) const;
istream * istream_l ();
- bool in_b (char const* pos_ch_c_l ) const;
+ bool in_b (char const* pos_ch_C ) const;
int length_i () const;
- virtual int line_i (char const* pos_ch_c_l ) const;
+ virtual int line_i (char const* pos_ch_C ) const;
String name_str () const;
- String file_line_column_str (char const* ch_c_l ) const;
+ String file_line_column_str (char const* ch_C ) const;
+
+ // return start + n
+ char const* seek_ch_C (int n);
+ // return here + n bytes
+ char const* forward_ch_C (int n);
+ char const* pos_ch_C () { return pos_ch_C_; }
+ String get_str (int n);
+ void set_pos (char const * pos_ch_C);
+
+ // tbd
+ // String get_line ();
+ // String get_word ();
+ // only used in binary-source-file, currently
+
protected:
Slice line_slice (char const* pos_ch_C) const;
int column_i (char const* pos_ch_C) const;
int char_i (char const* pos_ch_C) const;
+ char const* pos_ch_C_;
+
private:
String name_str_;
istream* istream_p_;
name_str_ = filename_str;
istream_p_ = 0;
storage_p_ = new Simple_file_storage (filename_str);
+ pos_ch_C_ = ch_C ();
}
Source_file::Source_file (String name_str, String data_str)
name_str_ = name_str;
istream_p_ = 0;
storage_p_ = new String_storage (data_str);
+ pos_ch_C_ = ch_C ();
}
istream*
{
return storage_p_->ch_C ();
}
+
+void
+Source_file::set_pos (char const * pos_ch_C)
+{
+ if (in_b (pos_ch_C))
+ pos_ch_C_ = pos_ch_C;
+ else
+ error (error_str (pos_ch_C) + "invalid pos");
+}
+
+char const*
+Source_file::seek_ch_C (int n)
+{
+ char const* new_ch_C = ch_C () + n;
+ if (n < 0)
+ new_ch_C += length_i ();
+ if (in_b (new_ch_C))
+ pos_ch_C_ = new_ch_C;
+ else
+ error (error_str (new_ch_C) + "seek past eof");
+
+ return pos_ch_C_;
+}
+
+char const*
+Source_file::forward_ch_C (int n)
+{
+ char const* old_pos_C = pos_ch_C_;
+ char const* new_ch_C = pos_ch_C_ + n;
+ if (in_b (new_ch_C))
+ pos_ch_C_ = new_ch_C;
+ else
+ error (error_str (new_ch_C) + "forward past eof");
+
+ return old_pos_C;
+}
+
+String
+Source_file::get_str (int n)
+{
+ String str ((Byte const*)forward_ch_C (n), n);
+ return str;
+}
void
error (String s)
{
- cerr << _ ("error: ") << s << '\n';
+ cerr << _ ("error: ") << s << '\n';
- exit (1);
+ exit (1);
}
void
non_fatal_error (String s)
{
- cerr << _ ("error: ") << s << '\n';
+ cerr << _ ("error: ") << s << '\n';
}
void
warning (String m)
{
- cerr << _ ("warning: ") <<m <<endl;
+ cerr << _ ("warning: ") <<m <<endl;
}
void
message (String m)
{
- cerr << m<<endl;
+ cerr << m<<endl;
}
Adobe_font_char_metric::Adobe_font_char_metric ()
{
+ B_ = Box( Interval(0,0), Interval (0,0));
+ WX_ = 0.0;
+ C_ = 0;
C_ = -1;
}
}
+Box
+Adobe_font_char_metric::dimensions () const
+{
+ Box b= B_;
+
+ b[X_AXIS] *= 1/1000.0;
+ b[Y_AXIS] *= 1/1000.0;
+
+ return b;
+}
+
+
+
#define APPEND_CHAR_METRIC_ELT(k) outstr += to_str (#k) + " " + to_str (k ## _) + "; "
String
return outstr;
}
-/*
- UGH. should have hashtable.
- */
-Adobe_font_char_metric
+Adobe_font_char_metric dummy_static_char_metric;
+
+Adobe_font_char_metric const &
Adobe_font_metric::find_char (String nm, bool warn) const
{
if (warn && !name_to_metric_dict_.elem_b (nm))
{
- Adobe_font_char_metric m;
warning (_f ("can't find character called `%s'", nm.ch_C()));
- return m;
+ return dummy_static_char_metric;
}
return char_metrics_[name_to_metric_dict_ [nm]];
}
+
+Character_metric *
+Adobe_font_metric::get_char (int code, bool warn) const
+{
+ return &find_ascii (code,warn);
+}
+
+Adobe_font_char_metric const &
+Adobe_font_metric::find_ascii (int a , bool warn) const
+{
+ int code = ascii_to_metric_idx_[a];
+ if (code>=0)
+ {
+ return char_metrics_[code];
+ }
+ else if (warn )
+ {
+ warning (_f ("can't find character number %d", a));
+ }
+ return dummy_static_char_metric;
+}
--- /dev/null
+#include "pointer.hh"
+#include "main.hh"
+#include "all-fonts.hh"
+#include "debug.hh"
+#include "warn.hh"
+#include "afm.hh"
+#include "tfm.hh"
+
+const char * default_font_sz_ = "cmr10";
+
+
+
+All_font_metrics::All_font_metrics (String path)
+{
+ search_path_.parse_path (path);
+}
+
+
+Adobe_font_metric *
+All_font_metrics::find_afm (String name)
+{
+ if (!afm_p_dict_.elem_b (name))
+ {
+ String path = name + ".afm";
+ path = search_path_.find (path);
+ if (path.empty_b ())
+ return 0;
+
+ *mlog << "[" << path;
+ Adobe_font_metric
+ * afm_p = new Adobe_font_metric (read_afm_file (path));
+ *mlog << "]" << flush ;
+
+ afm_p_dict_[name] = afm_p;
+ }
+ return afm_p_dict_[name];
+}
+
+Tex_font_metric *
+All_font_metrics::find_tfm (String name)
+{
+ if (!tfm_p_dict_.elem_b (name))
+ {
+ String path = name + ".tfm";
+ path = search_path_.find (path);
+ if (path.empty_b ())
+ return 0;
+
+ *mlog << "[" << path;
+ Tex_font_metric * tfm_p = new Tex_font_metric;
+ tfm_p->read_file (path);
+ *mlog << "]" << flush ;
+
+ tfm_p_dict_[name] = tfm_p;
+ }
+ return tfm_p_dict_[name];
+}
+
+
+Font_metric *
+All_font_metrics::find_font (String name)
+{
+ Font_metric * f= find_afm (name);
+ if (f)
+ return f;
+
+ f = find_tfm (name);
+ if (f)
+ return f;
+
+ f = find_tfm (default_font_sz_);
+ if (f)
+ return f;
+ String s = _f("Can't find default font `%s\', giving up.", default_font_sz_);
+ s += String ("\n") + _f ("search path = %s", search_path_.str ());
+ error (s);
+}
return b;
}
+Interval
+Atom::extent (Axis a) const
+{
+ return dim_[a] + off_[a];
+}
+
Atom::Atom ()
--- /dev/null
+/*
+ auto-beam-engraver.cc -- implement Auto_beam_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ */
+
+#include "auto-beam-engraver.hh"
+#include "musical-request.hh"
+#include "bar.hh"
+#include "beam.hh"
+#include "grouping.hh"
+#include "rest.hh"
+#include "stem.hh"
+#include "debug.hh"
+#include "time-description.hh"
+
+ADD_THIS_TRANSLATOR (Auto_beam_engraver);
+
+Auto_beam_engraver::Auto_beam_engraver ()
+{
+ beam_p_ = 0;
+ finished_beam_p_ = 0;
+ finished_grouping_p_ = 0;
+ grouping_p_ = 0;
+}
+
+/*
+ should move this to rational, but may reject now
+ */
+Rational
+str2rat (String str)
+{
+ int num;
+ int den = 1;
+ if (int i = str.index_i ('/') != -1)
+ {
+ den = str.cut_str (i + 1, str.length_i ()).value_i ();
+ str = str.left_str (i);
+ }
+ num = str.value_i ();
+ return Rational (num, den);
+}
+
+void
+Auto_beam_engraver::do_process_requests ()
+{
+ Time_description const *time = get_staff_info().time_C_;
+
+ Scalar begin = get_property ("beamAutoBegin", 0);
+ Moment begin_mom = str2rat (begin);
+
+ Scalar end = get_property ("beamAutoEnd", 0);
+ Moment end_mom = str2rat (end);
+
+ if (mult_i_)
+ {
+ Scalar end_mult = get_property (String ("beamAutoEnd")
+ + to_str (1 << (mult_i_ + 2)), 0);
+ if (end_mult.length_i ())
+ end_mom = str2rat (end_mult);
+ else if (end_mom / Moment (mult_i_, 1) > Moment (4))
+ end_mom /= Moment (mult_i_);
+ }
+
+ Real f;
+ if (end_mom)
+ f = fmod (time->whole_in_measure_, end_mom);
+ else
+ f = Moment (1);
+
+ // enge floots
+ Real epsilon_f = Moment (1, 512);
+ if (beam_p_ && (abs (f) < epsilon_f))
+ end_beam ();
+
+ /*
+ Allow already started autobeam to end
+ */
+ Scalar on = get_property ("beamAuto", 0);
+ if (!on.to_bool ())
+ return;
+
+ if (begin_mom)
+ f = fmod (time->whole_in_measure_, begin_mom);
+ if (!beam_p_ && (!begin_mom || (abs (f) < epsilon_f)))
+ begin_beam ();
+}
+
+
+void
+Auto_beam_engraver::begin_beam ()
+{
+ DOUT << String ("starting autobeam at: ") + now_moment ().str () + "\n";
+ beam_p_ = new Beam;
+ grouping_p_ = new Rhythmic_grouping;
+
+ /* urg, copied from Beam_engraver */
+ Scalar prop = get_property ("beamslopedamping", 0);
+ if (prop.isnum_b ())
+ beam_p_->damping_i_ = prop;
+
+ prop = get_property ("beamquantisation", 0);
+ if (prop.isnum_b ())
+ beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
+
+ // must set minVerticalAlign = = maxVerticalAlign to get sane results
+ // see input/test/beam-interstaff.ly
+ prop = get_property ("minVerticalAlign", 0);
+ if (prop.isnum_b ())
+ beam_p_->vertical_align_drul_[MIN] = prop;
+
+ prop = get_property ("maxVerticalAlign", 0);
+ if (prop.isnum_b ())
+ beam_p_->vertical_align_drul_[MAX] = prop;
+
+ announce_element (Score_element_info (beam_p_, 0));
+}
+
+void
+Auto_beam_engraver::end_beam ()
+{
+ DOUT << String ("ending autobeam at: ") + now_moment ().str () + "\n";
+ if (beam_p_->stems_.size () < 2)
+ {
+ DOUT << "junking autombeam: less than two stems\n";
+ junk_beam ();
+ }
+ else
+ {
+ finished_beam_p_ = beam_p_;
+ finished_grouping_p_ = grouping_p_;
+ beam_p_ = 0;
+ grouping_p_ = 0;
+ mult_i_ = 0;
+ }
+}
+
+void
+Auto_beam_engraver::typeset_beam ()
+{
+ if (finished_beam_p_)
+ {
+ Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
+ rg_C->extend (finished_grouping_p_->interval());
+ finished_beam_p_->set_grouping (*rg_C, *finished_grouping_p_);
+ typeset_element (finished_beam_p_);
+ finished_beam_p_ = 0;
+
+ delete finished_grouping_p_;
+ finished_grouping_p_= 0;
+ }
+}
+
+void
+Auto_beam_engraver::do_post_move_processing ()
+{
+}
+
+void
+Auto_beam_engraver::do_pre_move_processing ()
+{
+ typeset_beam ();
+}
+
+void
+Auto_beam_engraver::do_removal_processing ()
+{
+ typeset_beam ();
+ if (beam_p_)
+ {
+ DOUT << "Unfinished beam\n";
+ junk_beam ();
+ }
+}
+
+void
+Auto_beam_engraver::acknowledge_element (Score_element_info info)
+{
+ if (Beam *b = dynamic_cast<Beam *> (info.elem_l_))
+ {
+ if (beam_p_)
+ {
+ DOUT << "junking autobeam: beam encountered\n";
+ junk_beam ();
+ }
+ }
+ if (Bar *b = dynamic_cast<Bar *> (info.elem_l_))
+ {
+ if (beam_p_)
+ {
+ DOUT << "junking autobeam: bar encountered\n";
+ junk_beam ();
+ }
+ }
+
+ if (beam_p_)
+ {
+ Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
+ if (!rhythmic_req)
+ return;
+
+ if (dynamic_cast<Rest *> (info.elem_l_))
+ {
+ DOUT << "junking autobeam: rest encountered\n";
+ end_beam ();
+ return;
+ }
+
+ Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_);
+ if (!stem_l)
+ return;
+
+ if (stem_l->beam_l_ && (stem_l->beam_l_ != beam_p_))
+ {
+ DOUT << "junking autobeam: beamed stem encountered\n";
+ junk_beam ();
+ return;
+ }
+
+
+ /*
+ now that we have last_add_mom_, perhaps we can (should) do away
+ with these individual junk_beams
+ */
+ if (rhythmic_req->duration_.durlog_i_<= 2)
+ {
+ DOUT << "ending autobeam: stem doesn't fit in beam\n";
+ end_beam ();
+ return;
+ }
+
+ Moment start = get_staff_info().time_C_->whole_in_measure_;
+ if (!grouping_p_->child_fit_b (start))
+ {
+ DOUT << "ending autobeam: stem doesn't fit in group\n";
+ end_beam ();
+ }
+ else
+ {
+ grouping_p_->add_child (start, rhythmic_req->duration ());
+ stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
+ beam_p_->add_stem (stem_l);
+ Moment now = now_moment ();
+ last_add_mom_ = now;
+ extend_mom_ = extend_mom_ >? now + rhythmic_req->duration ();
+ mult_i_ = mult_i_ >? (rhythmic_req->duration_.durlog_i_ - 2);
+ }
+ }
+}
+
+void
+Auto_beam_engraver::junk_beam ()
+{
+ assert (beam_p_);
+ for (int i=0; i < beam_p_->stems_.size (); i++)
+ {
+ Stem* s = beam_p_->stems_[i];
+ s->beams_i_drul_[LEFT] = 0;
+ s->beams_i_drul_[RIGHT] = 0;
+ s->mult_i_ = 0;
+ s->beam_l_ = 0;
+ }
+
+ beam_p_->unlink ();
+ beam_p_ = 0;
+ delete grouping_p_;
+ grouping_p_ = 0;
+ mult_i_ = 0;
+}
+
+void
+Auto_beam_engraver::process_acknowledged ()
+{
+ if (beam_p_)
+ {
+ Moment now = now_moment ();
+ if ((extend_mom_ < now)
+ || ((extend_mom_ == now) && (last_add_mom_ != now )))
+ {
+ DOUT << String ("junking autobeam: no stem added since: ")
+ + last_add_mom_.str () + "\n";
+ end_beam ();
+ }
+ else if (!beam_p_->stems_.size ())
+ {
+ DOUT << "junking started autobeam: no stems\n";
+ junk_beam ();
+ }
+ }
+}
Bar_engraver::Bar_engraver()
{
bar_p_ =0;
- bar_l_ =0;
do_post_move_processing();
}
return false;
bar_req_l_ = b;
-
return true;
}
{
if (Bar *b = dynamic_cast<Bar *> (i.elem_l_))
{
- bar_l_ = b;
- // auto_create_bar_b_ = false;
+ // only bar-engraver should create bars
+ assert (0);
}
}
}
}
+void
+Bar_engraver::request_bar (String type_str)
+{
+ create_bar ();
+ if (((type_str == "|:") && (bar_p_->type_str_ == ":|"))
+ || ((type_str == ":|") && (bar_p_->type_str_ == "|:")))
+ bar_p_->type_str_ = ":|:";
+ else
+ bar_p_->type_str_ = type_str;
+}
void
Bar_engraver::do_creation_processing ()
Time_description const *time = get_staff_info().time_C_;
if (bar_req_l_)
{
- if (!bar_p_)
- create_bar ();
-
+ create_bar ();
bar_p_->type_str_ = bar_req_l_->type_str_;
}
+ else if (!now_moment ())
+ {
+ create_bar ();
+ bar_p_->type_str_ = "";
+ }
else
{
Scalar always = get_property ("barAlways", 0);
}
}
- /*
- hmm, perhaps it's Better to create empty bars if you want none
- displayed, and keep bars for breakpoints ?
- */
-#if 0
- if ((time && time->whole_in_measure_)
- && !always.to_bool ()
- && !bar_p_ && !bar_l_)
-#endif
- if (!bar_p_ && !bar_l_)
+ if (!bar_p_)
{
Break_req r;
r.penalty_i_ = Break_req::DISALLOW;
void
Bar_engraver::do_pre_move_processing()
{
- if (bar_l_)
- {
- bar_l_ = 0;
- if (bar_p_)
- {
- bar_p_->unlink ();
- bar_p_ = 0;
- }
- }
if (bar_p_)
{
typeset_element (bar_p_);
#include "bar-number-engraver.hh"
-#include "script.hh"
-#include "text-def.hh"
-#include "paper-def.hh"
-#include "command-request.hh"
-#include "bar.hh"
-#include "span-bar.hh"
-#include "stem.hh"
#include "time-description.hh"
+#include "timing-engraver.hh"
+#include "engraver-group.hh"
+#include "g-text-item.hh"
Bar_number_engraver::Bar_number_engraver()
{
- script_p_ =0;
+ axis_ = Y_AXIS;
+ type_ = "barNumber";
+ visibility_lambda_
+ = gh_eval_str ("(lambda (d) (if (= d 1) '(#f . #f) '(#t . #t)))");
}
void
-Bar_number_engraver::acknowledge_element (Score_element_info i)
+Bar_number_engraver::do_process_requests ()
{
- Bar *b =dynamic_cast <Bar *> (i.elem_l_);
- if (script_p_ || !b)
- return;
+ Translator *tr = daddy_grav_l ()->get_simple_translator ("Timing_engraver");
+ Timing_translator *timer = dynamic_cast<Timing_translator*>(tr);
+ Time_description *time = &timer->time_;
- /* Only put numbers on bars that are at our own level (don't put
- numbers over the staffs of a GrandStaff, only over the GrandStaff
- itself */
- if (i.origin_grav_l_arr_.size() != 1)
- return;
-
- Time_description const * time = get_staff_info().time_C_;
- if (!time || time->cadenza_b_)
- return;
-
- script_p_ = new Script;
- Text_def *td_p = new Text_def;
- td_p->text_str_ = to_str (time->bars_i_);
-
- td_p->align_dir_ = LEFT;
-
- script_p_->dir_ = UP;
- script_p_->axis_ = Y_AXIS;
- script_p_->specs_p_ = td_p->clone ();
- script_p_->breakable_b_ = true;
-
- Scalar pri = get_property ("barNumberBreakPriority", 0);
- if (pri.length_i () && pri.isnum_b ())
+ if (!time->whole_in_measure_ && !time->cadenza_b_ && now_moment () > Moment (0))
{
- script_p_->break_priority_i_ = int (pri);
+ create_items (0);
+
+ text_p_->text_str_ = to_str (time->bars_i_);
+ text_p_->style_str_ = "roman";
}
- else
- script_p_->break_priority_i_ = b->break_priority_i_;
-
- Scalar padding = get_property ("barScriptPadding", 0);
- if (padding.length_i() && padding.isnum_b ())
- {
- script_p_->padding_f_ = Real(padding);
- }
-
- announce_element (Score_element_info (script_p_,0));
}
-void
-Bar_number_engraver::do_pre_move_processing()
-{
- if (script_p_)
- {
- typeset_element (script_p_);
- script_p_ =0;
- }
-}
-
-
ADD_THIS_TRANSLATOR(Bar_number_engraver);
--- /dev/null
+/*
+ bar-script-engraver.cc -- implement Bar_script_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "bar-script-engraver.hh"
+#include "bar.hh"
+#include "g-staff-side.hh"
+#include "g-text-item.hh"
+#include "lily-guile.hh"
+
+Bar_script_engraver::Bar_script_engraver ()
+{
+ axis_ = Y_AXIS;
+ staff_side_p_ = 0;
+ text_p_ =0;
+ visibility_lambda_
+ = gh_eval_str ("(lambda (d) (if (= d -1) '(#t . #t) '(#f . #f)))");
+}
+
+void
+Bar_script_engraver::acknowledge_element (Score_element_info i)
+{
+ Axis other_axis = Axis((axis_ + 1)%2);
+
+ if (staff_side_p_ && !staff_side_p_->dim_cache_[other_axis].parent_l_)
+ {
+ Bar * bar_l = dynamic_cast<Bar*> (i.elem_l_);
+ if (!bar_l)
+ return;
+
+ /* Only put numbers on bars that are at our own level (don't put
+ numbers over the staffs of a GrandStaff, only over the GrandStaff
+ itself */
+ if (i.origin_grav_l_arr_.size () == 1)
+ {
+ staff_side_p_->dim_cache_[other_axis].parent_l_ = &bar_l->dim_cache_[other_axis];
+ staff_side_p_->add_support (i.elem_l_);
+ }
+ }
+}
+
+void
+Bar_script_engraver::do_pre_move_processing ()
+{
+ if (text_p_)
+ {
+ text_p_->breakable_b_ = true; // ugh
+ typeset_element (text_p_);
+ text_p_ =0;
+ }
+
+ if (staff_side_p_)
+ {
+ staff_side_p_->breakable_b_ = true; // ugh
+ typeset_element (staff_side_p_);
+ staff_side_p_ = 0;
+ }
+}
+
+
+void
+Bar_script_engraver::create_items (Request *rq)
+{
+ if (staff_side_p_ || text_p_)
+ return;
+
+ staff_side_p_ = new G_staff_side_item;
+ staff_side_p_->axis_ = axis_;
+
+ text_p_ = new G_text_item;
+
+ Scalar prop = get_property (type_ + "Direction", 0);
+ if (prop.isnum_b ())
+ {
+ staff_side_p_->dir_ = (Direction) (int) prop;
+ }
+ else
+ {
+ staff_side_p_->dir_ = UP;
+ }
+
+ staff_side_p_->set_victim(text_p_);
+
+ Scalar padding = get_property (type_ + "ScriptPadding", 0);
+ if (padding.length_i() && padding.isnum_b ())
+ {
+ staff_side_p_->padding_f_ = Real(padding);
+ }
+
+ staff_side_p_->visibility_lambda_ = visibility_lambda_;
+ text_p_->visibility_lambda_ = visibility_lambda_;
+
+ announce_element (Score_element_info (text_p_, rq));
+ announce_element (Score_element_info (staff_side_p_, rq));
+}
#include "debug.hh"
-
Bar::Bar ()
{
breakable_b_ = true;
Bar::do_brew_molecule_p () const
{
Paper_def *p = paper ();
- Atom s = lookup_l ()->bar (type_str_, p->get_var ("barsize"));
+ Molecule *output = new Molecule (lookup_l ()->bar (type_str_, p->get_var ("barsize")));
- Molecule*output = new Molecule (Atom (s));
return output;
}
if (d == STOP && !beam_p_)
{
- m->warning ("No Beam to end");
+ m->warning (_ ("No Beam to end"));
return false;
}
reqs_drul_[d ] = c;
if (reqs_drul_[STOP])
{
if (!beam_p_)
- reqs_drul_[STOP]->warning (_("No beam to stop"));
+ reqs_drul_[STOP]->warning (_("No beam to end"));
finished_beam_p_ = beam_p_;
finished_grouping_p_ = grouping_p_;
{
if (beam_p_)
{
- reqs_drul_[START]->warning ("Already have a Beam");
+ reqs_drul_[START]->warning (_ ("Already have a Beam"));
return;
}
typeset_beam ();
if (beam_p_)
{
- warning ("Unfinished beam");
+ warning (_ ("Unfinished beam"));
finished_beam_p_ = beam_p_;
finished_grouping_p_ = grouping_p_;
typeset_beam ();
Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
if (!rhythmic_req)
{
- String s=_("Stem must have Rhythmic structure.");
+ String s = _ ("Stem must have Rhythmic structure.");
if (info.req_l_)
- info.req_l_->warning(s);
+ info.req_l_->warning (s);
else
::warning (s);
if (rhythmic_req->duration_.durlog_i_<= 2)
{
rhythmic_req->warning (_ ("stem doesn't fit in beam"));
- reqs_drul_[LEFT]->warning (_("beam was started here"));
+ reqs_drul_[LEFT]->warning (_ ("beam was started here"));
return;
}
if (!grouping_p_->child_fit_b (start))
{
- String s (_("please fix me") + ": "
+ String s (_ ("please fix me") + ": "
+ _f ("stem at %s doesn't fit in beam", now_moment ().str ()));
if (info.req_l_)
#include "chord-name-engraver.hh"
#include "musical-request.hh"
-#include "text-item.hh"
#include "paper-def.hh"
#include "lookup.hh"
#include "paper-def.hh"
return false;
}
-/*
- UGH.
+ /*
+ find tonic: after longest line of triads
+ */
+int
+Chord_name_engraver::find_tonic_i () const
+{
+ int tonic_i = 0;
+ int longest_i = 0;
+ for (int i = 0; i < pitch_arr_.size (); i++)
+ for (int j = 0; j < pitch_arr_.size (); j++)
+ {
+ int gap = pitch_arr_[(i + j + 1) % pitch_arr_.size ()].notename_i_
+ - pitch_arr_[(i + j) % pitch_arr_.size ()].notename_i_;
+ while (gap < 0)
+ gap += 7;
+ gap %= 7;
+ if (gap != 2)
+ {
+ if (j > longest_i)
+ {
+ longest_i = j;
+ tonic_i = i;
+ }
+ break;
+ }
+ }
+
+ int biggest_i = 0;
+ if (!longest_i)
+ for (int i = 0; i < pitch_arr_.size (); i++)
+ {
+ int gap = pitch_arr_[i].notename_i_
+ - pitch_arr_[(i - 1 + pitch_arr_.size ())
+ % pitch_arr_.size ()].notename_i_;
+ while (gap < 0)
+ gap += 7;
+ gap %= 7;
+ if (gap > biggest_i)
+ {
+ biggest_i = gap;
+ tonic_i = i;
+ }
+ }
+ return tonic_i;
+}
+
+Array<Musical_pitch>
+Chord_name_engraver::rebuild_pitch_arr (int tonic_i) const
+{
+ Musical_pitch last (0, 0, -5);
+ Array<Musical_pitch> pitches;
+ for (int i = 0; i < pitch_arr_.size (); i++)
+ {
+ Musical_pitch p = pitch_arr_[(tonic_i + i) % pitch_arr_.size ()];
+ if (p < last)
+ {
+ p.octave_i_ = last.octave_i_;
+ if (p < last)
+ p.octave_i_++;
+ }
+ pitches.push (p);
+ last = p;
+ }
+ return pitches;
+}
- Split this routine into neat packets
- */
void
Chord_name_engraver::do_process_requests ()
{
*/
-
- /*
- find tonic: after longest line of triads
- */
-
int tonic_i = 0;
+ Musical_pitch inversion = pitch_arr_[0];
Scalar chord_inversions = get_property ("chordInversion", 0);
if (chord_inversions.to_bool ())
{
- int longest_i = 0;
- for (int i = 0; i < pitch_arr_.size (); i++)
- for (int j = 0; j < pitch_arr_.size (); j++)
- {
- int gap = pitch_arr_[(i + j + 1) % pitch_arr_.size ()].notename_i_
- - pitch_arr_[(i + j) % pitch_arr_.size ()].notename_i_;
- while (gap < 0)
- gap += 7;
- gap %= 7;
- if (gap != 2)
- {
- if (j > longest_i)
- {
- longest_i = j;
- tonic_i = i;
- }
- break;
- }
- }
-
- int biggest_i = 0;
- if (!longest_i)
- for (int i = 0; i < pitch_arr_.size (); i++)
- {
- int gap = pitch_arr_[i].notename_i_
- - pitch_arr_[(i - 1 + pitch_arr_.size ())
- % pitch_arr_.size ()].notename_i_;
- while (gap < 0)
- gap += 7;
- gap %= 7;
- if (gap > biggest_i)
- {
- biggest_i = gap;
- tonic_i = i;
- }
- }
+ tonic_i = find_tonic_i ();
+ if (tonic_i)
+ pitch_arr_ = rebuild_pitch_arr (tonic_i);
}
+
- Musical_pitch inversion = pitch_arr_[0];
- if (tonic_i)
+ G_text_item* item_p = new G_text_item;
+
+ item_p->text_str_ = banter_str (pitch_arr_, tonic_i, inversion);
+
+ Scalar style = get_property ("textstyle", 0);
+ if (style.length_i ())
+ item_p->style_str_ = style;
+
+ text_p_arr_.push (item_p);
+ announce_element (Score_element_info (item_p, 0));
+}
+
+void
+Chord_name_engraver::do_pre_move_processing ()
+{
+ for (int i=0; i < text_p_arr_.size (); i++)
{
- Musical_pitch last (0, 0, -5);
- Array<Musical_pitch> pitches;
- for (int i = 0; i < pitch_arr_.size (); i++)
- {
- Musical_pitch p = pitch_arr_[(tonic_i + i) % pitch_arr_.size ()];
- if (p < last)
- {
- p.octave_i_ = last.octave_i_;
- if (p < last)
- p.octave_i_++;
- }
- pitches.push (p);
- last = p;
- }
- pitch_arr_ = pitches;
+ typeset_element (text_p_arr_[i]);
}
+ text_p_arr_.clear ();
+ pitch_arr_.clear ();
+}
- Musical_pitch tonic = pitch_arr_[0];
+String
+Chord_name_engraver::banter_str (Array<Musical_pitch> pitch_arr, int tonic_i, Musical_pitch inversion) const
+{
+ Musical_pitch tonic = pitch_arr[0];
Array<Musical_pitch> scale;
scale.push (Musical_pitch (0)); // c
+ acc[tonic.accidental_i_ + 2];
String add_str;
+ String sub_str;
String sep_str;
- for (int i=1; i < pitch_arr_.size (); i++)
+ int last_trap = 1;
+ for (int i=1; i < pitch_arr.size (); i++)
{
- Musical_pitch p = pitch_arr_[i];
- int trap = p.notename_i_ - tonic.notename_i_
+ Musical_pitch p = pitch_arr[i];
+ int trap = p.notename_i_ - tonic.notename_i_
+ (p.octave_i_ - tonic.octave_i_) * 7 + 1;
+ while (trap - last_trap > 2)
+ {
+ last_trap += 2;
+ sub_str += sep_str + "no" + to_str (last_trap);
+ sep_str = "/";
+ }
+ last_trap = trap;
int accidental = p.accidental_i_ - scale[(trap - 1) % 7].accidental_i_;
if ((trap == 3) && (accidental == -1))
tonic_str += "m"; // hmm
- else if (accidental || (!(trap % 2) || ((i + 1 == pitch_arr_.size ()) && (trap > 5))))
+ else if (accidental || (!(trap % 2) || ((i + 1 == pitch_arr.size ()) && (trap > 5))))
{
add_str += sep_str;
if ((trap == 7) && (accidental == 1))
+ acc[tonic.accidental_i_ + 2];
}
-
- G_text_item* item_p = new G_text_item;
-
- item_p->text_str_ = tonic_str + "$^{" + add_str + "}$" + inversion_str;
- Scalar style = get_property ("textstyle", 0);
- if (style.length_i ())
- item_p->style_str_ = style;
-
- text_p_arr_.push (item_p);
- announce_element (Score_element_info (item_p, 0));
+ String str = tonic_str + "$^{" + add_str + sub_str + "}$" + inversion_str;
+ return str;
}
-
-void
-Chord_name_engraver::do_pre_move_processing ()
-{
- for (int i=0; i < text_p_arr_.size (); i++)
- {
- typeset_element (text_p_arr_[i]);
- }
- text_p_arr_.clear ();
- pitch_arr_.clear ();
-}
-
#include "paper-def.hh"
#include "lookup.hh"
#include "clef-engraver.hh"
-#include "text-item.hh"
+#include "g-text-item.hh"
+#include "p-score.hh"
void
Clef_item::do_pre_processing()
{
+ dim_cache_[Y_AXIS].translate (paper()->internote_f () * y_position_i_);
+
bool b= (break_status_dir() != RIGHT);
change_b_ = b;
octave_dir_ = CENTER;
symbol_ = "treble";
y_position_i_ = -2;
-
- // Ugh: This should be const, I guess.
- octave_marker_td_p_.set_p (new Text_def());// UGH!
- octave_marker_td_p_->text_str_ = "8";
- octave_marker_td_p_->style_str_ = "italic";
}
+void
+Clef_item::do_add_processing ()
+{
+ if (!break_status_dir_ // broken stuff takes care of their own texts
+ && octave_dir_)
+ {
+ G_text_item *g = new G_text_item;
+ pscore_l_->typeset_element (g);
+
+ g->text_str_ = "8";
+ g->style_str_ = "italic";
+ g->dim_cache_[Y_AXIS].parent_l_ = &dim_cache_[Y_AXIS];
+ g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS];
+ add_dependency (g); // just to be sure.
+
+ Real r = do_height ()[octave_dir_] + g->extent (Y_AXIS)[-octave_dir_];
+ g->dim_cache_[Y_AXIS].set_offset (r);
+ }
+
+}
+
+
String t = symbol_;
if (change_b_)
t += "_change";
+ // Atom s = lookup_l ()-> text ("roman", to_str (break_status_dir ()));
+
Atom s = lookup_l ()->clef (t);
Molecule*output = new Molecule (Atom (s));
- output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS);
- if (octave_dir_) {
- Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(),
- CENTER));
- Real offset = output->extent()[Y_AXIS][octave_dir_]
- - octave_marker.extent()[Y_AXIS][- octave_dir_];
- if (octave_dir_ == DOWN)
- offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ;
- octave_marker.translate_axis (offset, Y_AXIS);
- output->add_molecule (octave_marker);
- }
return output;
}
-
-#include "pointer.tcc"
-template class P<Text_def>; // ugh
-
-
#include "crescendo.hh"
#include "dynamic-engraver.hh"
#include "musical-request.hh"
-#include "text-item.hh"
#include "lookup.hh"
#include "paper-def.hh"
#include "score-column.hh"
String loud = absd->loudness_str ();
text_p_ = new G_text_item;
- text_p_->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_;
+ text_p_->text_str_ = "dyn" + loud; // ugh
Scalar prop = get_property ("dynamicStyle", 0);
text_p_->style_str_ = prop.length_i () ? prop : "dynamic";
#include "p-col.hh"
#include "paper-def.hh"
#include "extender-spanner.hh"
-#include "text-item.hh"
#include "text-def.hh"
Extender_spanner::Extender_spanner ()
Direction d = LEFT;
do
{
- Item* t = item_l_drul_[d] ? item_l_drul_[d] : item_l_drul_[(Direction)-d];
-
- dy_f_drul_[d] += t->extent (Y_AXIS).length () / 2;
+ Item* t = item_l_drul_[d]
+ ? item_l_drul_[d] : item_l_drul_[(Direction)-d];
if (d == LEFT)
dx_f_drul_[d] += t->extent (X_AXIS).length ();
else
#include "g-staff-side.hh"
+G_staff_side_item::G_staff_side_item ()
+{
+ dir_ = CENTER;
+ to_position_l_ = 0;
+ transparent_b_ = true;
+ padding_f_ = 0;
+}
+
+
void
G_staff_side_item::do_pre_processing ()
{
if (!dir_)
set_default_direction ();
+
+ if (axis_ == X_AXIS)
+ position_self ();
}
void
dir_ = DOWN;
}
-G_staff_side_item::G_staff_side_item ()
-{
- dir_ = CENTER;
- to_position_l_ = 0;
- transparent_b_ = true;
-}
void
G_staff_side_item::set_victim (Score_element *e)
support_l_arr_.unordered_substitute (o,n);
}
-
void
-G_staff_side_item::do_post_processing ()
+G_staff_side_item::position_self ()
{
if (!support_l_arr_.size ())
return ;
Dimension_cache *common = common_group (typecast_array (support_l_arr_, (Graphical_element*)0),
- Y_AXIS);
+ axis_);
Interval dim;
for (int i=0; i < support_l_arr_.size (); i++)
{
Score_element * e = support_l_arr_ [i];
- Real coord = e->relative_coordinate (common, Y_AXIS);
- dim.unite (coord + e->extent (Y_AXIS));
+ Real coord = e->relative_coordinate (common, axis_);
+ dim.unite (coord + e->extent (axis_));
}
- if (!support_l_arr_.size ())
- dim = Interval (0,0);
- Interval sym_dim = to_position_l_->extent (Y_AXIS);
- Real off = dim_cache_[Y_AXIS].relative_coordinate (common);
+ Interval sym_dim = to_position_l_->extent (axis_);
+ Real off = dim_cache_[axis_].relative_coordinate (common) - padding_f_ * dir_;
- dim_cache_[Y_AXIS].set_offset (dim[dir_] - sym_dim[-dir_] - off);
+ dim_cache_[axis_].set_offset (dim[dir_] - sym_dim[-dir_] - off);
}
+
+void
+G_staff_side_item::do_post_processing ()
+{
+ if (axis_ == Y_AXIS)
+ position_self ();
+}
+
#include "identifier.hh"
#include "my-lily-lexer.hh"
#include "debug.hh"
-#include "symtable.hh"
#include "script-def.hh"
#include "request.hh"
#include "translator.hh"
DEFAULT_PRINT(General_script_def);
DEFAULT_PRINT(Translator);
-DEFAULT_PRINT(Symtables);
DEFAULT_PRINT(Music);
DEFAULT_PRINT(Request);
DEFAULT_PRINT(Score);
DUMMY_STR(Notename_table);
DUMMY_STR(General_script_def);
DUMMY_STR(Translator);
-DUMMY_STR(Symtables);
DUMMY_STR(Music);
DUMMY_STR(Request);
DUMMY_STR(Score);
IMPLEMENT_ID_CLASS(Real);
IMPLEMENT_ID_CLASS(String);
IMPLEMENT_ID_CLASS(General_script_def);
-IMPLEMENT_ID_CLASS(Symtables);
IMPLEMENT_ID_CLASS(Music);
IMPLEMENT_ID_CLASS(Score);
IMPLEMENT_ID_CLASS(Request);
DEFAULT_ACCESSOR(int);
DEFAULT_ACCESSOR(Real);
DEFAULT_ACCESSOR(String);
-DEFAULT_ACCESSOR(Symtables);
DEFAULT_ACCESSOR(Score);
DEFAULT_ACCESSOR(Midi_def);
DEFAULT_ACCESSOR(Paper_def);
#include "box.hh"
#include "array.hh"
#include "dictionary.hh"
+#include "font-metric.hh"
-struct Adobe_font_char_metric {
+struct Adobe_font_char_metric : Character_metric {
int C_;
Real WX_;
String N_;
String str () const;
Adobe_font_char_metric ();
+
+ Box dimensions () const;
};
-struct Adobe_font_metric {
+struct Adobe_font_metric : Font_metric {
String FontName_;
String FullName_;
String FamilyName_;
Array<int> ascii_to_metric_idx_;
Dictionary<int> name_to_metric_dict_;
- Adobe_font_char_metric find_char (String name, bool warn=true) const;
- Adobe_font_char_metric find_ascii (int ascii) const;
+ Adobe_font_char_metric const &find_char (String name, bool warn=true) const;
+ Adobe_font_char_metric const &find_ascii (int ascii,bool warn) const;
String str () const;
Adobe_font_metric ();
void read_char_metrics (Data_file &input);
+
+
+ Character_metric *get_char (int, bool) const;
};
Adobe_font_metric read_afm_file (String fn);
#include "dictionary.hh"
#include "file-path.hh"
#include "lily-proto.hh"
+#include "font-metric.hh"
/**
Interface to all .afm files living in the filesystem.
class All_font_metrics
{
Dictionary<Adobe_font_metric*> afm_p_dict_;
+ Dictionary<Tex_font_metric*> tfm_p_dict_;
File_path search_path_;
public:
- Adobe_font_metric *find_font (String name);
+ Adobe_font_metric *find_afm (String name);
+ Tex_font_metric *find_tfm (String);
+ Font_metric *find_font (String name);
All_font_metrics (String search_path);
};
void translate_axis (Real r,Axis a);
/// how big is #this#?
Box extent() const;
+ Interval extent (Axis)const;
void print() const;
bool check_infinity_b () const;
bool empty() const;
--- /dev/null
+/*
+ auto-beam-engraver.hh -- declare Auto_beam_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ */
+
+#ifndef AUTO_BEAM_ENGRAVER_HH
+#define AUTO_BEAM_ENGRAVER_HH
+
+#include "engraver.hh"
+
+class Auto_beam_engraver : public Engraver
+{
+public:
+ Auto_beam_engraver ();
+ VIRTUAL_COPY_CONS (Translator);
+
+protected:
+ virtual void do_pre_move_processing ();
+ virtual void do_post_move_processing ();
+ virtual void do_removal_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_process_requests ();
+ virtual void process_acknowledged ();
+
+private:
+ void begin_beam ();
+ void end_beam ();
+ void junk_beam ();
+ void typeset_beam ();
+
+ int mult_i_;
+ Beam *finished_beam_p_;
+ Beam *beam_p_;
+ Moment last_add_mom_;
+ Moment extend_mom_;
+ Rhythmic_grouping*grouping_p_;
+ Rhythmic_grouping*finished_grouping_p_;
+};
+
+#endif /* AUTO_BEAM_ENGRAVER_HH */
+
*/
-#ifndef BARGRAV_HH
-#define BARGRAV_HH
+#ifndef BAR_ENGRAVER_HH
+#define BAR_ENGRAVER_HH
+
#include "engraver.hh"
/**
generate bars. Either user ("|:"), or default (new measure)
*/
-class Bar_engraver : public Engraver {
- Bar_req * bar_req_l_;
- Bar * bar_p_;
- Bar * bar_l_;
- bool auto_create_bar_b_;
-
- void create_bar ();
+class Bar_engraver : public Engraver
+{
public:
- VIRTUAL_COPY_CONS(Translator);
Bar_engraver();
+ VIRTUAL_COPY_CONS(Translator);
-
-
+ void request_bar (String type_str);
+
protected:
virtual void acknowledge_element (Score_element_info i);
virtual void do_creation_processing ();
virtual void do_process_requests();
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
+
+private:
+ void create_bar ();
+
+ Bar_req * bar_req_l_;
+ Bar * bar_p_;
+ bool auto_create_bar_b_;
};
-#endif // BARGRAV_HH
+#endif // BAR_ENGRAVER_HH
#ifndef BAR_NUMBER_GRAV_HH
#define BAR_NUMBER_GRAV_HH
-#include "engraver.hh"
+#include "bar-script-engraver.hh"
-/**
- catch bars, and put a number over them.
- */
-class Bar_number_engraver : public Engraver {
- Script * script_p_;
+class Bar_number_engraver : public Bar_script_engraver {
protected:
-
- void acknowledge_element (Score_element_info);
- void do_pre_move_processing();
+ void do_process_requests ();
public:
VIRTUAL_COPY_CONS(Translator);
Bar_number_engraver();
-
};
#endif // BAR_NUMBER_GRAV_HH
--- /dev/null
+/*
+ bar-script-engraver.hh -- declare Bar_script_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef BAR_SCRIPT_ENGRAVER_HH
+#define BAR_SCRIPT_ENGRAVER_HH
+#include "engraver.hh"
+#include "protected-scm.hh"
+
+/**
+ put stuff over or next to bars
+ */
+class Bar_script_engraver : public Engraver
+{
+protected:
+ G_staff_side_item* staff_side_p_;
+ G_text_item* text_p_;
+ Protected_scm visibility_lambda_;
+ String type_;
+ Axis axis_;
+
+protected:
+ Bar_script_engraver ();
+ virtual void do_pre_move_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ void create_items(Request*);
+};
+
+
+#endif /* BAR_SCRIPT_ENGRAVER_HH */
+
/*
- cbeam-engraver.hh -- declare Beam_engraver
+ beam-engraver.hh -- declare Beam_engraver
source file of the GNU LilyPond music typesetter
*/
-#ifndef CBEAM_ENGRAVER_HH
-#define CBEAM_ENGRAVER_HH
+#ifndef BEAM_ENGRAVER_HH
+#define BEAM_ENGRAVER_HH
#include "engraver.hh"
#include "drul-array.hh"
VIRTUAL_COPY_CONS (Translator);
};
-#endif /* CBEAM_ENGRAVER_HH */
+#endif /* BEAM_ENGRAVER_HH */
private:
Array<Musical_pitch> pitch_arr_;
Link_array<Item> text_p_arr_;
+
+ String banter_str (Array<Musical_pitch> pitch_arr, int tonic_i, Musical_pitch inversion) const;
+ int find_tonic_i () const;
+ Array<Musical_pitch> rebuild_pitch_arr (int tonic_i) const;
};
#endif // CHORD_NAME_ENGRAVER_HH
protected:
virtual void do_pre_processing();
virtual Molecule* do_brew_molecule_p() const;
+ virtual void do_add_processing ();
public:
String symbol_;
/// should we print an octave symbol (8), and where? (up=1, down=-1)?
Direction octave_dir_;
- /// text def to put above/below clef?
- P<Text_def> octave_marker_td_p_;
-
-
VIRTUAL_COPY_CONS(Score_element);
Clef_item();
};
Dimension_cache * parent_l_;
Link_array<Dimension_cache> dependencies_l_arr_;
-
+ Graphical_element *element_l () { return elt_l_; }
Real absolute_coordinate () const;
void invalidate ();
void invalidate_dependencies ();
Dimension_cache(Dimension_cache const&);
Dimension_cache ();
- void set_group_l (Graphical_axis_group*);
+
Real relative_coordinate (Dimension_cache *d) const;
Dimension_cache*common_group (Dimension_cache const* s) const;
Dimension_cache*common_group (Link_array<Dimension_cache> caches) const;
--- /dev/null
+/*
+ font-metric.hh -- declare Font_metric
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef FONT_METRIC_HH
+#define FONT_METRIC_HH
+
+#include "box.hh"
+/*
+ sigh.
+
+ signature -> Internal compiler error
+*/
+
+struct Character_metric
+{
+ virtual Box dimensions () const=0;
+ virtual ~Character_metric () {}
+};
+
+struct Font_metric
+{
+ virtual Character_metric *get_char (int ascii, bool warn) const=0;
+ virtual ~Font_metric () {}
+};
+
+
+
+
+#endif /* FONT_METRIC_HH */
+
#include "item.hh"
-/*
- DO NOT USE AS BREAKABLE ITEM!
-
- (-> core dump!)
- */
class G_staff_side_item : public Item
{
+ void position_self ();
public:
Score_element * to_position_l_;
Direction dir_;
Link_array<Score_element> support_l_arr_;
+ Real padding_f_;
+ Axis axis_;
G_staff_side_item ();
void set_victim (Score_element*);
#include "string.hh"
#include "score-element.hh"
#include "drul-array.hh"
+#include "protected-scm.hh"
/**
A horizontally fixed size element of the score.
*/
class Item : public virtual Score_element {
+ void do_break ();
+ void try_visibility_lambda ();
+
public:
Link_array<Spanner> attached_span_l_arr_;
Drul_array<Item*> broken_to_drul_;
Item *unbroken_original_l_;
+ /**
+
+ visibility_lambda :: int -> (bool . bool)
+
+ @in
+ break direction
+
+ @out
+ (transparent, empty) cons
+
+ */
+ Protected_scm visibility_lambda_;
/// should be put in a breakable col.
bool breakable_b_;
Direction break_status_dir_;
virtual void do_print() const;
virtual bool linked_b() const;
+ virtual void handle_prebroken_dependents ();
+
void copy_breakable_items();
};
#include <libguile.h>
SCM ly_symbol (String name);
+String symbol_to_string (SCM);
SCM ly_set_scm (String name , SCM val);
SCM ly_append (SCM a, SCM b);
SCM ly_eval (SCM a);
SCM ly_func_o (char const* name);
SCM ly_quote_scm (SCM s);
+void ly_display_scm (SCM s);
#include "array.hh"
struct Abbreviation_beam;
struct Abbreviation_beam_req;
struct Abbreviation_beam_engraver;
-struct G_staff_side_item;
-struct G_text_item;
struct Abbreviation_req;
struct Adobe_font_metric;
struct Adobe_font_char_metric;
struct Audio_note_off;
struct Audio_staff;
struct Audio_tempo;
+struct Auto_beam_engraver;
struct Axis_group_element;
struct Axis_group;
struct Bar;
struct Engraver_group_engraver;
struct Extender;
struct Extender_req;
+struct G_staff_side_item;
+struct G_text_item;
struct General_script_def;
struct Graphical_element;
struct Plet;
struct Plet_engraver;
struct Plet_req;
-struct Plet_spanner;
+struct Tuplet_spanner;
struct Piano_brace;
struct Performer;
struct Performer_group_performer;
struct Super_element;
struct Translation_property;
struct Tempo_req;
+struct Tex_font_metric;
+struct Tex_font_char_metric;
struct Text_def;
struct Text_gob;
struct Text_item ;
--- /dev/null
+/*
+ lily-version.hh -- declare version strings
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ */
+
+#ifndef LILY_VERSION_HH
+#define LILY_VERSION_HH
+
+#include "string.hh"
+
+String version_str ();
+String gnu_lilypond_str ();
+String gnu_lilypond_version_str ();
+
+#endif // LILY_VERSION_HH
+
+
#include "fproto.hh"
#include "scalar.hh"
#include "direction.hh"
-#include "curve.hh"
-#include "symtable.hh"
#include "box.hh"
/** handy interface to symbol table
public:
Lookup ();
Lookup (Lookup const&);
- Lookup (Symtables const&);
- ~Lookup ();
+ Atom simple_bar (String s, Real w) const;
Molecule accidental (int, bool cautionary) const;
- void add (String, Symtable*);
Atom afm_find (String, bool warn=true) const;
Atom ball (int) const;
- Atom bar (String, Real height) const;
+ Molecule bar (String, Real height) const;
Atom beam (Real, Real, Real) const;
Atom clef (String) const;
Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
Atom dots () const;
- Atom dynamic (String) const;
Atom extender (Real) const;
Atom fill (Box b) const;
Atom flag (int, Direction) const;
Atom hairpin (Real width, bool decresc, bool continued) const;
Atom plet (Real dy, Real dx, Direction dir) const;
- void print () const;
Atom rest (int, bool outside) const;
Atom rule_symbol (Real height, Real width) const;
Atom script (String idx) const;
Atom time_signature (Array<int>) const;
Paper_def * paper_l_;
- Symtables *symtables_p_;
String font_name_;
Adobe_font_metric * afm_l_;
*/
#ifndef MAIN_HH
#define MAIN_HH
+
#include "lily-proto.hh"
void debug_init();
void add_score (Score* s);
void set_default_output (String s);
String find_file (String);
-String get_version_str();
void call_constructors ();
extern Sources* source_global_l;
#ifndef MARK_ENGRAVER_HH
#define MARK_ENGRAVER_HH
-#include "engraver.hh"
-
-class G_staff_side_item;
-class G_text_item;
+#include "bar-script-engraver.hh"
/**
*/
-class Mark_engraver : public Engraver
+class Mark_engraver : public Bar_script_engraver
{
public:
Mark_engraver ();
-
VIRTUAL_COPY_CONS(Translator);
-
-
protected:
virtual bool do_try_music (Music *req_l);
virtual void do_process_requests ();
- virtual void do_pre_move_processing ();
- virtual void acknowledge_element (Score_element_info);
-
+ virtual void do_post_move_processing ();
private:
Mark_req * mark_req_l_;
- G_staff_side_item* staff_side_p_;
- G_text_item* text_p_;
};
#endif // MARK_ENGRAVER_HH
Molecule() { }
Molecule (Atom const &a);
- void add_at_edge (Axis a, Direction d, const Molecule &m);
+ void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding);
void add_molecule (Molecule const &m);
void translate (Offset);
void add_atom (Atom const & a) ;
/// how big is #this#?
Box extent() const;
-
+ Interval extent (Axis) const;
Molecule (const Molecule&s);
void print() const;
virtual void do_post_move_processing ();
private:
- Moment rest_stop_mom_;
-// Moment rest_item_creation_mom_;
- Moment rest_start_mom_;
-
+ Drul_array<Moment> rest_moments_;
int start_measure_i_;
Multi_measure_rest_req* multi_measure_req_l_;
REQUESTMETHODS(Spacing_req);
};
-/// Put a text above or below (?) this staff.
-class Text_req : public virtual Musical_req {
-public:
- /// preferred position (above/below)
- Direction dir_;
- /// the characteristics of the text
- Text_def *tdef_p_;
-
- Text_req (int d, Text_def*);
- ~Text_req();
- Text_req (Text_req const&);
-
- REQUESTMETHODS(Text_req);
-};
-
/** a syllable or lyric is a string with rhythm.
*/
class Lyric_req : public Rhythmic_req {
#ifndef PAPER_DEF_HH
#define PAPER_DEF_HH
#include "lily-proto.hh"
-
+#include "lily-guile.hh"
#include "real.hh"
#include "moment.hh"
Array<Interval> shape_int_a_;
-
- Real get_var (String) const;
+ Real get_realvar (SCM symbol) const;
+ Real get_var (String id) const;
void reinit ();
Paper_def ();
void set_lookup (int, Lookup*);
String * get_scriptdef (char c);
Request* get_script_req (char);
Request*get_script_req (int d , Script_def*def);
-Request*get_text_req (int d , Text_def*def);
Request*get_grouping_req (Array<int> i_arr);
#endif // PARSECONSTRUCT_HH
protected:
virtual Interval do_width() const;
virtual void do_post_processing();
- virtual Atom get_bar_sym (Real) const;
+ virtual Molecule get_bar_sym (Real) const;
};
private:
Link_array<Repeated_music> repeated_music_arr_;
Link_array<Music> alternative_music_arr_;
- Link_array<Bar> bar_p_arr_;
+ // Link_array<Bar> bar_p_arr_;
+ Array<bool> bar_b_arr_;
Link_array<Volta_spanner> volta_p_arr_;
Array<Moment> stop_mom_arr_;
Array<Moment> alternative_start_mom_arr_;
#include "dictionary.hh"
#include "lily-proto.hh"
+#include "lily-guile.hh"
+#include "dictionary-iter.hh"
+#include "protected-scm.hh"
-class Scope : public Dictionary<Identifier*> {
+class Scope : private Hash_table<Protected_scm,Identifier*> {
public:
void print () const;
+ bool elem_b (String ) const;
+ bool elem_b (SCM s) const;
+ Identifier *&elem (String);
+ Identifier *&elem (SCM s);
Scope ();
+
Scope (Scope const &);
~Scope ();
+ friend class Scope_iter;
+};
+
+class Scope_iter : public Hash_table_iter<Protected_scm,Identifier*> {
+public:
+ Scope_iter(Scope const&);
+ String key () const;
+ SCM scm_key () const;
};
#endif /* SCOPE_HH */
virtual void do_break_processing ();
virtual void handle_broken_dependencies ();
virtual void handle_prebroken_dependencies ();
+ virtual void handle_prebroken_dependents ();
virtual Link_array<Score_element> get_extra_dependencies () const;
virtual void do_unlink ();
virtual void do_junk_links ();
virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual Molecule * do_brew_molecule_p() const;
- virtual Atom get_bar_sym (Real dy) const;
+ virtual Molecule get_bar_sym (Real dy) const;
};
#endif // SPAN_BAR_HH
protected:
virtual Interval do_width() const;
virtual void do_post_processing();
- virtual Atom get_bar_sym (Real) const;
+ virtual Molecule get_bar_sym (Real) const;
};
#ifndef STAFF_MARGIN_ENGRAVER_HH
#define STAFF_MARGIN_ENGRAVER_HH
-#include "engraver.hh"
+#include "bar-script-engraver.hh"
/**
put (instrument) text to left of line
*/
-class Staff_margin_engraver : public Engraver
+class Staff_margin_engraver : public Bar_script_engraver
{
public:
VIRTUAL_COPY_CONS(Translator);
-
-
Staff_margin_engraver ();
-
protected:
void acknowledge_element (Score_element_info);
- void do_pre_move_processing ();
-
-private:
- Script * script_p_;
};
#endif // STAFF_MARGIN_ENGRAVER_HH
--- /dev/null
+/*
+ tfm.hh -- declare Tex_font_metric
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+
+
+ revamped code from GNU Fontutils-0.6
+
+ */
+
+#ifndef TFM_HH
+#define TFM_HH
+
+#include "string.hh"
+#include "array.hh"
+#include "lily-proto.hh"
+#include "font-metric.hh"
+
+/* The type. */
+typedef long Fix;
+
+/* A character code. Perhaps someday we will allow for 16-bit
+ character codes, but for now we are restricted to 256 characters per
+ font (like TeX and PostScript). */
+typedef unsigned char Char_code;
+
+/* Used in file formats. */
+typedef int Byte_count;
+
+/* The restriction to 256 characters in a TFM file is part of the file
+ format, so this number should only be changed in the (very unlikely)
+ event that the file format changes. */
+#define TFM_SIZE 256
+
+/* Fontwide information. All real values are in printer's points:
+ 72.27 points = 1 inch. */
+
+/* TFM_MIN_DESIGNSIZE <= designsize < TFM_MAX_DESIGNSIZE. */
+#define TFM_MIN_DESIGNSIZE 1.0
+#define TFM_MAX_DESIGNSIZE 2048
+
+/* The maximum number of global font parameters we allow. */
+#define TFM_MAX_FONTDIMENS 30
+
+/* The maximum length of a codingscheme string. */
+#define TFM_MAX_CODINGSCHEME_LENGTH 39
+
+/* Define symbolic names for the numbers of the parameters we
+ recognize. Some numbers have more than one name. */
+#define TFM_SLANT_PARAMETER 1
+#define TFM_SPACE_PARAMETER 2
+#define TFM_STRETCH_PARAMETER 3
+#define TFM_SHRINK_PARAMETER 4
+#define TFM_XHEIGHT_PARAMETER 5
+#define TFM_QUAD_PARAMETER 6
+#define TFM_EXTRASPACE_PARAMETER 7
+#define TFM_NUM1_PARAMETER 8
+#define TFM_NUM2_PARAMETER 9
+#define TFM_NUM3_PARAMETER 10
+#define TFM_DENOM1_PARAMETER 11
+#define TFM_DENOM2_PARAMETER 12
+#define TFM_SUP1_PARAMETER 13
+#define TFM_SUP2_PARAMETER 14
+#define TFM_SUP3_PARAMETER 15
+#define TFM_SUB1_PARAMETER 16
+#define TFM_SUB2_PARAMETER 17
+#define TFM_SUPDROP_PARAMETER 18
+#define TFM_SUBDROP_PARAMETER 19
+#define TFM_DELIM1_PARAMETER 20
+#define TFM_DELIM2_PARAMETER 21
+#define TFM_AXISHEIGHT_PARAMETER 22
+#define TFM_DEFAULTRULETHICKNESS_PARAMETER 8
+#define TFM_BIGOPSPACING1_PARAMETER 9
+#define TFM_BIGOPSPACING2_PARAMETER 10
+#define TFM_BIGOPSPACING3_PARAMETER 11
+#define TFM_BIGOPSPACING4_PARAMETER 12
+#define TFM_BIGOPSPACING5_PARAMETER 13
+
+/* These are not in any of the standard TeX fonts, but the information
+ is useful nevertheless. */
+#define TFM_LEADINGHEIGHT_PARAMETER 23
+#define TFM_LEADINGDEPTH_PARAMETER 24
+#define TFM_FONTSIZE_PARAMETER 25
+#define TFM_VERSION_PARAMETER 26
+
+struct Tfm_header
+{
+ Byte_count char_info_pos;
+ Byte_count width_pos;
+ Byte_count height_pos;
+ Byte_count depth_pos;
+ Byte_count italic_correction_pos;
+ Byte_count lig_kern_pos;
+ Byte_count kern_pos;
+ unsigned param_word_count;
+};
+
+struct Tfm_info
+{
+ Char_code first_charcode, last_charcode;
+ U32 checksum;
+ Real design_size;
+ String coding_scheme;
+ unsigned parameter_count;
+ // Real parameters [Tex_font_metric::MAX_FONTDIMENS];
+ Real parameters [TFM_MAX_FONTDIMENS];
+};
+
+/* When typesetting, the current character + `character' leads to
+ `ligature'. The TFM format was extended in 1990 to allow for more
+ complicated ligatures than this, but we do not make those
+ distinctions. */
+struct Tfm_ligature
+{
+ Char_code character;
+ Char_code ligature;
+};
+
+/* Similarly for kerns. */
+struct Tfm_kern
+{
+ Char_code character;
+ Real kern;
+};
+
+struct Tex_font_char_metric : Character_metric
+{
+ bool exists_b_;
+ Char_code code_;
+ Real width_, height_, depth_, italic_correction_;
+ Fix width_fix_, height_fix_, depth_fix_, italic_correction_fix_;
+ Array<Tfm_kern> kern_arr_;
+ Array<Tfm_ligature> ligature_arr_;
+
+ String str () const;
+ Tex_font_char_metric ();
+
+ Box dimensions () const;
+};
+
+
+class Tex_font_metric : public Font_metric
+{
+public:
+ Character_metric *get_char (int, bool) const;
+
+ Tex_font_metric ();
+ Tex_font_char_metric const &find_ascii (int ascii, bool warn=true) const;
+ String str () const;
+
+ /// the reader
+ Tfm_info info_;
+ Tfm_header header_;
+ void clear (int n);
+ void read_file (String name);
+
+ Array<Tex_font_char_metric> char_metrics_;
+ Array<int> ascii_to_metric_idx_;
+
+private:
+ Real get_U32_fix_f (Binary_source_file* input);
+ Real get_U32_fix_scaled_f (Binary_source_file* input);
+ String get_bcpl_str (Binary_source_file* input);
+ void read_header (Binary_source_file* input);
+ void read_params (Binary_source_file* input);
+ void read_char_metrics (Binary_source_file* input);
+ Tex_font_char_metric read_char_metric (Binary_source_file* input, Char_code code);
+ Tex_font_char_metric read_char (Binary_source_file* input);
+ void read_lig_kern_program (Binary_source_file* input, Array<Tfm_ligature>* ligature_arr_p, Array <Tfm_kern>* kern_arr_p);
+};
+
+
+#endif /* TFM_HH */
+
protected:
Link_array<Compressed_music> compressed_music_arr_;
Array<Moment> stop_moments_;
- Link_array<Plet_spanner> started_span_p_arr_;
+ Link_array<Tuplet_spanner> started_span_p_arr_;
virtual void do_removal_processing ();
(c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#ifndef PLET_SPANNER_HH
-#define PLET_SPANNER_HH
+#ifndef Tuplet_spanner_HH
+#define Tuplet_spanner_HH
#include "text-def.hh"
#include "pointer.hh"
#include "directional-spanner.hh"
/** supportable plet: triplets, eentweetjes, ottava, etc. */
-class Plet_spanner : public Directional_spanner
+class Tuplet_spanner : public Directional_spanner
{
public:
- Plet_spanner ();
+ Tuplet_spanner ();
void add_column (Note_column*);
void set_beam (Beam*);
virtual void do_substitute_dependency (Score_element*,Score_element*);
};
-#endif // PLET_SPANNER_HH
+#endif // Tuplet_spanner_HH
Link_array<Bar> column_arr_;
Link_array<Note_column> note_column_arr_;
bool last_b_;
+ bool visible_b_;
protected:
virtual Molecule* do_brew_molecule_p () const;
VIRTUAL_COPY_CONS (Score_element);
virtual void do_add_processing ();
+ virtual Interval do_height () const;
virtual void do_post_processing ();
virtual void do_substitute_dependency (Score_element*,Score_element*);
};
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
}
-
-
void
Item::do_print() const
{
Line_of_score *
Item::line_l() const
{
- Graphical_element *g =parent_l (X_AXIS);
+ Graphical_element *g = parent_l (X_AXIS);
if (!g)
return 0;
return dynamic_cast <Score_element *> (g)-> line_l ();
Direction i=LEFT;
do
{
- Item * item_p = dynamic_cast<Item*>(clone());
+ Score_element * dolly = clone();
+ Item * item_p = dynamic_cast<Item*>(dolly);
item_p->break_status_dir_ = i;
pscore_l_->typeset_element (item_p);
- item_p->handle_prebroken_dependencies();
new_copies[i] =item_p;
}
while (flip(&i) != LEFT);
broken_to_drul_= new_copies;
+
+ do
+ {
+ broken_to_drul_[i]->handle_prebroken_dependencies();
+ broken_to_drul_[i]->try_visibility_lambda();
+ }
+ while (flip(&i) != LEFT);
+ try_visibility_lambda ();
}
void
-Item::do_breakable_col_processing()
+Item::try_visibility_lambda ()
{
- if (!breakable_b_)
- return;
-
- if (!column_l ()->breakable_b_)
- return;
+ if (visibility_lambda_)
+ {
+ SCM args = scm_listify (gh_int2scm (break_status_dir_), SCM_UNDEFINED);
+ SCM result = gh_apply (visibility_lambda_, args);
+ int trans = gh_scm2bool (gh_car (result));
+ int empty = gh_scm2bool (gh_cdr (result));
+
+ if (empty)
+ set_empty (true);
+ if (trans)
+ transparent_b_ = true;
+ }
+}
+void
+Item::do_break ()
+{
copy_breakable_items();
handle_prebroken_dependencies();
-
+
/*
Otherwise the broken items won't be pre_process()'ed.
*/
add_dependency (broken_to_drul_[LEFT]);
- add_dependency (broken_to_drul_[RIGHT]);
+ add_dependency (broken_to_drul_[RIGHT]);
+
}
+void
+Item::do_breakable_col_processing()
+{
+ if (breakable_b_)
+ do_break ();
+
+}
Item*
Item::find_prebroken_piece (Line_of_score*l) const
{
unbroken_original_l_ = &s;
/* do not copy attached_span_l_arr_ */
breakable_b_ = s.breakable_b_;
+ visibility_lambda_ = s.visibility_lambda_;
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
break_status_dir_ = s.break_status_dir_;
break_priority_i_ = s.break_priority_i_;
}
+
+void
+Item::handle_prebroken_dependents ()
+{
+ Dimension_cache * dim = dim_cache_[X_AXIS].parent_l_;
+ if (!dim)
+ return;
+
+ Item * parent = dynamic_cast<Item*> (dim->element_l ());
+ if (parent && parent->broken_to_drul_[LEFT])
+ {
+ if(!(broken_to_drul_[LEFT] || broken_to_drul_[RIGHT]))
+ do_break ();
+
+ Direction d = LEFT;
+ do
+ {
+ broken_to_drul_[d]->dim_cache_[X_AXIS].parent_l_ =
+ &parent->broken_to_drul_[d]->dim_cache_[X_AXIS];
+ parent->broken_to_drul_[d]->add_dependency (broken_to_drul_[d]);
+ }
+ while ((flip (&d))!=LEFT);
+ }
+}
+
}
/*
- TODO space the `natural' signs wider
+ TODO
+ - space the `natural' signs wider
+ - dehair this
*/
Molecule*
Key_item::do_brew_molecule_p() const
{
Molecule m =lookup_l ()->accidental (0,false);
m.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
- output->add_at_edge (X_AXIS, RIGHT, m);
+ output->add_at_edge (X_AXIS, RIGHT, m,0);
}
}
Interval x(0, inter);
Interval y(0,0);
- output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)));
+ output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)),0);
}
for (int i =0; i < pitch_arr_.size(); i++)
{
Molecule m =lookup_l ()->accidental (acc_arr_[i],false);
m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
- output->add_at_edge (X_AXIS, RIGHT, m);
+ output->add_at_edge (X_AXIS, RIGHT, m, 0);
}
if (pitch_arr_.size())
{
Interval (0, paper()->note_width ()),
Interval (0,0))));
- output->add_at_edge (X_AXIS, RIGHT, m);
+ output->add_at_edge (X_AXIS, RIGHT, m,0 );
}
return output;
}
return gh_car (scm_intern (name.ch_C(), name.length_i()));
}
+String
+symbol_to_string (SCM s)
+{
+ return String((Byte*)SCM_CHARS (s), (int) SCM_LENGTH(s));
+}
+
SCM
-ly_set_scm (String name , SCM val)
+ly_set_scm (String name, SCM val)
{
return scm_sysintern (name.ch_C(), val);
*mlog << ']' << flush;
}
+
+void
+ly_display_scm (SCM s)
+{
+ gh_display (s);
+ gh_newline ();
+}
-#include <stdio.h>
+/*
+ lily-version.cc -- implement version strings
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
#include "config.hh"
#include "version.hh"
+#include "lily-version.hh"
-#define VERSION_SZ MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL
-
-static char *s = "GNU LilyPond " VERSION_SZ ;
+#define VERSION MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL
+String
+version_str ()
+{
+ String str = VERSION;
+ return str;
+}
-char const *
-lily_version_number_sz()
+String
+gnu_lilypond_str ()
{
- return VERSION_SZ;
+ String str = "GNU LilyPond";
+ return str;
}
-char const *
-lily_version_sz()
+String
+gnu_lilypond_version_str ()
{
- return s;
+ String str = gnu_lilypond_str () + " " + version_str ();
+ return str;
}
+
accidental_pitch_arr_[i].cautionary_b_));
m.translate_axis (dy, Y_AXIS);
- octave_mol_p->add_at_edge (X_AXIS, RIGHT, m);
+ octave_mol_p->add_at_edge (X_AXIS, RIGHT, m, 0);
}
if (octave_mol_p)
{
Box b(Interval (0, paper()->internote_f ()), Interval (0,0));
Molecule m (lookup_l ()->fill (b));
- output->add_at_edge (X_AXIS, RIGHT, m);
+ output->add_at_edge (X_AXIS, RIGHT, m, 0);
}
Interval x_int;
#include "lookup.hh"
#include "debug.hh"
#include "dimensions.hh"
-#include "symtable.hh"
#include "scalar.hh"
#include "paper-def.hh"
#include "string-convert.hh"
#include "lily-guile.hh"
#include "all-fonts.hh"
#include "afm.hh"
+#include "scope.hh"
+#include "molecule.hh"
SCM
array_to_list (SCM *a , int l)
Lookup::Lookup ()
{
paper_l_ = 0;
- symtables_p_ = new Symtables;
afm_l_ = 0;
}
Lookup::Lookup (Lookup const& s)
{
font_name_ = s.font_name_;
- paper_l_ = s.paper_l_;
- symtables_p_ = new Symtables (*s.symtables_p_);
+ paper_l_ = 0;
afm_l_ = 0;
}
-Lookup::Lookup (Symtables const& s)
-{
- font_name_ = s.font_name_;
- paper_l_ = 0;
- symtables_p_ = new Symtables (s);
- afm_l_ = 0;
-}
-Lookup::~Lookup ()
-{
- delete symtables_p_;
-}
Molecule
Lookup::accidental (int j, bool cautionary) const
Molecule m(afm_find (String ("accidentals") + String ("-") + to_str (j)));
if (cautionary)
{
- m.add_at_edge(X_AXIS, LEFT,
- Molecule(afm_find (String ("accidentals") + String ("-("))))
-;
- m.add_at_edge(X_AXIS, RIGHT,
- Molecule(afm_find (String ("accidentals") + String ("-)"))))
-;
+ Atom open = afm_find (String ("accidentals") + String ("-("));
+ Atom close = afm_find (String ("accidentals") + String ("-)"));
+ m.add_at_edge(X_AXIS, LEFT, Molecule(open), 0);
+ m.add_at_edge(X_AXIS, RIGHT, Molecule(close), 0);
}
return m;
}
-void
-Lookup::add (String s, Symtable*p)
-{
- symtables_p_->add (s, p);
-}
Atom
Lookup::afm_find (String s, bool warn) const
{
if (!afm_l_)
- ((Lookup*)this)->afm_l_ = all_fonts_global_p->find_font (font_name_);
+ ((Lookup*)this)->afm_l_ = all_fonts_global_p->find_afm (font_name_);
Adobe_font_char_metric m = afm_l_->find_char (s, warn);
a.lambda_ = gh_list (ly_symbol ("char"),
gh_int2scm (m.code ()),
SCM_UNDEFINED);
- a.str_ = "afm_find: " + s;
a.font_ = font_name_;
return a;
}
}
Atom
-Lookup::bar (String str, Real h) const
+Lookup::simple_bar (String type, Real h) const
{
-
- Atom a = (*symtables_p_) ("bars")->lookup (str);
-
+ SCM thick = ly_symbol ("barthick_" + type);
+ Real w = 0.1 PT;
+ if (paper_l_->scope_p_->elem_b (thick))
+ {
+ w = paper_l_->get_realvar (thick);
+ }
- a.lambda_ = gh_list (ly_symbol (a.str_.ch_C()),
- gh_double2scm (h),
+ Atom a;
+ a.lambda_ = gh_list (ly_symbol ("filledbox"),
+ gh_double2scm (0),
+ gh_double2scm (w),
+ gh_double2scm (h/2),
+ gh_double2scm (h/2),
SCM_UNDEFINED);
-
- a.dim_.y () = Interval (-h/2, h/2);
- a.font_ = font_name_;
+ a.dim_[X_AXIS] = Interval(0,w);
+ a.dim_[Y_AXIS] = Interval (-h/2, h/2);
return a;
}
+
+Molecule
+Lookup::bar (String str, Real h) const
+{
+ Real kern = paper_l_->get_var ("bar_kern");
+ Real thinkern = paper_l_->get_var ("bar_thinkern");
+ Atom thin = simple_bar ("thin", h);
+ Atom thick = simple_bar ("thick", h);
+ Atom colon = afm_find ("dots-repeatcolon");
+
+ Molecule m;
+
+ if (str == "")
+ {
+ return fill (Box (Interval(0,0),Interval (-h/2, h/2)));
+ }
+ else if (str == "|")
+ {
+ return thin;
+ }
+ else if (str == "|.")
+ {
+ m.add_at_edge (X_AXIS, LEFT, thick, 0);
+ m.add_at_edge (X_AXIS, LEFT, thin,kern);
+ }
+ else if (str == ".|")
+ {
+ m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+ m.add_at_edge (X_AXIS, RIGHT, thin, 0);
+ }
+ else if (str == ":|")
+ {
+ m.add_at_edge (X_AXIS, LEFT, thick, 0);
+ m.add_at_edge (X_AXIS, LEFT, thin, kern);
+ m.add_at_edge (X_AXIS, LEFT, colon, kern);
+ }
+ else if (str == "|:")
+ {
+ m.add_at_edge (X_AXIS, RIGHT, thick,0);
+ m.add_at_edge (X_AXIS, RIGHT, thin,kern);
+ m.add_at_edge (X_AXIS, RIGHT, colon,kern);
+ }
+ else if (str == ":|:")
+ {
+ m.add_at_edge (X_AXIS, LEFT, thick,kern/2);
+ m.add_at_edge (X_AXIS, LEFT, thin,kern);
+ m.add_at_edge (X_AXIS, LEFT, colon,kern);
+ m.add_at_edge (X_AXIS, RIGHT, thick,kern);
+ m.add_at_edge (X_AXIS, RIGHT, thin,kern);
+ m.add_at_edge (X_AXIS, RIGHT, colon,kern);
+ }
+ else if (str == "||")
+ {
+ m.add_at_edge (X_AXIS, RIGHT, thin,0);
+ m.add_at_edge (X_AXIS, RIGHT, thin,thinkern);
+ }
+
+ else if (str == ".|.")
+ {
+ m.add_at_edge (X_AXIS, RIGHT, thick, 0);
+ m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+ }
+
+ return m;
+}
+
Atom
Lookup::beam (Real slope, Real width, Real thick) const
{
ly_quote_scm (array_to_list (sc, 4)),
SCM_UNDEFINED);
- a.str_ = "dashed_slur";
return a;
}
return afm_find (String ("dots") + String ("-") + String ("dot"));
}
-Atom
-Lookup::dynamic (String st) const
-{
- return (*symtables_p_) ("dynamics")->lookup (st);
-}
Atom
Lookup::extender (Real width) const
{
- Atom a = (*symtables_p_) ("param")->lookup ("extender");
- a.lambda_ = gh_list (ly_symbol (a.str_),
+ Atom a;
+ a.lambda_ = gh_list (ly_symbol ("extender"),
gh_double2scm (width),
SCM_UNDEFINED);
- a.str_ = "extender";
+
+ a.dim_[X_AXIS] = Interval (0, width);
+ a.dim_[Y_AXIS] = Interval (0,0);
+
a.font_ = font_name_;
return a;
}
return a;
}
-void
-Lookup::print () const
-{
-#ifndef NPRINT
- DOUT << "Lookup {\n";
- symtables_p_->print ();
- DOUT << "}\n";
-#endif
-}
-
Atom
Lookup::rest (int j, bool o) const
{
Real stem_width = paper_l_->get_var ("stemthickness");
- a.lambda_ = gh_list (ly_symbol ("stem"),
- gh_double2scm(-stem_width /2),
- gh_double2scm(stem_width),
+ a.lambda_ = gh_list (ly_symbol ("filledbox"),
+ gh_double2scm(stem_width /2),
+ gh_double2scm(stem_width/2),
gh_double2scm(y2),
gh_double2scm(-y1),
SCM_UNDEFINED);
{"finger", "feta-nummer"},
{"italic", "cmti"},
{"roman", "cmr"},
+ {"large", "cmbx"},
+ {"Large", "cmbx"},
+ {"mark", "feta-nummer"},
+ {"nummer", "feta-nummer"},
{0,0}
};
Atom
Lookup::text (String style, String text) const
{
- Atom a = (*symtables_p_) ("style")->lookup (style);
-
- a.lambda_ = gh_list(ly_symbol (a.str_),
+ Atom a;
+ a.lambda_ = gh_list(ly_symbol ("set" + style),
gh_str02scm (text.ch_C()),
SCM_UNDEFINED);
-
- Real font_w = a.dim_.x ().length ();
- Real font_h = a.dim_.y ().length ();
+ Real font_h = paper_l_->get_var ("font_normal");
+ if (paper_l_->scope_p_->elem_b ("font_" + style))
+ {
+ font_h = paper_l_->get_var ("font_" + style);
+ }
+
if (cmr_dict.elem_b (style))
{
style = String (cmr_dict [style]) + to_str ((int)font_h); // ugh
}
Real w = 0;
- Adobe_font_metric* afm_l = all_fonts_global_p->find_font (style);
+ Font_metric* afm_l = all_fonts_global_p->find_font (style);
DOUT << "\nChars: ";
for (int i = 0; i < text.length_i (); i++)
;
else
{
- int c = text[i];
- int code = afm_l->ascii_to_metric_idx_[c];
- if (code >=0)
- {
- Adobe_font_char_metric m = afm_l->char_metrics_[code];
- w += m.B_.x ().length ();
- DOUT << to_str (m.B_.x ().length ()) << " ";
- }
+ Character_metric *c = afm_l->get_char (text[i],false);
+ w += c->dimensions()[X_AXIS].length ();
}
}
+
DOUT << "\n" << to_str (w) << "\n";
a.dim_.x () = Interval (0, w);
a.font_ = font_name_;
}
+/*
+ TODO: should return a molecule with 2 stacked nums.
+ */
Atom
Lookup::time_signature (Array<int> a) const
{
- Atom s ((*symtables_p_) ("param")->lookup ("time_signature"));
- s.lambda_ = gh_list (ly_symbol (s.str_),
+ Atom s;
+ s.lambda_ = gh_list (ly_symbol ("generalmeter"),
gh_int2scm (a[0]),
gh_int2scm (a[1]),
SCM_UNDEFINED);
+
+ Real r = paper_l_->interline_f () ;
+ s.dim_[Y_AXIS] = Interval (-2*r, 2*r);
+ s.dim_[X_AXIS] = Interval (0, 2*r);
return s;
}
SCM_UNDEFINED
);
a.dim_[Y_AXIS] = Interval (-y/2,y/2);
+ a.dim_[X_AXIS] = Interval (0,0);
a.font_ = font_name_;
return a;
}
a.lambda_ = gh_list (ly_symbol ("bracket"),
gh_double2scm (y),
SCM_UNDEFINED);
- a.str_ = "vbracket";
a.dim_[Y_AXIS] = Interval (-y/2,y/2);
a.dim_[X_AXIS] = Interval (0,4 PT);
return a;
gh_double2scm (w),
gh_int2scm (last_b),
SCM_UNDEFINED);
- a.str_ = "volta";
+
Real interline_f = paper_l_->interline_f ();
a.dim_[Y_AXIS] = Interval (-interline_f, interline_f);
*/
#include "musical-request.hh"
-#include "text-item.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
#include "main.hh"
#include "dimensions.hh"
#include "g-text-item.hh"
-
-
#include "engraver.hh"
#include "array.hh"
#include "lily-proto.hh"
Scalar style = get_property ("textstyle", 0);
if (style.length_i ())
item_p->style_str_ = style;
+ // urg, when/how can one get the height of this thing?
+ item_p->translate (Offset (0, - i * 12 PT));
text_p_arr_.push (item_p);
announce_element (Score_element_info (item_p, request_l));
#include <assert.h>
#include <locale.h>
#include "lily-guile.hh"
+#include "lily-version.hh"
#include "all-fonts.hh"
#include "proto.hh"
" -V, --ignore-version ignore mudela version\n"
);
cout << _ (
- " -w, --warranty show warranty and copyright\n"
- );
+ " -w, --warranty show warranty and copyright\n"
+ );
cout << '\n';
cout << _ ("GNU LilyPond was compiled with the following settings:");
cout << '\n';
#ifdef STRING_UTILS_INLINED
"STRING_UTILS_INLINED "
#endif
- "datadir=" DIR_DATADIR
- "\n"
- "localedir=" DIR_LOCALEDIR
+ "datadir=" DIR_DATADIR
+ "\n"
+ "localedir=" DIR_LOCALEDIR
"\n";
{
cout << '\n';
cout <<
- #include "BLURB.hh"
- cout << '\n';
+#include "BLURB.hh"
+ cout << '\n';
cout << _ ("GNU LilyPond is Free software, see --warranty");
cout << '\n';
cout << '\n';
cout << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
cout << '\n';
cout << _ (
- " This program is free software; you can redistribute it and/or\n"
- "modify it under the terms of the GNU General Public License version 2\n"
- "as published by the Free Software Foundation.\n"
- "\n"
- " This program is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
- "General Public License for more details.\n"
- "\n"
- " You should have received a copy (refer to the file COPYING) of the\n"
- "GNU General Public License along with this program; if not, write to\n"
- "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
- "USA.\n");
+ " This program is free software; you can redistribute it and/or\n"
+ "modify it under the terms of the GNU General Public License version 2\n"
+ "as published by the Free Software Foundation.\n"
+ "\n"
+ " This program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+ "General Public License for more details.\n"
+ "\n"
+ " You should have received a copy (refer to the file COPYING) of the\n"
+ "GNU General Public License along with this program; if not, write to\n"
+ "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+ "USA.\n");
}
void
identify ()
{
- *mlog << get_version_str () << endl;
+ *mlog << gnu_lilypond_version_str () << endl;
}
void
global_path.parse_path (env_sz);
- char *suffixes[] = {"ly", "afm", "scm", "init", 0};
+ char *suffixes[] = {"ly", "afm", "scm", "tfm", 0};
for (char **s = suffixes; *s; s++){
- if (!prefix_directory.empty_b())
- global_path.add (prefix_directory + to_str ('/') + String (*s));
- else
- global_path.add (String (DIR_DATADIR) + to_str ('/') + String(*s));
+ if (!prefix_directory.empty_b())
+ global_path.add (prefix_directory + to_str ('/') + String (*s));
+ else
+ global_path.add (String (DIR_DATADIR) + to_str ('/') + String(*s));
}
}
void
main_prog (int argc, char **argv)
{
+ call_constructors ();
default_outname_base_global = "lelie";
all_fonts_global_p = new All_font_metrics (global_path.str ());
exit( exit_status_i_);
}
+
int
main (int argc, char **argv)
{
identify ();
- call_constructors ();
debug_init (); // should be first
-
setup_paths ();
oparser_global_p = new Getopt_long(argc, argv,theopts);
(c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-
-#include "mark-engraver.hh"
-#include "text-def.hh"
-#include "script.hh"
-#include "paper-def.hh"
#include "command-request.hh"
-#include "time-description.hh"
+#include "mark-engraver.hh"
#include "engraver-group.hh"
-#include "staff-sym.hh"
#include "g-text-item.hh"
-#include "g-staff-side.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
+
ADD_THIS_TRANSLATOR (Mark_engraver);
Mark_engraver::Mark_engraver ()
{
mark_req_l_ = 0;
- staff_side_p_ = 0;
- text_p_ = 0;
+ axis_ = Y_AXIS;
+ type_ = "mark";
}
+void
+Mark_engraver::do_post_move_processing ()
+{
+ mark_req_l_ = 0;
+}
+
+
bool
Mark_engraver::do_try_music (Music* r_l)
{
void
Mark_engraver::do_process_requests ()
-{
- if (!mark_req_l_ || staff_side_p_)
- return;
-
- staff_side_p_ = new G_staff_side_item;
-
- text_p_ = new G_text_item;
-
- text_p_->text_str_ = mark_req_l_->str_;
- // text_p_->align_dir_ = CENTER;
-
- text_p_->style_str_ = text_p_->text_str_.index_any_i ("0123456789") >= 0
- ? "mark" : "Large";
-
- Scalar prop = get_property ("markdir", 0);
- if (prop.isnum_b ())
- {
- staff_side_p_->dir_ = (Direction) (int) prop;
- }
- else
- {
- staff_side_p_->dir_ = UP;
- }
-
- staff_side_p_->set_victim(text_p_);
-
- // Scalar padding = get_property ("markScriptPadding", 0);
- // if (padding.length_i() && padding.isnum_b ())
- // {
- // script_p_->padding_f_ = Real(padding);
- // }
- // Scalar break_priority = get_property ("markBreakPriority", 0);
- // if (break_priority.length_i() && break_priority.isnum_b ())
- // {
- // staff_side_p_->break_priority_i_ = int(break_priority);
- // }
-
-
- announce_element (Score_element_info (text_p_, mark_req_l_));
- announce_element (Score_element_info (staff_side_p_, mark_req_l_));
-}
-
-void
-Mark_engraver::do_pre_move_processing ()
-{
- if (staff_side_p_)
- {
- Staff_symbol* s_l = get_staff_info().staff_sym_l_;
- staff_side_p_->add_support (s_l);
- typeset_element (text_p_);
- typeset_element (staff_side_p_);
- text_p_ = 0;
- staff_side_p_ = 0;
- mark_req_l_ = 0;
- }
-}
-
-void
-Mark_engraver::acknowledge_element (Score_element_info i)
{
- if (staff_side_p_)
+ if (mark_req_l_)
{
- if (dynamic_cast<Stem *> (i.elem_l_) ||
- dynamic_cast<Rhythmic_head *> (i.elem_l_))
- {
- staff_side_p_->add_support (i.elem_l_);
- }
+ create_items (mark_req_l_);
+ text_p_->text_str_ = mark_req_l_->str_;
+ text_p_->style_str_ = text_p_->text_str_.index_any_i ("0123456789") >= 0
+ ? "mark" : "Large";
}
}
return b;
}
+Interval
+Molecule::extent(Axis a) const
+{
+ Interval i;
+ for (iter_top (atoms_,c); c.ok(); c++)
+ i.unite (c->extent(a));
+ return i;
+}
+
void
Molecule::translate (Offset o)
{
void
-Molecule::add_at_edge (Axis a, Direction d, Molecule const &m)
+Molecule::add_at_edge (Axis a, Direction d, Molecule const &m, Real padding)
{
- if (!atoms_.size())
- {
- add_molecule (m);
- return;
- }
- Real offset = extent ()[a][d] - m.extent ()[a][-d];
+ Real my_extent= atoms_.size()
+ ? extent ()[a][d]
+ : 0.0;
+
+ Real offset = my_extent - m.extent ()[a][-d];
Molecule toadd (m);
- toadd.translate_axis (offset, a);
+ toadd.translate_axis (offset + d * padding, a);
add_molecule (toadd);
}
Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
{
start_measure_i_ = 0;
- rest_stop_mom_ =0;
- // rest_item_creation_mom_ = 0;
+ rest_moments_[START] =
+ rest_moments_[STOP] =0;
multi_measure_req_l_ = 0;
mmrest_p_ = 0;
}
{
if (multi_measure_req_l_)
if (!multi_measure_req_l_->equal_b (mr)
- || rest_start_mom_ != now_moment ())
+ || rest_moments_[START] != now_moment ())
return false;
multi_measure_req_l_ = mr;
- rest_start_mom_ = now_moment ();
+ rest_moments_[START] = now_moment ();
- rest_stop_mom_ = rest_start_mom_ + multi_measure_req_l_->duration_.length ();
+ rest_moments_[STOP] = rest_moments_[START] + multi_measure_req_l_->duration_.length ();
return true;
}
return false;
{
Moment now (now_moment ());
Time_description const *time = get_staff_info().time_C_;
- if (mmrest_p_ && (now >= rest_start_mom_)
+ if (mmrest_p_ && (now >= rest_moments_[START])
&& !time->whole_in_measure_
&& (mmrest_p_->column_arr_.size () >= 2))
{
mmrest_p_ = 0;
}
- if (now >= rest_stop_mom_)
+ if (now >= rest_moments_[STOP])
{
multi_measure_req_l_ = 0;
mmrest_p_ = 0;
#include "dictionary-iter.hh"
#include "identifier.hh"
#include "main.hh"
+#include "lily-guile.hh"
int
Music_output_def::get_next_default_count () const
scope_p_ = new Scope (*s.scope_p_);
translator_p_dict_p_ = new Scope (*s.translator_p_dict_p_);
- for (Dictionary_iter<Identifier*> i (*translator_p_dict_p_); i.ok (); i++)
+ for (Scope_iter i (*translator_p_dict_p_); i.ok (); i++)
{
Translator * t = i.val ()->access_content_Translator (false);
t-> output_def_l_ = this;
if (translator_p_dict_p_->elem_b (s))
delete translator_p_dict_p_->elem (s);
- (*translator_p_dict_p_)[s] = new Translator_identifier (tp, 0);
+ translator_p_dict_p_->elem (s) = new Translator_identifier (tp, 0);
tp ->output_def_l_ = this;
}
Music_output_def::find_translator_l (String name) const
{
if (translator_p_dict_p_->elem_b (name))
- return (*translator_p_dict_p_)[name]->access_content_Translator (false);
+ return translator_p_dict_p_->elem (name)->access_content_Translator (false);
if (global_translator_dict_p->elem_b (name))
- return (*global_translator_dict_p)[name];
+ return global_translator_dict_p->elem(name);
return 0;
}
String
Music_output_def::get_default_output () const
{
- if (safe_global_b || !scope_p_->elem_b ("output"))
+ static SCM output_sym;
+ if (!output_sym)
+ output_sym = scm_protect_object (ly_symbol ("output"));
+ if (safe_global_b || !scope_p_->elem_b (output_sym))
return "";
- Identifier * id = (*scope_p_) ["output"];
+ Identifier * id = scope_p_->elem (output_sym);
String *p = id->access_content_String (false);
return p ? *p : String ("");
delete scriptdef_p_;
}
-
-Text_req::~Text_req ()
-{
- delete tdef_p_;
- tdef_p_ = 0;
-}
-
-Text_req::Text_req (Text_req const& src)
-{
- tdef_p_ = new Text_def (*src.tdef_p_);
- dir_ = src.dir_;
-}
-
-Text_req::Text_req (int dir_i, Text_def* tdef_p)
-{
- dir_ = Direction (dir_i);
- tdef_p_ = tdef_p;
-}
-
-void
-Text_req::do_print () const
-{
-#ifndef NPRINT
- DOUT << " dir " << dir_;
- tdef_p_->print ();
-#endif
-}
-
void
Skip_req::do_print () const
{
{"script", SCRIPT},
{"shape", SHAPE},
{"skip", SKIP},
- {"table", TABLE},
{"spandynamic", SPANDYNAMIC},
- {"symboltables", SYMBOLTABLES},
{"tempo", TEMPO},
{"translator", TRANSLATOR},
{"type", TYPE},
Identifier*
My_lily_lexer::lookup_identifier (String s)
{
+ SCM sym = ly_symbol (s.ch_C());
+
for (int i = scope_l_arr_.size (); i--; )
- if (scope_l_arr_[i]->elem_b (s))
- return (*scope_l_arr_[i])[s];
+ if (scope_l_arr_[i]->elem_b (sym))
+ return scope_l_arr_[i]->elem(sym);
return 0;
}
warning ( _f ("Identifier name is a keyword (`%s')", name_str));
}
- (*scope_l_arr_.top ())[name_str] = i;
+ scope_l_arr_.top ()->elem (name_str) = i;
}
My_lily_lexer::~My_lily_lexer()
for (int i = 0; i < sub_arr_p->size (); i++)
{
Musical_pitch p = tonic;
- Musical_pitch q = (*add_arr_p)[i];
+ Musical_pitch q = (*sub_arr_p)[i];
// duh, c7 should mean <c bes>
if (q.notename_i_ == 6)
q.accidental_i_--;
int j = 0;
for (; j < sub_arr_p->size (); j++)
if (p == (*sub_arr_p)[j])
- break;
+ {
+ sub_arr_p->del (j);
+ j = -1;
+ break;
+ }
if (j == sub_arr_p->size ())
pitch_arr.push (p);
}
+ for (int i = 0; i < sub_arr_p->size (); i++)
+ warning (_f ("invalid subtraction: not part of chord: %s",
+ (*sub_arr_p)[i].str ()));
+
if (inversion_p)
{
int i = 0;
&& (pitch_arr[i].accidental_i_ == inversion_p->accidental_i_))
break;
if (i == pitch_arr.size ())
- warning (_ ("invalid inversion pitch (not part of chord)"));
+ warning (_f ("invalid inversion pitch: not part of chord: %s",
+ inversion_p->str ()));
else
{
Array<Musical_pitch> pitches;
reqs.push (new Tie_req);
break;
- /* fall through */
case '[':
case ']':
{
#include "paper-outputter.hh"
#include "paper-stream.hh"
+
+#define SCMVAR(s) { static SCM sym; \
+ if (!sym)\
+ sym = scm_protect_object (ly_symbol (#s));\
+ return get_realvar (sym); }
+
+
Paper_def::Paper_def ()
{
lookup_p_tab_p_ = new Hash_table<int, Lookup*>;
+ lookup_p_tab_p_->hash_func_ = int_hash;
}
: Music_output_def (s)
{
lookup_p_tab_p_ = new Hash_table<int, Lookup*>;
+ lookup_p_tab_p_->hash_func_ = int_hash;
+
for (Hash_table_iter<int, Lookup*> ai(*s.lookup_p_tab_p_); ai.ok (); ai++)
{
Lookup * l = new Lookup (*ai.val ());
Real
Paper_def::get_var (String s) const
+{
+ return get_realvar (ly_symbol (s));
+}
+
+Real
+Paper_def::get_realvar (SCM s) const
{
if (!scope_p_->elem_b (s))
- error (_f ("unknown paper variable: `%s\'", s));
+ error (_f ("unknown paper variable: `%s\'", symbol_to_string (s)));
Real * p = scope_p_->elem (s)->access_content_Real (false);
if (!p)
{
- error (_ ("not a real variable"));
+ error (_("not a real variable"));
return 0.0;
}
Real
Paper_def::beam_thickness_f () const
{
- return get_var ("beam_thickness");
+SCMVAR(beam_thickness);
}
Real
Paper_def::linewidth_f () const
{
- return get_var ("linewidth");
+SCMVAR(linewidth);
}
Real
(*lookup_p_tab_p_)[i] = l;
}
+
Real
Paper_def::interline_f () const
{
- return get_var ("interline");
+ SCMVAR(interline)
}
Real
Paper_def::rule_thickness () const
{
- return get_var ("rulethickness");
+ SCMVAR(rulethickness);
}
Real
Paper_def::staffline_f () const
{
- return get_var ("rulethickness");
+ SCMVAR(rulethickness)
}
Real
Paper_def::staffheight_f () const
{
- return get_var ("staffheight");
+ SCMVAR(staffheight)
}
Real
Paper_def::interbeam_f (int multiplicity_i) const
{
if (multiplicity_i <= 3)
- return get_var ("interbeam");
+ SCMVAR(interbeam)
else
- return get_var ("interbeam4");
+ SCMVAR(interbeam4)
}
Real
Paper_def::internote_f () const
{
- return get_var ("interline") /2.0 ;
+ return interline_f () /2.0 ;
}
Real
Paper_def::note_width () const
{
- return get_var ("notewidth");
+SCMVAR(notewidth)
}
void
for (Hash_table_iter<int, Lookup*> ai(*lookup_p_tab_p_); ai.ok (); ai++)
{
- DOUT << "Lookup: " << ai.key () ;
- ai.val ()->print ();
+ DOUT << "Lookup: " << ai.key () << " = " << ai.val ()->font_name_ << '\n';
}
DOUT << "}\n";
default_count_i_ = 0;
}
-extern char const* lily_version_number_sz ();
-
Paper_outputter*
Paper_def::paper_outputter_p (Paper_stream* os_p, Header* header_l, String origin_str) const
{
#include "main.hh"
#include "scope.hh"
#include "identifier.hh"
+#include "lily-version.hh"
Paper_outputter::Paper_outputter (Paper_stream *s)
{
String creator;
if (no_timestamps_global_b)
- creator = "GNU LilyPond\n";
+ creator = gnu_lilypond_str ();
else
- creator = get_version_str ();
+ creator = gnu_lilypond_version_str ();
+
String generate;
if (no_timestamps_global_b)
- generate = ".";
+ generate = ".\n";
else
{
generate = _ (", at ");
void
Paper_outputter::output_scope (Scope *scope, String prefix)
{
- for (Dictionary_iter<Identifier*> i (*scope); i.ok (); i++)
+ for (Scope_iter i (*scope); i.ok (); i++)
{
if (dynamic_cast<String_identifier*> (i.val ()))
{
if (no_timestamps_global_b)
id_str += ".";
else
- id_str += String (", ") + get_version_str ();
+ id_str += String (", ") + version_str ();
output_String_def ( "LilyIdString", id_str);
}
#include "scalar.hh"
#include "translation-property.hh"
#include "script-def.hh"
-#include "symtable.hh"
#include "lookup.hh"
#include "misc.hh"
#include "my-lily-lexer.hh"
// mmm
Mudela_version oldest_version ("1.0.14");
-Mudela_version version ("1.0.14");
+Mudela_version version ("1.0.15");
// needed for bison.simple's malloc() and free()
Array<Musical_pitch> *pitch_arr;
Array<String> * strvec;
Array<int> *intvec;
- Atom * symbol;
- Box *box;
Notename_table *chordmodifiertab;
Duration *duration;
General_script_def * script;
Scalar *scalar;
Simultaneous_music *chord;
String *string;
- Symtable * symtable;
- Symtables* symtables;
Tempo_req *tempo;
Text_def * textdef;
Translator* trans;
%token SHAPE
%token SKIP
%token SPANDYNAMIC
-%token SYMBOLTABLES
-%token TABLE
%token TEMPO
%token TIME_T
%token TIMES
%type <outputdef> output_def
%type <scope> mudela_header mudela_header_body
-%type <box> box
%type <i> open_request_parens close_request_parens
%type <i> sub_quotes sup_quotes
%type <music> simple_element request_chord command_element Simple_music Composite_music
%type <id> identifier_init simple_identifier_init block_identifier
%type <duration> steno_duration notemode_duration
%type <duration> entered_notemode_duration explicit_duration
-%type <interval> dinterval
%type <intvec> intastint_list int_list
-%type <symtables> symtables symtables_body
%type <pitch> explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
%type <pitch> steno_tonic_pitch
%type <script> script_definition script_body mudela_script gen_script_def
%type <textdef> text_def finger
%type <string> script_abbreviation
-%type <symbol> symboldef
-%type <symtable> symtable symtable_body
%type <trans> translator_spec translator_spec_body
%type <tempo> tempo_request
%type <notenametab> notenames_body notenames_block chordmodifiers_block
-/* 5 extra for notemode_chord */
-%expect 15
+%expect 7
%left '-' '+'
$$ = new Midi_def_identifier ($1, MIDI_IDENTIFIER);
}
- | symtables {
- $$ = new Symtables_identifier ($1, IDENTIFIER);
- }
| translator_spec {
$$ = new Translator_identifier ($1, TRANS_IDENTIFIER);
}
THIS->lexer_p_->scope_l_arr_.push (p->scope_p_);
$$ = p;
}
- | paper_def_body int '=' symtables { // ugh, what a syntax
- Lookup * l = new Lookup (*$4);
+ | paper_def_body int '=' FONT STRING { // ugh, what a syntax
+ Lookup * l = new Lookup;
+ l->font_name_ = *$5;
+ delete $5;
$$->set_lookup ($2, l);
}
| paper_def_body assignment ';' {
THIS->parser_error (_ ("have to be in Chord mode for chords"));
$$ = $1;
}
- | '@' notemode_chord {
+ | '@' notemode_chord '@' {
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error (_ ("have to be in Note mode for @chords"));
$$ = $2;
;
chord:
- steno_tonic_pitch notemode_duration chord_additions chord_subtractions chord_inversion {
+ steno_tonic_pitch duration_length chord_additions chord_subtractions chord_inversion {
$$ = THIS->get_chord (*$1, $3, $4, $5, *$2);
};
notemode_chord:
- steno_musical_pitch notemode_duration chord_additions chord_subtractions notemode_chord_inversion {
+ steno_musical_pitch duration_length chord_additions chord_subtractions notemode_chord_inversion {
$$ = THIS->get_chord (*$1, $3, $4, $5, *$2);
};
{
$$ = new Array<Musical_pitch>;
}
- | '-' {
- $$ = new Array<Musical_pitch>;
- }
- | chord_additions chord_addsub {
+ | chord_additions '-' chord_addsub {
$$ = $1;
- $$->push (*$2);
+ $$->push (*$3);
}
;
;
chord_note:
- UNSIGNED {
+ unsigned {
$$ = new Musical_pitch;
$$->notename_i_ = ($1 - 1) % 7;
$$->octave_i_ = $1 > 7 ? 1 : 0;
$$->accidental_i_ = 0;
}
- | UNSIGNED '+' {
+ | unsigned '+' {
$$ = new Musical_pitch;
$$->notename_i_ = ($1 - 1) % 7;
$$->octave_i_ = $1 > 7 ? 1 : 0;
$$->accidental_i_ = 1;
}
- | UNSIGNED '-' {
+ | unsigned '-' {
$$ = new Musical_pitch;
$$->notename_i_ = ($1 - 1) % 7;
$$->octave_i_ = $1 > 7 ? 1 : 0;
{
$$ = new Array<Musical_pitch>;
}
- | '^' {
- $$ = new Array<Musical_pitch>;
- }
- | chord_subtractions chord_addsub {
+ | chord_subtractions '^' chord_addsub {
$$ = $1;
- $$->push (*$2);
+ $$->push (*$3);
}
;
-/*
- symbol tables
-*/
-symtables:
- SYMBOLTABLES '{' symtables_body '}' { $$ = $3; }
- ;
-
-symtables_body:
- {
- $$ = new Symtables;
- }
- | IDENTIFIER {
- $$ = $1->access_content_Symtables (true);
- }
- | symtables_body FONT STRING {
- $$->font_name_ = *$3;
- delete $3;
- }
- | symtables_body STRING '=' symtable {
- $$->add (*$2, $4);
- delete $2;
- }
- ;
-symtable:
- TABLE '{' symtable_body '}' { $$ = $3; }
- ;
-symtable_body:
- { $$ = new Symtable; }
- | symtable_body STRING symboldef {
- $$->elem (*$2) = *$3;
- delete $2;
- delete $3;
- }
- ;
-
-symboldef:
- STRING unsigned box {
- // ignore #args
- $$ = new Atom (*$1, *$3);
- delete $1;
- delete $3;
- }
- | STRING unsigned {
- Box b (Interval (0,0), Interval (0,0));
- // ignore #args
- $$ = new Atom (*$1, b);
- delete $1;
- }
- ;
-
-box:
- dinterval dinterval {
- $$ = new Box (*$1, *$2);
- delete $1;
- delete $2;
- }
- ;
-
-dinterval: real real {
- $$ = new Interval ($1, $2);
- }
- ;
%%
#include "performance.hh"
#include "score.hh"
#include "file-results.hh"
+#include "lily-version.hh"
Performance::Performance ()
{
// perhaps multiple text events?
String str = String (_("Creator: "));
if (no_timestamps_global_b)
- str += "GNU LilyPond\n";
+ str += gnu_lilypond_str ();
else
- str += get_version_str() + "\n";
+ str += gnu_lilypond_version_str();
+ str += "\n";
Midi_text creator (Midi_text::TEXT, str);
midi_track.add (Moment (0), &creator);
extra_move_left_f_ = 0.0;
}
-Atom
+Molecule
Piano_brace::get_bar_sym (Real dy) const
{
Atom a = lookup_l ()->vbrace (dy);
#include "repeat-engraver.hh"
#include "bar.hh"
+#include "bar-engraver.hh"
#include "musical-request.hh"
#include "multi-measure-rest.hh"
#include "command-request.hh"
#include "time-description.hh"
#include "volta-spanner.hh"
#include "note-column.hh"
+#include "paper-def.hh"
ADD_THIS_TRANSLATOR (Repeat_engraver);
if (r->unfold_b_)
return true;
- Moment stop_mom = now_moment () + r->repeat_p_->duration ()
- + r->alternative_p_->music_p_list_p_->top ()->duration ();
+ Music_sequence* alt = r->alternative_p_;
+ Moment stop_mom = now_moment () + r->repeat_p_->duration ();
+ for (PCursor<Music*> i (alt->music_p_list_p_->top ()); i.ok () && (i != alt->music_p_list_p_->bottom ()); i++)
+ {
+ stop_mom += i->duration ();
+ if (dynamic_cast<Simultaneous_music *> (alt))
+ break;
+ }
Moment alt_mom = now_moment () + r->repeat_p_->duration ();
/*
TODO:
return false;
repeated_music_arr_.push (r);
stop_mom_arr_.push (stop_mom);
- for (PCursor<Music*> i (r->alternative_p_->music_p_list_p_->top ()); i.ok (); i++)
+ for (PCursor<Music*> i (alt->music_p_list_p_->top ()); i.ok (); i++)
{
alternative_music_arr_.push (i.ptr ());
alternative_start_mom_arr_.push (alt_mom);
- alt_mom += i->duration ();
- alternative_stop_mom_arr_.push (alt_mom);
+ alternative_stop_mom_arr_.push (alt_mom + i->duration ());
+ if (!dynamic_cast<Simultaneous_music *> (alt))
+ alt_mom += i->duration ();
}
return true;
}
if (Note_column *c = dynamic_cast<Note_column *> (i.elem_l_))
{
for (int i = 0; i < volta_p_arr_.size (); i++)
- if ((now >= alternative_start_mom_arr_[i]) && volta_p_arr_[i])
+ if (volta_p_arr_[i] && (now >= alternative_start_mom_arr_[i]))
volta_p_arr_[i]->add_column (c);
}
if (Bar *c = dynamic_cast<Bar*> (i.elem_l_))
{
for (int i = 0; i < volta_p_arr_.size (); i++)
- if ((now >= alternative_start_mom_arr_[i]) && volta_p_arr_[i])
+ if (volta_p_arr_[i] && (now >= alternative_start_mom_arr_[i]))
volta_p_arr_[i]->add_column (c);
}
}
void
Repeat_engraver::do_removal_processing ()
{
- for (int i = 0; i < bar_p_arr_.size (); i++)
- if (bar_p_arr_[i])
- typeset_element (bar_p_arr_[i]);
for (int i = 0; i < volta_p_arr_.size (); i++)
if (volta_p_arr_[i])
typeset_element (volta_p_arr_[i]);
Repeat_engraver::do_process_requests ()
{
Moment now = now_moment ();
- for (int i = bar_p_arr_.size (); i < repeated_music_arr_.size (); i++)
+ Bar_engraver* bar_engraver_l = dynamic_cast <Bar_engraver*>
+ (daddy_grav_l ()->get_simple_translator ("Bar_engraver"));
+ for (int i = bar_b_arr_.size (); i < repeated_music_arr_.size (); i++)
{
- Bar* bar_p = new Bar;
- bar_p-> type_str_ = "|:";
- bar_p_arr_.push (bar_p);
- if (now > Moment (0))
- announce_element (Score_element_info (bar_p, repeated_music_arr_[i]));
+ if (bar_engraver_l && (now > Moment (0)))
+ bar_engraver_l->request_bar ("|:");
+ bar_b_arr_.push (true);
}
- for (int i = 0; i < bar_p_arr_.size (); i++)
+ for (int i = 0; i < bar_b_arr_.size (); i++)
{
- if (!bar_p_arr_[i] && (now >= stop_mom_arr_[i]))
+ if (!bar_b_arr_[i] && (now >= stop_mom_arr_[i]))
{
- Bar* bar_p = new Bar;
- bar_p-> type_str_ = ":|";
- bar_p_arr_[i] = bar_p;
- announce_element (Score_element_info (bar_p, repeated_music_arr_[i]));
+ if (bar_engraver_l)
+ bar_engraver_l->request_bar (":|");
}
}
int bees = volta_p_arr_.size ();
for (int i = volta_p_arr_.size (); i < alternative_music_arr_.size (); i++)
{
Volta_spanner* v = new Volta_spanner;
+ Scalar prop = get_property ("voltaVisibility", 0);
+ v->visible_b_ = prop.to_bool ();
if (i == alternative_music_arr_.size () - 1)
v->last_b_ = true;
Text_def* t = new Text_def;
Repeat_engraver::do_pre_move_processing ()
{
Moment now = now_moment ();
- for (int i = bar_p_arr_.size (); i--; )
+ for (int i = bar_b_arr_.size (); i--; )
{
- if (bar_p_arr_[i])
- {
- if (now > Moment (0))
- typeset_element (bar_p_arr_[i]);
- else
- delete bar_p_arr_[i];
- bar_p_arr_[i] = 0;
- }
+ if (bar_b_arr_[i])
+ bar_b_arr_[i] = false;
if (now >= stop_mom_arr_[i])
{
- bar_p_arr_.del (i);
+ bar_b_arr_.del (i);
stop_mom_arr_.del (i);
repeated_music_arr_.del (i);
}
}
for (int i = volta_p_arr_.size (); i--; )
{
- if (now >= alternative_stop_mom_arr_[i])
+ if (volta_p_arr_[i] && (now >= alternative_stop_mom_arr_[i])
+ && (volta_p_arr_[i]->column_arr_.size () >= 1))
{
- if (volta_p_arr_[i])
- {
- typeset_element (volta_p_arr_[i]);
- volta_p_arr_[i] = 0;
- }
+ typeset_element (volta_p_arr_[i]);
+ volta_p_arr_[i] = 0;
volta_p_arr_.del (i);
alternative_music_arr_[i] = 0;
alternative_music_arr_.del (i);
alternative_start_mom_arr_.del (i);
alternative_stop_mom_arr_.del (i);
- }
+ }
}
}
void
Repeat_engraver::do_post_move_processing ()
{
+#if 0
+ Time_description const *time = get_staff_info().time_C_;
+ Moment now = now_moment ();
+ for (int i = volta_p_arr_.size (); i--; )
+ {
+ if ((now > alternative_stop_mom_arr_[i])
+ && !time->whole_in_measure_)
+ {
+ volta_p_arr_[i] = 0;
+ volta_p_arr_.del (i);
+ alternative_music_arr_[i] = 0;
+ alternative_music_arr_.del (i);
+ alternative_start_mom_arr_.del (i);
+ alternative_stop_mom_arr_.del (i);
+ }
+ }
+#endif
}
Scope::print () const
{
bool init_b = false; // ugh
- for (Dictionary_iter<Identifier*> ai (*this); ai.ok(); ai++)
+ for (Scope_iter ai (*this); ai.ok(); ai++)
{
if (ai.val()->init_b_ == init_b)
{
Scope::~Scope ()
{
- for (Dictionary_iter<Identifier*> ai (*this); ai.ok(); ai++)
+ for (Scope_iter ai (*this); ai.ok(); ai++)
{
DOUT << "deleting: " << ai.key() << '\n';
delete ai.val ();
}
Scope::Scope (Scope const&s)
- : Dictionary<Identifier*> (s)
+ : Hash_table<Protected_scm,Identifier*> (s)
{
- for (Dictionary_iter<Identifier*> ai (s); ai.ok(); ai++)
+ for (Scope_iter ai (s); ai.ok(); ai++)
{
- (*this)[ai.key ()] = ai.val ()->clone ();
+ (*this)[ai.scm_key ()] = ai.val ()->clone ();
}
}
+unsigned int scm_hash (Protected_scm s)
+{
+ return scm_ihashv (s, ~1u);
+}
+
Scope::Scope ()
-{}
+{
+ hash_func_ = scm_hash;
+}
+
+bool
+Scope::elem_b (String s) const
+{
+ return elem_b (ly_symbol (s.ch_C()));
+}
+
+
+Identifier *&
+Scope::elem (String s)
+{
+ return elem (ly_symbol (s.ch_C()));
+}
+
+Scope_iter::Scope_iter (Scope const &s)
+ : Hash_table_iter<Protected_scm,Identifier*>(s)
+{
+}
+String
+Scope_iter::key () const
+{
+ SCM s= Hash_table_iter<Protected_scm,Identifier*>::key ();
+ return symbol_to_string (s);
+}
+
+bool
+Scope::elem_b (SCM s) const
+{
+ return Hash_table<Protected_scm,Identifier*> ::elem_b (s);
+}
+
+Identifier* &
+Scope::elem (SCM s)
+{
+ return Hash_table<Protected_scm,Identifier*> ::elem (s);
+}
+
+SCM
+Scope_iter::scm_key () const
+{
+ return Hash_table_iter<Protected_scm,Identifier*>::key ();
+}
#include "score-bar.hh"
+
+void
+Score_bar::do_pre_processing ()
+{
+ type_str_ = "|";
+ if (break_status_dir() != RIGHT)
+ {
+ set_empty (true);
+ transparent_b_ = true;
+ }
+}
substitute_dependency (old_arr[i], new_arr[i]);
}
+void
+Score_element::handle_prebroken_dependents()
+{
+}
+
void
Score_element::junk_links ()
Score_priority_engraver::Score_priority_engraver()
{
+ align_p_tab_.hash_func_ = int_hash;
}
void
#include "file-results.hh"
#include "my-lily-parser.hh"
#include "source.hh"
+#include "lily-version.hh"
Sources* source_global_l = 0;
Array<String> inclusion_global_array;
if (!f)
warning (_f ("can't open file: `%s\'", fn));
- f << "# Automatically generated by " << get_version_str () << '\n';
+ f << "# Automatically generated by " << gnu_lilypond_version_str () << '\n';
String out;
for (int i=0; i < targets.size (); i ++)
out += targets[i] + " ";
for (int i=0; i < item_l_arr_.size (); i++)
{
Item *il = item_l_arr_[i];
- assert (pc == il->column_l ());
+ if (pc != il->column_l ())
+ {
+ /* this shouldn't happen, but let's continue anyway. */
+ warning (_("Single_malt_grouping_item: I've been drinking too much (fixme)"));
+ continue; /*UGH UGH*/
+ }
w.unite (il->extent (X_AXIS) + il->relative_coordinate (&pc->dim_cache_[X_AXIS], X_AXIS));
}
Interval
Span_bar::do_width () const
{
- return lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh
+ Molecule m = lookup_l ()->bar (type_str_, 40 PT);
+
+ return m.extent (X_AXIS);
}
void
}
}
-Atom
+Molecule
Span_bar::get_bar_sym (Real dy) const
{
if (dy < paper ()->staffheight_f () / 2)
y_int.unite (y + spanning_l_arr_[i]->extent(Y_AXIS));
}
- Atom s = get_bar_sym (y_int.length ());
- Molecule*output = new Molecule (Atom (s));
+ Molecule*output = new Molecule (get_bar_sym (y_int.length ()));
output->translate_axis (y_int.center (), Y_AXIS);
return output;
}
{
}
-void
-Score_bar::do_pre_processing ()
-{
- type_str_ = "|";
- if (break_status_dir() != RIGHT)
- {
- set_empty (true);
- transparent_b_ = true;
- }
-}
void
Span_score_bar::do_pre_processing()
#include "lookup.hh"
#include "main.hh"
-Atom
+Molecule
Staff_bracket::get_bar_sym (Real dy) const
{
Atom a = lookup_l ()->vbracket (dy);
-
a.translate_axis (- 1.33 * a.extent ().x ().length (), X_AXIS);
- return a;
+ return Molecule (a);
}
Interval
score_l_ =0;
time_C_ = 0;
rhythmic_C_ =0;
+ staff_sym_l_=0;
}
Score_column*
*/
#include "staff-margin-engraver.hh"
-#include "script.hh"
-#include "text-def.hh"
-#include "paper-def.hh"
-#include "command-request.hh"
#include "bar.hh"
-#include "stem.hh"
#include "time-description.hh"
-
+#include "g-text-item.hh"
ADD_THIS_TRANSLATOR (Staff_margin_engraver);
Staff_margin_engraver::Staff_margin_engraver ()
{
- script_p_ = 0;
+ axis_ = X_AXIS;
+ type_ = "margin";
+ visibility_lambda_
+ = gh_eval_str ("(lambda (d) (if (= d 1) '(#f . #f) '(#t . #t)))");
}
void
Staff_margin_engraver::acknowledge_element (Score_element_info i)
{
- Item * it = dynamic_cast <Item *> (i.elem_l_);
+ Bar * b =dynamic_cast<Bar *> (i.elem_l_);
+ if (!b)
+ return ;
- if (!it
- || script_p_
- || !(dynamic_cast<Bar *> (it))
- || (i.origin_grav_l_arr_.size() != 1))
+ if (i.origin_grav_l_arr_.size() != 1)
return;
- String string = get_property ("instrument", 0);
+
+ String long_str = get_property ("instrument", 0);
String str = get_property ("instr", 0);
if (now_moment () > Moment (0))
- string = str;
+ long_str = str;
- if (!string.length_i ())
+ if (!long_str.empty_b ())
return;
- script_p_ = new Script;
- script_p_->axis_ = X_AXIS;
-
- Text_def *td_p =new Text_def;
- td_p->align_dir_ = LEFT;
- td_p->text_str_ = string;
- script_p_->dir_ = LEFT;
- script_p_->specs_p_ = td_p;
- script_p_->breakable_b_ = true;
-
-
- Scalar pri = get_property ("marginBreakPriority", 0);
- if (pri.length_i () && pri.isnum_b ())
- {
- script_p_->break_priority_i_ = int (pri);
- }
- else
- script_p_ ->break_priority_i_ = it->break_priority_i_;
-
- announce_element (Score_element_info (script_p_, 0));
+ create_items (0);
+ text_p_->text_str_ = long_str;
+ Bar_script_engraver::acknowledge_element(i);
}
-void
-Staff_margin_engraver::do_pre_move_processing ()
-{
- if (script_p_)
- {
- typeset_element (script_p_);
- script_p_ =0;
- }
-}
Real w = extent (X_AXIS).length ();
Real left_dx = -spanned_drul_[LEFT]->extent (X_AXIS)[LEFT];
Real right_dx = spanned_drul_[RIGHT]->extent (X_AXIS)[RIGHT];
- // w += right_dx+ left_dx;
-
Paper_def * p = paper();
Atom rule = lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
ORPHAN=0, // not yet added to pstaff
VIRGIN, // added to pstaff
PREBROKEN,
+ PREBROKEN_SECOND,
PRECALCING,
PRECALCED, // calcs before spacing done
SPACING,
Super_element::breakable_col_processing ()
{
calculate_dependencies (PREBROKEN, PREBROKEN, &Score_element::do_breakable_col_processing);
+ calculate_dependencies (PREBROKEN_SECOND, PREBROKEN_SECOND, &Score_element::handle_prebroken_dependents);
}
void
#include "text-def.hh"
#include "note-head.hh"
#include "stem.hh"
+#include "staff-sym.hh"
class Text_engraver : public Engraver
{
G_text_item *text = new G_text_item;
G_staff_side_item *ss = new G_staff_side_item;
ss->set_victim (text);
+ ss->dir_ = r->dir_;
text->text_str_ = t->text_str_;
void
Text_engraver::do_pre_move_processing ()
{
+ Staff_symbol* s_l = get_staff_info().staff_sym_l_;
for (int i=0; i < texts_.size (); i++)
{
+ if (s_l != 0)
+ {
+ positionings_[i]->add_support (s_l);
+ }
+
typeset_element (texts_[i]);
typeset_element (positionings_[i]);
}
text-item.cc -- implement Text_item
source file of the GNU LilyPond music typesetter
-
+
(c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-
+#if 0
#include "musical-request.hh"
#include "paper-def.hh"
#include "text-item.hh"
#include "lookup.hh"
#include "debug.hh"
+
Text_item::Text_item (General_script_def* tdef_l, Direction d)
{
dir_ = d;
+#endif
--- /dev/null
+/*
+ tfm.cc -- implement Tex_font_metric
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+
+
+ some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c
+ */
+
+#include "tfm.hh"
+#include "binary-source-file.hh"
+#include "string-convert.hh"
+#include "debug.hh"
+#include "warn.hh"
+
+#define format_str String_convert::form_str
+
+#define FIX_UNITY (1 << 20)
+
+static const Real
+fix_to_real (Fix f)
+{
+ Real r = f / FIX_UNITY + ((Real) (f % FIX_UNITY) / (Real) FIX_UNITY);
+ return r;
+}
+
+#if 0 //not used
+static const Fix
+real_to_fix (Real r)
+{
+ Fix f = (Fix) (floor (r) * FIX_UNITY + (r - floor (r)) * FIX_UNITY);
+ return f;
+}
+#endif
+
+
+Box
+Tex_font_char_metric::dimensions () const
+{
+ Real d = -depth_;
+ return Box (Interval (0, width_),Interval ( d <? height_, d >? height_));
+}
+
+Tex_font_char_metric::Tex_font_char_metric ()
+{
+ exists_b_ = false;
+ code_ = 0;;
+ width_ = height_ = depth_ = italic_correction_ = 0;
+ width_fix_ = height_fix_ = depth_fix_ = italic_correction_fix_ = 0;
+}
+
+#define APPEND_CHAR_METRIC_ELT(k) outstr += to_str (#k) + " " + to_str (k ## _) + "; "
+
+String
+Tex_font_char_metric::str () const
+{
+ String outstr ;
+
+ APPEND_CHAR_METRIC_ELT (exists_b);
+ APPEND_CHAR_METRIC_ELT (code);
+ APPEND_CHAR_METRIC_ELT (width);
+ APPEND_CHAR_METRIC_ELT (height);
+ APPEND_CHAR_METRIC_ELT (depth);
+ APPEND_CHAR_METRIC_ELT (italic_correction);
+
+ return outstr + "\n";
+}
+
+Tex_font_metric::Tex_font_metric ()
+{
+}
+
+static Tex_font_char_metric dummy_static_char_metric;
+
+Tex_font_char_metric const &
+Tex_font_metric::find_ascii (int ascii, bool warn) const
+{
+ if (ascii_to_metric_idx_[ascii] >= 0)
+ return char_metrics_[ascii_to_metric_idx_ [ascii]];
+ else if (warn)
+
+ {
+ warning (_f ("can't find ascii character `%d'", ascii));
+
+ }
+ return dummy_static_char_metric;
+}
+
+Character_metric*
+Tex_font_metric::get_char (int a, bool w) const
+{
+ return &find_ascii (a, w);
+}
+
+
+String
+Tex_font_metric::str () const
+{
+ String outstr;
+ for (int i=0; i < char_metrics_.size (); i++)
+ outstr += char_metrics_[i].str ();
+
+ return outstr;
+}
+
+void
+Tex_font_metric::clear (int n)
+{
+ for (int i=0; i < n; i++)
+ ascii_to_metric_idx_.push (-1);
+}
+
+/* Most quantities are fixed-point fractions. */
+
+Real
+Tex_font_metric::get_U32_fix_f (Binary_source_file* input)
+{
+ return fix_to_real (input->get_U32 ());
+}
+
+
+/* Dimensions are a `Fix' scaled by the design size. */
+
+Real
+Tex_font_metric::get_U32_fix_scaled_f (Binary_source_file* input)
+{
+ return get_U32_fix_f (input) * info_.design_size;
+}
+
+String
+Tex_font_metric::get_bcpl_str (Binary_source_file* input)
+{
+ U8 length_u8 = input->get_U8 ();
+ String str = input->get_str (length_u8);
+ return str;
+}
+
+/* Here we read the information at the beginning of the file. We store
+ the result into the static variables `global_info' and
+ `tfm_header'. */
+void
+Tex_font_metric::read_header (Binary_source_file* input)
+{
+ U16 file_length = input->get_U16 ();
+ (void) file_length;
+ U16 header_length = input->get_U16 ();
+
+ info_.first_charcode = input->get_U16 ();
+ info_.last_charcode = input->get_U16 ();
+ U16 width_word_count = input->get_U16 ();
+ U16 height_word_count = input->get_U16 ();
+ U16 depth_word_count = input->get_U16 ();
+ U16 italic_correction_word_count = input->get_U16 ();
+ U16 lig_kern_word_count = input->get_U16 ();
+ U16 kern_word_count = input->get_U16 ();
+ (void)kern_word_count;
+ U16 extensible_word_count = input->get_U16 ();
+ (void)extensible_word_count;
+
+ header_.param_word_count = input->get_U16 ();
+ info_.parameter_count = header_.param_word_count;
+
+ header_.char_info_pos = (6 + header_length) * 4;
+ header_.width_pos = header_.char_info_pos
+ + (info_.last_charcode
+ - info_.first_charcode + 1) * 4;
+ header_.height_pos = header_.width_pos + width_word_count * 4;
+ header_.depth_pos = header_.height_pos + height_word_count * 4;
+ header_.italic_correction_pos = header_.depth_pos
+ + depth_word_count * 4;
+ header_.lig_kern_pos = header_.italic_correction_pos
+ + italic_correction_word_count * 4;
+ header_.kern_pos = header_.lig_kern_pos + lig_kern_word_count * 4;
+ /* We don't care about the extensible table. */
+
+ if (header_length < 2)
+ error (_f ("TFM header of `%s' has only %u word(s)",
+ input->name_str ().ch_C (), header_length));
+
+ info_.checksum = input->get_U32 ();
+ info_.design_size = get_U32_fix_f (input);
+
+ /* Although the coding scheme might be interesting to the caller, the
+ font family and face byte probably aren't. So we don't read them. */
+ info_.coding_scheme = header_length > 2
+ ? get_bcpl_str (input) : "unspecified";
+
+ DOUT << format_str ("TFM checksum = %u, design_size = %fpt, coding scheme = `%s'.\n",
+ info_.checksum,
+ info_.design_size,
+ info_.coding_scheme.ch_C ());
+}
+
+void
+Tex_font_metric::read_file (String name)
+{
+ Binary_source_file input (name);
+
+ clear (TFM_SIZE);
+ read_header (&input);
+ read_params (&input);
+ read_char_metrics (&input);
+}
+
+/* Although TFM files are only usable by TeX if they have at least seven
+ parameters, that is not a requirement of the file format itself, so
+ we don't impose it. And they can have many more than seven, of
+ course. We do impose a limit of TFM_MAX_FONT_PARAMETERS. We assume
+ that `tfm_header' has already been filled in. */
+
+void
+Tex_font_metric::read_params (Binary_source_file* input)
+{
+ /* If we have no font parameters at all, we're done. */
+ if (header_.param_word_count == 0)
+ return;
+
+ //brrr
+ /* Move to the beginning of the parameter table in the file. */
+ input->seek_ch_C (-4 * header_.param_word_count);
+
+ /* It's unlikely but possible that this TFM file has more fontdimens
+ than we can deal with. */
+ if (header_.param_word_count > TFM_MAX_FONTDIMENS)
+ {
+ warning (_f ("%s: TFM file has %u parameters, which is more than the
+%u I can handle",
+ input->name_str ().ch_C (),
+ header_.param_word_count,
+ TFM_MAX_FONTDIMENS));
+ header_.param_word_count = TFM_MAX_FONTDIMENS;
+ }
+
+ /* The first parameter is different than all the rest, because it
+ isn't scaled by the design size. */
+ info_.parameters[(TFM_SLANT_PARAMETER) - 1] = get_U32_fix_f (input);
+
+ for (Char_code i = 2; i <= header_.param_word_count; i++)
+ info_.parameters[i - 1] = get_U32_fix_scaled_f (input);
+
+#ifdef PRINT
+ for (Char_code i = 1; i <= header_.param_word_count; i++)
+ DOUT << format_str ("TFM parameter %d: %.3f", i, info_.parameters[i - 1]);
+#endif
+}
+
+/* Read every character in the TFM file, storing the result in the
+ static `tfm_char_table'. We return a copy of that variable. */
+
+void
+Tex_font_metric::read_char_metrics (Binary_source_file* input)
+{
+ for (int i = info_.first_charcode; i <= info_.last_charcode; i++)
+ {
+ Tex_font_char_metric tfm_char = read_char_metric (input, i);
+ if (tfm_char.exists_b_)
+ ascii_to_metric_idx_[tfm_char.code_] = char_metrics_.size ();
+ char_metrics_.push (tfm_char);
+ }
+}
+
+/* Read the character CODE. If the character doesn't exist, return
+ NULL. If it does, save the information in `tfm_char_table', as well
+ as returning it. */
+
+Tex_font_char_metric
+Tex_font_metric::read_char_metric (Binary_source_file* input, Char_code code)
+{
+ Tex_font_char_metric tfm_char;
+
+ /* If the character is outside the declared bounds in the file, don't
+ try to read it. */
+ if (code < info_.first_charcode || code > info_.last_charcode)
+ return tfm_char;
+
+ //brr
+ /* Move to the appropriate place in the `char_info' array. */
+ input->seek_ch_C (header_.char_info_pos + (code - info_.first_charcode) * 4);
+
+ /* Read the character. */
+ tfm_char = read_char (input);
+
+ if (tfm_char.exists_b_)
+ tfm_char.code_ = code;
+
+ return tfm_char;
+}
+
+
+/* We assume we are positioned at the beginning of a `char_info' word.
+ We read that word to get the indexes into the dimension tables; then
+ we go read the tables to get the values (if the character exists). */
+
+Tex_font_char_metric
+Tex_font_metric::read_char (Binary_source_file* input)
+{
+ /* Read the char_info word. */
+ U8 width_index = input->get_U8 ();
+
+ U8 packed;
+ packed = input->get_U8 ();
+ U8 height_index = (packed & 0xf0) >> 4;
+ U8 depth_index = packed & 0x0f;
+
+ packed = input->get_U8 ();
+ U8 italic_correction_index = (packed & 0xfc) >> 6;
+ U8 tag = packed & 0x3;
+
+ U8 remainder = input->get_U8 ();
+
+ Tex_font_char_metric tfm_char;
+
+#define GET_CHAR_DIMEN(d) \
+ if (d##_index != 0) \
+ { \
+ input->seek_ch_C (header_.##d##_pos + d##_index*4); \
+ tfm_char.d##_fix_ = input->get_U32 (); \
+ tfm_char.d##_ = fix_to_real (tfm_char.d##_fix_) \
+ * info_.design_size; \
+ }
+
+ GET_CHAR_DIMEN (width);
+ GET_CHAR_DIMEN (height);
+ GET_CHAR_DIMEN (depth);
+ GET_CHAR_DIMEN (italic_correction);
+
+ /* The other condition for a character existing is that it be between
+ the first and last character codes given in the header. We've
+ already assumed that's true (or we couldn't be positioned at a
+ `char_info_word'). */
+ tfm_char.exists_b_ = width_index != 0;
+
+#ifdef PRINT
+ DOUT << format_str (" width = %f, height = %f, ",
+ tfm_char.width_, tfm_char.height_);
+ DOUT << format_str ("depth = %f, ic = %f.\n",
+ tfm_char.depth, tfm_char.italic_correction);
+#endif
+
+ if (tag == 1)
+ {
+ input->seek_ch_C (header_.lig_kern_pos + remainder * 4);
+ read_lig_kern_program (input, &tfm_char.ligature_arr_, &tfm_char.kern_arr_);
+ }
+
+ /* We don't handle the other tags. */
+ return tfm_char;
+}
+
+/* Read a ligature/kern program at the current position, storing the
+ result into *LIGATURE and *KERN. We don't distinguish all the kinds
+ of ligatures that Metafont can output. */
+
+#define STOP_FLAG 128
+#define KERN_FLAG 128
+
+void
+Tex_font_metric::read_lig_kern_program (Binary_source_file* input, Array <Tfm_ligature>* ligature_arr_p, Array <Tfm_kern>* kern_arr_p)
+{
+ bool end_b;
+
+ do
+ {
+ end_b = input->get_U8 () >= STOP_FLAG;
+
+ U8 next_char = input->get_U8 ();
+ bool kern_step_b = input->get_U8 () >= KERN_FLAG;
+ U8 remainder = input->get_U8 ();
+
+#ifdef PRINT
+ DOUT << format_str (" if next = %u (%c), ", next_char, next_char);
+#endif
+
+ if (kern_step_b)
+ {
+ Tfm_kern kern_element;
+ kern_element.character = next_char;
+
+ char const* old_pos = input->pos_ch_C ();
+ input->seek_ch_C (header_.kern_pos + remainder * 4);
+ kern_element.kern = get_U32_fix_scaled_f (input);
+ input->set_pos (old_pos);
+
+ kern_arr_p->push (kern_element);
+
+#ifdef PRINT
+ DOUT << format_str ("kern %f.\n", kern_element.kern);
+#endif
+ }
+ else
+ {
+ Tfm_ligature ligature_element;
+ ligature_element.character = next_char;
+ ligature_element.ligature = remainder;
+ ligature_arr_p->push (ligature_element);
+
+#ifdef PRINT
+ DOUT format_str ("ligature %d (hex %x).\n",
+ ligature_element.ligature,
+ ligature_element.ligature);
+#endif
+ }
+ } while (!end_b);
+}
+
time_.whole_in_measure_ = 0; // resync
time_.error_b_ = true;
}
-
}
else if (Cadenza_req *cr = dynamic_cast <Cadenza_req *> (tr_l))
{
for (int i= started_span_p_arr_.size ();
i < compressed_music_arr_.size (); i++)
{
- Plet_spanner* glep = new Plet_spanner;
+ Tuplet_spanner* glep = new Tuplet_spanner;
started_span_p_arr_.push (glep);
Text_def *t = new Text_def;
/*
- plet-spanner.cc -- implement Plet_spanner
+ plet-spanner.cc -- implement Tuplet_spanner
source file of the GNU LilyPond music typesetter
#include "text-def.hh"
#include "note-column.hh"
-Plet_spanner::Plet_spanner ()
+Tuplet_spanner::Tuplet_spanner ()
{
beam_l_ =0;
bracket_visibility_b_ = true;
}
Molecule*
-Plet_spanner::do_brew_molecule_p () const
+Tuplet_spanner::do_brew_molecule_p () const
{
Molecule* mol_p = new Molecule;
}
void
-Plet_spanner::do_add_processing ()
+Tuplet_spanner::do_add_processing ()
{
if (column_arr_.size ())
{
}
void
-Plet_spanner::do_post_processing ()
+Tuplet_spanner::do_post_processing ()
{
if (column_arr_.size())
translate_axis (column_arr_[0]->extent (Y_AXIS)[dir_], Y_AXIS);
}
void
-Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
+Tuplet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
{
if (Note_column *onc = dynamic_cast <Note_column *> (o))
column_arr_.substitute (onc, dynamic_cast<Note_column*> (n));
beam_l_ = dynamic_cast<Beam*> (n);
}
}
-
+
void
-Plet_spanner::set_default_dir ()
+Tuplet_spanner::set_default_dir ()
{
dir_ = UP;
for (int i=0; i < column_arr_.size (); i ++)
}
void
-Plet_spanner::set_beam (Beam *b)
+Tuplet_spanner::set_beam (Beam *b)
{
beam_l_ = b;
add_dependency (b);
}
void
-Plet_spanner::add_column (Note_column*n)
+Tuplet_spanner::add_column (Note_column*n)
{
column_arr_.push (n);
add_dependency (n);
#include "lookup.hh"
#include "molecule.hh"
#include "note-column.hh"
-#include "p-col.hh" // urg
-#include "bar.hh"
#include "p-col.hh"
+#include "bar.hh"
#include "paper-def.hh"
#include "volta-spanner.hh"
#include "stem.hh"
#include "text-def.hh"
+#include "pointer.tcc"
+
+template class P<Text_def>; // UGH
+
Volta_spanner::Volta_spanner ()
{
last_b_ = false;
+ visible_b_ = true;
number_p_.set_p (new Text_def);
number_p_->align_dir_ = LEFT;
dot_p_.set_p (new Text_def);
if (!column_arr_.size ())
return mol_p;
+ if (!visible_b_)
+ return mol_p;
+
Real internote_f = paper ()->internote_f ();
Real dx = internote_f;
- Real w = extent (X_AXIS).length () - 2 * dx;
+ Real w = extent (X_AXIS).length () - dx;
Atom volta (lookup_l ()->volta (w, last_b_));
Real h = volta.dim_.y ().length ();
Atom num (number_p_->get_atom (paper (), LEFT));
Atom dot (dot_p_->get_atom (paper (), LEFT));
Real dy = column_arr_.top ()->extent (Y_AXIS) [UP] >
- column_arr_[0]->extent (Y_AXIS) [UP];
+ column_arr_[0]->extent (Y_AXIS) [UP];
dy += 2 * h;
/*
mol_p->add_atom (volta);
mol_p->add_atom (num);
mol_p->add_atom (dot);
- mol_p->translate (Offset (dx, dy));
+ mol_p->translate (Offset (0, dy));
return mol_p;
}
set_bounds (LEFT, column_arr_[0]);
set_bounds (RIGHT, column_arr_.top ());
}
+
number_p_->style_str_ = "number-1";
dot_p_->text_str_ = ".";
dot_p_->style_str_ = "bold";
}
+Interval
+Volta_spanner::do_height () const
+{
+ /*
+ in most cases, it's a lot better not no have height...
+ */
+ Interval i;
+ return i;
+}
+
void
Volta_spanner::do_post_processing ()
{
--- /dev/null
+# init/Makefile
+
+depth = ..
+
+INI_FILES = $(FLY_FILES) $(LY_FILES)
+EXTRA_DIST_FILES = $(SCM_FILES)
+
+INSTALLATION_DIR=$(datadir)/ly/
+INSTALLATION_FILES=$(INI_FILES)
+
+STEPMAKE_TEMPLATES=install
+LOCALSTEPMAKE_TEMPLATES=mutopia
+
+include $(depth)/make/stepmake.make
+
--- /dev/null
+% a4.ly
+
+hsize = 210.0 \mm;
+vsize = 296.9 \mm;
--- /dev/null
+% Symbols needed to print accordion music
+%
+% 2' = T
+% 4' = F
+% 8' = E
+% 16' = S
+%
+
+accDiscant = \script{ "accDiscant" 0 0 1 0 0 }
+accDiscantF = \script{ "accDiscantF" 0 0 1 0 0 }
+accDiscantE = \script{ "accDiscantE" 0 0 1 0 0 }
+accDiscantEh = \script{ "accDiscantEh" 0 0 1 0 0 }
+accDiscantFE = \script{ "accDiscantFE" 0 0 1 0 0 }
+accDiscantFEh = \script{ "accDiscantFEh" 0 0 1 0 0 }
+accDiscantEE = \script{ "accDiscantEE" 0 0 1 0 0 }
+accDiscantFEE = \script{ "accDiscantFEE" 0 0 1 0 0 }
+accDiscantEEE = \script{ "accDiscantEEE" 0 0 1 0 0 }
+accDiscantFEEE = \script{ "accDiscantFEEE" 0 0 1 0 0 }
+accDiscantS = \script{ "accDiscantS" 0 0 1 0 0 }
+accDiscantFS = \script{ "accDiscantFS" 0 0 1 0 0 }
+accDiscantES = \script{ "accDiscantES" 0 0 1 0 0 }
+accDiscantEhS = \script{ "accDiscantEhS" 0 0 1 0 0 }
+accDiscantFES = \script{ "accDiscantFES" 0 0 1 0 0 }
+accDiscantFEhS = \script{ "accDiscantFEhS" 0 0 1 0 0 }
+accDiscantEES = \script{ "accDiscantEES" 0 0 1 0 0 }
+accDiscantFEES = \script{ "accDiscantFEES" 0 0 1 0 0 }
+accDiscantEEES = \script{ "accDiscantEEES" 0 0 1 0 0 }
+accDiscantFEEES = \script{ "accDiscantFEEES" 0 0 1 0 0 }
+accDiscantSS = \script{ "accDiscantSS" 0 0 1 0 0 }
+accDiscantESS = \script{ "accDiscantESS" 0 0 1 0 0 }
+accDiscantEESS = \script{ "accDiscantEESS" 0 0 1 0 0 }
+accDiscantEEESS = \script{ "accDiscantEEESS" 0 0 1 0 0 }
+
+accFreebass = \script{ "accFreebass" 0 0 1 0 0 }
+accFreebassF = \script{ "accFreebassF" 0 0 1 0 0 }
+accFreebassE = \script{ "accFreebassE" 0 0 1 0 0 }
+accFreebassFE = \script{ "accFreebassFE" 0 0 1 0 0 }
+
+accBayanbass = \script{ "accBayanbass" 0 0 1 0 0 }
+accBayanbassT = \script{ "accBayanbassT" 0 0 1 0 0 }
+accBayanbassE = \script{ "accBayanbassE" 0 0 1 0 0 }
+accBayanbassTE = \script{ "accBayanbassTE" 0 0 1 0 0 }
+accBayanbassEE = \script{ "accBayanbassEE" 0 0 1 0 0 }
+accBayanbassTEE = \script{ "accBayanbassTEE" 0 0 1 0 0 }
+
+accStdbass = \script{ "accStdbass" 0 0 1 0 0 }
+accStdbassTp = \script{ "accStdbassTp" 0 0 1 0 0 }
+accStdbassT = \script{ "accStdbassT" 0 0 1 0 0 }
+accStdbassBp = \script{ "accStdbassBp" 0 0 1 0 0 }
+accStdbassM = \script{ "accStdbassM" 0 0 1 0 0 }
+
+accSB = \script{ "accSB" 0 0 1 0 0 }
+accBB = \script{ "accBB" 0 0 1 0 0 }
+accOldEE = \script{ "accOldEE" 0 0 1 0 0 }
+accOldEES = \script{ "accOldEES" 0 0 1 0 0 }
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+
+\include "paper16.ly"
+ \paper { \paper_sixteen
+ linewidth = -1.\cm;
+ castingalgorithm = \Wordwrap;
+ "unusedentry" = "}\\def\\nolilyfooter{";
+ }
+
+\score {
+ \notes {
+ \maininput
+ }
+\paper{}
+}
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly";
+\include "paper16.ly"
+
+ \paper{
+ \paper_sixteen
+}
+
+
+\maininput
--- /dev/null
+%{
+
+ Common catalan names for notes. "b" means flat (bemoll), "d" means sharp (diesi).
+ Also "s" is included for sharp (sostingut). Both "diesi" and "sostingut" are approved
+ by "Diccionari de la Llengua Catalana" from "Institut d'Estudis Catalans".
+
+ Adapted from italiano.ly.
+
+ English: a b c d e f g
+ Catalan: la si do re mi fa sol
+
+ For spanish naming just use the sharp sign "s" (sostenido) instead of "s"
+(sostenido) .
+%}
+
+% contributed by Jaume Obrador <jobrador@ipc4.uib.es>
+
+\notenames {
+ dobb = \musicalpitch { -1 0 -2 }
+ dob = \musicalpitch { -1 0 -1 }
+ do = \musicalpitch { -1 0 0 }
+ dod = \musicalpitch { -1 0 1 }
+ dodd = \musicalpitch { -1 0 2 }
+ rebb = \musicalpitch { -1 1 -2 }
+ reb = \musicalpitch { -1 1 -1 }
+ re = \musicalpitch { -1 1 0 }
+ red = \musicalpitch { -1 1 1 }
+ redd = \musicalpitch { -1 1 2 }
+ mibb = \musicalpitch { -1 2 -2 }
+ mib = \musicalpitch { -1 2 -1 }
+ mi = \musicalpitch { -1 2 0 }
+ mid = \musicalpitch { -1 2 1 }
+ midd = \musicalpitch { -1 2 2 }
+ fabb = \musicalpitch { -1 3 -2 }
+ fab = \musicalpitch { -1 3 -1 }
+ fa = \musicalpitch { -1 3 0 }
+ fad = \musicalpitch { -1 3 1 }
+ fadd = \musicalpitch { -1 3 2 }
+ solbb = \musicalpitch { -1 4 -2 }
+ solb = \musicalpitch { -1 4 -1 }
+ sol = \musicalpitch { -1 4 0 }
+ sold = \musicalpitch { -1 4 1 }
+ soldd = \musicalpitch { -1 4 2 }
+ labb = \musicalpitch { -1 5 -2 }
+ lab = \musicalpitch { -1 5 -1 }
+ la = \musicalpitch { -1 5 0 }
+ lad = \musicalpitch { -1 5 1 }
+ ladd = \musicalpitch { -1 5 2 }
+ sibb = \musicalpitch { -1 6 -2 }
+ sib = \musicalpitch { -1 6 -1 }
+ si = \musicalpitch { -1 6 0 }
+ sid = \musicalpitch { -1 6 1 }
+ sidd = \musicalpitch { -1 6 2 }
+
+% For using "sostingut" notation, which is also correct
+
+ dos = \musicalpitch { -1 0 1 }
+ doss = \musicalpitch { -1 0 2 }
+ res = \musicalpitch { -1 1 1 }
+ ress = \musicalpitch { -1 1 2 }
+ mis = \musicalpitch { -1 2 1 }
+ miss = \musicalpitch { -1 2 2 }
+ fas = \musicalpitch { -1 3 1 }
+ fass = \musicalpitch { -1 3 2 }
+ sols = \musicalpitch { -1 4 1 }
+ solss = \musicalpitch { -1 4 2 }
+ las = \musicalpitch { -1 5 1 }
+ lass = \musicalpitch { -1 5 2 }
+ sis = \musicalpitch { -1 6 1 }
+ siss = \musicalpitch { -1 6 2 }
+}
+
+
--- /dev/null
+% Toplevel initialisation file.
+
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+
+\include "paper16.ly";
+
+ \paper {
+ \paper_sixteen
+ linewidth = -1.0\cm;
+ castingalgorithm = \Wordwrap;
+ "unusedentry" = "}\\def\\nolilyfooter{";
+}
+
+
+\score {
+% \notes\relative c {
+ \notes {
+ \maininput
+ }
+\paper{}
+}
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+\include "paper16.ly"
+
+ \paper {
+ \paper_sixteen;
+% linewidth = 7.\cm;
+ linewidth = 11.\cm;
+}
+
+\maininput
--- /dev/null
+%{
+ chord modifiers
+%}
+
+\chordmodifiers {
+ m = \musicalpitch { 0 2 -1 }
+ min = \musicalpitch { 0 2 -1 }
+ aug = \musicalpitch { 0 4 1 }
+ dim = \musicalpitch { 0 4 -1 }
+ % urg, not actually a chord-modifier, but it works
+ % c7 -> <c bes>, c 7+ -> c b
+ maj = \musicalpitch { 0 6 1 }
+ % sus4 should delete 2 too...
+ sus = \musicalpitch { 0 3 0 }
+}
--- /dev/null
+
+
+breve = \duration { -1 0 }
+longa = \duration { -2 0 }
+
+\include "dynamic.ly"
+\include "nederlands.ly" % dutch
+\include "chord-modifiers.ly"
+\include "script.ly"
+
+
+Gourlay = 1.0
+Wordwrap = 0.0
+
+papersize = "a4"
+
+\include "paper20.ly"
+
+\paper{
+ \paper_twenty
+}
+
+% ugh
+\include "midi.ly"
+
+% declarations for standard directions
+left = -1
+right = 1
+up = 1
+down = -1
+% zillie spellink?
+center=0
+
+break = { \penalty = 10000; }
+nobreak = { \penalty = -10000; }
+
+major = 0
+minor = 3
+
+\include "property.ly"
+
+\scmfile "lily.scm";
+
+% music = "\melodic\relative c"
+
--- /dev/null
+%
+% common german names for notes. "es" means flat, "is" means sharp
+%
+% by Roland Meier <meier@informatik.th-darmstadt.de>
+% based on swedish.ly by Mats Bengtsson.
+
+
+%
+% Please note that, while these names are used to enter *notes*, they
+% actually are *melodic*s, i.e. they represent a pitch solely. Notes
+% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+%
+\notenames {
+ ceses = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ eses = \musicalpitch { -1 2 -2 }
+ es = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ ases = \musicalpitch { -1 5 -2 }
+ as = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ heses = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ his = \musicalpitch { -1 6 1 }
+ hisis = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Ceses = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ As = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Heses = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ His = \musicalpitch { -2 6 1 }
+ Hisis = \musicalpitch { -2 6 2 }
+
+
+}
--- /dev/null
+%
+% declare the standard dynamic identifiers.
+%
+
+ppp = \absdynamic {7 }
+pp = \absdynamic { 6 }
+p = \absdynamic { 5 }
+mp = \absdynamic { 4 }
+mf = \absdynamic { 3 }
+f = \absdynamic { 2 } % f is a notename too.
+ff = \absdynamic { 1 }
+fff = \absdynamic { 0 }
+
+fp = \absdynamic { 8 }
+sf = \absdynamic { 9 }
+sfz = \absdynamic { 10 }
+
+cr = \spandynamic { 1 1 }
+decr = \spandynamic { -1 1 }
+rc = \spandynamic { 1 2 } % stop a crescendo
+rced = \spandynamic { 1 2 } % stop a decrescendo
--- /dev/null
+%{
+ English note names spelled out in full, and abbreviated
+ with s for sharp and f for flat.
+%}
+
+\notenames {
+ cflatflat = \musicalpitch { -1 0 -2 }
+ cflat = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ csharp = \musicalpitch { -1 0 1 }
+ csharpsharp = \musicalpitch { -1 0 2 }
+ dflatflat = \musicalpitch { -1 1 -2 }
+ dflat = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dsharp = \musicalpitch { -1 1 1 }
+ dsharpsharp = \musicalpitch { -1 1 2 }
+ eflatflat = \musicalpitch { -1 2 -2 }
+ eflat = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ esharp = \musicalpitch { -1 2 1 }
+ esharpsharp = \musicalpitch { -1 2 2 }
+ fflatflat = \musicalpitch { -1 3 -2 }
+ fflat = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fsharp = \musicalpitch { -1 3 1 }
+ fsharpsharp = \musicalpitch { -1 3 2 }
+ gflatflat = \musicalpitch { -1 4 -2 }
+ gflat = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gsharp = \musicalpitch { -1 4 1 }
+ gsharpsharp = \musicalpitch { -1 4 2 }
+ aflatflat = \musicalpitch { -1 5 -2 }
+ aflat = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ asharp = \musicalpitch { -1 5 1 }
+ asharpsharp = \musicalpitch { -1 5 2 }
+ bflatflat = \musicalpitch { -1 6 -2 }
+ bflat = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 0 }
+ bsharp = \musicalpitch { -1 6 1 }
+ bsharpsharp = \musicalpitch { -1 6 2 }
+
+ cff = \musicalpitch { -1 0 -2 }
+ cf = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cs = \musicalpitch { -1 0 1 }
+ css = \musicalpitch { -1 0 2 }
+ dff = \musicalpitch { -1 1 -2 }
+ df = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ ds = \musicalpitch { -1 1 1 }
+ dss = \musicalpitch { -1 1 2 }
+ eff = \musicalpitch { -1 2 -2 }
+ ef = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ es = \musicalpitch { -1 2 1 } % es = E-flat in Dutch
+ ess = \musicalpitch { -1 2 2 }
+ fff = \musicalpitch { -1 3 -2 }
+ ff = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fs = \musicalpitch { -1 3 1 }
+ fss = \musicalpitch { -1 3 2 }
+ gff = \musicalpitch { -1 4 -2 }
+ gf = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gs = \musicalpitch { -1 4 1 }
+ gss = \musicalpitch { -1 4 2 }
+ aff = \musicalpitch { -1 5 -2 }
+ af = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ as = \musicalpitch { -1 5 1 } % as = A-flat in Dutch
+ ass = \musicalpitch { -1 5 2 }
+ bff = \musicalpitch { -1 6 -2 }
+ bf = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 0 }
+ bs = \musicalpitch { -1 6 1 }
+ bss = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Cflatflat = \musicalpitch { -2 0 -2 }
+ Cflat = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Csharp = \musicalpitch { -2 0 1 }
+ Csharpsharp = \musicalpitch { -2 0 2 }
+ Dflatflat = \musicalpitch { -2 1 -2 }
+ Dflat = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Dsharp = \musicalpitch { -2 1 1 }
+ Dsharpsharp = \musicalpitch { -2 1 2 }
+ Eflatflat = \musicalpitch { -2 2 -2 }
+ Eflat = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Esharp = \musicalpitch { -2 2 1 }
+ Esharpsharp = \musicalpitch { -2 2 2 }
+ Fflatflat = \musicalpitch { -2 3 -2 }
+ Fflat = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fsharp = \musicalpitch { -2 3 1 }
+ Fsharpsharp = \musicalpitch { -2 3 2 }
+ Gflatflat = \musicalpitch { -2 4 -2 }
+ Gflat = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gsharp = \musicalpitch { -2 4 1 }
+ Gsharpsharp = \musicalpitch { -2 4 2 }
+ Aflatflat = \musicalpitch { -2 5 -2 }
+ Aflat = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Asharp = \musicalpitch { -2 5 1 }
+ Asharpsharp = \musicalpitch { -2 5 2 }
+ Bflatflat = \musicalpitch { -2 6 -2 }
+ Bflat = \musicalpitch { -2 6 -1 }
+ B = \musicalpitch { -2 6 0 }
+ Bsharp = \musicalpitch { -2 6 1 }
+ Bsharpsharp = \musicalpitch { -2 6 2 }
+
+ Cff = \musicalpitch { -2 0 -2 }
+ Cf = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cs = \musicalpitch { -2 0 1 }
+ Css = \musicalpitch { -2 0 2 }
+ Dff = \musicalpitch { -2 1 -2 }
+ Df = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Ds = \musicalpitch { -2 1 1 }
+ Dss = \musicalpitch { -2 1 2 }
+ Eff = \musicalpitch { -2 2 -2 }
+ Ef = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Es = \musicalpitch { -2 2 1 }
+ Ess = \musicalpitch { -2 2 2 }
+ Fff = \musicalpitch { -2 3 -2 }
+ Ff = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fs = \musicalpitch { -2 3 1 }
+ Fss = \musicalpitch { -2 3 2 }
+ Gff = \musicalpitch { -2 4 -2 }
+ Gf = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gs = \musicalpitch { -2 4 1 }
+ Gss = \musicalpitch { -2 4 2 }
+ Aff = \musicalpitch { -2 5 -2 }
+ Af = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ As = \musicalpitch { -2 5 1 }
+ Ass = \musicalpitch { -2 5 2 }
+ Bff = \musicalpitch { -2 6 -2 }
+ Bf = \musicalpitch { -2 6 -1 }
+ B = \musicalpitch { -2 6 0 }
+ Bs = \musicalpitch { -2 6 1 }
+ Bss = \musicalpitch { -2 6 2 }
+
+
+}
--- /dev/null
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+StaffContext=\translator {
+ \type "Line_group_engraver_group";
+ \name Staff ;
+ barAuto = "1";
+ voltaVisibility = "1";
+
+%{
+ The Hara_kiri_line_group_engraver is a Line_group_engraver
+ that will not typeset an empty line of staff, i.e., a line
+ of staff with only rests in it. This is needed for orchestral
+ scores. Comment-out Line_group_engraver_group, and uncomment
+ Hara_kiri_line_group_engraver.
+%}
+% \type "Hara_kiri_line_group_engraver";
+
+ \consists "Multi_measure_rest_engraver";
+ \consists "Repeat_engraver";
+ \consists "Bar_engraver";
+ \consists "Clef_engraver";
+ \consists "Key_engraver";
+ \consists "Local_key_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Staff_symbol_engraver";
+ \consists "Collision_engraver";
+ \consists "Rest_collision_engraver";
+
+%{
+ Uncomment to get bar numbers on single staff systems:
+
+ The Bar_number_engraver puts a number over a staff created
+ at the same level of hierarchy. This why you have to add it
+ here separately if you want to have numbers on single staff
+ systems: The Bar_number_engraver in Score_engraver will only
+ put numbers on bars that are Score ("system") wide. Such
+ bars are only created when the toplevel system has multiple
+ children-staffs.
+
+%}
+%{
+ \consists "Bar_number_engraver";
+%}
+%{
+ The Staff_margin_engraver puts the name of the instrument
+ (\property Staff.instrument; Staff.instr for subsequent lines)
+ to the left of a staff.
+%}
+ defaultClef = treble;
+
+ marginBreakPriority = "-5";
+
+%{
+ \consists "Staff_margin_engraver";
+%}
+ \consists "Separating_line_group_engraver";
+
+ \accepts "Voice";
+ dynamicStyle = "dynamic";
+};
+
+\translator{\StaffContext }
+\translator {
+ \type "Line_group_engraver_group";
+ \name ChoirStaff;
+ \consists "Vertical_align_engraver";
+ \consists "Staff_group_bar_engraver";
+ \accepts "Staff";
+ \accepts "RhythmicStaff";
+ \accepts "GrandStaff";
+ \accepts "PianoStaff";
+
+ \accepts "Lyrics";
+ \accepts "ChordNames";
+}
+
+
+RhythmicStaffContext=\translator{
+ \type "Line_group_engraver_group";
+ numberOfStaffLines = "1";
+ \consists "Pitch_squash_engraver";
+ \consists "Separating_line_group_engraver";
+ \name RhythmicStaff;
+
+ \consists "Repeat_engraver";
+ \consists "Bar_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Staff_symbol_engraver";
+ \accepts "Voice";
+};
+\translator{\RhythmicStaffContext}
+VoiceContext = \translator {
+ \type "Engraver_group_engraver";
+ \consists "Dynamic_engraver";
+ \name Voice ;
+
+ \consists "Rest_engraver";
+ \consists "Dot_column_engraver";
+ \consists "Stem_engraver";
+ \consists "Beam_engraver";
+ \consists "Abbreviation_beam_engraver";
+% \consists "Multi_measure_rest_engraver";
+
+ % ugh. Order matters here.
+ \consists "Text_engraver";
+ \consists "Script_engraver";
+ \consists "Rhythmic_column_engraver";
+ \consists "Font_size_engraver";
+ \consists "Slur_engraver";
+ \consists "Tie_engraver";
+ \consists "Tuplet_engraver";
+ \consists "Note_heads_engraver" ;
+ \consists "Skip_req_swallow_translator";
+};
+
+\translator {\VoiceContext}
+
+GrandStaffContext=\translator{
+ \type "Line_group_engraver_group";
+ \name GrandStaff;
+ \consists "Span_bar_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Piano_bar_engraver";
+ minVerticalAlign = 1.5*\staffheight;
+
+ \accepts "Staff";
+};
+\translator{\GrandStaffContext}
+\translator{\GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ \name "PianoStaff";
+
+}
+\translator {
+ \type "Line_group_engraver_group";
+% \type "Hara_kiri_line_group_engraver";
+ \consists "Span_bar_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Staff_group_bar_engraver";
+ \name StaffGroup;
+ \accepts "Staff";
+ \accepts "RhythmicStaff";
+ \accepts "GrandStaff";
+ \accepts "PianoStaff";
+
+ \accepts "Lyrics";
+ \accepts "ChordNames";
+}
+
+\translator{
+ \type "Line_group_engraver_group";
+
+ \name LyricVoice ;
+ \consists "Separating_line_group_engraver";
+ \consists "Lyric_engraver";
+ \consists "Extender_engraver";
+ \consists "Beam_req_swallow_translator";
+}
+
+\translator {
+ \type "Line_group_engraver_group";
+ \name Lyrics;
+ \consists "Vertical_align_engraver";
+ \accepts "LyricVoice";
+}
+
+\translator{
+ \type "Line_group_engraver_group";
+
+ \name ChordNameVoice ;
+ \consists "Separating_line_group_engraver";
+ \consists "Chord_name_engraver";
+}
+
+\translator {
+ \type "Line_group_engraver_group";
+ \name ChordNames;
+ \consists "Vertical_align_engraver";
+ \accepts "ChordNameVoice";
+}
+
+ScoreContext = \translator {
+ \type Score_engraver;
+ \name Score;
+
+ \consists "Timing_engraver";
+
+ \consists "Span_score_bar_engraver";
+ \consists "Score_priority_engraver";
+ \consists "Priority_horizontal_align_engraver";
+ \consists "Vertical_align_engraver";
+
+
+ \accepts "StaffGroup";
+ \accepts "Staff";
+ \accepts "RhythmicStaff";
+ \accepts "Lyrics";
+ \accepts "ChordNames";
+ \accepts "GrandStaff";
+ \accepts "ChoirStaff";
+ \accepts "PianoStaff";
+};
+\translator { \ScoreContext }
+
+ScoreWithNumbers = \translator {
+ \type "Score_engraver";
+
+ % uncomment to bar numbers on a whole system.
+ \consists "Bar_number_engraver";
+
+};
+
+StupidScore = \translator {
+ \type "Score_engraver";
+ \name Score;
+ \consists "Note_heads_engraver";
+};
+
+
+
+BarNumberingStaffContext = \translator {
+ \StaffContext
+ barColumnPriority = "0";
+ marginBreakPriority = "-4";
+ \consists "Mark_engraver";
+ \consists "Bar_number_engraver";
+
+};
+
+
+HaraKiriStaffContext = \translator {
+ \type "Hara_kiri_line_group_engraver";
+ \name Staff;
+ barColumnPriority = "0";
+ marginBreakPriority = "-4";
+
+ \consists "Repeat_engraver";
+ \consists "Bar_engraver";
+ \consists "Clef_engraver";
+ \consists "Key_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Local_key_engraver";
+ \consists "Staff_symbol_engraver";
+ \consists "Collision_engraver";
+ \consists "Rest_collision_engraver";
+ \consists "Staff_margin_engraver";
+ \consists "Separating_line_group_engraver";
+
+ \accepts "Voice";
+};
+
+% huh, Score should do HaraKiri, not Part yes?
+OrchestralPartStaffContext = \translator {
+% \HaraKiriStaffContext
+ \StaffContext
+ barColumnPriority = "0";
+ marginBreakPriority = "-4";
+ \consists "Mark_engraver";
+ \consists "Bar_number_engraver";
+};
+
+% where to put HaraKiri here?
+OrchestralScoreContext= \translator {
+ \type Score_engraver;
+ \name Score;
+ barScriptPadding = "2.0"; % dimension \pt
+ markScriptPadding = "4.0";
+ barColumnPriority = "-4";
+ markBreakPriority = "-4";
+ defaultClef = treble;
+
+ \consists "Timing_engraver";
+
+ \consists "Bar_number_engraver";
+ \consists "Mark_engraver";
+ \consists "Span_score_bar_engraver";
+ \consists "Score_priority_engraver";
+ \consists "Priority_horizontal_align_engraver";
+ \consists "Vertical_align_engraver";
+
+ \accepts "ChoirStaff";
+ \accepts "StaffGroup";
+ \accepts "Staff";
+ \accepts "RhythmicStaff";
+ \accepts "Lyrics";
+ \accepts "ChordNames";
+ \accepts "GrandStaff";
+ \accepts "PianoStaff";
+
+};
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+
+\include "paper16.ly";
+
+\paper {
+ \paper_sixteen
+ linewidth = -1.0\cm;
+ castingalgorithm = \Wordwrap;
+ "unusedentry" = "}\\def\\nolilyfooter{";
+}
+
+
+\score {
+% \notes\relative c {
+ \notes {
+ \maininput
+ }
+ \paper { }
+
+}
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+
+\score {
+ \notes\relative c {
+ \maininput
+ }
+ \paper { }
+ \midi{ }
+}
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly";
+
+\maininput
--- /dev/null
+%{
+ Common italian names for notes. "b" means flat (bemolle), "d" means sharp (diesis)
+ Adapted from dutch.ly.
+
+ English: a b c d e f g
+ Italian: la si do re mi fa sol
+
+ For french naming just change 'do' in 'ut'.
+%}
+
+% contributed by Paolo Zuliani <zuliap@easynet.it>
+
+\notenames {
+ dobb = \musicalpitch { -1 0 -2 }
+ dob = \musicalpitch { -1 0 -1 }
+ do = \musicalpitch { -1 0 0 }
+ dod = \musicalpitch { -1 0 1 }
+ dodd = \musicalpitch { -1 0 2 }
+ rebb = \musicalpitch { -1 1 -2 }
+ reb = \musicalpitch { -1 1 -1 }
+ re = \musicalpitch { -1 1 0 }
+ red = \musicalpitch { -1 1 1 }
+ redd = \musicalpitch { -1 1 2 }
+ mibb = \musicalpitch { -1 2 -2 }
+ mib = \musicalpitch { -1 2 -1 }
+ mi = \musicalpitch { -1 2 0 }
+ mid = \musicalpitch { -1 2 1 }
+ midd = \musicalpitch { -1 2 2 }
+ fabb = \musicalpitch { -1 3 -2 }
+ fab = \musicalpitch { -1 3 -1 }
+ fa = \musicalpitch { -1 3 0 }
+ fad = \musicalpitch { -1 3 1 }
+ fadd = \musicalpitch { -1 3 2 }
+ solbb = \musicalpitch { -1 4 -2 }
+ solb = \musicalpitch { -1 4 -1 }
+ sol = \musicalpitch { -1 4 0 }
+ sold = \musicalpitch { -1 4 1 }
+ soldd = \musicalpitch { -1 4 2 }
+ labb = \musicalpitch { -1 5 -2 }
+ lab = \musicalpitch { -1 5 -1 }
+ la = \musicalpitch { -1 5 0 }
+ lad = \musicalpitch { -1 5 1 }
+ ladd = \musicalpitch { -1 5 2 }
+ sibb = \musicalpitch { -1 6 -2 }
+ sib = \musicalpitch { -1 6 -1 }
+ si = \musicalpitch { -1 6 0 }
+ sid = \musicalpitch { -1 6 1 }
+ sidd = \musicalpitch { -1 6 2 }
+}
--- /dev/null
+
+\midi {
+ \tempo 4=60;
+ \include "performer.ly"
+}
--- /dev/null
+%{
+ common dutch names for notes. "es" means flat, "is" means sharp
+
+
+
+
+ Please note that, while these names are used to enter *notes*, they
+ actually are *melodic*s, i.e. they represent a pitch solely. Notes
+ have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+
+%}
+
+\notenames {
+ ceses = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ eeses = \musicalpitch { -1 2 -2 }
+ eses = \musicalpitch { -1 2 -2 }
+ ees = \musicalpitch { -1 2 -1 }
+ es = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ aeses = \musicalpitch { -1 5 -2 }
+ ases = \musicalpitch { -1 5 -2 }
+ aes = \musicalpitch { -1 5 -1 }
+ as = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ beses = \musicalpitch { -1 6 -2 }
+ bes = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 0 }
+ bis = \musicalpitch { -1 6 1 }
+ bisis = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Ceses = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Aeses = \musicalpitch { -2 5 -2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ Aes = \musicalpitch { -2 5 -1 }
+ As = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Beses = \musicalpitch { -2 6 -2 }
+ Bes = \musicalpitch { -2 6 -1 }
+ B = \musicalpitch { -2 6 0 }
+ Bis = \musicalpitch { -2 6 1 }
+ Bisis = \musicalpitch { -2 6 2 }
+
+
+}
+
--- /dev/null
+
+% $Id: norsk.ly,v 1.2 1999/09/02 00:17:49 fred Exp $
+
+%{
+
+ Common norwegian names for notes, including versions without the
+ double s-es to save typing, as well as the traditional names with
+ them not to confuse musicians. "es" or "ess" means flat, "is" or
+ "iss" means sharp.
+
+ Otherwise, the main difference from the dutch names is the that the
+ "b" is called "h" in norwegian, while the dutch "bes" is a norwegian
+ "b".
+
+ Staying within the (proud?) naming convention for norwegian language
+ setup used in LaTeX, this file is called "norsk.ly" instead of
+ "norwegian.ly", even if all other languages' files use the english
+ name.
+
+ This file is based on "dutch.ly". Basically, I copied "dutch.ly",
+ duplicated all lines containing at least one "is" or "es", changed
+ every other "is" into an "iss" and every other "es" into an "ess",
+ added "ass" et al, and made some b->h-related changes. There may be
+ bugs in here; please tell me (or send patches) if you find any.
+
+ Arvid Gr=F8tting <arvidg@ifi.uio.no>
+
+%}
+
+\notenames {
+ ceses = \musicalpitch { -1 0 -2 }
+ cessess = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ cess = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ ciss = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ cississ = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ dessess = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ dess = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ diss = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ dississ = \musicalpitch { -1 1 2 }
+ eeses = \musicalpitch { -1 2 -2 }
+ eessess = \musicalpitch { -1 2 -2 }
+ eses = \musicalpitch { -1 2 -2 }
+ essess = \musicalpitch { -1 2 -2 }
+ ees = \musicalpitch { -1 2 -1 }
+ eess = \musicalpitch { -1 2 -1 }
+ es = \musicalpitch { -1 2 -1 }
+ ess = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eiss = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ eississ = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fessess = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ fess = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fiss = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ fississ = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ gessess = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ gess = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ giss = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ gississ = \musicalpitch { -1 4 2 }
+ aeses = \musicalpitch { -1 5 -2 }
+ aessess = \musicalpitch { -1 5 -2 }
+ ases = \musicalpitch { -1 5 -2 }
+ assess = \musicalpitch { -1 5 -2 }
+ aes = \musicalpitch { -1 5 -1 }
+ aess = \musicalpitch { -1 5 -1 }
+ as = \musicalpitch { -1 5 -1 }
+ ass = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aiss = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ aississ = \musicalpitch { -1 5 2 }
+ bes = \musicalpitch { -1 6 -2 }
+ bess = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ his = \musicalpitch { -1 6 1 }
+ hiss = \musicalpitch { -1 6 1 }
+ hisis = \musicalpitch { -1 6 2 }
+ hississ = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower, as usual.
+ %
+
+
+ Ceses = \musicalpitch { -2 0 -2 }
+ Cessess = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ Cess = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Ciss = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Cississ = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Dessess = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ Dess = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Diss = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Dississ = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Essess = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ Ess = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eiss = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Eississ = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fessess = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ Fess = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fiss = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Fississ = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Gessess = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ Gess = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Giss = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Gississ = \musicalpitch { -2 4 2 }
+ Aeses = \musicalpitch { -2 5 -2 }
+ Aessess = \musicalpitch { -2 5 -2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ Assess = \musicalpitch { -2 5 -2 }
+ Aes = \musicalpitch { -2 5 -1 }
+ Aess = \musicalpitch { -2 5 -1 }
+ As = \musicalpitch { -2 5 -1 }
+ Ass = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aiss = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Aississ = \musicalpitch { -2 5 2 }
+ Bes = \musicalpitch { -2 6 -2 }
+ Bess = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ His = \musicalpitch { -2 6 1 }
+ Hiss = \musicalpitch { -2 6 1 }
+ Hisis = \musicalpitch { -2 6 2 }
+ Hississ = \musicalpitch { -2 6 2 }
+
+}
+
+
+
--- /dev/null
+% paper.ly
+
+linewidth20 = \hsize - 2.5 * \staffheight;
+textheight20 = \vsize - 5.0 * \staffheight;
+linewidth = \staffheight/20.0 * \linewidth20;
+textheight = \staffheight/20.0 * \textheight20;
+
+indent = \linewidth / 14.0;
+
--- /dev/null
+% paper11.ly
+
+
+paper_eleven = \paper {
+ staffheight = 11.0\pt;
+
+ % ugh see table11 for sizes
+ quartwidth = 3.63\pt;
+ wholewidth = 5.45\pt;
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 4.8\pt;
+
+ 0=\font "feta11"
+
+ \include "params.ly";
+}
+
--- /dev/null
+% paper13.ly
+
+paper_thirteen = \paper {
+ staffheight = 13.0\pt;
+
+ % ugh see table13 for sizes
+ quartwidth = 4.29\pt;
+ wholewidth = 6.44\pt;
+
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 4.8\pt;
+
+ 0=\font "feta13"
+ \include "params.ly";
+}
+
--- /dev/null
+% paper16.ly
+
+
+
+\version "1.0.14";
+
+paper_sixteen = \paper {
+ staffheight = 16.0\pt;
+
+ % ugh, see table16 for sizes
+ quartwidth = 5.28\pt;
+ wholewidth = 7.92\pt;
+
+ font_large = 12.;
+ font_Large = 10.;
+ font_normal = 8.;
+ font_finger = 4.;
+ "font_number-1" = 5.;
+
+
+
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 4.8\pt;
+ texsetting = "\\input lilyponddefs \\musixsixteendefs ";
+ pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
+ scmsetting = "(display \"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\");\n";
+ scmsetting = "(display \"\\\\input lilyponddefs \\\\musixsixteendefs\");\n";
+
+ 0 = \font "feta16"
+ -1 = \font "feta13"
+ -2 = \font "feta11"
+
+ \include "params.ly";
+}
--- /dev/null
+% paper20.ly
+
+
+\version "1.0.14";
+
+paper_twenty = \paper {
+ staffheight = 20.0\pt;
+
+ font_large = 12.;
+ font_Large = 12.;
+ font_normal = 10.;
+ font_finger = 5.;
+ "font_number-1" = 7.;
+
+ % ugh see table20 for sizes
+ quartwidth = 6.61\pt;
+ wholewidth = 9.90\pt;
+
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 6.\pt;
+ texsetting = "\\input lilyponddefs \\musixtwentydefs ";
+ pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
+ % urg, debugging only
+ scmsetting = "(display \"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\");\n";
+ scmsetting = "(display \"\\\\input lilyponddefs \\\\musixtwentydefs\");\n";
+
+ -2 = \font "feta13"
+ -1 = \font "feta16"
+ 0 = \font "feta20"
+
+ \include "params.ly";
+}
+
--- /dev/null
+% params.ly
+% generic paper parameters
+
+paperfile = \papersize + ".ly";
+% paperfile = "a4.ly";
+\include \paperfile;
+\include "paper.ly";
+
+interline = \staffheight / 4.0;
+
+
+% thickness of stafflines
+staffline = \interline / 10.0;
+
+beam_thickness = 0.52 * (\interline - \staffline);
+interbeam = (2.0 * \interline - \beam_thickness) / 2.0;
+interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0;
+
+% stems and beams
+%
+% poor man's array size
+stem_max = 3.0;
+%
+stem_length0 = 3.5*\interline;
+stem_length1 = 2.5 * \interline;
+stem_length2 = 2.0 * \interline;
+stem_length3 = 1.5 * \interline;
+
+% only used for beams
+minimum_stem_length0 = 0.0; % not used
+minimum_stem_length1 = 1.5 * \interline;
+minimum_stem_length2 = 1.25 * \interline;
+minimum_stem_length3 = 1.0 * \interline;
+
+% stems in unnatural (forced) direction should be shortened,
+% according to [Roush & Gourlay]. Their suggestion to knock off
+% a whole staffspace seems a bit drastical: we'll do half.
+%
+forced_stem_shorten0 = 0.5 * \interline;
+forced_stem_shorten1 = \forced_stem_shorten0;
+forced_stem_shorten2 = \forced_stem_shorten1;
+forced_stem_shorten3 = \forced_stem_shorten2;
+
+% there are several ways to calculate the direction of a beam
+%
+% * MAJORITY : number count of up or down notes
+% * MEAN : mean centre distance of all notes
+% * MEDIAN : mean centre distance weighted per note
+%
+% enum Dir_algorithm { DOWN=-1, UP=1, MAJORITY=2, MEAN, MEDIAN };
+%
+DOWN = -1.0;
+UP = 1.0;
+MAJORITY = 2.0;
+MEAN = 3.0;
+MEDIAN = 4.0;
+% [Ross]: majority
+beam_dir_algorithm = \MAJORITY;
+
+% catch suspect beam slopes, set slope to zero if
+% outer stem is lengthened more than
+beam_lengthened = 0.2 * \interline;
+% and slope is running away steeper than
+beam_steep_slope = 0.2 / 1.0;
+
+% OSU: suggested gap = ss / 5;
+slur_x_gap = \interline / 5.0;
+slur_x_minimum = 2.0 * \interline;
+slur_slope_damping = 0.5;
+tie_x_minimum = \slur_x_minimum;
+tie_x_gap = \slur_x_gap;
+tie_slope_damping = 0.3;
+
+% ugh: rename to bow (in bezier.cc and fonts.doc too...)
+% slur_thickness = 1.8 * \staffline;
+slur_thickness = 1.4 * \staffline;
+slur_height_limit = \staffheight;
+
+% mmm, try bit flatter slurs
+% slur_ratio = 1.0 / 3.0;
+slur_ratio = 0.3;
+slur_clip_ratio = 1.2;
+slur_clip_height = 3.0 * \staffheight;
+slur_clip_angle = 100.0;
+slur_rc_factor = 2.4;
+
+% ugh
+notewidth = (\quartwidth + \wholewidth) / 2.0;
+
+% ugh
+barsize = \staffheight;
+rulethickness = \staffline;
+stemthickness = \staffline;
+
+
+gourlay_energybound = 100000.;
+%{
+The following bounds the number of measures
+on a line. Decreasing it greatly reduces computation time
+%}
+gourlay_maxmeasures = 10.;
+castingalgorithm = \Gourlay;
+
+%{
+Ross. page 151
+%}
+bar_kern = 0.5 * \interline;
+bar_thinkern = 0.75 * \interline;
+barthick_thick = 0.5* \interline;
+barthick_thin = 0.1*\interline;
+
+
+\include "engraver.ly";
+
+
--- /dev/null
+%part-paper.ly
+
+\paper {
+ \translator { \OrchestralPartStaffContext }
+ \translator { \ScoreContext skipBars = 1; }
+ % for simple testing only!
+% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+}
+
--- /dev/null
+%
+% setup for Request->Element conversion. Guru-only
+%
+\translator {
+ \type "Staff_performer";
+ \accepts Voice;
+ \name Staff;
+ \consists "Key_performer";
+ \consists "Time_signature_performer";
+}
+
+\translator
+{
+ \type "Performer_group_performer";
+ \name Thread ;
+ \consists "Note_performer";
+}
+\translator
+{
+ \type "Performer_group_performer";
+ \accepts Thread;
+\name Voice;
+}
+\translator
+{
+ \type "Performer_group_performer";
+ \accepts Staff;
+
+\name GrandStaff;}
+
+\translator {
+ \type "Performer_group_performer";
+ \consists "Lyric_performer";
+\name LyricVoice;
+}
+
+\translator{
+ \type "Performer_group_performer";
+ \name ChoirStaff;
+ \accepts Staff;
+}
+\translator {
+ \type "Staff_performer";
+ \accepts LyricVoice;
+ \name Lyrics;
+ \consists "Time_signature_performer";
+}
+\translator
+{
+ \type Performer_group_performer;
+
+ \name StaffGroup;
+ \accepts Staff;
+}
+\translator {
+ \type "Score_performer";
+
+
+ \name Score;
+ instrument = piano;
+ \accepts Staff;
+ \accepts GrandStaff;
+ \accepts Lyrics;
+ \accepts StaffGroup;
+ \accepts ChoirStaff;
+ \consists "Swallow_performer";
+}
+
--- /dev/null
+% property.ly
+% list of properties that lily recognises
+% and some shorthands (ugh)
+
+%{
+
+PROPERTIES
+
+name value effect shorthand
+
+[Voice]
+ydirection -1 force stem down \stemdown
+ydirection 0 stem direction free \stemboth
+ydirection 1 force stem up \stemup
+
+pletvisibility 0 show nothing
+pletvisibility 1 show number
+pletvisibility 2 show (number and bracket)-if-no-beam
+pletvisibility 3 show number, and bracket-if-no-beam
+pletvisibility 4 show number, and bracket
+
+slurdash 0 normal slurs
+slurdash 1 dotted slurs
+slurdash >1 dashed slurs
+
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
+textalignment -1 left alignment of text
+textalignment 0 center alignment of text
+textalignment 1 right alignment of text
+
+[Score?]
+beamslopedamping 0 no damping \beamslopeproportional
+beamslopedamping 1 damping1) \beamslopedamped
+beamslopedamping 100000 zero slope \beamslopezero
+
+[Score?]
+beamquantisation 0 no quantisations \beamposfree
+beamquantisation 1 quantise pos and slope \beamposnormal
+beamquantisation 2 quantise avoide wedge2) \beampostraditional
+
+[Staff]
+keyoctaviation 0 Key signature only for specified octave \specialkey
+keyoctaviation 1 Key signature for all octaves \normalkey
+
+[Staff]
+barAlways 0 none
+barAlways 1 generate bar at every moment
+
+[Staff]
+barAuto 0 none
+barAuto 1 auto-generate bar every measure
+
+[Staff]
+beamAuto 0/1 auto-beam on/off
+beamAutoEnd "num/den" end auto-beam
+beamAutoEnd8 "num/den" end auto-beam of 8ths
+beamAutoEnd16 "num/den" end auto-beam of 16ths
+
+timeSignatureStyle C Use C and stroked C for 4/4,2/2
+timeSignatureStyle old Use old style mensuration marks
+timeSignatureStyle 1 Use single number
+timeSignatureStyle "" Use normal two-digit time signature
+timeSignatureStyle Cn/m Set symbol explicitly, n/m=2/2 or 4/4
+timeSignatureStyle oldn/m Set symbol explicitly,
+ n/m=2/2,3/2,3/4,4/4,6/4 or 9/4.
+[Staff]
+voltaVisibility 0/1 on/off
+
+[Staff?]
+instrument ascii midi instrument table lookup
+
+[Score]
+chordInversion 0/1 Find and display chord with inversion?
+
+
+1) after beam slope damping table suggested in [Wanske]
+2) [Wanske] as well as [Ross] suggests that beams sloped upward must not
+ start sitting on a staffline, and beams sloped downward must not hang
+ from a staffline (similar for beam-ends). This would create a wedge
+ that is traditionally being avoided because it could easily be filled-up
+ with ink.
+ However, avoiding these wedges restricts the freedom of beams quite a lot
+ while they don't seem to be a problem in modern printing.
+ In no piece of sheetmusic engraved after 1953 (Baerenreiter) i've seen
+ these wedges being avoided.
+
+%}
+
+%hmm, (these) abbrevs suck, imo
+% i guess they're meant as some form of doco
+% that's what i use them for...
+stemup =
+ \property Voice.ydirection = \up
+stemboth= \property Voice.ydirection = \center
+stemdown = \property Voice.ydirection = \down
+
+slurup = \notes {
+ s1*0
+ \property Voice.slurydirection = \up
+ }
+slurboth= \notes {
+ s1*0
+ \property Voice.slurydirection = \center
+}
+slurdown = \notes {
+ s1*0
+ \property Voice.slurydirection = \down
+}
+
+shifton = \property Voice.hshift = 1
+shiftoff = \property Voice.hshift = 0
+
+onevoice = {
+ \stemboth \shiftoff
+}
+
+voiceone = {
+ \type Voice = one
+ \stemup
+}
+
+voicetwo = {
+ \type Voice = two
+ \stemdown
+}
+
+voicethree = {
+ \type Voice = three
+ \stemup
+
+}
+
+voicefour = {
+ \type Voice = four
+ \stemdown
+ \shifton
+}
+
+onestaff = {
+ \translator Staff=one
+}
+
+staffone = {
+ \translator Staff=one
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafftwo = {
+ \translator Staff=two
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+staffthree = {
+ \translator Staff=three
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafffour = {
+ \translator Staff=four
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+% ugh, cluttering global namespace...
+none=0
+free=0
+normal=1
+traditional=2
+infinity=10000
+
+beamslopeproportional = {
+ \property Score.beamslopedamping = \none
+}
+
+beamslopedamped = {
+ \property Score.beamslopedamping = \normal
+}
+
+beamslopezero = {
+ \property Score.beamslopedamping = \infinity
+}
+
+% this sucks, you'd want to pass an array, at least
+% (or embedded code: you still can't dictate the slope / stemlength)
+beamposfree = {
+ \property Score.beamquantisation = \none
+}
+
+beamposnormal = {
+ \property Score.beamquantisation = \normal
+}
+
+beampostraditional = {
+ \property Score.beamquantisation = \traditional
+}
+
+slurnormal = {
+ \property Voice.slurdash = 0
+}
+
+slurdotted = {
+ \property Voice.slurdash = 1
+}
+
+%{
+ for grace note hack, see input/test/grace.ly
+%}
+pletoff = {
+ \property Voice.pletvisibility = 0
+}
+pleton = {
+ \property Voice.pletvisibility = 3
+}
+tiny = {
+ \property Voice.fontsize= "-2"
+ \pletoff %urg
+}
+
+small = {
+ \property Voice.fontsize= "-1"
+}
+
+normalsize = {
+ \property Voice.fontsize= "0"
+ \pleton %urg
+}
+
+%{
+ [urg: try at] temporary grace note hack
+ the total visible duration of the grace notes must be half
+ the duration of the 'at' note: e.g.:
+
+ \grace b8 \graceat c4 \ecarg
+ \grace c16 b16 \graceat c4 \ecarg
+
+grace = {
+ \tiny
+% it would be so cool not to have to specify these factors each time...
+% :-(
+ \property Voice.pletvisibility = 0
+ \[1/16
+}
+
+graceat = \melodic {
+ \normalsize
+ \property Voice.pletvisibility = 0
+ \] \[31/32
+}
+
+ecarg = \melodic {
+ \property Voice.pletvisibility = 0
+ \]
+ \property Voice.pletvisibility = 3
+}
+%}
+
+normalkey = {
+ \property Staff.keyoctaviation = 1
+}
+
+specialkey = {
+ \property Staff.keyoctaviation = 0
+}
+
--- /dev/null
+
+% name = \script {
+% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority }
+%
+
+thumb = \script { "thumb" 0 0 1 0 0 }
+accent = \script { "sforzato" 0 -1 0 0 0 }
+marcato = \script { "marcato" 0 -1 0 1 0 }
+staccatissimo = \script { "staccatissimo" 0 -1 0 1 0 }
+portato= \script { "portato" 0 -1 0 1 0 }
+fermata = \script { "fermata" 0 1 0 1 0 }
+stopped = \script { "stopped" 0 0 1 0 0 }
+staccato = \script { "staccato" 1 -1 0 0 0 }
+tenuto = \script {"tenuto" 1 -1 0 0 0 }
+upbow = \script { "upbow" 0 0 1 0 0 }
+downbow = \script { "downbow" 0 0 1 0 0 }
+lheel = \script { "upedalheel" 0 0 -1 0 0 }
+rheel = \script { "dpedalheel" 0 0 1 0 0 }
+ltoe = \script { "upedaltoe" 0 0 -1 0 0 }
+rtoe = \script { "dpedaltoe" 0 0 1 0 0 }
+turn = \script { "turn" 0 0 1 0 0 }
+open = \script { "open" 0 0 1 0 0 }
+flageolet = \script { "flageolet" 0 0 1 0 0 }
+reverseturn = \script { "reverseturn" 0 0 1 0 0 }
+
+
+% could we do without this bloat?
+%
+lbheel = \script { "bheel" 0 0 -1 0 0 }
+rbheel = \script { "bheel" 0 0 1 0 0 }
+lbtoe = \script { "btoe" 0 0 -1 0 0 }
+rbtoe = \script { "btoe" 0 0 1 0 0 }
+lfheel = \script { "fheel" 0 0 -1 0 0 }
+rfheel = \script { "fheel" 0 0 1 0 0 }
+lftoe = \script { "ftoe" 0 0 -1 0 0 }
+rftoe = \script { "ftoe" 0 0 1 0 0 }
+
+%
+% left toe: right heel:
+%
+% u -
+% - u
+% ---|-----|-- --|x----|x--
+% ---|-----|-- --|-----|---
+% --x|----x|-- --|-----|---
+% ^ -
+% - ^
+% back front back front
+%
+%
+% heu, me thought for a moment that order in table_xxx.ly was
+% being translated into priority...
+back = \script { "back" 0 -1 -1 0 0 }
+front = \script { "front" 0 -1 1 0 0 }
+
+trill =\script { "trill" 0 0 1 0
+ 2000 % be above text.
+}
+
+prall =\script { "prall" 0 0 1 0 0 }
+mordent =\script { "mordent" 0 0 1 0 0 }
+prallprall =\script { "prallprall" 0 0 1 0 0 }
+prallmordent =\script { "prallmordent" 0 0 1 0 0 }
+upprall =\script { "upprall" 0 0 1 0 0 }
+downprall =\script { "downprall" 0 0 1 0 0 }
--- /dev/null
+%
+% common Swedish names for notes. "ess" means flat, "iss" means sharp
+%
+% by Mats Bengtsson.
+
+\notenames {
+ cessess = \musicalpitch { -1 0 -2 }
+ cess = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ ciss = \musicalpitch { -1 0 1 }
+ cississ = \musicalpitch { -1 0 2 }
+ dessess = \musicalpitch { -1 1 -2 }
+ dess = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ diss = \musicalpitch { -1 1 1 }
+ dississ = \musicalpitch { -1 1 2 }
+ essess = \musicalpitch { -1 2 -2 }
+ ess = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eiss = \musicalpitch { -1 2 1 }
+ eississ = \musicalpitch { -1 2 2 }
+ fessess = \musicalpitch { -1 3 -2 }
+ fess = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fiss = \musicalpitch { -1 3 1 }
+ fississ = \musicalpitch { -1 3 2 }
+ gessess = \musicalpitch { -1 4 -2 }
+ gess = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ giss = \musicalpitch { -1 4 1 }
+ gississ = \musicalpitch { -1 4 2 }
+ assess = \musicalpitch { -1 5 -2 }
+ ass = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ aiss = \musicalpitch { -1 5 1 }
+ aississ = \musicalpitch { -1 5 2 }
+ hessess = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ hiss = \musicalpitch { -1 6 1 }
+ hississ = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Cessess = \musicalpitch { -2 0 -2 }
+ Cess = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Ciss = \musicalpitch { -2 0 1 }
+ Cississ = \musicalpitch { -2 0 2 }
+ Dessess = \musicalpitch { -2 1 -2 }
+ Dess = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Diss = \musicalpitch { -2 1 1 }
+ Dississ = \musicalpitch { -2 1 2 }
+ Essess = \musicalpitch { -2 2 -2 }
+ Ess = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eiss = \musicalpitch { -2 2 1 }
+ Eississ = \musicalpitch { -2 2 2 }
+ Fessess = \musicalpitch { -2 3 -2 }
+ Fess = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fiss = \musicalpitch { -2 3 1 }
+ Fississ = \musicalpitch { -2 3 2 }
+ Gessess = \musicalpitch { -2 4 -2 }
+ Gess = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Giss = \musicalpitch { -2 4 1 }
+ Gississ = \musicalpitch { -2 4 2 }
+ Assess = \musicalpitch { -2 5 -2 }
+ Ass = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Aiss = \musicalpitch { -2 5 1 }
+ Aississ = \musicalpitch { -2 5 2 }
+ Hessess = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ Hiss = \musicalpitch { -2 6 1 }
+ Hississ = \musicalpitch { -2 6 2 }
+
+
+}
# descent order into subdirectories:
#
SUBDIRS = scripts buildscripts flower lib lily mf mi2mu po debian \
- Documentation init input tex make mutopia test intl stepmake\
+ Documentation ly input tex make mutopia test intl stepmake\
ps scm
#
Midi_parser_info* info_l_;
protected:
-// Byte const* inline_forward_byte_L (int n)
Byte const* inline_forward_byte_L (char const* fun, int n)
{
if (info_l_->byte_L_ + n < info_l_->end_byte_L_ )
info_l_->byte_L_ += n;
return p;
}
-// exit (__FUNCTION__": unexpected EOF");
exit (String (fun) + ": unexpected EOF");
return 0;
}
#ifdef INLINES
-// Byte inline_next_byte ()
Byte inline_next_byte (char const* fun)
{
if (info_l_->byte_L_ < info_l_->end_byte_L_)
return *info_l_->byte_L_++;
-// exit (__FUNCTION__": unexpected EOF");
exit (String (fun) + ": unexpected EOF");
return 0;
}
-// Byte inline_peek_byte ()
Byte inline_peek_byte (char const* fun)
{
if (info_l_->byte_L_ < info_l_->end_byte_L_)
return *info_l_->byte_L_;
-// exit (__FUNCTION__": unexpected EOF");
exit (String (fun) + ": unexpected EOF");
return 0;
}
if (!info_l_->source_l_)
::error (_f ("can't find file: `%s\'", filename_str));
info_l_->byte_L_ = (Byte const*)info_l_->source_l_->ch_C ();
-// info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i ();
info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i () + 1;
}
notename_str += "es";
accidental_i--;
+ /*
+ By tradition, all scales now consist of a sequence of 7 notes each
+ with a distinct name, from amongst a b c d e f g. But, minor scales
+ have a wide second interval at the top - the 'leading note' is
+ sharped. (Why? it just works that way! Anything else doesn't sound as
+ good and isn't as flexible at saying things. In medieval times,
+ scales only had 6 notes to avoid this problem - the hexachords.)
+
+ So, the d minor scale is d e f g a b-flat c-sharp d - using d-flat
+ for the leading note would skip the name c and duplicate the name d.
+ Why isn't c-sharp put in the key signature? Tradition. (It's also
+ supposedly based on the Pythagorean theory of the cycle of fifths,
+ but that really only applies to major scales...)
+
+ Anyway, g minor is g a b-flat c d e-flat f-sharp g, and all the other
+ flat minor keys end up with a natural leading note. And there you
+ have it.
+
+ John Sankey <bf250@freenet.carleton.ca>
+
+ */
+
+ /* ok, bit ugly, but here we go */
+
+ if (minor_i_ && (accidentals_i_ == -1))
+ if (notename_str == "des")
+ notename_str = "cis";
+
+ if (minor_i_ && (accidentals_i_ == -2))
+ if (notename_str == "ges")
+ notename_str = "fis";
+
String de_octavate_str = to_str (',', (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12);
String octavate_str = to_str ('\'', (pitch_i - Mudela_note::c0_pitch_i_c_) / 12);
return notename_str +de_octavate_str + octavate_str;
if (mudela_staff_p_list_.size() > 1)
mudela_stream << ">\n";
+#if 0
mudela_stream << "\\paper{}\n";
+#else
+ /*
+ let's put some auto-beam stuff in place as long as it's optional
+ */
+ mudela_stream << "\\paper{\n";
+ mudela_stream << "\\translator{\n";
+ mudela_stream << "\\VoiceContext\n";
+ mudela_stream << "\\consists \"Auto_beam_engraver\";\n";
+ mudela_stream << "beamAuto = 1.;\n";
+ mudela_stream << "beamAutoEnd8 = \"2/4\";\n";
+ mudela_stream << "beamAutoEnd16 = \"1/4\";\n";
+ mudela_stream << "beamAutoEnd32 = \"1/4\";\n";
+ mudela_stream << "}\n";
+ mudela_stream << "}\n";
+#endif
mudela_stream << "\\midi{\n";
// let's not use silly 0 track
r8 as' des,4\sf ~ des()c |
r8 as' des,4\sf ~ des()c |
% looks lot like viola...
- [f16 f as as]f4:16[d16 d g g]d4:|
+ [f16 f as as]f4:16[d16 d g g]d4: |
%225
- [c16 c g' g]c,4:16[c16 c f f]c4:|
- [b16 b f' f]b,4:16[c16 c f f]c4:|
+ [c16 c g' g]c,4:16[c16 c f f]c4: |
+ [b16 b f' f]b,4:16[c16 c f f]c4: |
[d16 d f f]d4:16[c16 c f f]c4:|
[d8 g,] g'4. as8 as4 ~ |
[as8 as] f4. f8 g4 |
--- /dev/null
+ %{
+Here are the first four sonatas with barring, stem directions
+etc., laid out so that two note shapes can be used when that is
+ready. (Freenet will chop some of the code lines - I've got it
+as one Mudela line per bar.) As you will quickly see, K.4 raises
+some notation and collision problems. I've used the modern
+tied-notes syntax you prefer, instead of the way Scarlatti wrote
+it (bar1.jpeg). Scarlatti had a point, didn't he! (150 years
+later, Longo agreed - bar1 is from his edition.)
+
+Harpsichord music is written much closer than organ (or piano)
+music because harpsichords rely on the transfer of energy from
+one string directly to other harmonically-related strings to
+build power and maintain sound. That only happens when the
+strings are close to each other on the soundboard. In fact, that
+is one of the ways of judging what instrument a keyboard piece
+was written for - organ pipes don't talk to each other, organ
+sound is always fighting for clarity, and close harmonies sound
+thick, so good organ music is much more widely spaced. K.4 is
+typical of mainstream harpsichord music.
+
+I'll work on the musical aspects of the notation - Lily can be
+told to do it one way as easily as the other. (I really
+appreciate that.) But, would you give some thought to the best
+way of dealing with 'multi-voice' collisions? In the long term,
+particularly if you go ahead with automating beaming, you will
+need a general anti-collision system. But, for the next 6 months
+or so, to keep the Scarlatti project going, might it be faster
+to provide for setting the stem length of individual notes? Or
+some other similar workaround?
+
+Oh yes - when the middle note of a chord is trilled, Scarlatti
+wrote the praller directly in front of the note, whether the
+note was on a line or a space. And, he wrote most of the K.3
+fermatae on top of a bar line to indicate that a sound gap was
+wanted, not that the prior note be extended in length.
+
+John
+
+----------------------------------------------------
+%}
+
+----------------------------------------------------
+
+\score {
+ \header {title="Domenico Scarlatti - Sonata K.3 L.378";
+ description="Presto";}
+ % vOne is right hand outside part, vTwo r.h. inside part,
+ % vThree left hand outside, vFour l.h. inside.
+ \notes {
+ \type Staff=staffOne <
+ \property Staff.nolines=11
+ \property Voice.pletvisibility=0
+ \time 2/2;
+ \clef alto;
+ \type Voice=vOne <{
+% 1
+\stemup s1
+% 2
+s4 [e'16 d' c' b] a4 s |
+% 3
+s4 a' e' c'' |
+% 4
+b'4 a'2 gis'4 |
+% 5
+s4 c'' a' e'' |
+% 6
+d''4 c''2 b'4 |
+% 7
+s4 c'' g' f'' |
+% 8
+e''4 d''2 cis''4 |
+% 9
+s4 d'' a' g'' |
+% 10
+fis''4 e''2 dis''4 |
+% 11
+[e''8 d''] c''2 b'4~b'
+% 12
+a'2 g'4~g'
+% 13
+fis'2 e'4~e'
+% 14
+d'2 c'4~c'
+% 15
+b2 a4 |
+% 16
+s4 c' dis' fis' |
+% 17
+a'4 c'' dis'' fis'' |
+% 18
+a''4 c'''2 [b''8 a''] |
+% 19
+g''4 f'' e'' d''^\fermata |
+s1 s
+% 22
+\stemdown s4 a, b, cis |
+% 23
+d4 e f2 |
+% 24
+\stemup f4 aes b d' |
+% 25
+f'4 aes' b' d'' |
+% 26
+f''4 aes''2 [g''8 f''] |
+% 27
+ees''4 d'' c'' d'' |
+% 28
+g'4 b' c'' \stemdown f |
+% 29
+e4 e'2 \stemup d''4 |
+% 30
+e'4 b' c'' \stemdown b, |
+% 31
+a,4 a \stemup c'' d'' |
+% 32
+a4 b c' d' |
+% 33
+e'4 f' g' a' |
+% 34
+b'4 [a'8 g'] g''4 c'' |
+% 35
+c''4~[c''16 b' c'' d''] d''4.^\prall c''8 |
+% 36
+c''4 c''' b'' bes''
+% 37
+a'' aes''2 g''4~g''
+% 38
+f''2 dis''4~dis''
+% 39
+d''2 c''4~c''
+% 40
+b'4 c'' d'' |
+% 41
+e'4 f' g' a' |
+% 42
+b'4 [a'8 g'] g''4 c'' |
+% 43
+c''4~[c''16 b' c'' d''] d''4.^\prall c''8 |
+% 44
+c''4 [g''16 f'' e'' d''] c''4 s |
+% 45
+s4 [g16 f e d] c4 s |
+% 46
+s4 c'' g' a' |
+% 47
+e''4 c'' d'' b' |
+% 48
+e'2. s4 |
+% 49
+s4 [g'16 f' e' d'] c'4 s |
+% 50
+s4 c'' g' ees''~ees''
+% 51
+d''2 c''4 |
+% 52
+bes'4 s2 [d'16 c' bes a] |
+% 53
+g4 s2 g''4 |
+% 54
+g''4 d'' f'' e'' |
+% 55
+d''4 [a''16 g'' f'' e''] d''4 s |
+% 56
+s4 [a16 g f e] d4 s |
+% 57
+s4 d'' a' f'' |
+% 58
+f'' e''4 bes'2 |
+% 59
+cis''4 s2. |
+% 60
+\stemdown s4 a' gis' g' |
+% 61
+fis'4 f' e'2 |
+% 62
+dis'4 d' cis' c' |
+% 63
+b4 bes a2 |
+% 64
+gis4 g fis f |
+% 65
+\stemup s4 e gis b |
+% 66
+d'4 f' gis' b' |
+% 67
+d''4 f''2 e''8 d'' |
+% 68
+c''4 b' a' g'^\fermata |
+s1 s
+% 71
+\stemdown s4 d e fis |
+% 72
+g4 a bes2 |
+% 73
+\stemup e'4 g' bes' e'' |
+% 74
+bes''2. [a''8 gis''] |
+% 75
+a''4 g''2 [f''8 e''] |
+% 76
+f''4 e''2 [d''8 cis''] |
+% 77
+d''4 c''2 [b'8 a'] |
+% 78
+gis'4 gis'' a'' \stemdown d |
+% 79
+c4 c'2 \stemup b''4 |
+% 80
+c''4 gis'' a'' \stemdown g, |
+% 81
+f,4 f2 \stemup b''4 |
+% 82
+f'4 gis' a' b' |
+% 83
+c''4 d'' e'' f'' |
+% 84
+gis'4 [a'8 b'] e'4 d'' |
+% 85
+c''4 d'' b'2 |
+% 86
+a'4 a'' gis'' g'' |
+% 87
+fis''4 f''2 e''4~e''
+% 88
+d''2 c''4~c''
+% 89
+b'2 a'4~a'
+% 90
+gis'4 a' d'' |
+% 91
+a'2 gis' |
+% 92
+a'4 s2 [e'16 d' c' b] |
+% 93
+a4 s2 d''4 |
+% 94
+c''2 gis' |
+% 95
+a'2. s4 |
+} {
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+s s s s s s s s s s s s s
+% 46
+s2. f''4 |
+% 47
+g'2 f' |
+% 48
+c''2. s4 |
+s1 s
+% 51
+g'2 fis' |
+s1
+% 53
+s2. bes'4 |
+% 54
+a'4 f'' d'' cis'' |
+% 55
+f''4 s2. |
+s1 s
+% 58
+bes'2 e''4 d'' |
+% 59
+a'4 s2. |
+s1 s s s s s s s s s s s s s s s s s s s s s s s s
+% 85
+a'2 gis' |
+s1 s s s s
+% 91
+e'2 b' |
+s1
+% 93
+s2. a'4 |
+% 94
+a'2 b'
+} {
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+% 91
+c''4 d''4 s2 |
+s1
+% 93
+s2. f'4 |
+% 94
+e'2 e'2
+ }>
+ \type Voice=vTwo <
+ {
+ %- right hand unchorded notes -
+ }>
+ \type Voice=vThree <{
+% 1
+\stemdown s2. [e''16 d'' c'' b'] |
+% 2
+a'4 s2 [e16 d c b,] |
+% 3
+a,4 s2 a4 |
+% 4
+e4 c' b2 |
+% 5
+a4 s2 c'4 |
+% 6
+g4 e' d'2 |
+% 7
+c'4 s2 d'4 |
+% 8
+a4 f' e'2 |
+% 9
+d'4 s2 e'4 |
+% 10
+b4 g' fis'2 |
+% 11
+e'2 dis'4 d' |
+% 12
+cis'4 c' b2 |
+% 13
+bes4 a gis g |
+% 14
+fis4 f e2 |
+% 15
+dis4 d cis c |
+% 16
+b,2 s |
+s1
+% 18
+s4 b, cis dis |
+% 19
+e4 f g2 |
+% 20
+\stemup g4 bes cis' e' |
+% 21
+g'4 bes' cis'' e'' |
+% 22
+g''4 bes''2 [a''8 g''] |
+% 23
+f''4 e'' d'' c''^\fermata |
+s1 s
+% 26
+\stemdown s4 g, a, b, |
+% 27
+c4 d dis f |
+% 28
+g4 g'2 \stemup d''4 |
+% 29
+g'4 b' c'' \stemdown d |
+% 30
+c4 c'2 \stemup d''4 |
+% 31
+c'4 b'2 \stemdown g,4 |
+% 32
+f,4 f e d |
+% 33
+c4 d e f |
+% 34
+g,4 g e f |
+% 35
+g4 f g g, |
+% 36
+c2 s
+% 37
+s4 c'' b' bes' |
+% 38
+a'4 gis' g'2 |
+% 39
+fis'4 f' e' dis' |
+% 40
+d4 d' c' b |
+% 41
+c4 d e f |
+% 42
+g,4 g e f |
+% 43
+g4 f g g, |
+% 44
+c2 s4 [g'16 f' e' d'] |
+% 45
+c'4 s2 [g,16 f, e, d,] |
+% 46
+c,4 c s f |
+% 47
+g2 g, |
+% 48
+c2. [g''16 f'' e'' d''] |
+% 49
+c''4 s2 [g16 f e d] |
+% 50
+c4 s2 c'4 |
+% 51
+d'2 d |
+% 52
+g4 [d''16 c'' bes' a'] g'4 s2
+% 53
+[d16 c bes, a,] g,4 g |
+% 54
+a2 a, |
+% 55
+d2 s4 [a'16 g' f' e'] |
+% 56
+d'4 s2 [a,16 g, f, e,] |
+% 57
+d,4 s2 d'4 |
+% 58
+g2 g, |
+% 59
+a,4 \stemup a'' gis'' g'' |
+% 60
+fis''4 f''2 e''4~e''
+% 61
+d''2 c''4~c''
+% 62
+b'2 a'4~a'
+% 63
+g'2 f'4~f'
+% 64
+e'2 d'4 |
+% 65
+\stemdown e,2^\fermata s |
+s1
+% 67
+s4 e fis gis |
+% 68
+a4 b c'2 |
+% 69
+\stemup fis4 a c' ees' |
+% 70
+fis'4 a' c'' ees'' |
+% 71
+c'''2. [bes''8 a''] |
+% 72
+bes''4 a'' g'' f'' |
+s1
+% 74
+\stemdown s4 c d e |
+% 75
+f2 e |
+% 76
+d2 c |
+% 77
+b,2 a, |
+% 78
+e4 e'2 \stemup b''4 |
+% 79
+e''4 gis'' a'' \stemdown b, |
+% 80
+a,4 a2 \stemup b''4 |
+% 81
+a'4 gis'' a'' \stemdown e, |
+% 82
+d,4 d' c' b |
+% 83
+a4 b c' d' |
+% 84
+e4 d' c' d' |
+% 85
+e'4 d' e' e |
+% 86
+a2 s |
+% 87
+s4 a' gis' g' |
+% 88
+fis'4 f' e'2 |
+% 89
+dis'4 d' cis' c' |
+% 90
+d'2 c'4 d |
+% 91
+e4 d e e, |
+% 92
+a,4 [e''16 d'' c'' b'] a'4 s2
+% 93
+[e16 d c b,] a,4 d |
+% 94
+e2 e, |
+% 95
+a,2.
+} {
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s s
+% 90
+b2 a4
+ } >
+ \type Voice=vFour <
+ {
+ %- left hand unchorded notes -
+ }
+ >>}
+ \paper{barsize=50.0; \translator {\StaffContext \consists
+Bar_number_engraver;}}
+}
+
+----------------------------------------------------
+
+\score {
+ \header {title="Domenico Scarlatti - Sonata K.4 L.390";
+ description="Allegro";}
+ % vOne is right hand outside part, vTwo r.h. inside part,
+ % vThree left hand outside, vFour l.h. inside.
+ \notes {
+ \type Staff=staffOne <
+ \property Staff.nolines=11
+ \keysignature bes;
+ \time 4/4;
+ \clef alto;
+ \type Voice=vOne <
+{
+% 1
+\stemup \skip 4..*15/7; g'16 |
+% 2
+[g'16 bes' a' c''] [bes' d'' c'' ees''] d''4. g''8 |
+% 3
+[fis''8 g''] [a'' c''] [bes' c''] [d'' g'] |
+% 4
+[fis'8 g'] [a' c'] [bes c'] [d' g'] |
+% 5
+[fis'8 g'] a' \stemdown d [g bes,] [c d] |
+% 6
+[g,8 g8.] s16 \stemup ees'8 [f' a'] [bes'16 ees'' d'' c''] |
+% 7
+[d''8 ees''] [f'' bes'] \stemdown [f' d'] [ees'16 g' b d'] |
+% 8
+[c'16 ees' d' f'] [ees' g' f' aes'] \stemup [b' d'' cis'' e'']
+[d''8 e''] |
+% 9
+[f''8 g''] [a'' d''] \stemdown [a16 cis' b d'] [cis' e' a cis'] |
+% 10
+\stemup [f'8 g'] [a' d'] [cis' d'] [e'16 g' f' e'] |
+% 11
+[f'16 a' d''8]~[d''16 e'' c''8]~[c''16 d'' bes' g'] [a' e'' f''8]
+|
+% 12
+e''8 d''4~[d''16 cis''] [d'' bes' a' g'] [a' bes' cis'' a'] |
+% 13
+[bes'16 cis'' d'' e''] [a' g'' f'' e''] [f'' e'' d'' c''] [d''
+e'' f'' g''] |
+% 14
+[a''16 cis'' d'' e''] a' \stemdown [f' e' d'] a,4~a,16 \stemup
+[d'' cis'' b'] |
+% 15
+[a''16 cis'' d'' e''] [a' d'' cis'' b'] cis''4~[cis''16 cis'' d''
+e''] |
+% 16
+[a'8 a''8]~[a''16 g'' f'' e''] [f''8 e''16 d''] [cis''8 d''] |
+% 17
+cis''4 \stemdown [cis'16 a g f] [e8 a] d \stemup g' |
+% 18
+[a'16 cis' d' e'] a \stemdown [f e d] a,4~a,16 \stemup [d' cis'
+b] |
+% 19
+cis'4~[cis'16 cis' d' e'] [a8 a']~[a'16 g' f' e'] |
+% 20
+[f'16 a' d''8]~[d''16 e'' cis''8] d''4 [a'8 g'] |
+% 21
+fis'8 d'4 cis'8 [d'8. e'16] [fis'8. g'16]~
+% 22
+[g'16 a'8 fis'16] [bes'8. cis''16] [cis''8 d''] r8. d'16 |
+% 23
+[d'16 fis' e' g'] [fis' a' g' bes'] a'4. bes'8 |
+% 24
+[c''8 d''] [ees'' fis'] [g' a'] [bes' b'] |
+% 25
+[c''8 d''] [ees'' g''] [f'' ees''] [d'' c''] |
+% 26
+[g''16 b' c'' d''] g' \stemdown [ees' d' c'] g,4~g,16 \stemup
+[c'' b' a'] |
+% 27
+[g''16 b' c'' d''] [g' c'' b' a'] b'4~b'16 \stemdown [f' ees' d']
+|
+% 28
+g8 \stemup g''8~[g''16 f'' ees'' d''] ees''8 \stemdown f [g aes]
+|
+% 29
+g,8 \stemup [ees'16 f'] [d'8 ees'] [f' g'] g'16 \stemdown [c' bes
+a] |
+% 30
+[g16 g'] \stemup cis''8 [d''16 c''' bes'' a''] [bes''8 a''16 g'']
+[fis''8 g''] |
+% 31
+[a''16 fis'' g'' a''] d'' \stemdown [bes' a' g'] d,4~d,16 \stemup
+[g'' fis'' e''] |
+% 32
+[fis''16 fis'' g'' a''] d'' \stemdown [bes' a' g'] [d'' a' fis'
+a'] s \stemup [fis''16 g'' a''] |
+% 33
+d''8 g''8~[g''16 c''' bes'' a''] [bes''8 a''16 g''] [fis''8 g'']
+|
+% 34
+[a''16 a' bes' c''] \stemdown [fis' d' c' bes] [a8 d] g s |
+% 35
+d4~d16 \stemup [g' fis' e'] [d'' fis' g' a'] d' \stemdown [bes a
+g] |
+% 36
+d,4~d,16 \stemup [g' fis' e'] d'' [fis' g' a'] [d' g'] [fis' e']
+|
+% 37
+d''4~d''16 [fis' g' a'] d' \stemdown [bes a g] [d a g fis] |
+% 38
+[g8 ees] [d d,] g,4 \stemup [bes'16 g' a' fis'] |
+% 39
+bes'8 g'4 fis'8 [g'8. a'16] [bes'8 c''] |
+% 40
+[d''8. d''16] [ees''8 fis'' ] [fis'' g''] r8. s16 |
+}
+{
+s1 s s s s s s s s s s
+%12
+cis''8 s s4 s2 |
+s1 s s s
+% 17
+<e''4 a'> s4 s2 |
+s1 s s s
+%22
+s4 s8. a'16 d'4 s4 |
+s1
+%24
+s2 s4. d'8 |
+%25
+ees'8 f' g' s s2 |
+s1 s s
+%29
+s4. c'8 s4 ees'16
+}
+ >
+ \type Voice=vTwo <
+ {
+s1 s s s s s s s s s
+% 11
+\stemdown s4. [c''16 g'] fis'8 s8 [a'8. b'16] |
+% 12
+s16 \skip 4..*71/7;
+% 16
+[f''16 a' bes'8]~[bes'16 a'8 g'16] |
+s1 s s
+% 20
+[f'8. f'16] [e'8. g'16]~[g' bes' a' g'] [fis' d' e' cis'] |
+% 21
+[d'16 c' bes a] [g bes a g] [fis a g8] [a16 d bes8] |
+% 22
+[ces'8 d']~[d'16 g' e' g'] s2 |
+s1 s
+% 25
+s4. \skip 4..*64/7;
+% 29
+c'8 [f'16 d' ees' d'] \skip 4..*12/7;
+% 30
+[bes''16 d'' ees''8]~[ees''16 d''8 c''16] |
+% 31
+\skip 4..*40/7;
+% 33
+[bes''16 d'' ees''8]~[ees''16 d''8 c''16] |
+% 34
+\skip 4..*48/7; |
+% 37
+fis'4~fis'16 \skip 4..*27/7; |
+% 39
+[g'16 f' ees' d'] [c' ees' d' c']~[c' bes c'8]~[c'16 d'8 fis'16]~
+% 40
+[fis'16 a' bes' g']~[g' c'' a'd'] <g'4 bes'>
+} >
+ \type Voice=vThree <
+{
+% 1
+\stemdown \skip 4..*23/7;
+% 2
+g16 [g bes a c'] [bes d' c' ees'] |
+% 3
+[d'16 fis' e' g'] [fis' a' d' fis'] [g bes a c'] [bes d' c' ees']
+|
+% 4
+[d16 fis e g] [fis a d fis] [g, bes, a, c] [bes, d c ees] |
+% 5
+[d16 fis e g] fis \stemup [c' bes a] [bes d' g'8]~ [g'16 a'
+fis'8] |
+% 6
+[g'16 ees' d' c'] \stemdown [d' bes a g] [a ees' d' c'] [d'8 a] |
+% 7
+[bes16 d' c' ees'] [d' f' ees' g'] \stemup [a' c'' b' d''] [c''8
+d''] |
+% 8
+[ees''8 f''] [g'' c''] \stemdown [g' e'] [f'16 a' cis' e'] |
+% 9
+[d'16 f' e' g'] [f' a' g' bes'] \stemup [cis''8 d''] [e'' g'] |
+% 10
+\stemdown [d16 f e g] [f a g bes] [a, cis b, d] [cis8 a,] |
+% 11
+[d8 f] [g a] [d g] [cis d] |
+% 12
+a2 d' |
+% 13
+[g'8 e'] [f' cis'] d' a'4 g'8 |
+% 14
+a,4~a,16 \stemup [d'' cis'' b'] [a'' cis'' d'' e''] a' \stemdown
+[f' e' d'] |
+% 15
+a,4~a,16 [f' e' d'] [a' e' cis' e'] [a g' f' e'] |
+% 16
+[a16 f' e' d'] [a e' d' cis'] [d'8 g] [a bes] |
+% 17
+a,16 \stemup [e' f' g'] [e'8 f'] [g' f'16 e'] f' \stemdown [d'
+cis' b] |
+% 18
+a,4~a,16 \stemup [d' cis' b] [a' cis' d' e'] a \stemdown [f e d]
+|
+% 19
+[a16 e cis e] [a, g f e] [a, f e d] [a, e d cis] |
+% 20
+[d8 g] [a a,] d,2 |
+% 21
+d,2 d, |
+% 22
+d,2 d,4 \skip 4..*11/7;
+% 23
+d16 [d fis e g] [fis a g bes] |
+% 24
+[a16 c' bes d'] [c' ees' d' c'] [bes c' a bes] [g a f g] |
+% 25
+[ees16 f d ees] [c d bes, c] [aes, bes, g, aes,] [f, aes, g, f,]
+|
+% 26
+g,4~g,16 \stemup [c'' b' a'] [g'' b' c'' d''] g' \stemdown [ees'
+d' c'] |
+% 27
+g,4~g,16 [ees' d' c'] [g' d' b d'] g \stemup [b' c'' d''] |
+% 28
+[g'16 ees'] \stemdown [d' c'] [g d' c' b] [c' g'] \stemup [d''
+c''] [b'8 c''] |
+% 29
+[d''16 d'] \stemdown g8 [b16 g f ees] [d8 g] c \stemup a' |
+% 30
+bes'8 \stemdown [fis'16 e'] [fis'8 d'] [g' c'] [d' ees'] |
+% 31
+d,4~d,16 \stemup [g'' fis'' e''] [fis'' fis'' g'' a''] d''
+\stemdown [bes' a' g'] |
+% 32
+d4~d16 \stemup [g'' fis'' e''] fis''4 \stemdown [d'16 c'' bes'
+a'] |
+% 33
+[d'16 bes' a' g'] [d' a' g' fis'] [g'8 c'] [d' ees'] |
+% 34
+[d8 d'] \stemup [a' bes'] [c'' bes'16 a'] [bes'8 c''] |
+% 35
+[d''16 fis' g' a'] d' \stemdown [bes a g] d,4~d,16 \stemup [g'
+fis' e'] |
+% 36
+[d''16 fis' g' a'] d' \stemdown [bes a g] d,4~d,16 [bes a g] |
+% 37
+[d'16 a fis a] [d c' bes a] d8 \stemup d''8. [c''16 bes' a'] |
+% 38
+[bes'16 d'' g''8]~[g''16 a''8 fis''16] g''4 s4 |
+% 39
+\stemdown g,2 g, |
+% 40
+g,2 g,4
+}
+{s1 s s s s s s s s s s s s s s s
+%17
+s4 s8 d' s2 |
+s1 s s s s s s s s s s
+% 29
+g'16 s8. s2 s8 fis' |
+%30
+g8 s s2. |
+s1 s s
+%34
+s4. g'8}
+{s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s
+% 29
+b'16}
+ >
+ \type Voice=vFour <
+ {
+\stemdown \skip 4..*74/7;
+% 5
+[g'16 bes a8.] c'16~c'
+% 6
+\skip 4..*81/7;
+% 11
+\stemup [f16 f' e'8] \skip 4..*11/7;
+% 12
+\stemdown [e'16 f' d'] [e' f' g'8] s [fis'16 e'] [fis' g' a'
+fis'] |
+% 13
+s2 s8 a'4 g'8 |
+% 14
+\skip 4..*48/7; |
+% 17
+s2 [g'16 e' d' cis'] \skip 4..*39/7;
+% 20
+\skip 4..*135/7;
+% 28
+aes'8 [b16 g'8 f'16] |
+% 29
+s16 \skip 4..*13/7; s8 |
+% 30
+s8 \skip 4..*68/7;
+% 34
+s8 [c''16 g'8 fis'16] [bes'' g' f' ees'] |
+% 35
+\skip 4..*50/7;
+% 38
+[g''16 c''] [bes'8 a'] s16 [ees'' d'' c'']
+} >>}
+ \paper{barsize=50.0; \translator {\StaffContext \consists
+Bar_number_engraver;}}
+}
+
+----------------------------------------------------
+
%}
\score {
-\header {title ="Domenico Scarlatti - Sonata K.1 L.366";}
-% staffOne is right hand, staffTwo left hand
+\header {title ="Domenico Scarlatti - Sonata K.1 L.366";
+ description="Allegro";}
+% vOne is right hand outside part, vTwo r.h. inside part,
+% vThree left hand outside, vFour l.h. inside.
\notes {
-\type GrandStaff = staffAll <
\type Staff = staffOne <
-\property Voice.pletvisibility = 0
+\property Staff.nolines=11
\keysignature bes;
\time 4/4;
-\clef treble;
+\clef alto;
\type Voice = vOne <
{
% 1
-[d''16 e'' f'' g''] [a'' a' cis'' a'] d''4. e''8 |
+\stemup [d''16 e'' f'' g''] [a'' a' cis'' a'] d''4. e''8 |
% 2
-[f''16 d'' g'' e''] [a'' f'' e'' d''] [cis''8 a''] a''4^\prall |
+[f''16 d'' g'' e''] [a'' f'' e'' d''] [cis''8 a''] a''4^\prall~
% 3
-[a''16 g'' f'' e''] [d'' c'' bes' a'] [bes'8 bes'] [g' bes'] |
+[a''16 g'' f'' e''] [d'' c'' bes' a'] bes'8 \stemdown bes' [g'
+bes'] |
% 4
-[e'8 e'] [e' e'] f f'' f''4^\prall |
+[e'8 e'] [e' e'] f \stemup f'' f''4^\prall~
% 5
-[f''16 e'' d'' c''] [bes' a' g' f'] [g'8 g'] [e' e'] |
+[f''16 e'' d'' c''] [bes' a' g' f'] g'8 \stemdown g' [e' e'] |
% 6
[e'8 a] [a a] [d e] [f g] |
% 7
a16 s b s cis' s d' s e' s f' s g' s a' s |
% 8
-b'16 s cis'' s d'' s e'' s [f'' d'' bes' g'] [e'' cis'' a' cis''] |
+b'16 s cis'' s d'' s e'' s [f'' d'' bes' g'] [e'' cis'' a' cis'']
+|
% 9
-a''4 g''4^\prallmordent [f''16 d'' bes' g'] [e'' cis'' a' cis''] |
+\stemup a''4 g''4^\prallmordent \stemdown [f''16 d'' bes' g']
+[e'' cis'' a' cis''] |
% 10
-[f''16 d'' g'' e''] [a'' f'' e'' d''] [cis'' a' d'' b'] [e'' g' f'
-e'] |
+\stemup [f''16 d'' g'' e''] [a'' f'' e'' d''] [cis'' a' d'' b']
+[e'' g' f' e'] |
% 11
[f'16 d' g' e'] [a' f' e' d'] [cis' a d' b] [e' cis' f' d'] |
% 12
-[g'16 e' d' cis'] [f'8 g'^\prallmordent] [a'16 e' f' d'] [e' cis' d'
-b] |
+g'16 \stemdown [ e' d' cis'] \stemup f'8 [g'16^\prall f'32 g']
+[a'16 e' f' d'] \stemdown [e' cis' d' b] |
% 13
-[cis'16 a b aes] cis'4 a,4^\prall^"\\textnatural" r |
+[cis'16 a b aes] \stemup cis'4 a,4^\prall^"\\textnatural"
+r^\fermata | \break
% 14
[a'16 b' cis'' d''] [e'' cis'' f'' d''] e''4. a'8 |
% 15
-[b'16 g' cis'' a'] [d'' b' e'' cis''] [fis'' d'' g'' e''] [a'' c''
-bes' a'] |
+[b'16 g' cis'' a'] [d'' b' e'' cis''] [fis'' d'' g'' e''] [a''
+c'' bes' a'] |
% 16
-[bes'16 g' c'' a'] [d'' bes' a' g'] [fis' d' g' e'] [a' c' bes a] |
+[bes'16 g' c'' a'] [d'' bes' a' g'] [fis' d' g' e'] [a' c' bes a]
+|
% 17
-g16 s a s bes s c' s d' s e' s f' s g' s |
+\stemdown g16 s a s bes s c' s d' s e' s f' s g' s |
% 18
-[a'16 f' d' bes] [g' e' c' e'] c''4 bes'4^\prallmordent |
+[a'16 f' d' bes] [g' e' c' e'] \stemup c''4 bes'4^\prall |
% 19
[c''8 f''] [bes' e''] [a'16 f' c'' a'] [f'' c'' a'' f''] |
% 20
-[e''16 g'' c'' e''] [g'8 fis'] g'16 s g8 [g g,] |
+[e''16 g'' c'' e''] g'8 \stemdown fis' g'16 s g8 [g g,] |
% 21
-[d8 d'] d'16 [d'' c'' b'] [c'' a' e'' c''] [a'' e'' c''' a''] |
+[d8 d'] d'16 \stemup [d'' c'' b'] [c'' a' e'' c''] [a'' e'' c'''
+a''] |
% 22
-[gis''16 b'' e'' aes''] [b' d'' cis'' b'] [cis''8 a'] [a' a'] |
+[gis''16 b'' e'' aes''] [b' d'' cis'' b'] \stemdown [cis''8 a']
+[a' a'] |
% 23
-f,8 a' [f' f'16 a'] [bes'8 g''] g''4^\prall |
+f,8 a' [f' f'16 a'] \stemup [bes'8 g''] g''4^\prall~ |
% 24
-[g''16 f'' e'' d''] [c'' bes' a'] s f,8 f' [f' f'] |
+[g''16 f'' e'' d''] [c'' bes' a'] s \stemdown f,8 f' [f' f'] |
% 25
-d,8 d' [f' d'16 f'] [g'8 e''] e''4^\prall |
+d,8 d' [f' d'16 f'] \stemup [g'8 e''] e''4^\prall~ |
% 26
-[e''16 d'' cis'' b'] [a' g' f' e'] [f' d' g' e'] [a' f' bes' g'] |
+[e''16 d'' cis'' b'] [a' g' f' e'] [f' d' g' e'] [a' f' bes' g']
+|
% 27
-[f'16 d' g' e'] [a' f' bes' g'] f' s g' s a' s bes' s |
+\stemdown [f'16 d' g' e'] [a' f' bes' g'] \stemup f' s g' s a' s
+bes' s |
% 28
-[a'8 d''] [g' cis''] [f'16 d' bes g] [e' cis' a cis'] |
+[a'8 d''] [g' cis''] \stemdown [f'16 d' bes g] [e' cis' a cis'] |
% 29
-[a'8 d''] [g' e''] [f'16 d' g' e'] [a' f' b' g'] |
+\stemup [a'8 d''] [g' e''] [f'16 d' g' e'] [a' f' b' g'] |
% 30
-[cis''16 a' d'' e''] [f'' d'' e'' cis''] [d'' a' bes' g'] [a' f' g'
-e'] |
+[cis''16 a' d'' e''] [f'' d'' e'' cis''] [d'' a' bes' g']
+\stemdown [a' f' g' e'] |
% 31
-[f'16 d' e' cis'] d'4 d4^\prall r4 |
+[f'16 d' e' cis'] d'4 \stemup d4^\prall r4^\fermata |
} {
s1 s
% 3
% 25
s8 f' d' s s2 |
% 26
-s2 d''4 s |
+\stemup s2 d''4 s |
% 27
-d'16 s e' s f' s g' s s2 |
+\stemdown d'16 s e' s f' s g' s s2 |
% 28
s8 f'' s e'' s2 |
% 29
\type Voice = vTwo <
{s1 s s s s
%6
-s2 d'16 s s4. |
+\stemdown s2 d'16 s s4. |
s1 s s s s s s s s s s s s s s s s s s
%26
-s2 d''4 s |
+\stemup s2 d''4 s |
%27
-s2 d''4}
->>
-\type Staff = staffTwo <
-\property Voice.pletvisibility = 0
-\keysignature bes;
-\time 4/4;
-\clef treble;
+s2 d''4 s2
+s1
+%29
+s2 d''8}
+>
\type Voice = vThree <
{
% 1
-s2 [d'16 e' f' g'] [a' a cis' a] |
+\stemdown s2 [d'16 e' f' g'] [a' a cis' a] |
% 2
[d'8 e'] [f' g'] [a' a'] [a' a'] |
% 3
-[a'8 a'] [a' f'] g g'' g''4^\prall |
+[a'8 a'] [a' f'] g \stemup g'' g''4^\prall~
% 4
-[g''16 f'' e'' d''] [c'' bes' a' g'] [a'8 a'] [f' a'] |
+[g''16 f'' e'' d''] [c'' bes' a' g'] a'8 \stemdown a' [f' a'] |
% 5
-[d'8 f'] [d' d'] e e'' e''4^\prall |
+[d'8 f'] [d' d'] e \stemup e'' e''4^\prall~
% 6
[e''16 d'' cis'' b'] [a' g' f' e'] [f' d' g' e'] [a' f' e' d'] |
% 7
% 8
[d''16 b' e'' cis''] [f'' d'' g'' e''] a''4 g''4^\prallmordent |
% 9
-[f''16 d'' bes' g'] [e'' cis'' a' cis''] a''4 g''4^\prallmordent |
+\stemdown [f''16 d'' bes' g'] [e'' cis'' a' cis''] \stemup a''4
+g''4^\prallmordent |
% 10
-[d'8 e'] [f' g'] [a b] [cis' a] |
+\stemdown [d'8 e'] [f' g'] [a b] [cis' a] |
% 11
[d8 e] [f g] a16 s b s cis' s d' s |
% 12
-e16 [g' f' e'] [d'8 bes] a,4 s8 f' |
+e16 \stemup [g' f' e'] \stemdown [d'8 bes] a,4 s8 \stemup f' |
% 13
-[e'8 d'] [a16 e cis e] s2 |
+[e'8 d'] \stemdown [a16 e cis e] s2 |
% 14
s2 [a16 b cis' d'] [e' cis' f' d'] |
% 15
% 16
[g8 a8] [bes c'] [d e] [fis d] |
% 17
-[bes16 g c' a] [d' bes e' c'] [f' d' g' e'] [a' f' bes' g'] |
+\stemup [bes16 g c' a] [d' bes e' c'] [f' d' g' e'] [a' f' bes'
+g'] |
% 18
-c''4 bes'4^\prallmordent [a'16 f' d' bes] [g' e' c' e'] |
+c''4 bes'4^\prall \stemdown [a'16 f' d' bes] [g' e' c' e'] |
% 19
[a'16 f' d' bes] [g' e' c' e'] f' s f8 [f f,] |
% 20
-[c8 c'] [c'16 c'' bes' a'] [bes' g' d'' bes'] [g'' d'' bes'' g''] |
+[c8 c'] c'16 \stemup [c'' bes' a'] [bes' g' d'' bes'] [g'' d''
+bes'' g''] |
% 21
-[f''16 a'' d'' f''] [a'8 gis'] a'16 s a8 [a a,] |
+[f''16 a'' d'' f''] a'8 \stemdown gis' a'16 s a8 [a a,] |
% 22
-[e8 e,] [e, e,] a, a'' a''4^\prall^"\\textflat" |
+[e8 e,] [e, e,] a, \stemup a'' a''4^\prall^"\\textflat"~ |
% 23
-[a''16 g'' f'' e''] [d'' c'' bes'] s g,8 bes' [bes' bes'] |
+[a''16 g'' f'' e''] [d'' c'' bes'] s \stemdown g,8 bes' [bes'
+bes'] |
% 24
-e,8 e' [g' e'16 g'] [a'8 f''] f''4^\prall |
+e,8 e' [g' e'16 g'] \stemup [a'8 f''] f''4^\prall~ |
% 25
-[f''16 e'' d'' c''] [bes' a' g'] s e,8 g' [g' g'] |
+[f''16 e'' d'' c''] [bes' a' g'] s \stemdown e,8 g' [g' g'] |
% 26
a,8 a [e' a] d'16 s e' s f' s g' s |
% 27
s2 [d'16 d' e' e'] [f' f' g' g'] |
% 28
-[f'16 d' bes g] [e' cis' a cis'] [a'8 d''] [g' e''] |
+[f'16 d' bes g] [e' cis' a cis'] \stemup [a'8 d''] [g' e''] |
% 29
-[f'16 d' bes g] [e' cis' a cis'] [d8 e] [f g] |
+\stemdown [f'16 d' bes g] [e' cis' a cis'] [d8 e] [f g] |
% 30
-[a8 g] [a a,] d4 s8 bes' |
+[a8 g] [a a,] d4 s8 \stemup bes' |
% 31
-[a'8 g'] [f'16 a f a] s2 |
+[a'8 g'] f'16 \stemdown [a f a] s2 |
} {
s1 s
% 3
s1 s s s s s s s s s s s s s s s s
% 23
s2 s8 g' g' g' |
-% 24
+ii% 24
s8 g' e' s s2 |
% 25
s2 s8 e' e' e' |
% 26
s8 e' a s s2 |
-% 27
-d''4 s s2 |
+s1
% 28
s2 s8 f'' s cis'' |
} >
\type Voice = vFour <
{s1 s s s s s s s s
%10
-d''16 s s4. a'16 s s4. |
+\stemdown d''16 s s4. a'16 s s4. |
%11
d'16 s s4. s2 |
s1 s s
s2 d''16 s s4. |
%16
g'16 s s4. d'16 s s4. |
-s1 s s s s s s s s s s s
+s1 s s s s s s s s s
+%27
+\stemup d''4 s2. |
+s1
%29
-s2 d'16}
->>
+\stemdown s2 d'16}
+>
>}
-\paper{indent=0.0; \translator {\ScoreContext \consists
+\paper{barsize=50.0; \translator {\StaffContext \consists
Bar_number_engraver;}}
}
-
-
--- /dev/null
+
+
+\score {
+ \header {title="Domenico Scarlatti - Sonata K.2 L.388";
+ description="Presto";}
+ % vOne is right hand outside part, vTwo r.h. inside part,
+ % vThree left hand outside, vFour l.h. inside.
+ \notes {
+ \type Staff=staffOne <
+ \property Staff.nolines=11
+ \property Voice.pletvisibility=0
+ \keysignature fis;
+ \time 3/8;
+ \clef alto;
+ \type Voice=vOne <{
+%1
+\stemup [g''8 g' g'] |
+% 2
+g'4.^\prall |
+% 3
+[g'16 d' b' g' d'' b'] |
+% 4
+g''4. |
+% 5
+[b'8 c'' d''] |
+% 6
+c''4 b'8 |
+% 7
+[c''16 a'' b' g'' a' fis''] |
+% 8
+[b'16 g'' a' fis'' g''8] |
+% 9
+\stemdown [g'8 a' b'] |
+% 10
+[a'8 fis' g'] |
+% 11
+[c'8 d' d] |
+% 12
+[g8 d g,] |
+% 13
+[b'16 d'' a' d'' g' cis''] |
+% 14
+[fis'16 d'' e'' cis'' d'' a'] |
+% 15
+\stemup [g''8 fis'' e''] |
+% 16
+a''8 s4 |
+% 17
+[d''16 a' cis'' a' b' gis'] |
+% 18
+[e''16 a' b' gis' a' e'] |
+% 19
+\stemdown [fis'8 e' d'] |
+% 20
+cis'8 s4 |
+% 21
+\stemup [d''16 g' a'' fis' cis'' e'] |
+% 22
+[d''16 a' fis'] s8. |
+% 23
+\stemdown [b8 a g] |
+% 24
+fis8 s16 \stemup [d' fis' a'] |
+% 25
+[d''16 g' a'' f' cis'' e'] |
+% 26
+[d''16 a' f'] s8. |
+% 27
+\stemdown [bes8 a g] |
+% 28
+f8 s16 \stemup [d' f' a'] |
+% 29
+[d''16 g' cis'' fis' b' e'] |
+% 30
+[a'16 d' g' cis' fis' d'] |
+% 31
+[g'16 e' fis' d' e' cis'] |
+% 32
+[d'8 cis' b] |
+% 33
+[a8 g' fis'] |
+% 34
+[e'8 d'8. cis'16] |
+% 35
+[d'16 a fis' d' a' fis'] |
+% 36
+[d''16 a' fis'' d'' a'' a'] |
+% 37
+d''4. | \break
+% 38
+[d''8 d' d'] |
+% 39
+d'4.^\prall |
+% 40
+[d'16 a fis' d' a' fis'] |
+% 41
+d''4.^\prall |
+% 42
+[fis'8 g' a'] |
+% 43
+g'4^\prall fis'8 |
+% 44
+[g'16 e'' fis' d'' e' cis''] |
+% 45
+[fis'16 d'' e' cis'' d''8] |
+% 46
+\stemdown [d'8 e' fis'] |
+% 47
+[e'8 cis' d'] |
+% 48
+[g8 a a,] |
+% 49
+[d8 a, d,] |
+% 50
+\stemup [d''16 a' c'' a' b' gis'] |
+% 51
+[e''16 a' b' gis' a' e'] |
+% 52
+\stemdown [f'8 e' d'] |
+% 53
+c'8 s4 |
+% 54
+[e'8 d' c'] |
+% 55
+b8 s4 |
+% 56
+\stemup [c''16 g' b' g' a' fis'] |
+% 57
+[d''16 g' a' fis' g' d'] |
+% 58
+\stemdown [e'16 c'' d' b' c' a'] |
+% 59
+[b16 g' a fis' g g'] |
+% 60
+[c'8 d' e'] |
+% 61
+d'8 s4 |
+% 62
+[e8 d c] |
+% 63
+b,8 s \stemup [b16 d'] |
+% 64
+[g'16 c' d'' b fis' a] |
+% 65
+[g'16 d' b g] s8 |
+% 66
+\stemdown [ees8 d c] |
+% 67
+bes,8 s \stemup [ais16 d'] |
+% 68
+[g'16 c' d'' bes fis' a] |
+% 69
+[g'16 d' ais g] s8 |
+% 70
+[g''16 c'' fis'' b' e'' a'] |
+% 71
+[d''16 g' c'' fis' b' g'] |
+% 72
+[c''16 a' b' g' a' fis'] |
+% 73
+[g'8 fis' e'] |
+% 74
+[d'8 c' b] |
+% 75
+[a16 c' b g' a fis'] |
+% 76
+[g'16 d' b g b d'] |
+% 77
+[g'16 d' b' g' d'' d'] |
+% 78
+g'4. |}
+{s1 s s s s
+%6
+d4
+ }>
+ \type Voice=vThree <{
+% 1
+\stemdown s4. |
+% 2
+[g8 g, g,] |
+% 3
+g,4. |
+% 4
+[g16 d b g d' b] |
+% 5
+[g'8 a' b'] |
+% 6
+[a'8 fis' g'] |
+% 7
+[c'8 d' fis'] |
+% 8
+[g'8 d' g] |
+% 9
+\stemup [b'8 c'' d''] |
+% 10
+c''4^\prall b'8 |
+% 11
+[c''16 a'' b' g'' a' fis''] |
+% 12
+[b'16 g'' a' fis'' g''8] |
+% 13
+[g''8 fis'' e''] |
+% 14
+a''8 s4 |
+% 15
+\stemdown [b'16 d'' a' d'' g' cis''] |
+% 16
+[fis'16 d'' e'' cis'' d'' a'] |
+% 17
+[fis'8 e' d'] |
+% 18
+cis'8 s4 |
+% 19
+\stemup [d''16 a' cis'' a' b' gis'] |
+% 20
+[e''16 a' b' gis' a' e'] |
+% 21
+\stemdown [b8 a g] |
+% 22
+fis8 s16 \stemup [d' fis' a'] |
+% 23
+[d''16 g' a'' fis' cis'' e'] |
+% 24
+[d''16 a' fis'] s8. |
+% 25
+\stemdown [bes8 a g] |
+% 26
+f8 s16 \stemup [d' f' a'] |
+% 27
+[d''16 g' a'' f' cis'' e'] |
+% 28
+[d''16 a' f'] s8. |
+% 29
+\stemdown [b8 a g] |
+% 30
+[fis8 e d] |
+% 31
+[g8 a a,] |
+% 32
+[b,16 g a, fis g, e] |
+% 33
+[fis,16 d e, cis d, d] |
+% 34
+[g,16 e a, fis e8] |
+% 35
+d,4. |
+% 36
+d,4. |
+% 37
+d,4. |
+% 38
+s4. |
+% 39
+[d8 d, d,] |
+% 40
+d,4. |
+% 41
+[d16 a, fis d a fis] |
+% 42
+[d'8 e' fis'] |
+% 43
+[e'8 cis' d'] |
+% 44
+[g8 a cis'] |
+% 45
+[d'8 a d] |
+% 46
+\stemup [fis'8 g' a'] |
+% 47
+g'4^\prall fis'8 |
+% 48
+[g'16 e'' fis' d'' e' cis''] |
+% 49
+[fis'16 d'' e' cis'' d''8] |
+% 50
+\stemdown [f'8 e' d'] |
+% 51
+c'8 s4 |
+% 52
+\stemup [d''16 a' c'' a' b' gis'] |
+% 53
+[e''16 a' b' gis' a' e'] |
+% 54
+[c''16 g' b' g' a' fis'] |
+% 55
+[d''16 g' a' fis' g' d'] |
+% 56
+\stemdown [e'8 d' c'] |
+% 57
+b8 s4 |
+% 58
+\stemup [g''8 fis'' e''] |
+% 59
+[d''8 c'' b'] |
+% 60
+[a'16 b' c'' b' a' g'] |
+% 61
+[a'16 fis' g' e' fis' d'] |
+% 62
+[g'16 c' d'' b fis' a] |
+% 63
+[g'16 d' b g] s8 |
+% 64
+\stemdown [e8 d c] |
+% 65
+b,8 s \stemup [b16 d'] |
+% 66
+[g'16 c' d'' bes fis' a] |
+% 67
+[g'16 d' bes g] s8 |
+% 68
+\stemdown [ees8 d c] |
+% 69
+bes,8 s [bes16 d'] |
+% 70
+[e'8 d' c'] |
+% 71
+[b8 a g] |
+% 72
+[c'8 d' d] |
+% 73
+[e16 c' d b c a] |
+% 74
+[b,16 g a, fis g, g] |
+% 75
+[c8 d d,] |
+% 76
+g,4. |
+% 77
+g,4. |
+% 78
+g,4. |
+ } >
+ >}
+ \paper{barsize=50.0; \translator {\StaffContext \consists
+Bar_number_engraver;}}
+}
+
--- /dev/null
+
+\score {
+ \header {title="Domenico Scarlatti - Sonata K.4 L.390";
+ description="Allegro";}
+ % vOne is right hand outside part, vTwo r.h. inside part,
+ % vThree left hand outside, vFour l.h. inside.
+ \notes {
+ \type Staff=staffOne <
+ \property Staff.nolines=11
+ \keysignature bes;
+ \time 4/4;
+ \clef alto;
+ \type Voice=vOne <
+{
+% 1
+\stemup \skip 4..*15/7; g'16 |
+% 2
+[g'16 bes' a' c''] [bes' d'' c'' ees''] d''4. g''8 |
+% 3
+[fis''8 g''] [a'' c''] [bes' c''] [d'' g'] |
+% 4
+[fis'8 g'] [a' c'] [bes c'] [d' g'] |
+% 5
+[fis'8 g'] a' \stemdown d [g bes,] [c d] |
+% 6
+[g,8 g8.] s16 \stemup ees'8 [f' a'] [bes'16 ees'' d'' c''] |
+% 7
+[d''8 ees''] [f'' bes'] \stemdown [f' d'] [ees'16 g' b d'] |
+% 8
+[c'16 ees' d' f'] [ees' g' f' aes'] \stemup [b' d'' cis'' e'']
+[d''8 e''] |
+% 9
+[f''8 g''] [a'' d''] \stemdown [a16 cis' b d'] [cis' e' a cis'] |
+% 10
+\stemup [f'8 g'] [a' d'] [cis' d'] [e'16 g' f' e'] |
+% 11
+[f'16 a' d''8]~[d''16 e'' c''8]~[c''16 d'' bes' g'] [a' e'' f''8]
+|
+% 12
+e''8 d''4~[d''16 cis''] [d'' bes' a' g'] [a' bes' cis'' a'] |
+% 13
+[bes'16 cis'' d'' e''] [a' g'' f'' e''] [f'' e'' d'' c''] [d''
+e'' f'' g''] |
+% 14
+[a''16 cis'' d'' e''] a' \stemdown [f' e' d'] a,4~a,16 \stemup
+[d'' cis'' b'] |
+% 15
+[a''16 cis'' d'' e''] [a' d'' cis'' b'] cis''4~[cis''16 cis'' d''
+e''] |
+% 16
+[a'8 a''8]~[a''16 g'' f'' e''] [f''8 e''16 d''] [cis''8 d''] |
+% 17
+cis''4 \stemdown [cis'16 a g f] [e8 a] d \stemup g' |
+% 18
+[a'16 cis' d' e'] a \stemdown [f e d] a,4~a,16 \stemup [d' cis'
+b] |
+% 19
+cis'4~[cis'16 cis' d' e'] [a8 a']~[a'16 g' f' e'] |
+% 20
+[f'16 a' d''8]~[d''16 e'' cis''8] d''4 [a'8 g'] |
+% 21
+fis'8 d'4 cis'8 [d'8. e'16] [fis'8. g'16]~
+% 22
+[g'16 a'8 fis'16] [bes'8. cis''16] [cis''8 d''] r8. d'16 |
+% 23
+[d'16 fis' e' g'] [fis' a' g' bes'] a'4. bes'8 |
+% 24
+[c''8 d''] [ees'' fis'] [g' a'] [bes' b'] |
+% 25
+[c''8 d''] [ees'' g''] [f'' ees''] [d'' c''] |
+% 26
+[g''16 b' c'' d''] g' \stemdown [ees' d' c'] g,4~g,16 \stemup
+[c'' b' a'] |
+% 27
+[g''16 b' c'' d''] [g' c'' b' a'] b'4~b'16 \stemdown [f' ees' d']
+|
+% 28
+g8 \stemup g''8~[g''16 f'' ees'' d''] ees''8 \stemdown f [g aes]
+|
+% 29
+g,8 \stemup [ees'16 f'] [d'8 ees'] [f' g'] g'16 \stemdown [c' bes
+a] |
+% 30
+[g16 g'] \stemup cis''8 [d''16 c''' bes'' a''] [bes''8 a''16 g'']
+[fis''8 g''] |
+% 31
+[a''16 fis'' g'' a''] d'' \stemdown [bes' a' g'] d,4~d,16 \stemup
+[g'' fis'' e''] |
+% 32
+[fis''16 fis'' g'' a''] d'' \stemdown [bes' a' g'] [d'' a' fis'
+a'] s \stemup [fis''16 g'' a''] |
+% 33
+d''8 g''8~[g''16 c''' bes'' a''] [bes''8 a''16 g''] [fis''8 g'']
+|
+% 34
+[a''16 a' bes' c''] \stemdown [fis' d' c' bes] [a8 d] g s |
+% 35
+d4~d16 \stemup [g' fis' e'] [d'' fis' g' a'] d' \stemdown [bes a
+g] |
+% 36
+d,4~d,16 \stemup [g' fis' e'] d'' [fis' g' a'] [d' g'] [fis' e']
+|
+% 37
+d''4~d''16 [fis' g' a'] d' \stemdown [bes a g] [d a g fis] |
+% 38
+[g8 ees] [d d,] g,4 \stemup [bes'16 g' a' fis'] |
+% 39
+bes'8 g'4 fis'8 [g'8. a'16] [bes'8 c''] |
+% 40
+[d''8. d''16] [ees''8 fis'' ] [fis'' g''] r8. s16 |
+}
+{
+s1 s s s s s s s s s s
+%12
+cis''8 s s4 s2 |
+s1 s s s
+% 17
+<e''4 a'> s4 s2 |
+s1 s s s
+%22
+s4 s8. a'16 d'4 s4 |
+s1
+%24
+s2 s4. d'8 |
+%25
+ees'8 f' g' s s2 |
+s1 s s
+%29
+s4. c'8 s4 ees'16
+}
+ >
+ \type Voice=vTwo <
+ {
+s1 s s s s s s s s s
+% 11
+\stemdown s4. [c''16 g'] fis'8 s8 [a'8. b'16] |
+% 12
+s16 \skip 4..*71/7;
+% 16
+[f''16 a' bes'8]~[bes'16 a'8 g'16] |
+s1 s s
+% 20
+[f'8. f'16] [e'8. g'16]~[g' bes' a' g'] [fis' d' e' cis'] |
+% 21
+[d'16 c' bes a] [g bes a g] [fis a g8] [a16 d bes8] |
+% 22
+[ces'8 d']~[d'16 g' e' g'] s2 |
+s1 s
+% 25
+s4. \skip 4..*64/7;
+% 29
+c'8 [f'16 d' ees' d'] \skip 4..*12/7;
+% 30
+[bes''16 d'' ees''8]~[ees''16 d''8 c''16] |
+% 31
+\skip 4..*40/7;
+% 33
+[bes''16 d'' ees''8]~[ees''16 d''8 c''16] |
+% 34
+\skip 4..*48/7; |
+% 37
+fis'4~fis'16 \skip 4..*27/7; |
+% 39
+[g'16 f' ees' d'] [c' ees' d' c']~[c' bes c'8]~[c'16 d'8 fis'16]~
+% 40
+[fis'16 a' bes' g']~[g' c'' a'd'] <g'4 bes'>
+} >
+ \type Voice=vThree <
+{
+% 1
+\stemdown \skip 4..*23/7;
+% 2
+g16 [g bes a c'] [bes d' c' ees'] |
+% 3
+[d'16 fis' e' g'] [fis' a' d' fis'] [g bes a c'] [bes d' c' ees']
+|
+% 4
+[d16 fis e g] [fis a d fis] [g, bes, a, c] [bes, d c ees] |
+% 5
+[d16 fis e g] fis \stemup [c' bes a] [bes d' g'8]~ [g'16 a'
+fis'8] |
+% 6
+[g'16 ees' d' c'] \stemdown [d' bes a g] [a ees' d' c'] [d'8 a] |
+% 7
+[bes16 d' c' ees'] [d' f' ees' g'] \stemup [a' c'' b' d''] [c''8
+d''] |
+% 8
+[ees''8 f''] [g'' c''] \stemdown [g' e'] [f'16 a' cis' e'] |
+% 9
+[d'16 f' e' g'] [f' a' g' bes'] \stemup [cis''8 d''] [e'' g'] |
+% 10
+\stemdown [d16 f e g] [f a g bes] [a, cis b, d] [cis8 a,] |
+% 11
+[d8 f] [g a] [d g] [cis d] |
+% 12
+a2 d' |
+% 13
+[g'8 e'] [f' cis'] d' a'4 g'8 |
+% 14
+a,4~a,16 \stemup [d'' cis'' b'] [a'' cis'' d'' e''] a' \stemdown
+[f' e' d'] |
+% 15
+a,4~a,16 [f' e' d'] [a' e' cis' e'] [a g' f' e'] |
+% 16
+[a16 f' e' d'] [a e' d' cis'] [d'8 g] [a bes] |
+% 17
+a,16 \stemup [e' f' g'] [e'8 f'] [g' f'16 e'] f' \stemdown [d'
+cis' b] |
+% 18
+a,4~a,16 \stemup [d' cis' b] [a' cis' d' e'] a \stemdown [f e d]
+|
+% 19
+[a16 e cis e] [a, g f e] [a, f e d] [a, e d cis] |
+% 20
+[d8 g] [a a,] d,2 |
+% 21
+d,2 d, |
+% 22
+d,2 d,4 \skip 4..*11/7;
+% 23
+d16 [d fis e g] [fis a g bes] |
+% 24
+[a16 c' bes d'] [c' ees' d' c'] [bes c' a bes] [g a f g] |
+% 25
+[ees16 f d ees] [c d bes, c] [aes, bes, g, aes,] [f, aes, g, f,]
+|
+% 26
+g,4~g,16 \stemup [c'' b' a'] [g'' b' c'' d''] g' \stemdown [ees'
+d' c'] |
+% 27
+g,4~g,16 [ees' d' c'] [g' d' b d'] g \stemup [b' c'' d''] |
+% 28
+[g'16 ees'] \stemdown [d' c'] [g d' c' b] [c' g'] \stemup [d''
+c''] [b'8 c''] |
+% 29
+[d''16 d'] \stemdown g8 [b16 g f ees] [d8 g] c \stemup a' |
+% 30
+bes'8 \stemdown [fis'16 e'] [fis'8 d'] [g' c'] [d' ees'] |
+% 31
+d,4~d,16 \stemup [g'' fis'' e''] [fis'' fis'' g'' a''] d''
+\stemdown [bes' a' g'] |
+% 32
+d4~d16 \stemup [g'' fis'' e''] fis''4 \stemdown [d'16 c'' bes'
+a'] |
+% 33
+[d'16 bes' a' g'] [d' a' g' fis'] [g'8 c'] [d' ees'] |
+% 34
+[d8 d'] \stemup [a' bes'] [c'' bes'16 a'] [bes'8 c''] |
+% 35
+[d''16 fis' g' a'] d' \stemdown [bes a g] d,4~d,16 \stemup [g'
+fis' e'] |
+% 36
+[d''16 fis' g' a'] d' \stemdown [bes a g] d,4~d,16 [bes a g] |
+% 37
+[d'16 a fis a] [d c' bes a] d8 \stemup d''8. [c''16 bes' a'] |
+% 38
+[bes'16 d'' g''8]~[g''16 a''8 fis''16] g''4 s4 |
+% 39
+\stemdown g,2 g, |
+% 40
+g,2 g,4
+}
+{s1 s s s s s s s s s s s s s s s
+%17
+s4 s8 d' s2 |
+s1 s s s s s s s s s s
+% 29
+g'16 s8. s2 s8 fis' |
+%30
+g8 s s2. |
+s1 s s
+%34
+s4. g'8}
+{s1 s s s s s s s s s s s s s s s s s s s s s s s s s s s
+% 29
+b'16}
+ >
+ \type Voice=vFour <
+ {
+\stemdown \skip 4..*74/7;
+% 5
+[g'16 bes a8.] c'16~c'
+% 6
+\skip 4..*81/7;
+% 11
+\stemup [f16 f' e'8] \skip 4..*11/7;
+% 12
+\stemdown [e'16 f' d'] [e' f' g'8] s [fis'16 e'] [fis' g' a'
+fis'] |
+% 13
+s2 s8 a'4 g'8 |
+% 14
+\skip 4..*48/7; |
+% 17
+s2 [g'16 e' d' cis'] \skip 4..*39/7;
+% 20
+\skip 4..*135/7;
+% 28
+aes'8 [b16 g'8 f'16] |
+% 29
+s16 \skip 4..*13/7; s8 |
+% 30
+s8 \skip 4..*68/7;
+% 34
+s8 [c''16 g'8 fis'16] [bes'' g' f' ees'] |
+% 35
+\skip 4..*50/7;
+% 38
+[g''16 c''] [bes'8 a'] s16 [ees'' d'' c'']
+} >>}
+ \paper{barsize=50.0; \translator {\StaffContext \consists
+Bar_number_engraver;}}
+}
--- /dev/null
+#
+
+depth = ../..
+
+examples=gnossienne-4 petite-ouverture-a-danser
+LOCALSTEPMAKE_TEMPLATES=mutopia
+
+include $(depth)/make/stepmake.make
+
+
--- /dev/null
+\header {
+ filename = "gnossienne-4.ly";
+ title = "Gnossienne";
+ subtitle = "4";
+ source = "";
+ composer = "Erik Satie (1866-1925)";
+ enteredby = "jcn";
+ copyright = "Public Domain";
+}
+
+%{
+ Tested Features: cross staff beams and slurs, grace notes, no bars
+%}
+
+\version "1.0.14";
+
+\include "nederlands.ly"
+
+global = \notes {
+ \key a \minor;
+ \time 6/4;
+% \cadenza 1;
+ \skip 1.*34;
+ \bar ".|";
+}
+
+upper = \type Staff=treble \notes\relative c''{
+ \clef violin;
+ \stemup
+ \type Voice=one
+ r2 r r
+ r2 r r
+ r4 [a'8--(\< a--] [a-- a-- c-- \!b--] [a--\> gis f \!e]
+ % grace hack
+ < { [es8 )c] } \type Voice=x { \stemup s8*1/2 \tiny b8*1/2 ~ } > r4 r2 r
+ r2 r r
+ r4 [a'8--(\< a--] [a-- a-- c-- \!b--] [a--\> gis f \!e]
+ < { [es8 )c] } \type Voice=x { \stemup s8*1/2 \tiny b8*1/2 ~ } > r4 r2 r
+ r4 [g16( a bes a] [g a bes a g a bes a] [g a bes a g fis es fis]
+ )d4 \tiny fis8*1/2 ~ \normalsize gis4*3/4 ~ gis8 r r4 r2
+ r4 [g16( a bes a] [g a bes a g a bes a] [g a bes a g fis es fis]
+ )d4 \tiny fis8*1/2 ~ \normalsize gis4*3/4 ~ gis8 r r4 r2
+ \tiny a8*1/2 ~ \normalsize f4*3/4 ~ f8 r r2 r
+ r2 r4 [a8( b][c d c b] \tiny b8*1/2 ~ \normalsize
+ < { [e8*1/2 )g,8] } \type Voice=x { \stemup s8*1/4 \tiny a8*1/2 ~ } > r4 r2 r
+ r2 r4 [a8( b][c d c b] [a b c d][c b a b][c d c b]
+ \tiny b8*1/2 ~ \normalsize
+ < { [e8*1/2 )g,8] } \type Voice=x { \stemup s8*1/4 \tiny a8*1/2 ~ } > r4 r2 r
+ a2( \tiny e'8*1/2 ~ \normalsize f4*3/4 ~ )f8 r r2
+ r2 r r
+ fis,4( \tiny dis8*1/2 \normalsize <)cis4*3/4 ais> r2 r
+ \tiny b'8*1/2 ~ \normalsize
+ < { [a8*1/2 a8] } \type Voice=x { \stemup s8*1/4 \tiny b8*1/2 ~ } > r4 r2 r
+ r4 [a'8--(\< a--] [a-- a-- c-- \!b--] [a--\> gis f \!e]
+ < { [es8 )c] } \type Voice=x { \stemup s8*1/2 \tiny b8*1/2 ~ } > r4 r2 r
+ d,4( \tiny fis8*1/2 ~ \normalsize gis4*3/4 ~ )gis8 r r4 r2
+ f4 ~ f8 r r2 r
+ [f'8( g a b][a g f g][a b a g]
+ \tiny f8*1/2 ~ \normalsize
+ < { [g8*1/2 )e8] } \type Voice=x { \stemup s8*1/4 \tiny d8*1/2 ~ } > r4 r2 r
+ [f8( g a b][a g f g][a b a g]
+ \tiny f8*1/2 ~ \normalsize
+ < { [g8*1/2 )e8] } \type Voice=x { \stemup s8*1/4 \tiny d8*1/2 ~ } > r4 r2 r
+ a,2( \tiny e'8*1/2 ~ \normalsize f4*3/4 ~ )f8 r r2
+ r2 r r
+ fis,4( \tiny dis8*1/2 \normalsize <)cis4*3/4 ais> r2 r
+ <e1 g b e> ~ <e g b e>
+}
+
+basloopje = \notes\relative c{
+ d,8( a' d f a d f d a f d )a
+}
+
+bassbeam = \notes{
+ [s2] [s8 \translator Staff=treble s s s] [\translator Staff=bass s2]
+% [s2] [s2] [s2]
+}
+
+lower = \type Voice=two \notes \relative c{
+ \stemdown
+ \property Staff.slurydirection = 1
+
+ % snapnie, hoevaak relative c heeft ze nodig?
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose a \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose a \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ % huh? d'
+ < \transpose d' \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose d' \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose e' \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose bes \notes\relative c{ \basloopje } \bassbeam >
+ < \transpose a \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose d' \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose d' \notes\relative c{ \basloopje } \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \notes\relative c \basloopje \bassbeam >
+ < \transpose e' \notes\relative c{ \basloopje } \bassbeam >
+ < e1 b' e> ~ < e b' e>
+}
+
+\score {
+ \type GrandStaff <
+ \type Staff = treble <
+ \global
+ \upper
+ >
+ \type Staff = bass <
+ \global
+ \clef bass;
+ \lower
+ >
+ >
+
+ \paper {
+ gourlay_maxmeasures = 4.;
+ indent = 8.\mm;
+ textheight = 295.\mm;
+
+ % no slur damping
+ slur_slope_damping = 100.0;
+
+ \translator{ \OrchestralScoreContext }
+ \translator{
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator{
+ \StaffContext
+ % don't auto-generate bars: not a good idea: -> no breakpoints
+ % barAuto = "0";
+ % urg defaultBarType = "";
+ defaultBarType = "empty";
+ \remove "Time_signature_engraver";
+ }
+ }
+ \midi {
+ \tempo 4 = 54;
+ }
+}
+
--- /dev/null
+\header {
+ filename = "petite-ouverture-a-danser.ly";
+ title = "Petite Ouverture \\`a danser";
+ subtitle = "4";
+ source = "";
+ composer = "Erik Satie (1866-1925)";
+ enteredby = "jcn";
+ copyright = "Public Domain";
+}
+
+%{
+ Tested Features:
+%}
+
+\version "1.0.14";
+
+\include "nederlands.ly"
+
+global = \notes {
+ \key a \minor;
+ \time 2/4;
+ s2*10
+ \bar "||";
+ s2*11
+ \bar "||";
+ \time 3/4;
+ s2.
+ \bar "||";
+ \time 2/4;
+ s2*4
+ \bar "||";
+ \time 3/4;
+ s2.*2
+ \bar "||";
+ \time 2/4;
+ s2*18
+ \bar ".|";
+}
+
+i = \type Staff \notes\relative c''{
+ \type Voice=i
+ \stemup
+
+ c8.( es16 bes4 ~ | )bes8 r c8.( bes16 | des4 c8. bes16 | c4 ~ ) c8 r |
+ c4( f,8. as16 | bes4 ~ )bes8 r | f8.( es16 f4 | es )f |
+ g8.( es16 f4 ~ | )f f8 r
+
+ % Au mouvement
+ f4 ( g | a2 ~ | )a | a4-- a-> ~ | a8 r b!8.( a16 | )b4 c-- ~ |
+ c8 r b8.( d16 | a4 ~ )a8 r | d4( cis | c! b8. d16 | a4 ~ )a8 r
+
+ a8.( g16 a4 ~ ) a8 r |
+
+ a4-> ~ a8 r | g8.( a16 )fis4 | e8.( d16 e4 | fis ~ ) fis8 r
+
+ d4( d-- ~ )d8 r e4( f!2 ~ |
+
+ f4 ~ )f8 r | es4( g | as bes ~ | )bes c( | )b!2 | c4( d | )bes2 | c4~ c8 r |
+
+ % copy from begin: 1-10
+ c8.( es16 bes4 ~ | )bes8 r c8.( bes16 | des4 c8. bes16 | c4 ~ ) c8 r |
+ c4( f,8. as16 | bes4 ~ )bes8 r | f8.( es16 f4 | es )f |
+% g8.( es16 f4 ~ | )f f8 r ?
+ g8.( es16 f4 ~ | )f ~ f8 r
+
+}
+
+ii = \type Staff \notes\relative c'{
+ \type Voice=ii
+ \stemdown
+
+ r8 <es as> r <des f> | r <es g> r <es as> | r <f as> r <f as> |
+ r <es g> r <es g> | r <es as> r <as, des> | r <des f> r <des f> |
+ r <as des> r <bes des> | r bes r <as c> | r <g des'> r <bes d> |
+ r <a! c> r <a c>
+
+ % Au movement
+ r <as des> r <c e> | r <c f> r <d! f> | r <cis e> r <cis e> |
+ r <c! f> r <d f> | r <d f> r <d g> | r <e g> r <e g> | r <e g> r <d g> |
+ r <d fis> r <d fis> | r <fis b> r <fis a> | r <e a> r <d g> |
+ r <d fis> r <d fis> |
+
+ r <cis e> r <cis fis> r <cis f> |
+
+ r <cis e> r <cis e> | r <b d> r <a d> | r <g b> r <a cis> |
+ r <a cis> r <a cis> |
+
+ \translator Staff=bass\stemup
+ r <g b> r <fis a> r <fis a> | r <g bes>
+ \translator Staff=treble\stemdown
+ r <a c> r <a d> |
+
+ r <bes d> r <bes d> | r <g c> r <bes d> | r <c es> r <d g> |
+ r <d f> r <es g> | r <e! g> r <d fis> | r <e a> r <fis a> |
+ r <es g> r <es g> | r <es g> r <es g> |
+
+
+ % copy from begin: 1-10
+ r8 <es as> r <des f> | r <es g> r <es as> | r <f as> r <f as> |
+ r <es g> r <es g> | r <es as> r <as, des> | r <des f> r <des f> |
+ r <as des> r <bes des> | r bes r <as c> | r <g des'> r <bes d> |
+ r <a! c> r <a c>
+
+}
+
+lower = \type Staff \notes \relative c{
+ \type Voice=iii
+
+ <as4 as'> <es es'> | r <as as'> | <des, des'> <f f'> | <c c'> r |
+ <as as'> <des des'> | <bes bes'> r | <des des'> <bes bes'> |
+ <g g'> <f f'> | <c' c'> <bes bes'> | <f f'> r |
+
+ % Au movement
+ <des' des'> <c c'> | <f f'> <d! d'!> | <a a'> r | <f' f'> <d d'> |
+ r <f f'> | <e e'> <c c'> | r <g g'> | <d' d'> r | <b b'> <fis fis'> |
+ <a a'> <b b'> | <d d'> r |
+
+ <a a'> <fis fis'> r |
+
+ <a a'> r | <b b'> <d d'> | <e e'> <a, a'> | <fis fis'> r |
+
+ <g g'> <d d'> r | <g g'> <f! f'!> <d' d'> |
+
+ <bes bes'> r | <c c'> <bes bes'> | <as as'> <g g'> | <d' d'> <c c'> |
+ <e! e'!> <b! b'!> | <a a'> <d d'> | <es es> r | <c c'> r
+
+ % copy from begin: 1-10
+ <as'4 as'> <es es'> | r <as as'> | <des, des'> <f f'> | <c c'> r |
+ <as as'> <des des'> | <bes bes'> r | <des des'> <bes bes'> |
+ <g g'> <f f'> | <c' c'> <bes bes'> | <f f'> r |
+
+}
+
+\score {
+ \type GrandStaff <
+ \type Staff = treble <
+ \global
+ \clef violin;
+ \i
+ \ii
+ >
+ \type Staff = bass <
+ \global
+ \clef bass;
+ \lower
+ >
+ >
+
+ \paper {
+ gourlay_maxmeasures = 5.;
+ textheight = 295.\mm;
+ \translator{ \OrchestralScoreContext }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ }
+ }
+ \midi {
+ \tempo 4 = 60;
+ }
+}
+
%4
<[d a' b> <d a' b> <d g! b> <d g b>]
<[d g a> <d g a> <d fis a> <d fis a>] |
- \bar "|:";
%5
+ \repeat 2 {
<[b_. d g( \pp > <b_. d g> <b_. d g> <)b_. d g>]
<[b_. d g(> <b_. d g> <b_. d g> <)b_. d g>]
|
%29
<[d a' b> <d a' b> <d g! b> <d g b>]
<[d g a> <d g a> < d fis! a> <d fis a>]
- \bar ":|";
+ }
%30
<b2 d2 g2> r2
\bar "|.";
)b4-. [d,8.( d16] )c'4-. [d,8. d16] |
%4
d'4-. d,-. d'-. [d,8.( d16 ]
- \bar "|:";
+ \repeat 2 {
%5
)g4-. d_. r4 [g8.( g16] |
%6
)b4 [d,8.( d16] )c'4-. [d,8. d16] |
%29
d'4-. d,-. d'-. [d,8.( d16 ]
- \bar ":|";
+ }
%30
)g2 r2 \bar "|.";
\property Voice.dynamicdir = "1"
r1 | r1 |r1 | r1 |
- \bar "|:";
+ \repeat 2 {
%5
b2. g4 |
%6
\! g2 r2 |
%27
r1 | r1 | r1
- \bar ":|";
+ }
r1 \bar "|.";
}
depth = ..
-SUBDIRS = J.S.Bach Coriolan W.A.Mozart F.Schubert D.Zipoli Hymns D.Scarlatti L.Mozart
+SUBDIRS = J.S.Bach Coriolan W.A.Mozart F.Schubert D.Zipoli Hymns D.Scarlatti L.Mozart E.Satie
examples= gallina
LOCALSTEPMAKE_TEMPLATES=mutopia
\version "1.0.14";
-% urg, this all changed and was never fixed
-% howto get rid of these ridiculous dimensions????
-% to view the output, subsitute 0.0 with 0.0 in the .tex file...
-
-one = \type Voice=one \notes\relative c {
- \property Voice . textstyle = "italic"
+% upper = \type Staff \notes\relative c {
+upper = \type Staff=upper \notes\relative c {
+ \type Voice=i
+ \property Voice . textstyle = "italic"
% rediculous dim...
-% r16\p_"legato"\< [g''-1( c-3 )e-5] r [g,-1( c )e]
- r16\p\< [g''-1( c-3 )e-5] r [g,-1( c )e]
- r [g,( c )d] r [b-1( d-2 \!)g-5] |
- r16\mf [a,( d-2 ) g-5] r [a,(\< d )f-4]
- r [a,( d )e-3] r [c-1( e-2 \!)a-5] |
- r16\f [b, e a-5] r [b, e-3 g-5]
- r [c,-1 e-3 f-4] r [g, d'-3 f-5] |
+% r16\p_"legato"\< g''-1( c-3 )e-5 r g,-1( c )e
+ r16\p\< g''-1( c-3 )e-5 r g,-1( c )e
+ r g,( c )d r b-1( d-2 \!)g-5 |
+ r16\mf a,( d-2 ) g-5 r a,(\< d )f-4
+ r a,( d )e-3 r c-1( e-2 \!)a-5 |
+ r16\f b, e a-5 r b, e-3 g-5
+ r c,-1 e-3 f-4 r g, d'-3 f-5 |
% all text is fat currently...
-% r [g,-"poco a poco dim." d'-4 e] r [g, c-2 e]
- r [g, d'-4 e] r [g, c-2 e]
- r [a,-1 c-3 d-4] r [e, b'-3 d-5] |
- r [e, b' c-4] r [e, a-2 c]
- r [f,-1 a-3 bes-4] r [c, g'-3 bes-5] |
- r [c, g' a-4] r [c, f-2 a]
- r [d, f-2 b-5] r [e, g-2 c-5] |
- r\p [d, g c-5] r [d, g b-4]
- r [c, g'-3 b-5] r [c, fis-2 a-4] |
- r [b, d a'-5] r [b, d g-4]
- r [a, c g'-5] r [a, c f!-4] |
+% r g,-"poco a poco dim." d'-4 e r g, c-2 e
+ r g, d'-4 e r g, c-2 e
+ r a,-1 c-3 d-4 r e, b'-3 d-5 |
+ r e, b' c-4 r e, a-2 c
+ r f,-1 a-3 bes-4 r c, g'-3 bes-5 |
+ r c, g' a-4 r c, f-2 a
+ r d, f-2 b-5 r e, g-2 c-5 |
+ r\p d, g c-5 r d, g b-4
+ r c, g'-3 b-5 r c, fis-2 a-4 |
+ r b, d a'-5 r b, d g-4
+ r a, c g'-5 r a, c f!-4 |
% ugh arpeggio
- \type Staff=treble <
- { \voiceone f4 r }
- { \voicetwo <g,4 d'> r }
+ <
+ { \stemup f4 r }
+ \type Voice=ii { \stemdown <g,4 d'> r }
>
- \onevoice
- % s
- % ugh beam across staffs slur starts at lower staff
- \translator Staff=bass\stemup
- r16 [g,,-5( b-4 d ]
- [f-1 \translator Staff=treble\stemdown g16-1 b d] | \stemup )b
- \translator Staff=bass\stemdown
- [g-5( b-4 d-2] f-1
- \translator Staff=treble\stemup
- [g16-1 b-2 d] )b
- \translator Staff=bass\stemup
+ \stemboth
+ \translator Staff=lower\stemup
+ r16 g,,-5( b-4 d
+ [ f-1 \translator Staff=upper\stemdown g16-1 b d ] |
+ \stemup )b
+ \translator Staff=lower\stemdown
+ [ g-5( b-4 d-2 ] f-1
+ \translator Staff=upper\stemup
+ [ g16-1 b-2 d ] )b
+ \translator Staff=lower\stemup
\clef "violin";
- [g-4 b-2 d-1]
+ [ g-4 b-2 d-1 ]
\stemup
% urg, below translator change affects previous beam too!?
% howto separate translator command from previous beam end?
- \skip 4*0;
- [\translator Staff=treble f-2 g-3 b-5 f-2] |
+ \translator Staff=upper f-2 g-3 b-5 f-2 |
\stemboth
- [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2]
- [)d c'-5( f,-3 e-2] [d-1 b'-5 f-3 d-2] |
- [)c b'-5( e,-3 d-2] [c-1 a'-5 e-3 c-2]
- [)b-1 a'-5( d,-3 c-2] [b-1 g'-5 d-3 b-2] |
-% [)a g'-5 c,-4 b] [a-"poco a poco dim." fis'-5 c-2 a-1]
- [)a g'-5 c,-4 b] [a fis'-5 c-2 a-1]
- [b-2 f' d-4 c] [b f' d-4 b-2] |
- [g e' c-3 b] [a e'-5 c-3 a-1]
- [fis-2 d' b-3 a] [g-1 d'-5 b-4 g-2] |
- [e c'-5 a-4 g-3] [fis-2 c'-5 a-4 fis-2]
- [d c'-5 b-4 a] [b-4 g-2 d'-5 f,-1] |
- [g-4 e-2 f-1 d'-5] [c-4 b a g]
- [f'-5 d-3 es-4 c-2] [fis,-1 es'-4 d-3 c-2] |
-% [b-1 d-5 b-3 g-1] [as-4-"cresc. e rall." f-2 g-3 d-1]
- [b-1 d-5 b-3 g-1] [as-4 f-2 g-3 d-1]
- [es-2 fis-3 a-4 c-5]
- \type Staff=treble <
- { \voiceone r [c8 b16] }
- { \voicetwo [d,8 f-2] }
+ e-1\f c'-5( g-3 f-2 e-1 c'-5 g-3 e-2
+ )d c'-5( f,-3 e-2 d-1 b'-5 f-3 d-2 |
+ )c b'-5( e,-3 d-2 c-1 a'-5 e-3 c-2
+ )b-1 a'-5( d,-3 c-2 b-1 g'-5 d-3 b-2 |
+% )a g'-5 c,-4 b a-"poco a poco dim." fis'-5 c-2 a-1
+ )a g'-5 c,-4 b a fis'-5 c-2 a-1
+ b-2 f' d-4 c b f' d-4 b-2 |
+ g e' c-3 b a e'-5 c-3 a-1
+ fis-2 d' b-3 a g-1 d'-5 b-4 g-2 |
+ e c'-5 a-4 g-3 fis-2 c'-5 a-4 fis-2
+ d c'-5 b-4 a b-4 g-2 d'-5 f,-1 |
+ g-4 e-2 f-1 d'-5 c-4 b a g
+ f'-5 d-3 es-4 c-2 fis,-1 es'-4 d-3 c-2 |
+% b-1 d-5 b-3 g-1 as-4-"cresc. e rall." f-2 g-3 d-1
+ b-1 d-5 b-3 g-1 as-4 f-2 g-3 d-1
+ es-2 fis-3 a-4 c-5
+ <
+ { \stemup r c8 b16 }
+ \type Voice=ii { \stemdown d,8 f-2 }
>
- \onevoice |
+ \stemboth |
<c1\mf g e>
\bar "|.";
}
-two = \type Voice=three \notes\relative c{
- \property Voice . textstyle = "roman"
+% lower = \type Staff \notes\relative c{
+lower = \type Staff=lower \notes\relative c{
+ \type Voice=i
+ \property Voice . textstyle = "roman"
c4-5 e-3 g-\mordent^"(\\textsharp)" g,4 |
d'4-\mordent-5 f-3 a-\mordent^"(\\textsharp)" a,4 |
e'-5 e'-\mordent-1 a,-4 b-\upprall |
f4-1 e d-3-\prall c |
g'-\mordent^"(\\textsharp)" g, g'-\mordent g, |
g'-\mordent g, g'-\mordent g, |
- g' r s s | s s s s \clef bass; |
- \type Staff=bass <
- { \voicethree g1 ~ g ~ g ~ g ~ g ~ g ~ g }
- { \voicefour g,1 ~ g ~ g ~ g ~ g ~ g ~ g }
+ g' r s s | s s s s \clef "bass"; |
+ <
+ { \stemup g1 ~ g ~ g ~ g ~ g ~ g ~ g }
+ \type Voice=ii { \stemdown g,1 ~ g ~ g ~ g ~ g ~ g ~ g }
>
<c,1 c,>
\bar "|.";
}
-global = \notes{
+global = \notes{
\time 4/4;
}
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type GrandStaff <
- \treble_staff
- \bass_staff
->
-
\score{
- % Moderato
- \grand_staff
-% \include "preludes-paper.ly";
+ % Moderato
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \upper
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \lower
+ >
+ >
\paper{
+ \include "preludes-paper.ly";
% no slur damping
slur_slope_damping = 10.0;
- % linewidth= 193.\mm;
- linewidth= 180.\mm;
gourlay_maxmeasures = 4.0;
\translator{
- \GrandStaffContext
- minVerticalAlign = 3.0*\staffheight;
- maxVerticalAlign = 3.0*\staffheight;
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = "1";
+ beamAutoEnd8 = "1/2";
+ beamAutoEnd16 = "1/4";
}
}
\midi{ \tempo 4 = 80; }
}
\version "1.0.14";
-one = \notes\relative c{
- \property Voice . textstyle = "italic"
- r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
- [)a-4\< c,-1( f-2 a-4] [f c c'-5 a-3] |
- [)b-4 g-1( b-2 d-4] [b-2 g f'-5 \!d-3] |
+upper = \type Staff \notes\relative c{
+ \type Voice=i
+ \property Voice . textstyle = "italic"
+ r8\mf c'-1( e-2 g-4 e-2 c-1 bes'-5 g-3 |
+ )a-4\< c,-1( f-2 a-4 f c c'-5 a-3 |
+ )b-4 g-1( b-2 d-4 b-2 g f'-5 \!d-3 |
<
- {\voiceone )e2-4\f r4 e-5 }
- \type Voice = second {\voicetwo <c2 g > r4 <c g > }
+ {\stemup )e2-4\f r4 e-5 }
+ \type Voice = ii {\stemdown <c2 g > r4 <c g > }
>
- \onevoice |
- \type Staff <
- { \voiceone d2-4 r4 d-4 }
- \type Voice = second { \voicetwo <c2 a > r4 <c a > }
+ \stemboth |
+ <
+ { \stemup d2-4 r4 d-4 }
+ \type Voice = ii { \stemdown <c2 a > r4 <c a > }
>
- \onevoice |
- \type Staff <
- { \voiceone d8 }
- \type Voice = second { \voicetwo <b 8 g > }
+ \stemboth |
+ <
+ { \stemup d8 }
+ \type Voice = ii { \stemdown <b 8 g > }
>
- \onevoice
- [g, 8-1\mf( b-2 d-4]
+ \stemboth
+ g, 8-1\mf( b-2 d-4
<
- { \voiceone )b 4 e-5 }
- \type Voice = second { \voicetwo g, 4 b }
+ { \stemup )b 4 e-5 }
+ \type Voice = ii { \stemdown g, 4 b }
>
- \onevoice |
- \type Staff <
- { \voiceone c2 r4 < {c-5 ~ c8} {a 4 ~ a 8} > }
- { \voicetwo c2 r4 e, 4 ~ e 8 }
+ \stemboth |
+ <
+ { \stemup c2 r4 < {c-5 ~ c8} {a 4 ~ a 8} > }
+ \type Voice=ii { \stemdown c2 r4 e, 4 ~ e 8 }
>
- \onevoice
- [d,-1\p( fis-2 a-4] [fis-2 d-1 c'-5 a-3] |
- [)b-4\< g-1( b-2 d-4] [ b-2 g-1 f'!-5 d-3] |
- [)e-4 g,-1( c-2 e-4] [c-2 g g'-5 e-3] |
- [)fis-4 a,-1( c-2 fis-4] [c a a'-5 \!fis-3] |
+ \stemboth
+ d,-1\p( fis-2 a-4 fis-2 d-1 c'-5 a-3 |
+ )b-4\< g-1( b-2 d-4 b-2 g-1 f'!-5 d-3 |
+ )e-4 g,-1( c-2 e-4 c-2 g g'-5 e-3 |
+ )fis-4 a,-1( c-2 fis-4 c a a'-5 \!fis-3 |
<
- { \voiceone )g2-5\f }
- \type Voice = second { \voicetwo <d2 b > }
+ { \stemup )g2-5\f }
+ \type Voice = ii { \stemdown <d2 b > }
>
- \onevoice
+ \stemboth
r4 b4-2( |
- [c,8-1 e-2 g c ] [g-2 e-1 bes'-4 g-2] |
- [)a16->-3 g-2 f-1 e-3] [d c b !-3 a-2]
- [b-3\< g-1 a b ] [c-1 d e \!f] |
+ c,8-1 e-2 g c g-2 e-1 bes'-4 g-2 |
+ )a16->-3 g-2 f-1 e-3 d c b !-3 a-2
+ b-3\< g-1 a b c-1 d e \!f |
g4-5\ff
- \type Staff <
- { \voiceone c,2-5 b 4-4 }
- { \voicetwo g 2-2 d 4-1 }
+ <
+ { \stemup c,2-5 b 4-4 }
+ \type Voice=ii { \stemdown g 2-2 d 4-1 }
>
- \onevoice
- \type Staff <
- { \voiceone c1^5 }
- { \voicetwo e, 1_1}
+ \stemboth
+ <
+ { \stemup c1^5 }
+ \type Voice=ii { \stemdown e, 1_1}
>
- \onevoice
+ \stemboth
\bar "|.";
}
-two = \notes\relative c{
- \type Staff <
- { \voiceone c1 ~ | c ~ | c }
- { \voicetwo c,1 ~ | c ~ | c }
+lower = \type Staff \notes\relative c{
+ \type Voice=i
+ <
+ { \stemup c1 ~ | c ~ | c }
+ \type Voice=ii { \stemdown c,1 ~ | c ~ | c }
>
- \onevoice |
- r8 [c-5( e-3 g-1] [e-3 c-5 c' e,-4] |
- [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis,-4] |
+ \stemboth |
+ r8 c-5( e-3 g-1 e-3 c-5 c' e,-4 |
+ )fis-3 d-5( fis-3 a-1 fis-3 d-5 d' fis,-4 |
)g2-3 r4 g-2( |
- [)a8 a,-5( c-4 e-2] [c-4 a-5 g' e-3] |
+ )a8 a,-5( c-4 e-2 c-4 a-5 g' e-3 |
)fis2 r4 d-4 |
g-\mordent-"(\\textsharp)" g, 4 g'-\mordent g, |
% mordents in brackets...
g'-\mordent g, g'-\mordent g, |
g'-\mordent g, g'-\mordent g, |
- [g'8 g,-5( b-4 d-2] [b-4 g-5 f'!-1 d-3] |
- [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e,-4] |
- \property Voice . textstyle = "finger"
+ g'8 g,-5( b-4 d-2 b-4 g-5 f'!-1 d-3 |
+ )e-2 c-4 e-2 g-1 e-3 c-5 c' e,-4 |
+ \property Voice . textstyle = "finger"
f1^"3\\_1" ~ |
- [f8 d-3 e-2 c-4] g'4-1 g,^"5\\_2" |
+ f8 d-3 e-2 c-4 g'4-1 g,^"5\\_2" |
<c1 c,1>
\bar "|.";
}
\time 4/4;
}
-trebleStaff = \type Staff = treble <
- \global
- \one
->
-
-bassStaff = \type Staff = bass <
- \clef "bass";
- \global
- \two
->
-
-grandStaff = \type GrandStaff <
- \trebleStaff
- \bassStaff
->
-
-a4 = \paper{
- linewidth= 193.\mm;
-}
-
\score{
- % Moderato
- \grandStaff
- \paper{ \a4 }
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \upper
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \lower
+ >
+ >
+ \paper{
+ \include "preludes-paper.ly";
+ gourlay_maxmeasures = 4.0;
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = "1";
+ beamAutoEnd8 = "1/2";
+ beamAutoEnd16 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 100; }
\header {
opus = "BWV 939";
\version "1.0.14";
-one = \notes \transpose c`` {
- \textstyle "italic";
+upper = \type Staff \notes \transpose c'' {
+ \type Voice=i
+ \property Voice . textstyle = "italic"
%# s(^c@ ^es@ ^g@ ^\p(\<@ ^\!@ ^)\!@ ^\>@)
t(c,es,g,^\p(\<@,\!,^)\!@,\>)
%# s(c es g ^(@ ^@ ^)@)
%# s(c fis a -"poco a poco cresc.")
- t(c,fis,a,-"poco a poco cresc.")
+%# t(c,fis,a,-"poco a poco cresc.")
+ s(c fis a)
s(d g bes)
s(d fis c`)
s(cis g bes)
- s(c es a !-"dim.")
+%# s(c es a !-"dim.")
+ s(c es a !)
s(bes` e g)
s(a` c g)
s(fis` a` c)
r16\p [g` a` c] [b` g` b` g`] r g` r g`
%# s(a` c fis -"poco cresc.")
- t(a`,c,fis,-"poco cresc.")
+%# t(a`,c,fis,-"poco cresc.")
+ s(a` c fis)
s(c fis a)
s(b` d g)
- s(b` d f -"dim.")
+%# s(b` d f -"dim.")
+ s(b` d f)
s(g` c es)
s(fis` c es)
s(fis` c es)
- r16 [g`(\< b` d] [b` g` b` d] [es c a` )\!fis] |
+ r16 [g`(\< b` d] [b` g` b` d] [es c a` \!fis] |
<
- {\voiceone g2.-\fermata\mf}
- {\voicetwo <b`2. d>}
+ {\stemup ) g2.-\fermata\mf}
+ \type Voice=ii {\stemdown <b`2. d>}
>
- \onevoice
+ \stemboth
\bar "|.";
}
-two = \notes{
- \clef bass;
+lower = \type Staff \notes{
% c4 r [g8-.(\ped )es-.\*] |
c4 r [g8-.( )es-.] |
c4 r [g8-.( )es-.] |
}
global = \notes{
- \meter 3/4;
+ \time 3/4;
\key es;
}
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type GrandStaff <
- \treble_staff
- \bass_staff
->
-
-a4 = \paper{
- linewidth= 193.\mm;
-}
-
\score{
% Semplice e non troppo legato
- \grand_staff
- \paper{ \a4 }
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \upper
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \lower
+ >
+ >
+ \paper{
+ \include "preludes-paper.ly";
+ gourlay_maxmeasures = 4.0;
+ }
\midi{ \tempo 4 = 100; }
\header{
opus = "BWV 999";
\header{
-filename = "preludes-4.ly";
+filename = "preludes-4.ly";
% blz 8
% Clavierb"uchlein f"ur W. Fr. Bach
% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
% ca 1720
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
}
\version "1.0.14";
-one = \notes\relative c{
- \property Voice . textstyle = "italic"
- r16\p_"legato"
- \property Voice . textstyle = "finger"
- [d'-1( fis-3 d-1] [a'-2 b-3 cis-4 a-3]
- [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
- \property Voice . textstyle = "finger"
- \stemup
- )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
- e16\< \stemboth [a,16( cis a] [d-2 e fis d-1]
- [g-3 fis g a-4] [g-3 b a \!g] |
+one = \type Staff \notes\relative c {
+ \type Voice=i
+ \property Voice . textstyle = "italic"
+% r16\p_"legato"
+ r16\p
+ \property Voice . textstyle = "finger"
+ d'-1( fis-3 d-1 a'-2 b-3 cis-4 a-3
+ d-3 cis-2 d-1 e-2 d-1 fis-3 e-2 d-1 |
+ \property Voice . textstyle = "finger"
+ \stemup
+ )cis4-2 fis-5 ~ fis8 fis-4 e4-3 ~ |
+ e16\< \stemboth a,16( cis a d-2 e fis d-1
+ g-3 fis g a-4 g-3 b a \!g |
\stemup
- )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
+% )fis4-"2\\_3" e8-2 a-5 <fis4-4 d-2> <gis-5 e-3> |
+ )fis4 e8-2 a-5 <fis4-4 d-2> <gis-5 e-3> |
%5
- <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4]
+ <a4-5( e> <fis-4 d-2> < )g!16-5 d> fis-2 g-3 a-4
\stemboth
- [g-3 b a g] |
- \property Voice . textstyle = "italic"
- [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
- \property Voice . textstyle = "finger"
- e4-"2\\_5" ~ e16 [e,( fis g ] |
- \property Voice . textstyle = "italic"
- [a-4_"dim." g-1 a b] [a-2 c-4 b a]
- [g-1 fis-2 g-3 a] [g-3 b a g] |
+ g-3 b a g |
+ \property Voice . textstyle = "italic"
+% fis_"dim." e fis-3 g fis-3 a-5 g fis
+ fis e fis-3 g fis-3 a-5 g fis
+ \property Voice . textstyle = "finger"
+% e4-"2\\_5" ~ e16 e,( fis g |
+ e4 ~ e16 e,( fis g |
+ \property Voice . textstyle = "italic"
+% a-4_"dim." g-1 a b a-2 c-4 b a
+ a-4 g-1 a b a-2 c-4 b a
+ g-1 fis-2 g-3 a g-3 b a g |
\stemup
)fis4\p
\skip 4*7; |
%10
- \property Voice . textstyle = "finger"
- d'4.\mf cis8-"4\\_5" ~ cis b4-5 a8-"4\\_5" ~ |
- \property Voice . textstyle = "italic"
- a g4-5 fis8-4 ~ [fis16 fis-4-"dim." e-3 d-2]
- \property Voice . textstyle = "finger"
- e4-"3\\_5" ~ |
- [e16 e-5 d cis] d4-5 ~ [d16 d-5 cis b] cis4-5 |
+ \property Voice . textstyle = "finger"
+% d'4.\mf cis8-"4\\_5" ~ cis b4-5 a8-"4\\_5" ~ |
+ d'4.\mf cis8 ~ cis b4-5 a8 ~ |
+ \property Voice . textstyle = "italic"
+% a g4-5 fis8-4 ~ fis16 fis-4-"dim." e-3 d-2
+ a g4-5 fis8-4 ~ fis16 fis-4 e-3 d-2
+ \property Voice . textstyle = "finger"
+% e4-"3\\_5" ~ |
+ e4 ~ |
+ e16 e-5 d cis d4-5 ~ d16 d-5 cis b cis4-5 |
\stemboth
- [fis,16-1\p a-2 d-5\< c-4] [b-1 d-2 g-5 fis-4]
- [d-1 b'-5 a g] [fis-2 e-1 d-4 \!c!-3] |
- [b-2 d-1 g a] [fis8-\prall e16-4 d-3]
- [d8. e16~] [e d8 cis16] |
+ fis,16-1\p a-2 d-5\< c-4 b-1 d-2 g-5 fis-4
+ d-1 b'-5 a g fis-2 e-1 d-4 \!c!-3 |
+ b-2 d-1 g a fis8-\prall e16-4 d-3
+ d8. e16~ e d8 cis16 |
%15
\stemup
- r16 [d-1\< fis d] [g a b g-1] [c-3 b c d] [c e d-4 \!c] |
- b4-5 a ~ [a8 g-5 ~] [g16 fis8-4 e16-3] |
- [fis8-4 e-5~] [e d-5~] d4 cis-4 |
- d2\p-"rall." ~ [d16 a-2( b-3 cis-4] )d4-5 |
+ r16 d-1\< fis d g a b g-1 c-3 b c d c e d-4 \!c |
+ b4-5 a ~ a8 g-5 ~ g16 fis8-4 e16-3 |
+ fis8-4 e-5~ e d-5~ d4 cis-4 |
+% d2\p-"rall." ~ d16 a-2( b-3 cis-4 )d4-5 |
+ d2\p ~ d16 a-2( b-3 cis-4 )d4-5 |
\bar "|.";
}
-two = \notes\relative c{
- \property Voice . textstyle = "finger"
+two = \type Staff \notes\relative c{
+ \type Voice=ii
+ \stemup
+ \property Voice . textstyle = "finger"
fis4-1( e8-2 a4 a4 gis8-2 |
) a8
- \translator Staff=treble \stemdown
- a'4 a8 b4.-"2\\_1" cis8 ~ |
+ \translator Staff=upper \stemdown
+% a'4 a8 b4.-"2\\_1" cis8 ~ |
+ a'4 a8 b4. cis8 ~ |
cis8
- \translator Staff=bass \stemup
- a,8 ~ [a d] ~ d d4-> cis8 |
+ \translator Staff=lower \stemup
+ a,8 ~ a d ~ d d4-> cis8 |
d8
- \translator Staff=treble \stemdown
+ \translator Staff=upper \stemdown
d'4-> cis8-1 ~ cis b4-1 b8 |
%5
r8 a4 a8
- \translator Staff=bass \stemup
- [g8-1( fis-2] )e4-1 ~ |
- e4 d ~ [d16 d-1 cis-2 b-1] cis4-2 ~ |
- [cis8 a-3] d4.-1 d4^> cis8-2 |
- \translator Staff=treble \stemdown
- d4 \stemboth r16 [b-1\< d-2 b~] <g'4-5 e-3 b>
- r16 [cis,-1 e-2 \!cis~] |
- <a'4-5 fis-3 cis> r16 [d,-1 fis-2 d~] <b'4-5 g-3 d>
- r16 [fis-1 a fis~] |
+ \translator Staff=lower \stemup
+ g8-1( fis-2 )e4-1 ~ |
+ e4 d ~ d16 d-1 cis-2 b-1 cis4-2 ~ |
+ cis8 a-3 d4.-1 d4^> cis8-2 |
+ \translator Staff=upper \stemdown
+ d4 \stemboth r16 b-1\< d-2 b~ <g'4-5 e-3 b>
+ r16 cis,-1 e-2 \!cis~ |
+ <a'4-5 fis-3 cis> r16 d,-1 fis-2 d~ <b'4-5 g-3 d>
+ r16 fis-1 a fis~ |
%10
\stemdown
fis4 e d cis |
b a b4. b8 |
a4
- \translator Staff=bass \stemup
- r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
+ \translator Staff=lower \stemup
+ r16 b-3 fis-1 a-2 g4-1 r16 a-3 e-1 g-2 |
\skip 1*1;
s16
- \translator Staff=treble \stemdown
- d'8.-1 ~ [d8 c] d4 [a8 g] |
+ \translator Staff=upper \stemdown
+ d'8.-1 ~ d8 c d4 a8 g |
%15
- \translator Staff=bass \stemup
- [fis'8 c-1] b4-1 \stemdown <a
- \translator Staff=treble \stemdown
+ fis8 \translator Staff=lower \stemup c'-1 b4-1 \stemdown <a
+ \translator Staff=upper \stemdown
a'4.-2>
\stemdown
a'8~ |
- [a g-3~] [g16 e fis8~] [fis16 d8.~] [d8. cis!16] |
- \translator Staff=bass \stemup
+ a g-3~ g16 e fis8~ fis16 d8.~ d8. cis!16 |
+ \translator Staff=lower \stemup
<
- % { \voiceone [d,8-2 a~] a4 }
- { \voiceone [d8-2 a~] a4 }
- % { \voicethree [a,8-1 g] [fis16-2 e-1 fis-2 d-1] }
- { \voicethree [a8-1 g] [fis16-2 e-1 fis-2 d-1] }
+ { \stemup d8-2 a~ a4 }
+ \type Voice=ii { \stemdown a8-1 g fis16-2 e-1 fis-2 d-1 }
>
- \voiceone
- [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
- [g g-1 fis-2 e-1] fis4-2 ~ fis2
+ \stemup
+ g-1 fis-2 g-1 a-2 g-1 b-3 a-2 g-1 ~ |
+ g g-1 fis-2 e-1 fis4-2 ~ fis2
\bar "|.";
}
three = \notes\relative c{
-% \stemdown
+ \type Voice=iii
+ \stemdown
d4-3 c-4 b e-3 |
- a16 [a,-5\mf( cis-3 a-5] [d-2 e-1 fis-2 d-4]
- [g-1 fis-3 g a] [g b a g] |
+ a16 a,-5\mf( cis-3 a-5 d-2 e-1 fis-2 d-4
+ g-1 fis-3 g a g b a g |
)fis4 fis e a-4 |
- d16 \stemboth [d,-5\f( fis-3 d-5] [a'-2 b-1 cis-2 a-4]
- [d-1 cis-3 d e] [d-4 fis-2 e-1 ) d] |
+ d16 \stemboth d,-5\f( fis-3 d-5 a'-2 b-1 cis-2 a-4
+ d-1 cis-3 d e d-4 fis-2 e-1 ) d |
%5
- [cis-3 b-4 cis-3 d-2] [c-4 e-2 d-3 c-4]
- \stemdown b4-5 [cis8-4 b-3(] |
- [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
+ cis-3 b-4 cis-3 d-2 c-4 e-2 d-3 c-4
+ \stemdown b4-5 cis8-4 b-3( |
+ a-4 )fis-5 b-2 a-3 gis-4 e-5 a-3 g-4 |
fis4. d8-5 e4-5 a4-3 |
\stemboth
- r16 [d,-4( fis-2 d-4] [)g8-.-1 g,-.-5]
- r16 [e'-4( g-2 e-4] [)a8-. a,-.-5] |
- r16 [fis'-4( a fis] [)b8-. b,-.] r16 [g'-4( b g] [)d'8-. d,-.] |
+ r16 d,-4( fis-2 d-4 )g8-.-1 g,-.-5
+ r16 e'-4( g-2 e-4 )a8-. a,-.-5 |
+ r16 fis'-4( a fis )b8-. b,-. r16 g'-4( b g )d'8-. d,-. |
%10
- r16 [d,16-5( fis-3 d] [a'-2 b-1 cis-2 a-4] [d b-5 d-3 b]
- [fis'-2 g a-2 fis-4] |
- )fis16 [g,( b g] [d'-2 e fis-2 d-4] [)g8-. g,-.] r16 [cis-4( e cis] |
- [)fis8-. fis,-.] \stemdown r16 [b-4( d b] [)e8-. e,-.]
- r16 [a-4 cis a] |
+ r16 d,16-5( fis-3 d a'-2 b-1 cis-2 a-4 d b-5 d-3 b
+ fis'-2 g a-2 fis-4 |
+ )fis16 g,( b g d'-2 e fis-2 d-4 )g8-. g,-. r16 cis-4( e cis |
+ )fis8-. fis,-. \stemdown r16 b-4( d b )e8-. e,-.
+ r16 a-4 cis a |
\stemboth
- [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 a-5 b cis]
- [d-2 e fis-2 d-4] |
- [g8 e-3] \stemdown [a a,] [b8.-4 g16-5] a4-4 |
+ d-1 e-3 fis-2 d-4 g-1 fis-2 e-3 d-1 cis!-3 a-5 b cis
+ d-2 e fis-2 d-4 |
+ g8 e-3 \stemdown a a, b8.-4 g16-5 a4-4 |
%15
- [d8-5 a'-2~] [a g-3~] [g g-3] fis4-4 |
+ d8-5 a'-2~ a g-3~ g g-3 fis4-4 |
\stemup
- r16 [g-2 b-1 g-3] [d'8.-1 c16-1] [b8.-2 bes16-3] [a8-1 g] |
+ r16 g-2 b-1 g-3 d'8.-1 c16-1 b8.-2 bes16-3 a8-1 g |
\stemdown
- r16 [a,-2 cis!-1 a'-2] [d,-1 e fis d] [e8-1 d-2] [e-1 a,-2] |
- [d a-2~] [a16 a-2 b cis-2] d2 |
+ r16 a,-2 cis!-1 a'-2 d,-1 e fis d e8-1 d-2 e-1 a,-2 |
+ d a-2~ a16 a-2 b cis-2 d2 |
}
-four = \notes\relative c{
+four = \type Staff \notes\relative c{
\skip 1*9;
-% \stemup
-% \property Voice.hshift = 1
+ \type Voice=iv
+ \stemup
+ \property Voice.hshift = 1
%10
a''2 fis |
d s |
% \property Voice.hshift = 0
\skip 1*2; |
s4
- \translator Staff=bass \stemup
- a4 ~ [a16 d,-2 g8-1] [fis e-1] |
+ \translator Staff=lower \stemup
+ a4 ~ a16 d,-2 g8-1 fis e-1 |
%15
\stemdown
d1 ~ |
d2 d2
}
-global = \notes{
+global = \notes{
\time 4/4;
\key D;
}
-treble_staff = \type Staff = treble <
- \global
- { \voiceone \one }
- { \voicefour \four }
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
-% { \voiceone \two }
- { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two }
- { \voicetwo \three }
->
-
-grand_staff = \type GrandStaff <
- \treble_staff
- \bass_staff
->
-
\score{
- % Allegretto
- \grand_staff
- \include "preludes-paper.ly";
+ % Allegretto
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \one
+ \four
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \two
+ \three
+ >
+ >
+ \paper{
+ \include "preludes-paper.ly";
+ gourlay_maxmeasures = 2.0;
+ \translator{
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = "1";
+ beamAutoEnd8 = "1/2";
+ beamAutoEnd16 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 70; }
\header{
opus = "BWV 925";
\header{
-filename = "preludes-5.ly";
+filename = "preludes-5.ly";
% blz 2
% Clavierb"uchlein f"ur W. Fr. Bach
% Clav. W. Fr. Bach: 4-Praeludium 2
% ca 1720
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
}
\version "1.0.14";
-one = \notes\relative c{
- \property Voice . textstyle = "italic"
- [d'8-1\p a'-5-"legato" f-3 d-1 a'-5 f-3] |
- [d-1 a'-5 f-3 d-1 a'-5 f-3] |
- [d-1\< bes'-4 g-2 d-1 bes'-4 \!g-2] |
- [d-1 bes'-4 g-2 d-1 bes'-5 g-3] |
+upper = \type Staff \notes\relative c{
+ \property Voice . textstyle = "italic"
+ \type Voice=i
+% d'8-1\p a'-5-"legato" f-3 d-1 a'-5 f-3 |
+ d'8-1\p a'-5 f-3 d-1 a'-5 f-3 |
+ d-1 a'-5 f-3 d-1 a'-5 f-3 |
+ d-1\< bes'-4 g-2 d-1 bes'-4 \!g-2 |
+ d-1 bes'-4 g-2 d-1 bes'-5 g-3 |
%5
- [cis,-1\mf g'-4 e-2 cis-1 g'-4 e-2] |
- [cis-1 bes'-5 g-4 e-2 a-5 g-4] |
- [f-3\< d-1 f-2 a-4 f-1 a-2] |
- [d-5 a-1 d-2 f-4 d-1 \!f-2] |
- [b\> f-3 e d c-3 b] |
+ cis,-1\mf g'-4 e-2 cis-1 g'-4 e-2 |
+ cis-1 bes'-5 g-4 e-2 a-5 g-4 |
+ f-3\< d-1 f-2 a-4 f-1 a-2 |
+ d-5 a-1 d-2 f-4 d-1 \!f-2 |
+ b\> f-3 e d c-3 b |
%10
- [a gis-3 fis e d'-5 \!b-2] |
+ a gis-3 fis e d'-5 \!b-2 |
<
{
- \voiceone
- \property Voice . textstyle = "roman"
+ \stemup
+ \property Voice . textstyle = "roman"
c4-\mordent^"(\\textsharp)"\p r r |
c4-\mordent^"(\\textsharp)" r r
- \property Voice . textstyle = "italic"
+ \property Voice . textstyle = "italic"
}
- { \voicetwo a4 r r | a4 r r }
+ \type Voice=ii { \stemdown a4 r r | a4 r r }
> |
- \onevoice
- [a'8\mf( es-3\> d c bes!-3 a] |
- [g fis-3 e!-2 d-1 c'-4 \!a] |
+ \stemboth
+ a'8\mf( es-3\> d c bes!-3 a |
+ g fis-3 e!-2 d-1 c'-4 \!a |
%15
- [)bes8-\mordent\p( d8-5 bes-3 g-1] )g'4 |
- r8 [d-5( c bes a-\prall g] |
- [)a-2 c-4( a f] ) f'4 |
- r8 [c-5 bes a g-\prall f] |
- [g-2 bes-4 a g f-1 e-2] |
+ )bes8-\mordent\p( d8-5 bes-3 g-1 )g'4 |
+ r8 d-5( c bes a-\prall g |
+ )a-2 c-4( a f ) f'4 |
+ r8 c-5 bes a g-\prall f |
+ g-2 bes-4 a g f-1 e-2 |
%20
- [f-3 d-1 f-2 a-3 d-5 g,-2] |
+ f-3 d-1 f-2 a-3 d-5 g,-2 |
<
{
- \voiceone
+ \stemup
% ... textnatural
- [cis8-\prall e8-5-"poco cresc." cis-3 a e' cis]
+% cis8-\prall e8-5-"poco cresc." cis-3 a e' cis
+ cis8-\prall e8-5 cis-3 a e' cis
}
- { \voicetwo a4 }
+ \type Voice=ii { \stemdown a4 }
>
- \onevoice
- [a8 e'-5 cis a bes!-3 a] |
- [g e'-5 cis-3 g e'-5 cis-3] |
- [g-1 e'-5 cis g a-3 g] |
- [f-"dim." d'-5 bes f d' bes] |
+ \stemboth
+ a8 e'-5 cis a bes!-3 a |
+ g e'-5 cis-3 g e'-5 cis-3 |
+ g-1 e'-5 cis g a-3 g |
+% f-"dim." d'-5 bes f d' bes |
+ f d'-5 bes f d' bes |
%25
- [f d'-5 bes f d' bes] |
- [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
- [fis-2 c'-5 a-3 fis-2 c'-5 a-3] |
- [bes-4 g-1 fis-2 g-3 d-1 g-2] |
- [bes-4 g-2 d-1 bes'-5 g-3 d-1] |
+ f d'-5 bes f d' bes |
+% fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3 |
+ fis-2 c'-5 a-3 fis-2 c'-5 a-3 |
+ fis-2 c'-5 a-3 fis-2 c'-5 a-3 |
+ bes-4 g-1 fis-2 g-3 d-1 g-2 |
+ bes-4 g-2 d-1 bes'-5 g-3 d-1 |
%30
- [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
- [es-1 bes'-4 g-2 es bes' g] |
- [cis,-1 bes'-4 g-2 cis, bes' g] |
- [cis,-1 bes'-4 g-2 cis,-1 a'-5 g-4] |
- [f-3 a f d a'-5 f] |
+ e-2\p g-4 fis-3 g-1 bes-4 g-2 |
+ es-1 bes'-4 g-2 es bes' g |
+ cis,-1 bes'-4 g-2 cis, bes' g |
+ cis,-1 bes'-4 g-2 cis,-1 a'-5 g-4 |
+ f-3 a f d a'-5 f |
%35
- [d-1 a'-5 f-3 d-1 cis-2 d-1] |
- [e-3\< g-5 e-3 bes-1 g'-5 e-3] |
- [bes-1 g'-5 e-3 \!cis-2 a-1 g'-5] |
- [f16-4\mf d-2 c-1 bes-3] \stemup a-2 s16 s8 s4 |
+ d-1 a'-5 f-3 d-1 cis-2 d-1 |
+ e-3\< g-5 e-3 bes-1 g'-5 e-3 |
+ bes-1 g'-5 e-3 \!cis-2 a-1 g'-5 |
+ f16-4\mf d-2 c-1 bes-3 \stemup a-2 s16 s8 s4 |
% ugh
% s1 |
s4 s4 s4 |
%40
s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d,-2-"m.g." f a] \stemup d-1 |
\stemboth
- [f a-4 f d] [f-4 d b d-5] [gis-2 b a gis,] |
+ f a-4 f d f-4 d b d-5 gis-2 b a gis, |
<g'!4.-5\f e a,> a8-5
<
{
- \voiceone
- f4-4\> ~ | [\!f8 e] [e32-4 f e8. ~] [e8 d-3]
+ \stemup
+ f4-4\> ~ | [\!f8 e] [e32-4 f e8.] ~ [e8 d-3]
}
- { \voicetwo <d4 a> r4 cis-2 }
+ \type Voice=ii { \stemdown <d4 a> r4 cis-2 }
> |
- \onevoice
- [d8-4 c!-3 a-1 d-4 bes-2 g-1] |
+ \stemboth
+ d8-4 c!-3 a-1 d-4 bes-2 g-1 |
%45
- [c-5 a-3 fis-2 bes-4 g e ] |
- [a-5 fis-"dim. e rall." d g-5 e cis-2] |
+ c-5 a-3 fis-2 bes-4 g e |
+% a-5 fis-"dim. e rall." d g-5 e cis-2 |
+ a-5 fis d g-5 e cis-2 |
<
- { \voiceone <fis2-.-5\p a,> }
- { \voicetwo [d32( cis d8. ~] ) d2 }
+ { \stemup <fis2-.-5\p a,> }
+ \type Voice=ii { \stemdown [d32( cis d8.] ~ ) d2 }
> |
\bar "|.";
}
-two = \notes\relative c{
- \clef "bass";
-% [d32( cis )d8.] r4 r |
+lower = \type Staff \notes\relative c{
+ \type Voice=i
+% d32( cis )d8. r4 r |
d4-\mordent r r |
d,4 r r |
d'-\mordent r r |
d'-\mordent r r |
% d r r |
d,4 r r |
- [d'8-2 a-5 d-2 f-1 d-4 f-2] |
- [a-1 f-4 a-2 d-1 a-2 d-1] |
+ d'8-2 a-5 d-2 f-1 d-4 f-2 |
+ a-1 f-4 a-2 d-1 a-2 d-1 |
gis,4-3 r r |
e-4( )gis-2 e |
- [a8-4 e'-1 c-2 a-4 e'-1 c-2 ] |
- [g!-5 es'-1 c-1 g-5 es'-1 c-1 ] |
+ a8-4 e'-1 c-2 a-4 e'-1 c-2 |
+ g!-5 es'-1 c-1 g-5 es'-1 c-1 |
fis,4-5 r r
d-4( ) fis d-5 |
- \property Voice . textstyle = "roman"
+ \property Voice . textstyle = "roman"
g4-\mordent^"(\\textsharp)" r r8 f!8 |
- \property Voice . textstyle = "italic"
+ \property Voice . textstyle = "italic"
e4-\prall r r |
f4-\mordent r r8 e |
- d4 r8 [f-1 e d] |
- [e-2 d-3 cis-4 e-1 d-2 cis-3] |
+ d4 r8 f-1 e d |
+ e-2 d-3 cis-4 e-1 d-2 cis-3 |
d4-2( )c! bes-4 |
a( )a' a, |
a( )a' a, |
cis( )cis' cis, |
d-4 s16
\stemdown
- [g'16-1-"m.g." f e] [f-2 a d,-3 f] |
- a,
+ [g'16-1-"m.g." f e] f-2 a d,-3 f |
+ a, \stemup [d-5-"m.d." c bes]
+ a \stemdown [ g-2 f-"m.g." e] d f-4 a-2 d-1 |
\stemup
- [d-5-"m.d." c bes] a
- \stemdown [g-2 f-"m.g." e] [d f-4 a-2 d-1] |
- \stemup
-% [f-2\ped a]
+% f-2\ped a
[f-2-"Ped." a]
\stemdown
-% [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
- [d,-4-"m.g." f-"cresc."] a s s8 s4-"*" |
+% d-4-"m.g." f-"cresc." a s s8 s4\dep |
+% d,-4-"m.g." f-"cresc." a s s8 s4-"*" |
+ [d,-4-"m.g." f] a s s8 s4-"*" |
\stemboth
% ugh whole rest has duration of one bar
% r1 |
r4 r r |
-%{
- ugh forget the 8 below:
- [cis-3( e cis a] [d16-1 c bes a] |
- and lily dumps koor
-lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_ failed.
-Aborted (core dumped)
-%}
- [cis,8-3( e cis a] [d16-1 c bes a] |
- [)g8 g' a-2( g-3 a-1 a,] |
+ cis,8-3( e cis a d16-1 c bes a |
+ )g8 g' a-2( g-3 a-1 a, |
)d4-3 d'-1 d, |
d r r |
d,( )d' d, |
\key F;
}
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type GrandStaff <
- \treble_staff
- \bass_staff
->
-
-widea4 = \paper {
- \paper_twenty
-% arithmetic_basicspace = 2.;
-% arithmetic_multiplier = 6.\pt;
- arithmetic_basicspace = 2.;
- arithmetic_multiplier = 8.\pt;
- linewidth= 193.\mm;
-}
-
\score{
- % Moderato
- \grand_staff
- \paper{ \widea4 }
+ % Moderato
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \upper
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \lower
+ >
+ >
+ \paper{
+ \include "preludes-paper.ly";
+ gourlay_maxmeasures = 5.0;
+ \translator{
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = "1";
+ beamAutoEnd8 = "3/4";
+ beamAutoEnd16 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 90; }
\header{
piece = "5";
\header{
-filename = "preludes-6.ly";
+filename = "preludes-6.ly";
% blz 11
% Six Petits Preludes
% Collection Johann Peter Kellner
% ca 1703 - 1707
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
}
\version "1.0.14";
-one = \notes\relative c{
+one = \type Staff \notes\relative c{
+ \type Voice=i
\skip 1; |
\stemup
r4 d''2-5( cis4-4 |
\stemboth
- [)d16-5\mf a'-4( g f] [e f-4 cis-2 d-1]
- [e8.-\mordent f16] [d8.-\prall-1 cis16-3] |
+ )d16-5\mf a'-4( g f e f-4 cis-2 d-1
+ e8.-\mordent f16 d8.-\prall-1 cis16-3 |
\stemup
- )cis4\> ~ [cis16 a \!d8 ~] d4 c-5 |
+ )cis4\> ~ cis16 a \!d8 ~ d4 c-5 |
%5
b2-4 ~ b4 a-5 ~ |
- [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
- [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
- [f16 f-3 e d] b'4 a-5 g-5 |
- fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e4-5 |
+ a16 a-5 \stemup g! f g4-4\< ~ g f-3 ~ |
+ \!f16 a g f e16 g8.-5 ~ g16 g-5 f-4 e-3 d-1 f8.-4 ~ |
+ f16 f-3 e d b'4 a-5 g-5 |
+% fis4-4 g r8\<-"rall." g16-1( bes-2 \!e4-5 |
+ fis4-4 g r8\< g16-1( bes-2 \!e4-5 |
%10
- \!)d1-5
+ )d1-5
\bar "|.";
}
-two = \notes\relative c{
- r16\p [d''-5( c-4 bes-3] [a-2 bes-3 f-1 g-2]
- [a8.-\mordent bes16-1] [g8.-\prall f16-1] |
+two = \type Staff \notes\relative c{
+ \type Voice=ii
+ r16\p d''-5( c-4 bes-3 a-2 bes-3 f-1 g-2
+ a8.-\mordent bes16-1 g8.-\prall f16-1 |
\stemdown
)f2 e2 |
- \translator Staff=bass \stemup
+ \translator Staff=lower \stemup
r4 a,-1 bes-2 b-1 |
- \translator Staff=treble \stemdown
- r16 [b'-3 a-1 g-2] [f8. f16-2] e2 ~ |
+ \translator Staff=upper \stemdown
+ r16 b'-3 a-1 g-2 f8. f16-2 e2 ~ |
%5
- e2 ~ e4 ~ [e16 e-2 f! d-1] |
- s4 [e32 d e8.~] e4 d4 ~ |
- d4. [cis16-2 d-1] cis4 d-1 ~ |
- d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
- r16 [e-3 d-1 c!-2] [bes! d8.] s4 r16\> [bes'-2 a-2 \!g-1] |
+ e2 ~ e4 ~ e16 e-2 f! d-1 |
+ s4 e32 d e8.~ e4 d4 ~ |
+ d4. cis16-2 d-1 cis4 d-1 ~ |
+ d8 r r16 e-2 f d r16 e-2 f d r d-1 e-3 cis |
+ r16 e-3 d-1 c!-2 bes! d8. s4 r16\> bes'-2 a-2 \!g-1 |
%10
fis1-2
}
-three = \notes\relative c{
+three = \type Staff \notes\relative c{
+ \type Voice=iii
\stemup
f2-1( e-2 |
\stemboth
- [)d16 d'( c bes] [a-4 bes-2 f-5 g-4]
- [a8.-\mordent bes16-2]
- [g8.-\prall-4 f16-5] |
+ )d16 d'( c bes a-4 bes-2 f-5 g-4
+ a8.-\mordent bes16-2
+ g8.-\prall-4 f16-5 |
)f2-5 g4-4 gis |
- a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
+ a2-2 ~ a16 a-1( g f e-4 f-2 c-5 d |
%5
- [e8.-\mordent f16] [d8.-\prall-4 c16-5] \stemboth )c4.-5 d8-4 |
+ e8.-\mordent f16 d8.-\prall-4 c16-5 \stemboth )c4.-5 d8-4 |
\stemdown
- e4 ~ [e16 f-2( e-3 d-4] [cis a b cis-3] [d-4 e-3 f-2 d-4] |
- \property Voice . textstyle = "finger"
+ e4 ~ e16 f-2( e-3 d-4 cis a b cis-3 d-4 e-3 f-2 d-4 |
+ \property Voice . textstyle = "finger"
)bes!2-"5\\_4" a ~ |
a a |
d, cis'-5 |
\bar "|.";
}
-four = \notes\relative c{
+four = \type Staff \notes\relative c{
+ \type Voice=iv
\stemdown
d2-3 cis-4 |
\skip 1*3; |
%5
- \translator Staff=treble \stemup \property Voice.hshift = 1
- a'4 gis-2 ~ [gis16 gis-3 fis e]
+ \translator Staff=upper \stemup \property Voice.hshift = 1
+ a'4 gis-2 ~ gis16 gis-3 fis e
\skip 4*1;
- \translator Staff=bass \stemdown \property Voice.hshift = 0
+ \translator Staff=lower \stemdown \property Voice.hshift = 0
\stemup
b2-1 a-1 |
- g a4. [gis16 a] |
- gis2 <[g8 cis,> <f-3 d-1>] e4-2 |
- d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
+ g a4. gis16 a |
+ gis2 < g8 cis,> <f-3 d-1> e4-2 |
+ d4. fis16-3 g-2 r16 bes8.-1 ~ bes4 |
%10
\stemdown
d,1-5
\key F;
}
-
-treble_staff = \type Staff = treble <
- \global
- \one
- \two
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \three
- \four
->
-
-grand_staff = \type GrandStaff <
- \treble_staff
- \bass_staff
->
-
-a4 = \paper{
- linewidth = 193.\mm;
-}
-
\score{
- % Allegretto
- \grand_staff
- \paper{ \a4 }
+ % Allegretto
+ \type GrandStaff <
+ \type Staff = upper <
+ \global
+ \one
+ \two
+ >
+ \type Staff = lower <
+ \global
+ \clef "bass";
+ \three
+ \four
+ >
+ >
+ \paper{
+ \include "preludes-paper.ly";
+ gourlay_maxmeasures = 3.0;
+ \translator{
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator{
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = "1";
+ beamAutoEnd8 = "1/2";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 40; }
\header{
piece = "6";
-\paper{
-% linewidth= 193.\mm;
- linewidth= 180.\mm;
- gourlay_maxmeasures = 10.0;
-% arithmetic_basicspace = 3.;
-% arithmetic_multiplier = 6.\pt;
- % for simple testing only!
-% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
-}
+% nice, but some printers can't handle...
+% linewidth= 193.\mm;
+linewidth= 180.\mm;
+gourlay_maxmeasures = 10.0;
+%arithmetic_basicspace = 3.;
+%arithmetic_multiplier = 6.\pt;
allemande_cello_global = \notes{
\time 4/4;
\key f;
- \partial 16;
\clef bass;
- \skip 1*11;
- s2. s8.
- \bar ":|:";
- \skip 1*11;
- s2. s4 s8
- \bar ":|";
+ \repeat 2 {
+ \partial 16;
+ s16
+ s1*11 |
+ s2 s4 s8
+ \partial 16*15;
+ s16
+ } \repeat 2 {
+ % urg
+ s32 \partial 16; s32
+ s1*11
+ s16*15
+ \partial 16*15;
+ }
}
allemande_cello_scripts = \notes{
>
\score{
- \$allemande_cello_staff
- \include "scs-paper.ly";
+%{
+ urg, this breaks auto-beam-engraver?
+ really hairy bug: 1.1.23
+ extra bars get encountered!!
+ \paper{
+ \include "scs-paper.ly";
+ gourlay_maxmeasures = 4.0;
+ }
+%}
+ \$allemande_cello_staff
+ % \paper{ \include "scs-paper.ly"; }
+ \paper{
+
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 45; }
\header{ piece = "Allemande"; }
}
-
d = { \slurdotted }
comma = "\\sethuge\\ \\ ,"
-allemande_a = \notes \relative c {
- \voiceone a'16 |
- [a8 bes16()a] \onevoice
- [g()f e()d][d()cis d()e][a,8 \d bes16()g] |
- [f( a )d f,] [e8 cis']\voiceone[d8. e16]\onevoice[f g a bes!] |
+allemande_a = \type Staff \notes \relative c {
+ \type Voice=i
+ \stemup
+ a'16 |
+ a8 bes16()a \stemboth
+ g()f e()d d()cis d()e a,8 bes16()g |
+ f( a )d f, e8 cis' \stemup d8. e16 \stemboth f g a bes! |
%3
- \voiceone[c8 \n d16()es]\onevoice[d()c bes()a][c()bes a()g][d'8. f,16] |
- [e( g )bes d][c()bes a()g]\n[bes()a g()f]
- <[f8. a> <f16 a]> |
+ \stemup c8 \n d16()es \stemboth d()c bes()a c()bes a()g d'8. f,16 |
+ e( g )bes d c()bes a()g \n bes()a g()f
+ < f8. a> <f16 a > |
% urg fix
- [b \n f( e )d][e \d cis'( d )cis]\voiceone[d8.( )e16]\onevoice
- \n[f( e d)e] |
+ b \n f( e )d e \d cis'( d )cis \stemup d8.( )e16 \stemboth
+ \n f( e d)e |
%6
- [d( c b )c][b( a gis)a][gis8-\prall fis16()e][e' c( a )g] |
- \voiceone [e' a, f d] [d f d b]\onevoice
- [gis( b e )gis] \d [b( d c )b] |
+ d( c b )c b( a gis)a gis8-\prall fis16()e e' c( a )g |
+ \stemup e' a, f d d f d b \stemboth
+ gis( b e )gis \d b( d c )b |
%8
- \n[c( a f )e][d( f e )d][gis8.-\trill()a16]\d[b d e,()d] |
+ \n c( a f )e d( f e )d gis8.-\trill()a16 \d b d e,()d |
% urg
- [c( e a)d]\voiceone [b8.-\trill a16] a8 s4 s8 \onevoice |
+ c( e a)d \stemup b8.-\trill a16 a8 s4 s8 \stemboth |
%10
- [d,!16 gis( a b a gis fis )e] \voiceone [e8 f16()e]\onevoice
- [d()c b()a] |
- \voiceone[d8 e16()f]\onevoice\d[e()d c()b]
- \voiceone[d'16()b c()a] \onevoice [e8 gis] |
- [a,8. cis16][e g!( f! )e][f( a )d gis,] a8.
+ d,!16 gis( a b a gis fis )e \stemup e8 f16()e \stemboth
+ d()c b()a |
+ \stemup d8 e16()f \stemboth\d e()d c()b
+ \stemup d'16()b c()a \stemboth e8 gis |
+ a,8. cis16 e g!( f! )e f( a )d gis, a8.
%13
- e16 \voiceone [e8. f16] \onevoice
- \n[g!()e f()a]\n[cis,( d )e bes][a8.-\trill()g16] |
- [f a'(f)d][g \n b,()cis a'][g(f e)d][fis d()es c(] |
+ e16 \stemup e8. f16 \stemboth
+ \n g!()e f()a \n cis,( d )e bes a8.-\trill()g16 |
+ f a'(f)d g \n b,()cis a' g(f e)d fis d()es c( |
%15
- [)bes g'(a, )g][fis a d c'][bes(fis)g bes][d()a bes()g] |
- [es(d)es g][c()a bes()g]\d[d(c)d g]\n[bes()fis g()es] |
+ )bes g'(a, )g fis a d c' bes(fis)g bes d()a bes()g |
+ es(d)es g c()a bes()g \d d(c)d g \n bes()fis g()es |
%17
- \n[c(bes)c bes'][a(c)es g,]\voiceone[fis8-\trill\d g16()a]\onevoice
- [d,8 es16()c] |
- [bes(d )g bes,][d,8 fis']\voiceone[g8. a16]\onevoice[bes d g, f] |
+ \n c(bes)c bes' a(c)es g, \stemup fis8-\trill\d g16()a \stemboth
+ d,8 es16()c |
+ bes(d )g bes, d,8 fis' \stemup g8. a16 \stemboth bes d g, f |
%19
- \voiceone[e8.-\trill()f16]\onevoice [g()e c()bes]
- \n[a()f' g,()f][e g'( a )bes] |
+ \stemup e8.-\trill()f16 \stemboth g()e c()bes
+ \n a()f' g,()f e g'( a )bes |
% :-(
- % [bes( a g )f^\comma]
- [bes( a g )f^"\\sethuge{\\ \\ '}"]
- [a()e f()d][bes d(f)a][d()a bes()g] |
+ % bes( a g )f^\comma
+ bes( a g )f^"\\sethuge{\\ \\ '}"
+ a()e f()d bes d(f)a d()a bes()g |
%21
- [a,(\n)g'(\n cis())d][e()g, a()e][f()d bes()d]\d[gis, f'(e)d] |
- % \n[d( cis b )a^\comma][c(a)fis d'][c a( b )d]
- \n[d( cis b )a^"\\sethuge\\ \\ ,"]
- [c(a)fis d'][c a( b )d]
- [f!(d )gis, d'] |
+ a,(\n)g'(\n cis())d e()g, a()e f()d bes()d \d gis, f'(e)d |
+ % \n d( cis b )a^\comma c(a)fis d' c a( b )d
+ \n d( cis b )a^"\\sethuge\\ \\ ,"
+ c(a)fis d' c a( b )d
+ f!(d )gis, d' |
%23
- [cis(e g!)bes][e()a, bes()g][f()cis d()gis,][a8 cis!] |
+ cis(e g!)bes e()a, bes()g f()cis d()gis, a8 cis! |
% knee
- \stemup [d,16 \stemboth d''(c!)a][bes!(g)e cis'][d a f d] d,8.
+ \stemup d,16 \stemboth d''(c!)a bes!(g)e cis' d a f d d,8.
}
allemande_b = \notes \relative c {
- \voicetwo
+ \type Voice=ii
+ \stemdown
s16 |
% <d'8 g' f'> s8 s2. |
<f8 g, d> s8 s2. |
s1 |
f!16 s16*3 b, s16*3 s2 |
s1 |
- s4 e [dis8 ~ dis32 e( fis gis][a b c d! c b c )a] |
+ s4 e dis8 ~ dis32 e( fis gis a b c d! c b c )a |
%10
s2 <a8 c,> s8 s4 |
<b8 gis,> s8 s4 <e,8 a,> s8 s4 |
- s1 |
+ s2 s4 s8.
+ s16 |
<cis'8 g,> s8 s2. |
%15
s1*3 |
s2 c,8 s8 s4 |
s2 g8. s16 s4 |
bes8.
+% }
}
allemande = \type Staff \notes<
\$allemande_b
>
+
allemande_viola_global = \notes{
\time 4/4;
\key f;
- \partial 16;
\clef alto;
- \skip 1*11;
- s2. s8.
- \bar ":|:";
- \skip 1*11;
- s2. s4 s8
- \bar ":|";
+ \repeat 2 {
+ \partial 16;
+ s16
+ s1*11 |
+ s2 s4 s8
+ \partial 16*15;
+ s16
+ } \repeat 2 {
+ % urg
+ s32 \partial 16; s32
+ s1*11
+ s16*15
+ \partial 16*15;
+ }
}
allemande_viola_scripts = \notes{
\score{
\$allemande_viola_staff
- \include "scs-paper.ly";
+% \include "scs-paper.ly";
+ \paper{
+ linewidth = 180.\mm;
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 45; }
\header{ piece = "Allemande"; }
}
courante_cello_global = \notes{
\time 3/4;
\key f;
- \partial 16;
\clef bass;
- \skip 2.*15;
- s2 s8.
- \bar ":|:";
- \skip 2.*15;
- s2 s8.
- \bar ":|";
+ \repeat 2 {
+ \partial 16;
+ s16
+ s2.*15
+ % hmm
+ s2 s8
+ \partial 16*11;
+ s16
+ } \repeat 2 {
+ % urg
+ s32 \partial 16; s32
+ s2.*15
+ s16*11
+ \partial 16*11;
+ }
}
courante_cello_scripts = \notes{
\score{
\$courante_cello_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 55; }
\header{ piece = "Courante"; }
}
n = { \slurnormal }
d = { \slurdotted }
-courante_a = \notes \relative c {
+courante_a = \type Staff \notes \relative c {
+ \type Voice=i
d'16 |
- [d a f a] [d, f g a]\d[bes()a bes()g] |
- \voiceone <g4 a> s4 \onevoice \d[g16()f g()e] |
+ d a f a d, f g a \d bes()a bes()g |
+ \stemup <g4 a> s4 \stemboth \d g16()f g()e |
% urg, a good case for mean-distance-beam-dir-algorithm!
- [f()d e()c!]\n[bes(a)bes a'][g f e d] |
+ f()d e()c! \n bes(a)bes a' g f e d |
%4
- % [cis e \n a,(\d(b][[cis d e f][)g )bes-- a e] |
- [cis e \n a,(b][[cis d e f][)g bes-- a e] |
- % [f a \n d,(\d( e][f g a bes][)c )bes-- d c] |
- [f a \n d,( e][f g a bes][)c bes-- d c] |
- \n\voiceone <c4~ f,> <[c16 f,> bes a g] \onevoice [f()es d()es] |
+ % cis e \n a,(\d(b cis d e f )g )bes-- a e |
+ cis e \n a,(b cis d e f )g bes-- a e |
+ % f a \n d,(\d( e f g a bes )c )bes-- d c |
+ f a \n d,( e f g a bes )c bes-- d c |
+ \n\stemup <c4 f,> ~ < c16 f,> bes a g \stemboth f()es d()es |
%7
- [d bes(a)bes][d bes e! bes][f' bes, g' bes,] |
- \d[e,( g )c d][e f g a][bes()a bes()g]|
- \n[a f(e)f][a f bes f][c' f, d' f,] |
+ d bes(a)bes d bes e! bes f' bes, g' bes, |
+ \d e,( g )c d e f g a bes()a bes()g |
+ \n a f(e)f a f bes f c' f, d' f, |
%10
- [cis( e )a b][cis d e f][g()f g()e] |
- [d,( a' )f' e]\n[d()c d()c][b()a b()a] |
- \n[gis( a )b e,]\n[f()e f()d][e()c d()b] |
+ cis( e )a b cis d e f g()f g()e |
+ d,( a' )f' e \n d()c d()c b()a b()a |
+ \n gis( a )b e, \n f()e f()d e()c d()b |
%13
- \n[c a'( b c][b a gis)a][d, a' e a] |
- [f a( b c][b a gis)a][f a e a] |
- [dis, a'( b c][b a gis)a][e a e gis] |
- [a e cis e][a, cis e gis] a8. e'16 |
+ \n c a'( b c b a gis)a d, a' e a |
+ f a( b c b a gis)a f a e a |
+ dis, a'( b c b a gis)a e a e gis |
+ a e cis e a, cis e gis a8.
+ e'16 |
%17
- [e cis a cis][e, f g a][bes()g cis()g] |
- \voiceone d'4 ~ [d16 a d e][f d a c!]\onevoice |
- \n[b16 f(d)f]\d[g, d'(f)g][b f d' f,] |
+ e cis a cis e, f g a bes()g cis()g |
+ \stemup d'4 ~ d16 a d e f d a c! \stemboth |
+ \n b16 f(d)f \d g, d'(f)g b f d' f, |
%20
- [e g c,(d][e f g a][)bes! d c g] |
- \voiceone a s16*3 s4 s4
- d, ~ [d16 e! f g] \onevoice [a bes c d] |
+ e g c,(d e f g a )bes! d c g |
+ \stemup a s16*3 s4 s4
+ d, ~ d16 e! f g \stemboth a bes c d |
%23
- [e, bes(a)g][a f' \n g,()f]\d[c()g' f' e] |
- [f a( bes a][g f e )f][g e f d]|
- [cis g' b, g'][a, g' b, g'][cis, g' a, g']|
+ e, bes(a)g a f' \n g,()f \d c()g' f' e |
+ f a( bes a g f e )f g e f d |
+ cis g' b, g' a, g' b, g' cis, g' a, g' |
%26
- [f d f a][d a d e][f a, f d]|
- [g, d'(g)a][bes g' a, f'][g, e' f, d']|
- \n[cis(d)e cis][a cis bes cis][a cis g cis]|
+ f d f a d a d e f a, f d |
+ g, d'(g)a bes g' a, f' g, e' f, d' |
+ \n cis(d)e cis a cis bes cis a cis g cis |
%29
- \n[f, d'(e f][e d cis)d][g, d' a d]|
- \d[bes d(e f][e d cis)d][bes d a d]|
- [gis, d'(e f][e d cis)d][a d a cis]|
- [d a f a][d, f a, d]
+ \n f, d'(e f e d cis)d g, d' a d |
+ \d bes d(e f e d cis)d bes d a d |
+ gis, d'(e f e d cis)d a d a cis |
+ d a f a d, f a, d
d,8.
}
courante_b = \notes \relative c {
- \voicetwo
+ \type Voice=ii
\stemdown
s16 |
s2. |
%2
- \n cis4 ~ [cis16 d e f] s4 |
+ \n cis4 ~ cis16 d e f s4 |
s2.*3 |
%6
- { a,4 s2 }
- s2.*11
+ a,4 s2
+ s2.*9
+ % 16
+ s2 s8.
+ s16 |
+ s2.
%18
f'4 s s |
s2.*2
%21
- [f16 c'(bes a][g f es d] [)es c' f, es] |
+ f16 c'(bes a g f es d )es c' f, es |
bes4 s s
+ s2.*9
+ s2 s8.
}
-courante = \type Staff \notes<
+courante = \type Staff \notes<
\$courante_a
\$courante_b
>
courante_viola_global = \notes{
\time 3/4;
\key f;
- \partial 16;
\clef alto;
- \skip 2.*15;
- s2 s8.
- \bar ":|:";
- \skip 2.*15;
- s2 s8.
- \bar ":|";
+ \repeat 2 {
+ \partial 16;
+ s16
+ s2.*15
+ % hmm
+ s2 s8
+ \partial 16*11;
+ s16
+ } \repeat 2 {
+ % urg
+ s32 \partial 16; s32
+ s2.*15
+ s16*11
+ \partial 16*11;
+ }
}
courante_viola_scripts = \notes{
\score{
\$courante_viola_staff
- \include "scs-paper.ly";
+ %\paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 55; }
\header{ piece = "Courante"; }
}
\time 3/8;
\key f;
\clef bass;
- \partial 8;
- \skip 4.*31;
- s4
- \bar ":|:";
- \skip 4.*44;
- s4
- \bar ":|";
+ \repeat 2 {
+ \partial 8;
+ s8
+ s4.*31
+ s4
+ \partial 4;
+ } \repeat 2 {
+ % urg
+ s16 \partial 8; s16
+ s4.*43
+ s4
+ \partial 4;
+ }
}
gigue_cello_scripts = \notes{
\score{
\$gigue_cello_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ beamAutoEnd16 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 60; }
\header{ piece = "Gigue"; }
}
% * slurs/ties in two different threads (like beams): urtext, and additionals
%
-% urg, Thread is gone, try Voice
-% gigue_notes = \type Thread = gigue \notes \relative c {
-
-gigue_notes = \type Voice = gigue \notes \relative c {
+gigue_notes = \type Staff \notes \relative c {
+ \type Voice=i
a'8 |
d,4 bes'8 | cis,4 g'8 | f16 e f g a8 |
d,4 d'8 | e,16(f)g8 bes | c,16(d)e8 c' | a16 g a bes c a |
f4-\trill a8 | b,()g' cis, | d f16( c bes )a | g8()es' a, |
bes d16( a g )f | e!8()cis' bes' a g16( f e)d |
%15
- %\voiceone e(f g e f)d \onevoice e8()a,\comma c''! |
- \voiceone e(f g e f)d \onevoice e8()a,^"\\sethuge{\\ \\ '}" c'! |
- \voiceone c16(d es c d)a bes8 r bes |
+ %\stemup e(f g e f)d \stemboth e8()a,\comma c''! |
+ \stemup e(f g e f)d \stemboth e8()a,^"\\sethuge{\\ \\ '}" c'! |
+ \stemup c16(d es c d)a bes8 r bes |
bes16(c d bes c)g a8 r a |
%21
b16()c d()b c()a | d()e f()d e()c | b()c d()b c()a | e'4 gis,8 |
- a16()b c()a d()b |
+ a16()b c()a d()b |
a()b c()a d()b |
%27
a()b c()a d()b |
a()b c()a d()b |
- f'8 e16()d c()b \onevoice |
+ f'8 e16()d c()b \stemboth |
e,, e''(d)c b()gis | a f(e)d e()cis | a4
%33
c'!8 |
%45
as(g)as fis g es' | d,8 g fis | g16 es(d)c d()bes | g4 bes'8
% what about this?
- \voiceone\stemdown e,!16(f)g e f d\onevoice
+ \stemup\stemdown e,!16(f)g e f d\stemboth
c(d e) c d bes | a(bes)c a bes g | f4 a'8
% what about this?
- \voiceone\stemdown d,16(e)f d e c\onevoice bes(c)d bes c a
+ \stemup\stemdown d,16(e)f d e c\stemboth bes(c)d bes c a
g16(a)bes g a f | e4 g'8
%57
a,16(b cis d)e g-. | f(g a cis )d f, | e(f g a)bes d,-. |
cis(d)e a, bes g
- \voiceone
+ \stemup
d'()e f()d g()e |
%62
d()e f()d g()e |
d()e f()d g()e |
d()e f()d g()e |
- \onevoice
+ \stemboth
cis bes'(a g f)e | f, a' g f e cis |
%67
d bes a g a f | d a' d e f d |
- \voiceone es()f g()es f()d | g()a bes()g a()f es()f g()es f()d |
+ \stemup es()f g()es f()d | g()a bes()g a()f es()f g()es f()d |
%72
- cis'4 \onevoice d16()c | bes(a g f e)d | cis(b a g f)e | d f a d f a |
+ cis'4 \stemboth d16()c | bes(a g f e)d | cis(b a g f)e | d f a d f a |
d4
}
-gigue_b = \notes \relative c {
- \voicetwo
+gigue_b = \type Staff \notes \relative c {
+ \type Voice=ii
+ \stemdown
s8
s4.*14
- a4. | s d | [d8 g, d'] | e4. | [f8 f, f'] |
+ a4. | s d | d8 g, d' | e4. | f8 f, f' |
%21
- [d d d] [d d d] [d d d] |
+ d d d d d d d d d |
% one could type r here...
d4 s8 | <e c> s s | d s s | e s s | f s s | gis s4 |
s4. s s4
s4.*7
<a,8 f> s s g s s a s s bes s s
s4.*4
- [g8 g g] [g g g] [g g g]
+ g8 g g g g g g g g
%72
<g4 e'>
}
-gb = \notes { [s16 s s s s s] }
-
-% urg, Thread is gone, try Voice
-% gigue_beams = \type Thread = gigue \notes{
-gigue_beams = \type Voice = gigue \notes{
- s8 |
- s4. s4. \gb
- s4. \gb \gb \gb
- %8
- s4.
- \gb \gb \gb \gb \gb
- %14
- \gb \gb \gb \gb s4.
- %19
- \gb s4. \gb \gb \gb
- %24
- s4.
- \gb \gb \gb \gb \gb \gb \gb
- s4 s8
- %33
- s4. s4.
- \gb s4. \gb \gb
- %39
- \gb s4.
- \gb \gb \gb \gb \gb \gb \gb
- %48
- s4. \gb \gb \gb
- s4. \gb \gb \gb s4.
- \gb \gb \gb \gb \gb
- \gb \gb \gb \gb \gb
- \gb \gb \gb \gb \gb
- s4 [s16 s]
- \gb \gb \gb
-}
-
gigue_a = \type Voice \notes<
\$gigue_notes
- \$gigue_beams
>
gigue = \notes<
\header{
-filename = "gigue-cello.ly";
+filename = "gigue-viola.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
% piece = "Gigue";
\include "gigue-urtext.ly";
-gigue_cello_global = \notes{
+gigue_viola_global = \notes{
\time 3/8;
\key f;
- \clef bass;
- \partial 8;
- \skip 4.*31;
- s4
- \bar ":|:";
- \skip 4.*44;
- s4
- \bar ":|";
+ \clef alto;
+ \repeat 2 {
+ \partial 8;
+ s8
+ s4.*31
+ s4
+ \partial 4;
+ } \repeat 2 {
+ % urg
+ s16 \partial 8; s16
+ s4.*43
+ s4
+ \partial 4;
+ }
}
-gigue_cello_scripts = \notes{
+gigue_viola_scripts = \notes{
}
-gigue_cello_staff = \type Staff <
+gigue_viola_staff = \type Staff <
\notes \transpose c' \$gigue
- \$gigue_cello_global
- \$gigue_cello_scripts
+ \$gigue_viola_global
+ \$gigue_viola_scripts
>
\score{
- \$gigue_cello_staff
- \include "scs-paper.ly";
-%broken
+ \$gigue_viola_staff
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ beamAutoEnd16 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 60; }
\header{ piece = "Gigue"; }
}
\time 3/4;
\key f;
\clef bass;
- \skip 2.*8;
- \bar ":|:";
- \skip 2.*1;
- \slurdotted
- \skip 2.*14;
- s2._"Fine"
- \bar ":|";
+ \repeat 2 {
+ \skip 2.*8;
+ } \repeat 2 {
+ \skip 2.*1;
+ \slurdotted
+ \skip 2.*14;
+ s2._"Fine"
+ }
}
menuetto_i_cello_scripts = \notes{
+ \type Voice=i
s2.
s8^"~"^1_2_4 s8 s4 s^4
s4^0_1 s_4 s
\score{
\$menuetto_i_cello_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 110; }
\header{ piece = "Menuetto I"; }
}
\time 3/4;
\key D;
\clef bass;
- \skip 2.*8;
- \bar ":|:";
- \skip 2.*1;
- \slurdotted
- \skip 2.*14;
- s2._"Menuetto I da Capo"
- \bar ":|";
+ \repeat 2 {
+ \skip 2.*8;
+ } \repeat 2 {
+ \skip 2.*1;
+ \slurdotted
+ \skip 2.*14;
+ s2._"Menuetto I da Capo"
+ }
+
}
menuetto_ii_cello_staff = \type Staff <
\score{
\$menuetto_ii_cello_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 130; }
\header{ piece = "Menuetto II"; }
}
But merging melodic and scripts doen't work too well yet (see viola_scripts).
%}
-menuetto_i_a = \notes \relative c {
- <d2\f f a> bes'4 |
- [bes8 a bes g] a4 |
- <d,4 bes> g [f8 e] |
- [f8( e )d cis b a] |
+menuetto_i_a = \type Staff \notes \relative c {
+ \type Voice=i
+ <d2\f f a> bes'4 |
+ bes8 a bes g a4 |
+ <d,4 bes> g f8 e |
+ f8( e )d cis b a |
<d2 f a> bes'!4 |
- [bes8 a bes g] c!4 |
+ bes8 a bes g c!4 |
%7
<a f> <d f, bes,> <e g, g,> |
<cis2. e, a,> |
- <a2\f e'> [d8( e16 )f] |
+ <a2\f e'> d8( e16 )f |
\slurdotted
- [e8( d cis )e a,()g] |
+ e8( d cis )e a,()g |
a4 ~ d cis |
- [g'8( f e )f d() c] |
+ g'8( f e )f d() c |
%13
bes2 c4 |
- [a8 g a f] <d'4 e, bes> |
- <c f, a,> [bes8 a g a] |
- [f8( e )f a g bes] |
+ a8 g a f <d'4 e, bes> |
+ <c f, a,> bes8 a g a |
+ f8( e )f a g bes |
<a2^\trill fis> bes4 |
- [c8 bes c a] fis4^\trill |
+ c8 bes c a fis4^\trill |
%19
% dispute
-% <bes,4 g' d'> <c, g' c> <[d,8 bes'(> )a] |
- <d'4 g, bes,> <c g c,> [bes8()a] |
- [c8( bes a )bes g()bes] |
+% <bes,4 g' d'> <c, g' c> < d,8 bes'(> )a |
+ <d'4 g, bes,> <c g c,> bes8()a |
+ c8( bes a )bes g()bes |
d4 ~ cis d |
- [g,8 f g e] f4 |
- [g,8 g'] <{e4.^\trill ~ d8 } a4.> |
+ g,8 f g e f4 |
+ g,8 g' <{e4.^\trill d8 } a4.> ~ |
<d2. a d,> |
}
-menuetto_i_b = \notes \relative c {
+menuetto_i_b = \type Staff \notes \relative c {
+ \type Voice = ii
+ \stemdown
\slurdotted
\skip 2.*1; |
<e8 c> \skip 8*5; |
a,8 \skip 8*5; |
\skip 2.*1; |
e'8 \skip 8*5; |
- \onevoice
- \skip 2.*3; |
+ \stemboth
+ s2.*2 |
+ s2.
g8 \skip 8*5; |
f2 e4
d8 \skip 8*5; |
% g2 f4 |
g4 \skip 4*1; f4 |
cis8 \skip 8*3; d4 |
+ s2.*2
}
% UGH, fix this like in sarabande
menuetto_i_a_voice_urg = \notes{
- \skip 2.*1; \voiceone
- \skip 2.*1; \onevoice
- \skip 2.*1; \voiceone
- \skip 2.*1; \onevoice
- \skip 2.*1; \voiceone
- \skip 2.*1; \onevoice
- \skip 2.*3; \voiceone
- \skip 2.*1; \voiceone
+ \type Voice = i
+ \skip 2.*1; \stemup
+ \skip 2.*1; \stemboth
+ \skip 2.*1; \stemup
+ \skip 2.*1; \stemboth
+ \skip 2.*1; \stemup
+ \skip 2.*1; \stemboth
+ \skip 2.*3; \stemup
+ \skip 2.*1; \stemup
\skip 2.*3;
- \skip 4*2; \onevoice
- \skip 4*2; \voiceone
- \skip2.*1; \voiceone
- \skip 4*2; \onevoice
- \skip2.*1; \voiceone
- \skip 2.*1; \onevoice
- \skip 2*1; \voiceone
+ \skip 4*2; \stemboth
+ \skip 4*2; \stemup
+ \skip2.*1; \stemup
+ \skip 4*2; \stemboth
+ \skip2.*1; \stemup
+ \skip 2.*1; \stemboth
+ \skip 2*1; \stemup
\skip 4*1;
- \skip 2.*4; \onevoice
+ \skip 2.*4; \stemboth
\skip 2.*1;
-% \bar "|.";
}
menuetto_i_a_voice_urg_urg = \notes<
>
menuetto_i_b_voice_urg = \notes{
- \voicetwo
+ \type Voice=ii
+ \stemdown
% urg urg, huh?
- \skip 2.*8; \voicetwo
+ \skip 2.*8; \stemdown
}
menuetto_i_b_voice_urg_urg = \notes<
{ \$menuetto_i_b_voice_urg_urg }
>
-menuetto_ii = \notes \relative c {
+menuetto_ii = \type Staff\notes \relative c {
+ \type Voice=i
\slurdotted
- fis4^\trill [d8( e fis )g] |
+ fis4^\trill d8( e fis )g |
a4 fis, a' |
- [g,8()b] e4 g |
+ g,8()b e4 g |
\slurnormal
- [d8( cis )b cis a g] |
+ d8( cis )b cis a g |
% ugh, forcing knee
% Lily's not yet smart enough to decide for herself.
- \stemup [fis \stemboth d''( cis b a )g] |
- [b( a g fis e )d] |
+ \stemup fis \stemboth d''( cis b a )g |
+ b( a g fis e )d |
%7
- [cis d] g4 [fis8( g16 )a] |
+ cis d g4 fis8( g16 )a |
<\stemdown a,2. \stemup e'> |
\stemboth
- cis4^\prall [e8( d cis )b] |
+ cis4^\prall e8( d cis )b |
cis4 g, cis' |
- [fis,8()a] d4 fis |
- [b,8()a g()fis \slurdotted g()b] |
+ fis,8()a d4 fis |
+ b,8()a g()fis \slurdotted g()b |
\slurnormal
%13
- [e, d'( cis )b cis()ais] |
- % check slur! [d, b' a! g fis )e] |
- [d,( b' a! g fis )e] |
- [g( fis e d cis )d] |
- [b( cis d e fis )g] |
- [a( g fis g a )b] |
+ e, d'( cis )b cis()ais |
+ % check slur! d, b' a! g fis )e |
+ d,( b' a! g fis )e |
+ g( fis e d cis )d |
+ b( cis d e fis )g |
+ a( g fis g a )b |
c4 dis,, c'' |
%19
- [b8()a c( b a )g] |
- [fis() g a()fis g()e] |
+ b8()a c( b a )g |
+ fis() g a()fis g()e |
\slurdotted
- cis4^\trill [a8( b cis )d] |
+ cis4^\trill a8( b cis )d |
\slurnormal
- [e( fis g )b] a4 |
- [g8()fis e()d e()cis] |
+ e( fis g )b a4 |
+ g8()fis e()d e()cis |
d2.
}
\time 3/4;
\key f;
\clef alto;
- \skip 2.*8;
- \bar ":|:";
- \clef violin;
- \skip 2.*1;
- \slurdotted
- \skip 2.*3;
- \clef alto;
- \skip 2.*11;
- s2._"Fine"
- \bar ":|";
+ \repeat 2 {
+ \skip 2.*8;
+ \clef violin;
+ \skip 2.*1;
+ } \repeat 2 {
+ \slurdotted
+ \skip 2.*3;
+ \clef alto;
+ \skip 2.*11;
+ s2._"Fine"
+ }
}
menuetto_i_viola_scripts = \notes{
+ \type Voice=i
s2.
s8^"~"^1_2_4 s8*5
s2.*5
\score{
\$menuetto_i_viola_staff
- \include "scs-paper.ly";
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 110; }
\header{ piece = "Menuetto I"; }
}
\time 3/4;
\key D;
\clef alto;
- \skip 2.*8;
- \bar ":|:";
- \skip 2.*1;
- \slurdotted
- \skip 2.*14;
- s2._"Menuetto I da Capo"
- \bar ":|";
+ \repeat 2 {
+ \skip 2.*8;
+ } \repeat 2 {
+ \skip 2.*1;
+ \slurdotted
+ \skip 2.*14;
+ s2._"Menuetto I da Capo"
+ }
}
menuetto_ii_viola_staff = \type Staff <
\score{
\$menuetto_ii_viola_staff
- \include "scs-paper.ly";
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "3/4";
+ }
+ }
\midi{ \tempo 4 = 130; }
\header{ piece = "Menuetto II"; }
}
\score{
\$prelude_cello_staff
- \include "scs-paper.ly";
+ \paper{
+ \include "scs-paper.ly";
+ gourlay_maxmeasures = 7.0;
+ }
\midi{ \tempo 4 = 40; }
\header{ piece = "Pr\\'elude"; }
}
But merging melodic and scripts doen't work too well yet see viola_scripts .
%}
-% urg, Thread is gone, try Voice
-% prelude_notes = \type Thread = prelude \notes \relative c {
-prelude_notes = \type Voice = prelude \notes \relative c {
+prelude_notes = \notes \relative c {
+ \type Voice=i
d8 f a4 ~ a16 f e d |
cis e g a bes4 ~ bes16 a g f |
e g bes cis e8. bes16 a16 g f e |
e cis b cis a b cis d e d e cis |
%47
d b a b f gis b cis d cis d b |
- \voiceone <cis4^\fermata e,> \onevoice r r |
+ \stemup <cis4^\fermata e,> \stemboth r r |
bes16 g fis g es g d g es g bes d, |
cis-- e! g a bes8. a16 g fis g e' |
%51
d bes a g fis-- a c! es d c bes a |
bes g fis g es g d g es g bes d, |
%54
- \voiceone g'8. f16
- e!16 d cis b a g f e \onevoice |
+ \stemup g'8. f16
+ e!16 d cis b a g f e \stemboth |
d-- a' d e f e d c! bes! a g f |
e-- a cis e g f e d cis b a g |
f a d f a d, f a d bes! c! a |
g, d' g a bes g fis g es' g, d' g, |
- \voiceone <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,>
+ \stemup <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,>
}
prelude_b = \notes \relative c {
- \voicetwo
+ \type Voice=ii
+ \stemdown
s2.*47
%48
g4 s2 |
a'2. a a a <a d,>
}
-% pat1 = \notes { [s8 s]s4[s16 s s s] }
-pat1 = \notes { [s16 s s s]s4[s16 s s s] }
-pat2 = \notes { [s16 s s s][s8.s16][s s s s] }
-pat3 = \notes { [s16 s s s][s8 s s s] }
-
-% of course, i just type pat1, and add the \ and the silly $ later
-% urg, Thread is gone, try Voice
-% prelude_beams = \type Thread = prelude \notes{
-prelude_beams = \type Voice = prelude \notes{
- \$pat1
- \$pat1
- \$pat2
- \$pat3
- %5
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %10
- \$pat2
- \$pat2
- \$pat2
- \$pat1
- \$pat2
- %15
- \$pat1
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %20
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %25
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %30
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %35
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %40
- \$pat1
- \$pat2
- \$pat1
- \$pat2
- \$pat2
- %45
- \$pat2
- \$pat2
- \$pat2
- s2.
- \$pat2
- %50
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- \$pat2
- %55
- \$pat2
- \$pat2
- \$pat2
- \$pat2
-}
-
%{
properties, urg!
fig1 = \notes{ s16( s s )s }
fig5 = \notes{ \slurnormal s8.()s16 }
% of course, i just type fig1, and add the \ and the silly $ later
-% urg, Thread is gone, try Voice
-% prelude_slurs = \type Thread = prelude \notes{
-prelude_slurs = \type Voice = prelude \notes{
+prelude_slurs = \notes{
+ \type Voice=i
s4 s4 \$fig3 |
\$fig1 s4 \$fig3 |
\$fig1 s4 \$fig3 |
fig5 = \notes{ \slurdotted s8.()s16 }
fig6 = \notes{ \slurdotted s16()s \slurdotted s()s }
-% urg, Thread is gone, try Voice
-% prelude_suggested_slurs = \type Thread = prelude \notes{
-prelude_suggested_slurs = \type Voice = prelude \notes{
+prelude_suggested_slurs = \notes{
+ \type Voice=i
\slurdotted
s2. |
s2. |
\$fig3 s2 |
}
-prelude_a = \type Voice \notes<
+prelude_a = \notes<
\$prelude_notes
- \$prelude_beams
\$prelude_slurs
\$prelude_suggested_slurs
>
-prelude = \notes<
+prelude = \type Staff \notes<
\$prelude_a
\$prelude_b
>
\score{
\$prelude_viola_staff
- \include "scs-paper.ly";
+ \paper{
+ \include "scs-paper.ly";
+ gourlay_maxmeasures = 7.0;
+ }
\midi{ \tempo 4 = 40; }
\header{ piece = "Pr\\'elude"; }
}
\time 3/4;
\key f;
\clef bass;
- \skip 2.*12;
- \bar ":|:";
- \skip 2.*16;
- \bar ":|";
+ \repeat 2 {
+ s2.*12
+ } \repeat 2 {
+ s2.*16
+ }
}
sarabande_cello_scripts = \notes{
\score{
\$sarabande_cello_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 40; }
\header{ piece = "Sarabande"; }
}
n = { \slurnormal }
d = { \slurdotted }
-%
-% ugh, the non-shortened beamstems of voice in forced direction
-% look ugly here!
-sarabande_a = \notes \relative c {
- \voiceone \d[d8.()e16] e4.-\trill([d16 )e] |
- f4. \onevoice [e8(d)c] |
- [bes g']\n[f e16(f][g a bes)d,] |
- cis4.-\trill\d[b8(a)g] |
+sarabande_a = \type Staff \notes \relative c {
+ \type Voice=i
+ \stemup \d d8.()e16 e4.-\trill( d16 )e |
+ f4. \stemboth e8(d)c |
+ bes g' \n f e16(f g a bes)d, |
+ cis4.-\trill\d b8(a)g |
% copy bar 1, half bar 2
- \voiceone \d[d'8.()e16] f4.-\trill([d16 )e] |
+ \stemup \d d'8.()e16 f4.-\trill( d16 )e |
%5
- f4. \onevoice [d8(e)f] |
- \n[g bes16()a][c()bes a()g][d'8 f,] |
- \voiceone e4.-\trill \onevoice \d[d8(c)bes] |
+ f4. \stemboth d8(e)f |
+ \n g bes16()a c()bes a()g d'8 f, |
+ \stemup e4.-\trill \stemboth \d d8(c)bes |
%8
- \voiceone \n[f' g16()a] a4. [g16()f] |
- [g8 a16()bes]bes4. [c16()d]|
+ \stemup \n f' g16()a a4. g16()f |
+ g8 a16()bes bes4. c16()d |
% 11
- \onevoice \d [e,8()f][c, g'][f'()e] |
+ \stemboth \d e,8()f c, g' f'()e |
f4 f,2 |
- \voiceone a'4 \d a4.-\trill()bes8 |
- [c bes16()a] \onevoice [fis8.-\trill()es16][d8()c] |
- [bes g'][a, fis'][es'()d] |
+ \stemup a'4 \d a4.-\trill()bes8 |
+ c bes16()a \stemboth fis8.-\trill()es16 d8()c |
+ bes g' a, fis' es'()d |
%16
- \voiceone bes4.-\trill \onevoice [a8(g)f!] |
- [e bes()a f'(g)a] |
- [d, as()g es'(f)g]|
- [cis, bes'][a g16()f][e!8 f16()d] |
- [cis8 e16()a][a,8. g'16]\n[f8()e] |
+ \stemup bes4.-\trill \stemboth a8(g)f! |
+ e bes()a f'(g)a |
+ d, as()g es'(f)g |
+ cis, bes' a g16()f e!8 f16()d |
+ cis8 e16()a a,8. g'16 \n f8()e |
%21
- \voiceone [d e16()f]f4. [e16()d] |
- [e8 f16()g]g4. [a16()bes] |
- \d[a8 cis16()d][d,8 e16(f32)g][f8-\trill \n e16()d] |
- d4 [d,16 a'( b cis][d e f )g] |
+ \stemup d e16()f f4. e16()d |
+ e8 f16()g g4. a16()bes |
+ \d a8 cis16()d d,8 e16(f32)g f8-\trill \n e16()d |
+ d4 d,16 a'( b cis d e f )g |
%25
- [a(b c)b] c4. [b16()a] |
- \d[b(cis d )cis] d4. \n[e16()f] |
- \onevoice [d(cis)d f,] [a,8 e']\d[d'()cis] |
+ a(b c)b c4. b16()a |
+ \d b(cis d )cis d4. \n e16()f |
+ \stemboth d(cis)d f, a,8 e' \d d'()cis |
d4 d,,2 |
}
-sarabande_b = \notes \relative c {
- \voicetwo
+sarabande_b = \type Staff \notes \relative c {
+ \type Voice=ii
+ \stemdown
% dispute
% d4 a2 |
% this avoids the clash bug
<a4. d,> s8*3 |
s2. |
% 8
- <g4. c,> s8*3 |
+ <g4. c,> s8*3 |
a4 <bes4. d> r8 |
%10
bes4 <g2 f'> |
s2.*2 |
- \d[f'8()es] es4. r8 |
+ \d f'8()es es4. r8 |
d4 s2 |
%15
s2. |
- <d4. g,> s8*3 |
+ <d4. g,> s8*3 |
s2.*4 |
%21
- bes4 g2 |
+ bes4 g2 |
g4 <bes4. cis,> s8 |
<d8 a f> r r g, a4 |
s2. |
f'4 fis4. s8 |
<d4 g,> gis4. s8 |
+ s2.*2
}
\time 3/4;
\key f;
\clef alto;
- \skip 2.*12;
- \bar ":|:";
- \skip 2.*16;
- \bar ":|";
+ \repeat 2 {
+ s2.*12
+ } \repeat 2 {
+ s2.*16
+ }
}
sarabande_viola_scripts = \notes{
\score{
\$sarabande_viola_staff
- \include "scs-paper.ly";
+ % \paper { \include "scs-paper.ly"; }
+ \paper{
+ linewidth = 180.\mm;
+ \translator { \BarNumberingStaffContext }
+ \translator{
+ \VoiceContext
+ % add experimental auto-beaming
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
+ }
+ }
\midi{ \tempo 4 = 40; }
\header{ piece = "Sarabande"; }
}
-\paper{
- linewidth= 180.\mm;
- gourlay_maxmeasures = 10.0;
- % for simple testing only!
-
-
- \translator {
- \BarNumberingStaffContext
- }
+linewidth = 180.\mm;
+gourlay_maxmeasures = 10.0;
+\translator { \BarNumberingStaffContext }
+\translator {
+ \StaffContext
+ \consists Auto_beam_engraver;
+ beamAuto = 1.0;
+ beamAutoEnd8 = "1/4";
+ beamAutoEnd16 = "1/4";
+ beamAutoEnd32 = "1/4";
}
}
%{
- Tested Features: stem direction, multivoice, forced accidentals.
+ Tested Features:
+ * stem direction
+ * multivoice,
+ * forced accidentals
+ * cross-staff beaming
+ * auto beaming
%}
\version "1.0.14";
\property Voice.ydirection = "-1"
- r8 [c16 b] [c8 g] [as c16 b] [c8 d ] |
- [g, c16 b] [c8 d ] [f,16 g] as4 [g16 f] |
- [es c' b a] [g f! es d] [c8 es' d c ] |
- [bes a bes c ] [fis, g a fis] |
+ r8 c16 b c8 g as c16 b c8 d |
+ g, c16 b c8 d f,16 g as4 g16 f |
+ es c' b a g f! es d c8 es' d c |
+ bes a bes c fis, g a fis |
%%5
- g4 r16 [c, d es] [f g as8~] [as16 d, es f] |
- [g a bes8] ~ [bes16 es, f g] [as g f es] [d8 c'16 b!] |
- % forced accident!
- c4 r4 r8 [f es d ] |
- r8 [as g f] [g f16 es] [f8 d] |
- g4 r8 b [c c16 b] [c8 g] |
-%%10
- as4 r8 a [bes bes16 a] [bes8 f] |
- g4 r8 g [as as g f] |
+ g4 r16 c, d es f g as8~ as16 d, es f |
+ g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |
+ % forced accident!
+ c4 r4 r8 f es d |
+ r8 as g f g f16 es f8 d |
+ g4 r8 b c c16 b c8 g |
+%%10
+ as4 r8 a bes bes16 a bes8 f |
+ g4 r8 g as as g f |
r8
\translator Staff = bass \stemup
- [as, bes c ] r8 [as16 g] [as8 f8] |
- [bes8 c bes as] [bes g f es] |
- [f des' c bes] [c as g f] |
+ as, bes c r8 as16 g as8 f8 |
+ bes8 c bes as bes g f es |
+ f des' c bes c as g f |
%%15
g8
- [g'16 fis] [g8 c,]
- [es \translator Staff = treble \stemdown g16 fis!] [g8 a] |
- [d, g16 fis] [g8 a!] [c,16 d] es4 [d16 c] | % forced accident!
- bes8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e, f g] |
- [a bes c8] ~ [c16 fis,16 g a] [bes8 es,!16 d] [es8 g, ] |
- [as f'16 es] [f8 a,8] [bes g'16 f] [g8 b, ] |
+ g'16 fis g8 c,
+ es \translator Staff = treble \stemdown g16 fis! g8 a |
+ d, g16 fis g8 a! c,16 d es4 d16 c | % forced accident!
+ bes8 r8 r16 d e fis g a bes8 ~ bes16 e, f g |
+ a bes c8 ~ c16 fis,16 g a bes8 es,!16 d es8 g, |
+ as f'16 es f8 a,8 bes g'16 f g8 b, |
%%20
- [c16 f \translator Staff = bass \stemup es d] [c bes! as g]
- [f8 \translator Staff = treble \stemdown as' g f] |
- [es d es f] [b, c d b] |
- c4 r8 e8 [f f16 e] [f8 c] |
- d4 r8 d8 [es8 es16 d] [es8 bes] |
- c2 ~ [c8 d16 es] [f es f d] |
+ c16 f \translator Staff = bass \stemup es d c bes! as g
+ f8 \translator Staff = treble \stemdown as' g f |
+ es d es f b, c d b |
+ c4 r8 e8 f f16 e f8 c |
+ d4 r8 d8 es8 es16 d es8 bes |
+ c2 ~ c8 d16 es f es f d |
%%25
b8 r8 r b c r r es |
d r r f ~ f r r f |
- [es as g f] [es d es f] |
- [b, c d b] [b c] r c |
- [f16 d es c] ~ [c8 b] c4 r8 e |
+ es as g f es d es f |
+ b, c d b b c r c |
+ f16 d es c ~ c8 b c4 r8 e |
%%30
- f4 r8 f [f es16 d] [es8 <f as>] |
+ f4 r8 f f es16 d es8 <f as> |
<b, d> r <b d> r <g2 c> |
}
-comes = \type Voice=one \notes \relative c'' {
+comes = \type Voice=one \notes \relative c'' {
\voiceone
R1 |
R1 |
- r8 [g'16 fis] [g8 c,] [es g16 fis] [g8 a] |
- [d,8 g16 fis] [g8 a] [c,16 d] es4 [d16 c] |
+ r8 g'16 fis g8 c, es g16 fis g8 a |
+ d,8 g16 fis g8 a c,16 d es4 d16 c |
%%5
- [bes8 es16 d] [es8 g,8] [as f'16 es] [f8 a, ]
- [bes8 g'16 f] [g8 b, ] [c8 d16 es] f4 ~ |
- [f8 es16 d] [c16 bes ! as g ] [f8 as' g f]
- [es d es f] [b, c d b ] |
- [c g'16 fis] [g8 d] es4 r8 e8 |
+ bes8 es16 d es8 g,8 as f'16 es f8 a,
+ bes8 g'16 f g8 b, c8 d16 es f4 ~ |
+ f8 es16 d c16 bes ! as g f8 as' g f
+ es d es f b, c d b |
+ c g'16 fis g8 d es4 r8 e8 |
%%10
- [f f16 e] [f8 c8] d4 r8 d |
- [es8 es16 d] [es8 bes ] [c es16 d] [es8 f] |
- [bes, es16 d] [es8 f] [as,16 bes ] c4 [bes16 as ] |
- \stemboth [g16 es f g] [as bes c d] [es d c d] [es f g a] |
- [bes f, g as] [bes c d e] [f es d es] [ f g a b] |
+ f f16 e f8 c8 d4 r8 d |
+ es8 es16 d es8 bes c es16 d es8 f |
+ bes, es16 d es8 f as,16 bes c4 bes16 as |
+ \stemboth g16 es f g as bes c d es d c d es f g a |
+ bes f, g as bes c d e f es d es f g a b |
%%15
- \stemup [c8 b16 a] [g f! es d] [c8 es d c] |
- [bes a bes c] [fis,! g a fis] | % forced accident
- [g8 d'16 c] d8 r8 r8 [e16 d] e8 r8 |
- r [fis16 e] fis8 r r [g,16 f] g8 r8 |
- r8 [a16 g] a8 r r [b16 a] b8 r |
+ \stemup c8 b16 a g f! es d c8 es d c |
+ bes a bes c fis,! g a fis | % forced accident
+ g8 d'16 c d8 r8 r8 e16 d e8 r8 |
+ r fis16 e fis8 r r g,16 f g8 r8 |
+ r8 a16 g a8 r r b16 a b8 r |
%%20
- r8 [c16 b ] [c8 g ] [as c16 b ] [c8 d] |
- [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] |
- [es8 c'16 b] [c8 g] as4 r8 a |
- [bes8 bes16 a] [bes8 f8] g4 r8 g ~ |
- [g as16 bes] [c b c as] f2 ~ |
+ r8 c16 b c8 g as c16 b c8 d |
+ g, c16 b c8 d f,16 g as4 g16 f |
+ es8 c'16 b c8 g as4 r8 a |
+ bes8 bes16 a bes8 f8 g4 r8 g ~ |
+ g as16 bes c b c as f2 ~ |
%%25
- [f8 d'16 c] [d8 f,] [es es'16 d] [es8 g,] |
- [f f'16 es] [f8 as,] [g16 f' es d] [c b a g] |
- [c8 f es d] r [as g f] |
- [g f16 es] [f8 d] [as' g] r a |
- [b c] [f,16 es d c] c8 [c'16 b] [c8 g] |
+ f8 d'16 c d8 f, es es'16 d es8 g, |
+ f f'16 es f8 as, g16 f' es d c b a g |
+ c8 f es d r as g f |
+ g f16 es f8 d as' g r a |
+ b c f,16 es d c c8 c'16 b c8 g |
%%30
- [as c16 b] [c8 <d b ! as !>] [g,8 c16 b] [c8 d] |
- [f,16 g] as4 [g16 f] e2 |
+ as c16 b c8 <d b ! as !> g,8 c16 b c8 d |
+ f,16 g as4 g16 f e2 |
}
%%5
R |
R1 |
- r8 [c16 b] [c8 g] [as c16 b] [c8 d] |
- [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] |
- [es c' b a] [g f es d] [c d es d] [c bes! as! g] |
- % -> \classic_accidentals
+ r8 c16 b c8 g as c16 b c8 d |
+ g, c16 b c8 d f,16 g as4 g16 f |
+ es c' b a g f es d c d es d c bes! as! g |
+ % -> \classic_accidentals
%%10
- [f bes' as g] [f es d c] [bes c d c] [bes as g f] |
- [es as' g f] [es des c bes] [as8 c' bes as] |
- [g8 f g as] [d, es f d] |
- [es as g f] [g es d c] |
- [d bes' as g] [as f es d!] |
+ f bes' as g f es d c bes c d c bes as g f |
+ es as' g f es des c bes as8 c' bes as |
+ g8 f g as d, es f d |
+ es as g f g es d c |
+ d bes' as g as f es d! |
%%15
- es8 r8 r4 r8 [c bes a] |
- r [es' d c] [d c16 bes] [c8 d] |
- [g,8 bes'16 a] [bes8 d,] [es c'16 bes] [c8 e,] |
- [f d'16 c ] [d8 fis,] g4 r16 [g, a b] |
- [c16 d es8~] [es16 a, bes c] [d es f8~] [f16 b, c d] |
-%%20
-% es8 r r e [f f, es! d] | % -> \classic_accidentals
- es8 r r e \stemdown [f f, es! d] \stemboth |
- r [as' g f] [g f16 es] [f8 g] |
- [c16 d es d] [c bes as g] [f bes' as g] [f es d c] |
- [bes c d c] [bes as g f] [es as' g f] [es d c bes] |
- [as bes c bes] [as g f es] [d g' f es] [d c b a] |
+ es8 r8 r4 r8 c bes a |
+ r es' d c d c16 bes c8 d |
+ g,8 bes'16 a bes8 d, es c'16 bes c8 e, |
+ f d'16 c d8 fis, g4 r16 g, a b |
+ c16 d es8~ es16 a, bes c d es f8~ f16 b, c d |
+%%20
+% es8 r r e f f, es! d | % -> \classic_accidentals
+ es8 r r e \stemdown f f, es! d \stemboth |
+ r as' g f g f16 es f8 g |
+ c16 d es d c bes as g f bes' as g f es d c |
+ bes c d c bes as g f es as' g f es d c bes |
+ as bes c bes as g f es d g' f es d c b a |
%%25
- g4 r4 r16 [g a b] [c d es f] |
- [g f as g] [f es d c] [b8 c16 b] [c8 g] |
- [as c16 b] [c8 d] [g, c16 b] [c8 d] |
- [f,16 g] as4 [g16 f] es4 r8 es' |
- [d c g' g,]
+ g4 r4 r16 g a b c d es f |
+ g f as g f es d c b8 c16 b c8 g |
+ as c16 b c8 d g, c16 b c8 d |
+ f,16 g as4 g16 f es4 r8 es' |
+ d c g' g,
%%30
\type Staff=bass <
- {\voicethree c2 ~ | c1 ~ | c1 }
- {\voicefour c,2 ~ | c1 ~ | c1 }
+ {\voicethree c2 ~ | c1 ~ | c1 }
+ {\voicefour c,2 ~ | c1 ~ | c1 }
>
}
-
\score {
\type GrandStaff <
- \type Staff = treble <
- \global
- \dux
- \comes
- >
- \type Staff = bass <
- \global
- \bassdux
- >
+ \type Staff = treble <
+ \global
+ \dux
+ \comes
+ >
+ \type Staff = bass <
+ \global
+ \bassdux
+ >
>
- \paper {
- gourlay_maxmeasures = 4.;
- indent = 8.\mm;
- textheight = 295.\mm;
+ \paper {
+ gourlay_maxmeasures = 4.;
+ indent = 8.\mm;
+ textheight = 295.\mm;
- %hmm
-% \translator { \BarNumberingScoreContext }
-% \translator { \BarNumberingStaffContext }
-% \translator{ \OrchestralScoreContext }
- \translator{ \OrchestralScoreContext }
- \translator{
- \GrandStaffContext
- minVerticalAlign = 3.0*\staffheight;
- maxVerticalAlign = 3.0*\staffheight;
+ \translator{ \OrchestralScoreContext }
+ \translator{
+ \GrandStaffContext
+ minVerticalAlign = 3.0*\staffheight;
+ maxVerticalAlign = 3.0*\staffheight;
+ }
+ \translator {
+ \VoiceContext
+ \consists Auto_beam_engraver;
+ beamAuto = 1.;
+ % eights end at 1/2, 16 at 1/4
+ beamAutoEnd = "1/2";
+ }
+ }
+ \header{
+ opus = "BWV 847";
}
- }
- \header{
- opus = "BWV 847";
- }
- \midi {
- \tempo 4 =84;
- }
+ \midi {
+ \tempo 4 =84;
+ }
}
-% EOF
\skip 1*31;
\property StaffGroup.timeSignatureStyle = "1"
\time 3/2;
- \bar ":|:";
\tempo 2=140;
\skip 1.*15;
\property StaffGroup.timeSignatureStyle = "old"
\time 4/4;
\tempo 4=80;
- \skip 1;
- \bar ":|:";
- \skip 1*13;
- \bar "|.";
}
vi1=\type Staff = vi1 <
r8 g [g g16 f] e4 d |
r8 [d16 a ][ b8 b16 c] a2 |
b1 |
-
+
+ \repeat 2 {
r4 d d d d d |
e1. |
r4 c c c c c |
a4 [c8 b] a4 [b8 c] f,4 [g8 a] |
d,4 g g g g g |
a [d,8 c] b4 [c8 d] a2 |
+ }
+ \repeat 2 {
b1 |
[d8 d d d] d4 [a16 b c a] |
[b8 g ][ g g16 a] [b8 g ][ g g16 a] |
fis4 g2 fis!4 |
\cadenza 1;
g\breve
+ }
}>
vi2=\type Staff = vi2 <
a4 g2 fis4 |
g1 |
+ \repeat 2 {
r1. |
r4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
a,1. |
c,4 a a a a a |
b [d8 c] b4 [c8 d] d,4 e |
fis2 g fis! |
+ }
+ \repeat 2 {
g1 |
r1 | r1 |
[g'8 g g g] g4 [d16 e f d] |
[a d c b ][ a g fis e] d4 d' |
\cadenza 1;
b\breve
+ }
}>
c B c G | d1^"3 4 3" |
G1 |
+ \repeat 2 {
g1. | c |
f | d^"\\textsharp" |
g | c |
d^"\\textsharp" | e |
f | g1 B2 |
d1.^"3 4 3" |
+ }
+ \repeat 2 {
G1 |
- \bar ":|:";
g2 fis | g G |
g1^"3 4 3" | c |
G^"3 4 3" | c2 G |
) d^"3 4 3" |
\cadenza 1;
G\breve
+ }
}>
\score{
;;; and these suck as well.
(define (setdynamic s) (text "dynamic" (string-append "\\" s)))
-(define (settext s) (text "text" s))
+(define (setroman s) (text "text" s))
(define (settypewriter s) (text "typewriter" s))
(define (setnumber s) (text "number" s))
(define (setbold s) (text "bold" s))
(define (pianobrace y)
(define step 1.0)
- (define minht mudelapaperstaffheight)
- (define maxht (* 6 minht))
+ (define minht (* 2 mudelapaperstaffheight))
+ (define maxht (* 7 minht))
(string-append
"{\\bracefont " (char (/ (- (min y (- maxht step)) minht) step)) "}"))
"\\hbox{%\n")
)
- (define (stem kern width height depth)
+ (define (filledbox breapth width height depth)
(string-append
- "\\kern" (number->dim kern)
- "\\vrule width " (number->dim width)
+ "\\kern" (number->dim (- breapth))
+ "\\vrule width " (number->dim (+ breapth width))
"depth " (number->dim depth)
"height " (number->dim height) " "))
(define startrepeat ,startrepeat)
(define stoprepeat ,stoprepeat)
(define start-line ,start-line)
- (define stem ,stem)
+ (define filledbox ,filledbox)
(define stop-line ,stop-line)
(define text ,text)
(define experimental-on ,experimental-on)
(define (invoke-dim1 s d)
(string-append
- (number->string d) " " s ))
+ (number->string (* d (/ 72.27 72))) " " s ))
(define (placebox x y s)
(string-append
dnl WARNING WARNING WARNING WARNING
dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
dnl aclocal.m4 -*-shell-script-*-
dnl StepMake subroutines for configure.in
exit 1
fi
-if ! make -C Documentation/man doc ; then
- echo "make -C documentation/man doc failed"
+if ! make -C Documentation/man WWW ; then
+ echo "make -C documentation/man WWW failed"
exit 1
fi
#
cp $CYGWIN_LIB $distdir/bin
+ASH_EXE=$PACKAGE_ROOTDIR/distfiles/winnt/ash.exe
+if [ ! -e $ASH_EXE ]; then
+ echo "Unable to locate $ASH_EXE"
+ exit 1
+fi
+
+#
+# copy ash into bin
+#
+cp $ASH_EXE $distdir/bin
+
+GUILE_SCM=$PACKAGE_ROOTDIR/distfiles/winnt/ice-9
+if [ ! -e $GUILE_SCM ]; then
+ echo "Unable to locate $GUILE_SCM"
+ exit 1
+fi
+
+#
+# copy guile init files into share/lilypond
+#
+echo "copy $GUILE_SCM to $distdir/share/lilypond"
+cp -r $GUILE_SCM $distdir/share/lilypond
+
#
# Rename python files to <filename>.py
#
# copy man documentation to doc directory
#
mkdir $distdir/doc
-cp Documentation/man/out/*.txt $distdir/doc
-mv $distdir/doc/ly2dvi32.txt $distdir/doc/ly2dvi.txt
+cp Documentation/man/out/*.html $distdir/doc
cd $distdir/..
$ZIP_CMD $ZIP_FILE $name
echo "Wrote $ZIP_FILE"
\input fetdefs
+\def\deprecated#1S{%%%%%%%%%
\def\emptybar{}
+
+
\def\defaultthinbar{\thinbar{\staffheight}}
\def\defaultthickbar{\thickbar{\staffheight}}
%? what-s wrong with rightalign?
\def\startrepeat#1{\repeatstartbar}
\def\repeatbarstartrepeat#1{\repeatstopstart}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% parametric symbols
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
\def\doublebar#1{\hbox{\thinbar{#1}\hskip\smallspace\thinbar{#1}}}
\def\thinbar#1{\dimen0=#1%
\vrule height .5\dimen0 depth .5\dimen0 width 1.6\stafflinethickness} % TODO parametric.
\def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}}
\def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
\def\fatdoublebar#1{\hbox{\phantom{\repeatcolon\kern2\smallspace}\thickbar{#1}\kern\smallspace\thickbar{#1}}}
+}
+
\def\extender#1{\vrule width#1 height .8\stafflinethickness}