set init file to F<FILE> (default: F<symbol.ini>)
=item B<--include, -I>=F<DIRECTORY>
+
add F<DIRECTORY> to the search path for input files.
=back
=head1 PROBLEMS
-If GNU LilyPond bombs out, then please recompile using with debugging info
-turned on, and send a copy of the input which causes the error and a
-gdb stacktrace of the crash. It also helps if you can print the values
-of the objects. So if your trace is
+
+There is an extensive list of todoes and bugs. See F<TODO>. In
+general, try to find out
+
+=over 4
+
+=item *
+
+if the bug has been fixed in a newer release.
+
+=item *
+
+if the bug has been found earlier, consult F<TODO>
+
+=item *
+
+where the bug comes from: if GNU LilyPond bombs out, then please
+recompile using with debugging info turned on, and send a copy of the
+input which causes the error and a gdb stacktrace of the crash. It
+also helps if you can print the values of the objects. So if your
+trace is
(gdb) backtrace 12
#0 Interval::operator+= (this=0x11fffec60..)
Than it would help if you send a dump of the Interval and the Item
(use: C<print *this> or use GNU LilyPond C<print()> methods).
-This is a beta version of GNU LilyPond. Please send your helpful comments
-and patches to me (see AUTHORS section)
+=back
-GNU LilyPond is updated very frequently, the latest version is always available at:
-ftp://pcnov095.win.tue.nl/pub/lilypond.
+Bug reports should be directed to
+bug-gnu-music@vuse.vanderbilt.edu. In any case, they should contain a
+description of the problem, an small input file which reproduces it
+(if applicable), lilypond version and a description of the platform.
=head1 FILES
B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
+=head1 BUGS
+
=head1 SEE ALSO
=over 4
Goals of the GNU LilyPond project.
-=item The GNU LilyPond FAQ list
+=item FAQ
-=back
+The GNU LilyPond FAQ list
+
+
+
+=item http://?
+
+The GNU Music project. GNU LilyPond is part of the GNU Music
+project. For more information on the GNU Music project,
+
+=item http://www.stack.nl/~hanwen/lilypond/index.html
GNU LilyPond has her own webpage at
-http://www.stack.nl/~hanwen/lilypond/index.html. This webpage contains
+This webpage contains
the MIDI, GIF and PS files for some standard music files. It also has
the complete LilyPond documentation
-A mailing list for GNU LilyPond has been setup, it's at
-lilypond@gnu.ai.mit.edu. To subscribe, send mail to
-lilypond-request@gnu.ai.mit.edu.
-For discussions concerning the GNU Music project,
-gnu-music-discuss@vanderbilt. .edu
+=back
+
+GNU LilyPond is
+updated very frequently, the latest version is always available at:
+ftp://pcnov095.win.tue.nl/pub/lilypond.
+
+For programs which part of the GNU music project, the following mailing list
+have been setup:
+
+
+=over 4
+
+=item info-gnu-music@vuse.vanderbilt.edu
+
+For information on the GNU Music project, to subscribe: send mail with
+subject "subscribe" to info-gnu-music-request@vuse.vanderbilt.edu
+
+=item help-gnu-music@vuse.vanderbilt.edu
+
+For help with programs from the GNU music project. To subscribe: send
+mail with subject "subscribe" to
+help-gnu-music-request@vuse.vanderbilt.edu
+
+=item bug-gnu-music@vuse.vanderbilt.edu
+
+If you have bugreports, you should send them to this list. If you want
+to read all bugreports, you should subscribe to this list. To
+subscribe: send mail with subject "subscribe" to
+bug-gnu-music-request@vuse.vanderbilt.edu
+
+=item gnu-music-discuss@vuse.vanderbilt.edu,
+
+For discussions concerning the GNU Music project, to subscribe: send
+mail with subject "subscribe" to
+gnu-music-discuss-request@vuse.vanderbilt.edu,
+
+=back
=head1 REMARKS
"8" "\eighthrest" 0\pt 5\pt 0\pt 8\pt
"16" "\sixteenthrest" 0\pt 6\pt 0\pt 12\pt
"32" "\thirtysecondrest" 0\pt 6\pt 0\pt 16\pt
+ "64" "\sixtyfourthrest" 0\pt 6\pt 0\pt 16\pt
+ "128" "\hundredtwentyeighthrest" 0\pt 6\pt 0\pt 16\pt
}
"meters" = \table {
}
"flags" = \table {
- "8" "\eigthflag" 0\pt 4\pt 0\pt 0\pt
+ "8" "\eighthflag" 0\pt 4\pt 0\pt 0\pt
"16" "\sixteenthflag" 0\pt 4\pt 0\pt 0\pt
"32" "\thirtysecondflag" 0\pt 4\pt 0\pt 0\pt
- "-8" "\deigthflag" 0\pt 4\pt 0\pt 0\pt
+ "64" "\sixtyfourthflag" 0\pt 4\pt 0\pt 0\pt
+ "128" "\hundredtwentyeighthflag" 0\pt 4\pt 0\pt 0\pt
+ "-8" "\deighthflag" 0\pt 4\pt 0\pt 0\pt
"-16" "\dsixteenthflag" 0\pt 4\pt 0\pt 0\pt
"-32" "\dthirtysecondflag" 0\pt 4\pt 0\pt 0\pt
+ "-64" "\dsixtyfourthflag" 0\pt 4\pt 0\pt 0\pt
+ "-128" "\dhundredtwentyeighthflag" 0\pt 4\pt 0\pt 0\pt
}
"beamslopes" = \table {
return bit_i == 1;
}
+// ugh, what's this?
+// i should be called "mom()", ... or at least "length_mom()"
Moment
Duration::length() const
{
#define DURATION_CONVERT_HH
#include "duration.hh"
#include "string.hh"
+//#include "array.hh"
+#include "varray.hh"
/**
Duration_convert handles all conversions to -n fro Duration (dur).
SUGGESTION: currently a moment in time is called moment too;
let-s typedef Rational When too, so that we get
When Staff_column::when(), Moment Voice_element::mom().
+
+ [todo]
+ move all statics to real members, instantiate Duration_convert
+ object(s).
*/
struct Duration_convert {
static bool no_double_dots_b_s;
static bool no_triplets_b_s;
static int no_smaller_than_i_s;
+ static Array<Duration> dur_array_s;
// /// Most used division in MIDI, all fine with me.
// static int const division_1_c_i = 384;
/// Return plet factor (not a Moment: should use Rational?).
static Moment plet_factor_mom( Duration dur );
+ static void set_array();
+
/** Return synchronisation factor for mom, so that
mom2_dur( mom / sync_f ) will return the duration dur.
*/
class Midi_note : public Midi_event {
public:
- int const c0_pitch_i_c_ = 60;
+// int const c0_pitch_i_c_ = 60; // huh?
+ int const c0_pitch_i_c_ = 48;
Midi_note( String name_str, Duration dur );
virtual Moment mom();
*os_p_ << "% from input file: ";
*os_p_ << midi_parser_l_g->filename_str_;
*os_p_ << "\n\n";
- *os_p_ << "\\version \"0.0.58\";\n";
+ *os_p_ << "\\version \"0.0.57\";\n";
}
/*
snapnie: dit kan toch automaties? Zie ook dstream.
}
// statics Midi_note
-bool const Midi_note::simple_plet_b_s = false;
+/*
+ this switch can be used to write simple plets like
+ c4*2/3
+ as
+ \plet{ 2/3 } c4 \plet{ 1/1 }
+ */
+bool const Midi_note::simple_plet_b_s = true;
Midi_note::Midi_note( String name_str, Duration dur )
{
Midi_score::output_mudela( String filename_str )
{
tor( NORMAL_ver ) << "Lily output to " << filename_str << " ..." << endl;
+
+ // ugh, ugly midi type 1 fix
+ if ( ( midi_track_p_list_.size() == 1 ) && !midi_track_p_list_.top()->number_i_ )
+ midi_track_p_list_.top()->number_i_ = 1;
int track_i = 0;
Lily_stream lily_stream( filename_str );
Midi_voice::Midi_voice( Moment begin_mom )
{
begin_mom_ = begin_mom;
+ end_mom_ = begin_mom;
+ events_i_ = 0;
}
void
Moment
Midi_voice::end_mom()
{
+// if ( events_i_ == midi_event_p_list_.length_i() )
+ if ( events_i_ == midi_event_p_list_.size() )
+ return end_mom_;
Moment now_mom = begin_mom_;
tor( DEBUG_ver ) << now_mom << ", ";
for ( PCursor<Midi_event*> i( midi_event_p_list_.top() ); i.ok(); i++ ) {
now_mom += i->mom();
}
tor( DEBUG_ver ) << endl;
- return now_mom;
+ end_mom_ = now_mom;
+// events_i_ = midi_event_p_list_.length_i();
+ events_i_ = midi_event_p_list_.size();
+ return end_mom_;
}
String
\mdef\eighthrest{63}
\mdef\sixteenthrest{64}
\mdef\thirtysecondrest{65}
+\mdef\sixtyfourthrest{66}
+\mdef\hundredtwentyeighthrest{67}
\mdef\sharp{52}
\mdef\flat{50}
\mdef\natural{54}
\mdef\cbassclef{74}
\mdef\caltoclef{76}
-\mdef\deigthflag{45}
+\mdef\deighthflag{45}
\mdef\dsixteenthflag{46}
\mdef\dthirtysecondflag{47}
+\mdef\dsixtyfourthflag{48}
+\mdef\dhundredtwentyeighthflag{49}
% pointing up
-\mdef\ueigthflag{40}
+\mdef\ueighthflag{40}
\mdef\usixteenthflag{41}
\mdef\uthirtysecondflag{42}
+\mdef\usixtyfourthflag{43}
+\mdef\uhundredtwentyeighthflag{44}
\maccentdef\repeatcolon{55}{2/1}
\def\emptybar{}
% bottom at baseline
\def\linestafsym#1#2{\leftalign{\botalign{\lines{#1}{#2}}}}
-\def\eigthflag{\topalign{\ueigthflag}}
+\def\eighthflag{\topalign{\ueighthflag}}
\def\sixteenthflag{\topalign{\usixteenthflag}}
\def\thirtysecondflag{\topalign{\uthirtysecondflag}}
+\def\sixtyfourthflag{\topalign{\usixtyfourthflag}}
+\def\hundredtwentyeighthflag{\topalign{\uhundredtwentyeighthflag}}
\def\cquartrest{\vertcenter\quartrest}
\def\ceighthrest{\vertcenter\eighthrest}
\def\csixteenthrest{\vertcenter\sixteenthrest}
\def\cthirtysecondrest{\vertcenter\thirtysecondrest}
+\def\csixtyfourthrest{\vertcenter\sixtyfourthrest}
+\def\chundredtwentyeighthrest{\vertcenter\hundredtwentyeighthrest}
\def\lsingledot{\kern-\notewidth\singledot}
\def\ldoubledot{\kern-\notewidth\doubledot}
+\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}}
+\def\linescoreerrormark{\placebox{0pt}{-10pt}{\bf L!}}