InitDeclarations 1
Declarations 1
# FlexLexer debug
-InitLexer 0
-Lexer 0
+InitLexer 1
+Lexer 1
parse_duration 1
parse_pitchmod 1
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 59
+TOPLEVEL_PATCH_LEVEL = 60
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
+\bo Jan Nieuwenhuizen <jan@digicash.com>
- lily/midi-*, mi2mu/*, flower/string.cc, make/*.make,
- Documentation/mudela.pod lib/*source-file*,
- lib/duration.cc, lib/source, flower/*list*
+ lily/midi-*, mi2mu/*, parts flower/string*.cc,
+ make/*.make, parts of Documentation/mudela.pod,
+ lib/*source-file*, lib/duration.cc, lib/source,
+ flower/*{list,cursor}*,
and corresponding header files.
-
-19/Apr/97 LilyPond 0.0.57 1
+6/May/97 LilyPond 0.0.60 1
Jan Nieuwenhuizen <jan@digicash.com>
-lily/midi-*, mi2mu/*, flower/string.cc, make/*.make, Documentation/mudela.pod
-lib/*source-file*, lib/duration.cc, lib/source, flower/*list*
+lily/midi-*, mi2mu/*, parts flower/string*.cc, make/*.make,
+parts of Documentation/mudela.pod, lib/*source-file*, lib/duration.cc,
+lib/source, flower/*{list,cursor}*,
and corresponding header files.
+++ /dev/null
-=head1 NAME
-
-LilyExamples - GNU LilyPond example input
-
-=head1 DESCRIPTION
-
-This file documents the example inputfiles of GNU LilyPond. Information of
-each file:
-
- title
- description (composer, piece)
- tested GNU LilyPond features.
- copyright info
-
-Most music distributed with GNU LilyPond was composed a long time ago, and
-do not have copyrights. Any exceptions are mentioned here.
-
-=head2 F<collisions.ly>
-
-Random counterpoint to demonstrate features.
-
-Features: \multivoice, collision resolution.
-
-
-=head2 F<coriolan-alto.ly>
-
-Ludwig van Beethoven (1770-1792), Opus 62 Ouverture zu Collins
-Trauerspiel "Coriolan"
-
-a 5 bar fragment of the alto part
-
-Features: pushgroup, popgroup.
-
-=head2 F<error.ly>
-
-Features: Error messages, context errors.
-
-=head2 F<fugue1.midi.ly>
-
-
-=head2 F<kortjakje.ly>
-
-Ah, vous dirais-je, maman" (Mozart, KV 265), bare
-bones version.
-
-Features: example with lots of newbie comment.
-
-Copyright: public domain
-
-=head2 F<midi.ly>
-
-Features: midi output.
-
-=head2 F<rhythm.ly>
-
-Features: auto beams, multiple parralel meters.
-
-=head2 F<scales.ly>
-
-Features: plets, accents, beam steepnesses, dynamics, crescendi,
-\octave command, \transpose, multiple scripts
-
-=head2 F<scsii-menuetto.ly>
-
-J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I. BWV ?
-
-Features: breaking algorithm, chords, multivoice, accents
-
-=head2 F<standchen.ly>
-
-St\"andchen (Serenade) "Leise flehen meine
-Lieder" D.957 No.4 Franz Schubert (1797-1828)
-
-Features: multivoice, accents, lyrics, chords, piano music
-
-=head2 F<twinkle.ly>
-
-Twinkle twinkle little star in three languages.
-
-Features: lyrics
-
-=head2 F<wohltemperirt.ly>
-
-JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor), BWV ?
-
-Features:
-
-Copyright: public domain
=back
-=head1
-DISCLAIMER & COPYING POLICY
+=head1 DISCLAIMER & COPYING POLICY
GNU LilyPond is copyright 1996,97 by its authors. GNU LilyPond is
distributed under the terms of the GNU General Public
quality. If you're not discouraged; this is what I type in my xterm:
lilypond someinput.ly
- tex test
+ tex lelie.tex
xdvi test&
This is what the output looks like over here:
- hw:~/musix/spacer$ lilypond input/kortjakje.ly
- GNU LilyPond 0.0.52 #1/FlowerLib 1.1.12 #1
- Parsing ... [/home/hw/share/lilypond/init//symbol.ini[
- <lots of stuff deleted>
- ][./input/kortjakje.ly]
+ hw:~/musix/spacer$ GNU LilyPond 0.0.60 #8/FlowerLib 1.1.14 #2
+ Parsing ... [./input/kortjakje.ly[lots of stuff]]
+ Setting up requests...Processing requests ...[8][16][24][25]
+ Preprocessing elements...
+ Calculating column positions ... [3][7][12][16][20][25]
+ Postprocessing elements...
+ TeX output to lelie.tex ...
- Setting up music ...Processing music ...[8][16][24][25]
- Preprocessing ...
- Calculating column positions ... [3][9][14][18][22][25]
- Postprocessing ...
- TeX output to lelie.out ...
-
- hw:~/musix/spacer$ tex test
+ hw:~/musix/spacer$ tex lelie
This is TeX, Version 3.14159 (C version 6.1)
- (/home/hw/lib/texmf/tex/lilypond/test.tex
- Hyphenation patterns for english, dutch, loaded.
- (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) (lelie.out) [1] )
- Output written on test.dvi (1 page, 9180 bytes).
- Transcript written on test.log.
+ (lelie.tex
+ Hyphenation patterns for english, dutch, german, loaded.
+ (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) [1] )
+ Output written on lelie.dvi (1 page, 8944 bytes).
+ Transcript written on lelie.log.
- hw:~/musix/spacer$ xdvi test&
+ hw:~/musix/spacer$ xdvi lelie&
[1] 855
Check out the input files, some of them have comments
-2/May/97 LilyPond 0.0.58 1
+2/May/97 LilyPond 0.0.60 1
-2/May/97 LilyPond 0.0.58 2
+2/May/97 LilyPond 0.0.60 2
-2/May/97 LilyPond 0.0.58 3
+2/May/97 LilyPond 0.0.60 3
-2/May/97 LilyPond 0.0.58 4
+2/May/97 LilyPond 0.0.60 4
+pl 60
+ - Request_register::get_feature(), tie direction, Slur direction
+ - lilypond output is now directly texable.
+ - make_website checks return status
+
+*******
+may 5
pl 59
- Slur now into voicegroups, and take stems into account.
- bf: rest size in table.
* use own fonts/update musixtex fonts
- * check return status in make_website
-
* a Hands on tutorial [HKN]
- quiet/ignore-version options
- logfile output
+
+ * elaborate Staff_side baseclass:
+ - scripts
+ - text
+ - slur start/end
+
+ * Output an output format independent (ofi) typeset file; and
+ make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
+ - poor man's ascii output possible?
+ - MusixTeX output possible?
+ - PostScript output (esp. Beams, Slurs, etc)
+
PARSER
* Duration-> Musical_duration, typedef Rational Duration?
Hele rusten ook in andere maatsoort dan 4/4 (en centreren in de maat)
-
-
------------------------\
barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
------------------------/
* bring Collision::do_pre_processing to haircutter
- * slurs per voicegroup.
-
* slur parts as a script
* mixed fontsizes
IDEAS
- * output an intermediate format, move backend/output routines into
- interpreter
-
* scoping in Lexer: do general id- assignments in mudela.
ID '=' EXPR;
* merge Atom and Symbol?
* merge common code of Item, Atom/Molecule
-
* Spacing_request for manually adjusting spacing
* Staff_group, Score_request_register.
* SHIT: meters/bars should be aligned, which is difficult if
we get different keychanges in different staffs.
- * MusixTeX output possible?
-
- * PostScript output (esp. Beams, Slurs, etc)
-
- * poor man's ascii output possible?
-
- * Output an output format independent (ofi) typeset file; and
- make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
-
* caching breakpoints
* #c <-> cis
* used fixedpoint arithmetic for min. energy.
* default convert mudela-file.ly -> mudela-file.tex
- - move test.tex: '\include lilyponddefs' ->
- mudela-file.ly: '\texinclude "lilyponddefs";'
- (junking test.tex and latex.test)
- rename {standchen,scsii-menuetto,...}.tex
* (related with above) --simple-mudela option for lily,
-# gdb script
-file bin/lilypond
-set environment LD_PRELOAD libefence.so
+#!/bin/sh
+gdb --command=bin/efence.gdbinit
+
#!/usr/bin/perl -w
-# stuff should be generated in out directory.
+
+# TODO check ret status of various stuff
+
+use FileHandle;
+
+sub my_system
+{
+ my (@cmds) = @_;
+ foreach $cmd (@cmds) {
+ my $ret = ( system ($cmd))/256;
+ if ($ret) {
+ print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n";
+ exit 2;
+ }
+ }
+}
sub set_hrefs
{
sub gen_html
{
print "generating HTML\n";
- system "make -kC .. html";
+ my_system "make -kC .. html";
}
sub gen_examples
{
print "generating examples: \n";
foreach $a (@examples) {
- $texfile="test";
+ $texfile="lelie";
$tex = "tex $texfile";
if ($a eq "standchen" || $a eq "scsii-menuetto" ) {
$tex = "latex $a";
}
if ( ! -f "$a.ly.txt" ) {
- system "ln $depth/input/$a.ly ./$a.ly.txt";
+ my_system "ln $depth/input/$a.ly ./$a.ly.txt";
}
if ( ! -f "$a.ps.gz" ) {
- system "lilypond $a;$tex;".
- "dvips -o $a.ps $texfile;";
+ my_system "lilypond $a;",
+ "$tex",
+ "dvips -o $a.ps $texfile;";
}
# generate the pixmap at twice the size, then rescale (for antialiasing)
if ( ! -f "$a.gif" ) {
- system "mv lelie.midi $a.midi; ";
- system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif";
- system "gzip $a.ps";
+ my_system "mv lelie.midi $a.midi; ",
+ "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif",
+ "gzip $a.ps";
}
}
}
foreach $a (@examples) {
$name=$a;
print HTMLLIST "<h1>example file: $name</h1>\n<XMP>\n";
- $cmd= "head $depth/input/$a.ly | grep \^% \| sed \"s/^%/ /\"";
- $desc = `$cmd`;
+
+ open IF, "$depth/input/$a.ly";
+ input_record_separator IF "%}";
+
+ $desc = <IF>;
+ close IF;
+
print HTMLLIST "$desc\n</XMP>";
$inputf="$a.ly.txt";
{
print "copying files\n";
print `ln -s $depth/out ./docxx` if ( ! -x "docxx" ) ;
- system "cp $depth/TODO ./TODO.txt";
- system "cp $depth/NEWS ./NEWS.txt";
- system "cp ../lelie*gif .";
+ my_system "cp $depth/TODO ./TODO.txt",
+ "cp $depth/NEWS ./NEWS.txt",
+ "cp ../lelie*gif .";
}
sub docxx_update
{
- system "make -C $depth doc++";
+ my_system "make -C $depth doc++";
}
sub
do_tar
{
print "tarring.\n";
- system " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;";
-system "gzip -f9 website.tar;";
+ my_system
+ " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;",
+ "gzip -f9 website.tar;";
}
$depth = "../../";
table_sixteen=
\symboltables {
- \texid "\musixsixteendefs"
+ \texid "\input lilyponddefs \musixsixteendefs"
% index TeXstring, xmin xmax ymin ymax
filename: collisions.ly
title:
- description:
+ description: random counterpoint to test collisions
composer(s): HWN
entered-by: HWN
copyright: public domain
- Tested Features:%test the Collision resolution
+ Tested Features:test the Collision resolution
EndMudelaHeader
%}
\version "0.0.57";
(| % start a slur
% NOTE: the slurstart should be directly after the note
) % end a slur.
- g r8 g8 ~ a r8 a8 ~ g r4
- f r8 f8 ~ e4 r8 e8 ~ | d4 r8 d8 ~ c4 r4
+ g r8 g8 () a r8 a8 () g r4
+ f r8 f8 () e4 r8 e8 (|) d4 r8 d8 () c4 r4
}
% more of this.
\octave 'c ;
e 'g d 'g c 'g 'b 'g e 'g d 'g c 'g 'b 'g
%%%% var 1
- r8 e8~ c r8 e8~ c r8 f8~ c r8 e8~ c
- r8 d8~ 'b r8 c8~ 'a r8 'a8~ 'f r8 'e8~ 'c
+ r8 e8() c r8 e8() c r8 f8() c r8 e8() c
+ r8 d8() 'b r8 c8() 'a r8 'a8() 'f r8 'e8() 'c
}
\score{
+%{MudelaHeader
+
+ filename:rhythm.ly
+ title:
+ description:
+ composers:HWN
+ entered-by:HWN
+ copyright:public domain
+
+ Tested Features: multiple meters, beaming
+EndMudelaHeader
+%}
+\version "0.0.57";
+
%
% Ive' got rhythm!
%
-% scsii-menuetto.ly
-%
-% Solo Cello Suites
-% Johann Sebastian Bach (1685-1750)
-% bwv 000
-%
-% Suite II part v
-% Menuetto I
-%
-% Copyright (c) 1995,1996,1997 Jan Nieuwenhuizen <jan@digicash.com>
-%
-% The purpose of this file is to demonstrate features of LilyPond.
-% (there is an accompanying LaTeX file, scsii-menuetto.tex)
-%
+%{MudelaHeader
+
+ filename: scsii-menuetto.ly
+ title:Solo Cello Suites,
+ description: Suite II part V, Menuetto I
+ composers: Johann Sebastian Bach (1685-1750)
+ entered-by: JCN
+ copyright:
+
+ Tested Features:breaking algorithm, chords, multivoice, accents
+
+
+EndMudelaHeader
+%}
\version "0.0.57";
%% Stuff from MPP version
% \lefttitle{Menuetto}
\score{\staff{
melodicregs
\melodic{\octave c';
- \duration 4;
- c ~ c ~ g ~ c ~
+ \duration "last";
+ 'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
d ~ e ~ f ~ g ~
a ~ b ~ 'c ~ c
< { c ~ d }
{ e ~ f }
>
-
-
+ < \multivoice
+ { \stem 1; c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
+ { \stem -1; c (e g )c'~( [b a g )d] r2 } >
}
-%{
-standchen.ly
+%{MudelaHeader
- St\"andchen (Serenade) "Leise flehen meine Lieder" D.957 No.4
- Franz Schubert (1797-1828)
- Text by Ludwig Rellstab (1799-1860)
+ filename: standchen.ly
+ title: St\"andchen (Serenade) "Leise flehen meine Lieder"
+ description: D.957 No.4
+ composers: Franz Schubert (1797-1828)
+ Text by Ludwig Rellstab (1799-1860)
+ entered-by:JCN
+ copyright:
- Copyright (c) 1995,1996,1997 Jan Nieuwenhuizen <jandigicash.com>
-
- The purpose of this file is to demonstrate features of LilyPond.
- (there is an accompanying LaTeX file, standchen.tex)
+ Tested Features: multivoice, accents, lyrics, chords, piano music
+EndMudelaHeader
%}
\version "0.0.57";
+\version "0.0.57";
+
commands = \melodic{
\skip 2.*4;
\bar ":|";
MAJOR_VERSION = 0
MINOR_VERSION = 0
-PATCH_LEVEL = 59
+PATCH_LEVEL = 60
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
+/*
+ bar.cc -- implement Bar
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
#include "bar.hh"
#include "string.hh"
#include "molecule.hh"
#include "lookup.hh"
#include "debug.hh"
-
-
Bar::Bar( String t)
{
type = t;
{
dir_i_ = -1;
}
+
+void
+Directional_spanner::do_pre_processing()
+{
+ if (!dir_i_)
+ set_default_dir();
+}
+
Directional_spanner::Directional_spanner()
{
dir_i_ = 0;
int right_pos_i_;
Real left_dx_f_;
Real right_dx_f_;
+
Molecule*brew_molecule_p()const;
public:
Bow();
/// offset of "center" relative to left-column/0-pos of staff
virtual Offset center() const=0;
virtual void set_default_dir();
+ virtual void do_pre_processing();
Directional_spanner();
};
virtual Request_register * get_register_p(Request_register*reg_l);
virtual void set_feature(Feature i);
virtual bool acceptable_request_b(Request*)const;
+ virtual void sync_features() ;
virtual void pre_move_processing();
virtual void post_move_processing();
virtual void acknowledge_element(Staff_elem_info info);
Set Feature of the register(s). Default: ignore Feature.
*/
virtual void set_feature(Feature){}
+ /**
+ ask daddy for a feature
+ */
+ virtual Scalar get_feature(String type_str);
/**
Does this equal or contain a certain register?
*/
+
+ virtual void sync_features() {}
+
virtual bool contains_b(Request_register*reg_l)const;
/**
Get information on the staff. Default: ask daddy.
*/
virtual Staff_info get_staff_info();
-
-
+
+
virtual void do_print()const;
public:
/** Every Request_register (except for the 'top' which is directly
Array<Slur_req*> new_slur_req_l_arr_;
Array<Slur *> slur_l_stack_;
Array<Slur*> end_slur_l_arr_;
-
+ int dir_i_;
/* *************** */
protected:
virtual ~Slur_register();
virtual bool try_request(Request*);
+ virtual void set_feature(Feature);
virtual bool acceptable_request_b(Request*);
virtual void process_requests();
virtual void acknowledge_element(Staff_elem_info);
Tie * tie_p_;
Moment end_mom_;
Tie_req * req_l_;
+ int dir_i_;
Tie_req *end_req_l_;
+
protected:
virtual ~Tie_register();
virtual void acknowledge_element(Staff_elem_info);
virtual bool try_request(Request*);
virtual bool acceptable_request_b(Request*);
+ virtual void sync_features();
virtual void process_requests();
virtual void post_move_processing();
virtual void pre_move_processing();
+ virtual void set_feature(Feature);
public:
Tie_register();
NAME_MEMBERS(Tie_register);
virtual Spanner* do_break_at(PCol*,PCol*)const;
virtual void do_add_processing();
virtual void do_post_processing();
+ virtual void set_default_dir();
public:
Notehead * left_head_l_;
Notehead * right_head_l_;
class Voice_group_registers : public Register_group_register {
Moment termination_mom_;
Input_register const *ireg_C_;
+ int dir_i_;
+
protected:
virtual void do_print() const;
+ virtual void set_feature(Feature);
+ virtual Scalar get_feature(String);
virtual void post_move_processing();
virtual bool try_request(Request*);
public:
if ((lic+1).ok())
ts << "\\interscoreline\n";
}
+ ts << "\n\\EndLilyPondOutput";
}
linewidth = 15 *CM_TO_PT; // in cm for now
whole_width = 8 * note_width();
geometric_ = sqrt(2);
- outfile = "lelie.out";
+ outfile = "lelie.tex";
}
Paper_def::~Paper_def()
}
}
+void
+Register_group_register::sync_features()
+{
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+
+ Request_register *reg_l = i++;
+ reg_l->sync_features();
+ }
+}
+
void
Register_group_register::pre_move_processing()
{
#include "register-group.hh"
#include "debug.hh"
+Scalar
+Request_register::get_feature(String t)
+{
+ return daddy_reg_l_->get_feature(t);
+}
+
bool
Request_register::try_request(Request*)
{
end_slur_l_arr_[i]->add(col_l);
}
}
+
+void
+Slur_register::set_feature(Feature f)
+{
+ if (f.type_ == "vdir")
+ dir_i_ = f.value_ ;
+}
+
/*
abracadabra
*/
+Slur_register::Slur_register()
+{
+ dir_i_ =0;
+}
void
Slur_register::process_requests()
{
Slur_register::pre_move_processing()
{
for (int i = 0; i < end_slur_l_arr_.size(); i++) {
+ if (dir_i_)
+ end_slur_l_arr_[i]->dir_i_ = dir_i_;
typeset_element(end_slur_l_arr_[i]);
}
end_slur_l_arr_.set_size(0);
Real inter_f = paper()->internote();
left_pos_i_ = encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f;
right_pos_i_ = encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f;
+
+ left_pos_i_ += dir_i_;
+ right_pos_i_ += dir_i_;
}
IMPLEMENT_STATIC_NAME(Slur);
}
Voice_group_registers * new_group_l = get_group(new_str);
new_group_l->add(regs_p);
-
+ regs_p->sync_features();
mtor << "processed change_group " << get_staff_info().when()<<"\n";
print();
}
end_mom_ = -1;
}
+void
+Tie_register::sync_features()
+{
+ dir_i_ = get_feature("vdir");
+}
+
+
void
Tie_register::post_move_processing()
{
- if (tie_p_ && get_staff_info().when() == end_mom_) {
+ if (tie_p_ && get_staff_info().when() == end_mom_) {
end_tie_p_ = tie_p_;
end_req_l_ = req_l_;
tie_p_ =0;
Tie_register::pre_move_processing()
{
if (end_tie_p_) {
+ if (dir_i_)
+ end_tie_p_->dir_i_ = dir_i_;
+
typeset_element(end_tie_p_);
end_tie_p_ =0;
end_req_l_ =0;
}
}
+void
+Tie_register::set_feature(Feature f)
+{
+ if (f.type_ == "vdir")
+ dir_i_ = f.value_;
+}
+
IMPLEMENT_STATIC_NAME(Tie_register);
ADD_THIS_REGISTER(Tie_register);
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+#include "paper-def.hh"
#include "tie.hh"
#include "notehead.hh"
#include "p-col.hh"
Spanner*
Tie::do_break_at(PCol*l, PCol*r) const
{
- Tie * tie_p = new Tie;
+ Tie * tie_p = new Tie(*this);
Line_of_score const *line_C=l->line_l_;
- if (left_head_l_->line_l()== line_C)
- tie_p->left_head_l_ = left_head_l_;
- if (right_head_l_->line_l() == line_C)
- tie_p->right_head_l_ = right_head_l_;
+ tie_p->left_head_l_ = (left_head_l_->line_l()== line_C) ?
+ left_head_l_ : 0;
+ tie_p->right_head_l_ = (right_head_l_->line_l() == line_C)?
+ right_head_l_ : 0;
return tie_p;
}
left_head_l_ =0;
}
+void
+Tie::set_default_dir()
+{
+ int m= (left_head_l_->position_i_ + right_head_l_->position_i_) /2 ;
+ dir_i_ = (m < 5)? -1:1; // ugh
+}
+
+
void
Tie::do_add_processing()
{
left_head_l_->position_i_ : right_head_l_->position_i_;
right_pos_i_ = (right_head_l_) ?
right_head_l_->position_i_ : left_head_l_->position_i_;
+
+ if ( right_head_l_ && right_head_l_->extremal_i_) {
+ right_pos_i_ += 2*dir_i_;
+ right_dx_f_ -= 0.25;
+ } else
+ right_dx_f_ -= 0.5;
+
+ if (left_head_l_ && left_head_l_->extremal_i_) {
+ left_pos_i_ += 2*dir_i_;
+ left_dx_f_ += 0.25;
+ } else
+ left_dx_f_ += 0.5;
}
Voice_group_registers::Voice_group_registers(String id,
Input_register const *ireg_C)
{
+ dir_i_ =0;
ireg_C_ =ireg_C;
Register_group_register::add(ireg_C->get_nongroup_p_arr());
if (id=="") // ugh
}
+void
+Voice_group_registers::set_feature(Feature f)
+{
+ if (f.type_ == "vdir")
+ dir_i_ = f.value_;
+ Register_group_register::set_feature(f);
+}
+
+Scalar
+Voice_group_registers::get_feature(String f)
+{
+ if (f == "vdir")
+ return dir_i_;
+ Register_group_register::get_feature(f);
+}
Begin3
Title: LilyPond
-Version: 0.0.59
+Version: 0.0.60
Entered-date: 05/05/97
Description: LilyPond is a program which converts a music-script (mudela) into
TeX output, or MIDI to produce multi-staff scores. Features include multiple
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: pcnov095.win.tue.nl /pub/lilypond/
- 300k lilypond-0.0.59.tar.gz
+ 300k lilypond-0.0.60.tar.gz
Alternate-site:
Original-site:
Platform: unix/win32, GNU C++
Name: lilypond
-Version: 0.0.59
+Version: 0.0.60
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.59.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.60.tar.gz
Summary: A preprocessor to make TeX typeset music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
%%
%% this file defines various macros to accomodate lilypond output
-\def\mdef#1#2{\def#1{\mchar{#2}}}
+% TeXbook ex 7.7
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+
+\def\SkipLilydefs{\endinput}
+\ifundefined{EndLilyPondOutput}
+ \def\EndLilyPondOutput{\csname bye\endcsname}
+ \def\SkipLilydefs{}
+\fi
+\SkipLilydefs
+% should use \endinput
+
+ \def\mdef#1#2{\def#1{\mchar{#2}}}
\def\mchar#1{\musicfnt\char#1}
\def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3}
\def\maccentraise#1#2{\dimen0=\noteheight
\font\musicdraw=musixsps
\font\italicfont=cmti10
\font\dynfont=cmbxti10 scaled \magstep1
- \font\mathfont=cmsy10
+ \font\mathfont=cmsy10
\balkhoog=20pt
\notewidth=6pt
\noteheight=5pt
\font\musicfnt=musix16
\font\dynfont=cmbxti12
\font\musicdraw=musixsps
- \font\mathfont=cmsy8
+ \font\mathfont=cmsy8
\balkhoog=16pt
\staffrulethickness=0.4pt
\notewidth=5pt
\def\settext#1{\textfont #1}
\def\setitalic#1{\italicfont #1}
\def\setdynamic#1{\dynfont #1}
+
+
+
+++ /dev/null
-\input lilyponddefs
-\input lelie.out
-\vfil\bye
\ No newline at end of file
% ideally, we should create a LaTeX/TeX class
% for setting music in different sizes.
%
-
+\input lilyponddefs
+\def\EndLilyPondOutput{\endinput}
\def\thetitle{}
\def\thecomposer{}
\def\theinstrument{}