-before 0.1
+IMPORTANT
* update 20 pt table
* script priority
+ * slur direction
+
+ * problems with empty staff.->revise staff-column/score-walker.
+
+
This is an assorted collection of stuff that will be done, might be
done, or is an idea that I want to think about
* hairpin width
- * problems with empty staff.
-
- * help-lines
-
* help-lines for rests
* [c8. c32 c32]
* lilypond - -> crash
- * \stem -1 < chord > rest
-
SEVERELY LACKING:
* SPEED!
SMALLISH PROJECTS
+ * use rest size in Collision
+
* bugreport to doc++ devel: struct not in class hier; public
virtual baseclasses
* command priority into enum
- * don't broadcast Staff_sym
-
* C meter iso 4/4
* textspanner: center position
+
* script-spacing
* Brackets
* configure idealspacing: arithmetic
- * collision Request_register.
-
* add (good guess of) width to lyric items
* midi output: eat-up dynamic, key/meter/tempo changes, and
* Reg_configure_request
+ * bring Collision::do_pre_processing to haircutter
+
* slurs per voicegroup.
* slur parts as a script
- * multiple scripst.
-
* mixed fontsizes
* put scripts on bars
* MIDI repeat: make lily understand repeats
-
* better beamslope calculation: QLP for beams?
* implement better breaking algorithm
* piano staff
* vertical spanner
+
IDEAS
+ * scoping in Lexer?
+
* integrate Register/Midi stuff
* create libmudela, or liblily_frontend
- * Horizontal_align_item, Vertical_align_item.
-
- * move MIDI io to a ANSI C libmidi library.
+ * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
* use an embedded language: scheme, lisp, S-lang, Perl, GUILE, ?
+ for :
- Items/Spanners
- Registers
#!/usr/bin/perl -w
-print "todo\n!";
+=head1 NAME
+
+convert-mudela - convert mudela to newer versions
+
+=head1 SYNOPSIS
+
+ convert-mudela --from=FROM_PATCHLEVEL --to=TO_PATCHLEVEL
+
+=head1 DESCRIPTION
+
+convert-mudela sequentially applies different mudela-conversions to
+upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--output>
+
+The output file to write
+
+=item B<--edit>
+
+Do an inline edit of the input file. override B<--output>
+
+=item B<--show-rules>
+
+shows all known conversions.
+
+=item B<--from>=FROM_PATCHLEVEL
+
+=item B<--to>=TO_PATCHLEVEL
+
+=back
+
+=cut
+
+
+use Getopt::Long;
+sub
+ version_string_conv
+{
+ my ($from_version, $to_version) = @_;
+ s/\version \"0.0.$from_version\"/\version \"0.0.$to_version\"/g;
+}
+
+sub
+ conv_pl0_0_50_pl0_0_52
+{
+
+}
+
+sub
+ usage
+{
+ print STDERR "Usage: convert-mudela --from=XX --to=XX\n";
+ print STDERR "other options: --edit --output=FILE --show-rules\n";
+ exit 2;
+}
+
+my %minor_conversions = ("50" => \&no_conv,
+ "52" => \&conv_pl0_0_50_pl0_0_52);
+
+sub
+ show_rules
+{
+ print "Rules: ", join(", ", keys %minor_conversions), "\n";
+
+}
+
+sub
+ do_conversion
+{
+ my ($from,$to) = @_;
+
+ my @applicable_conversion;
+ my @mudela_levels;
+
+ die "This is too old to convert " if $from < 50;
+
+ foreach $a (sort keys %minor_conversions) {
+ if ($a > $from && $a <= $to ){
+ push @applicable_conversion, $minor_conversions{$a};
+ push @mudela_levels, $a;
+ }
+ }
+
+ print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n";
+
+ while (<INLY>) {
+ foreach $subroutine (@applicable_conversion) {
+
+ &$subroutine;
+
+ }
+ version_string_conv $from, $to;
+ print OUTLY;
+ }
+}
+
+
+sub
+ set_files
+{
+ $infile = "-";
+ $outfile = "-";
+ $outfile = $opt_output if (defined($opt_output));
+
+ if ($ARGV [0]) {
+ $infile = $ARGV[0];
+ }
+
+ if ($opt_edit && $infile ne "-") {
+ $opt_edit = 1;
+ rename $infile, "$infile~";
+ $outfile = $infile;
+ $infile = "$infile~";
+ }
+}
+
+GetOptions ("output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
+
+if ($opt_show_rules) {
+ show_rules ;
+ $opt_show_rules = 0; # to extinguish typo check.
+ exit 0;
+}
+
+usage if (!defined($opt_from) || !defined($opt_to));
+local ( $infile,$outfile);
+set_files;
+
+die "can't open \`$infile\'" unless open INLY,$infile ;
+die "can't open \`$outfile\'" unless open OUTLY, ">$outfile";
+
+do_conversion $opt_from, $opt_to;
+close INLY;
+close OUTLY;
+
#!/usr/bin/perl -w
# stuff should be generated in out directory.
-sub
- set_hrefs
+sub set_hrefs
{
while (<HTMLIN>) {
s#href=([A-Za-z.]+)#href=$base/$1#g;
}
local $base="lilypond/";
-local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "martien");
+local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "martien", "collisions");
-#mkdir "lilypond";
-sub
- gen_html
+
+sub gen_html
{
print "generating HTML\n";
system "make -kC .. html";
}
-sub
- gen_examples
+sub gen_examples
{
print "generating examples: \n";
foreach $a (@examples) {
}
-sub
- gen_list
+sub gen_list
{
print "generating HTML list\n";
open HTMLLIST, ">example_output.html";
print HTMLLIST "<ul>
<li><a href=$inputf> The input file</a>
<li><a href=$giff>The output (gif)</a>
-<li><a href=$psf>The output (PS)</a>
-<li><a href=$midif>The output (MIDI)</a>
-</ul>";
+<li><a href=$psf>The output (PS)</a>\n";
+
+ print HTMLLIST "<li><a href=$midif>The output (MIDI)</a>\n"
+ if ( -f $midif );
+ print HTMLLIST "</ul>";
}
close HTMLLIST;
}
-sub
- copy_files
+sub copy_files
{
print "copying files\n";
print `ln -s $depth/out ./docxx` if ( ! -x "docxx" ) ;
system "cp ../lelie*gif .";
}
+sub docxx_update
+{
+ system "make -C $depth doc++";
+}
+
sub
do_tar
{
die "need to be in directory Documentation\n" if ( ! ($cwd =~ /Documentation$/));
chdir ("out");
+
gen_html;
gen_examples;
gen_list;
copy_files;
+docxx_update;
do_tar;