- We are proud to announce the birth of "GNU LilyPond 0.1", a.k.a.
+Subject: LilyPond 0.1 released - GNU Project music typesetter
- Lily 0.1
- born August 1, 1997
+ BORN
+
+ August 1, 1997
+
+ Lily
+
+ (GNU LilyPond 0.1)
daughter to Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy'
Nienhuys
-Lily is a healthy, bouncing baby weighing 335 kilobytes
+Lily is a healthy, bouncing baby weighing 340 kilobytes
Visiting hours: 24hrs a day at
-
ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.0.tar.gz (Europe)
ftp://alpha.gnu.ai.mit.edu/pub/lilypond/lilypond-0.1.0.tar.gz (US)
-you can see some babyfood, diapers and pictures at
+You can see some babyfood, diapers and pictures at
http://www.stack.nl/~hanwen/lilypond/index.html
You can send your congratulations to Janneke (jan@digicash.com) and
Wendy (hanwen@stack.nl)
-
[ And now the serious part ]
Announcing
=head1 NAME
-GNU LilyPond -- the Webpage
-
-Excuse me for this poor page. I don't really have time for doing this..
+The Homepage of LilyPond -- the GNU Project music typesetter
=head1 DESCRIPTION
-
-
GNU LilyPond is a program which converts music definition files into
visual or auditive output: it can typeset formatted sheet music to a
TeX file and and (mechanical) performances to MIDI files.
=back
-
=head2 The program
-
=over 5
-
-
-
=item *
<a href=TODO.txt
>
</a
>
-=item *
-Get LilyPond at ftp://pcnov095.win.tue.nl/pub/lilypond !
-
-
=item *
<a href=links.html
>
-B<download LilyPond> and other interesting links
+B<download> LilyPond and other interesting links
</a
>
-pl 77.jcn1
- - init/*.ly in dist
- - bf: string-convert.cc: return local buf
- - bf: debug.cc: <new.h>
- - bf: template4.cc: #includes
+pl 78
+ - bf: Midi_instrument
+ - added enable/disable defaults to help.
+ - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to
+DECLARE_MY_RUNTIME_TYPEINFO;
+ - \stem -1 -> \stem \down in input
+ - bf: slurchar index
+ - configure warnings
+ - preliminary stuff for multiarch building
+ - #!/usr/bin/perl fixes (AO)
+ - some Makefile cleanups: now faster.
+
+pl 77.jcn2
+ - Midi_instrument
+
+******
+july 29
pl 77
- some fixes for internal compiler errors
derive from Pointer_list with default dtor gives error with -O2
The static_name() can *not* be inlined (this might have the effect that
s->name() != S::static_name(). Overlapping strings need not be merged in C++
*/
-#define NAME_MEMBERS() \
+#define DECLARE_MY_RUNTIME_TYPEINFO \
static char const *static_name();\
static bool static_is_type_b(const char*s);\
virtual bool is_type_b(const char *s)const { return static_is_type_b(s); } \
warning("Crescendo too small");
w_dim = 0;
}
-// Real lookup_wid = w_dim * 0.9; // make it slightly smaller.
return Symbol( paper()->lookup_l()->hairpin( w_dim, grow_dir_i_ < 0) );
}
Bar * bar_p_;
public:
Bar_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
String type_str_;
int spanned_i_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Bar);
Bar();
private:
/* *************** */
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Beam();
void add(Stem*);
Molecule*brew_molecule_p()const;
public:
Bow();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Offset center() const;
};
#endif // BOW_HH
protected:
virtual void do_pre_processing();
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Break_align_item);
};
/* ************** */
Clef_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // CLEF_HH
bool default_b_;
/* *************** */
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Clef_item);
Clef_item();
void read(Clef_engraver const&);
virtual void do_pre_move_processing();
public:
Collision_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // COLLISION_GRAV_HH
virtual void do_pre_processing();
public:
Link_array<Note_column> clash_l_arr_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void add (Note_column*ncol_l);
Collision();
SCORE_ELEM_CLONE(Crescendo);
virtual Molecule*brew_molecule_p()const;
virtual Interval symbol_height()const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
private:
Symbol get_symbol()const;
public:
Dynamic_engraver();
~Dynamic_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void acknowledge_element(Score_elem_info);
virtual bool do_try_request(Request *req_l);
class Horizontal_vertical_group_item : public Item, public Horizontal_vertical_group {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Horizontal_vertical_group_item);
protected:
virtual void do_print() const;
};
class Horizontal_group_item : public Item, public Horizontal_group {
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Horizontal_group_item);
protected:
virtual void do_print() const { Elbement_group::do_print(); }
Elbement_group();
bool contains_b(Score_elem const *)const;
void add_element(Score_elem*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
class Horizontal_group : public Elbement_group {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Horizontal_group(Horizontal_group const&);
Horizontal_group(){}
void add_element(Score_elem*);
public:
Vertical_group(Vertical_group const &);
Vertical_group(){}
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
/** A class to treat a group of elements as a single entity. The
public:
Horizontal_vertical_group();
bool contains_b(Score_elem const *)const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual void do_substitute_dependency(Score_elem*,Score_elem*);
virtual void do_print() const;
void add_element(Score_elem*);
*/
virtual void terminate_engraver(Engraver * grav_l);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
/**
Remove #grav_l# from the list, and return it.
Engraver();
virtual ~Engraver(){}
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void print() const;
};
class General_script_def : public Input {
public:
VIRTUAL_COPY_CONS(General_script_def,General_script_def);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual int staff_dir_i()const;
void print() const;
virtual int rel_stem_dir_i()const;
virtual void finish() {}
virtual void start() {}
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual Global_translator *global_l() { return this; }
void add(Script*s) { Script_column::add(s) ; }
virtual void set(Stem*);
Head_column();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_process_requests();
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
*/
int align_i_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Horizontal_align_item);
void add(Item*, int p);
Horizontal_align_item();
virtual ~Identifier() ;
void print()const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void error(String);
IDACCESSOR(Input_translator, input_translator)
IDACCESSOR(Music, music)
#define declare_id_class(Idclass, Class, accessor) \
struct Idclass : Identifier {\
- NAME_MEMBERS(); \
+ DECLARE_MY_RUNTIME_TYPEINFO; \
Idclass(String s, Class*st, int code);\
virtual Class* accessor(bool copy);\
~Idclass();\
virtual Item *item() { return this; }
Item();
Real hpos_f() const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual Line_of_score * line_l() const;
protected:
virtual void do_breakable_col_processing();
virtual void do_post_move_processing();
virtual void acknowledge_element(Score_elem_info);
Key_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
private:
void create_key();
/* *************** */
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Key_item);
Key_item(int cposition);
class Key_performer : public Performer {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Key_performer();
~Key_performer();
/*
- line-group-grav.hh -- declare
+ line-group-grav.hh -- declare Line_group_engraver
source file of the GNU LilyPond music typesetter
virtual void acknowledge_element(Score_elem_info);
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Line_group_engraver();
};
virtual void acknowledge_element(Score_elem_info);
virtual void do_pre_move_processing();
Local_key_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // LOCALKEYGRAV_HH
update item if Items are removed
*/
struct Local_key_item : Item {
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Array<Local_acc> accs;
Link_array<Item> support_items_;
int c0_position;
virtual void do_process_requests();
virtual void do_post_move_processing();
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Lyric_engraver();
};
#endif // LYRIC_ENGRAVER_HH
class Lyric_performer : public Performer {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Lyric_performer();
~Lyric_performer();
virtual void do_creation_processing();
virtual void do_post_move_processing();
Meter_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // METERGRAV_HH
class Meter_performer : public Performer {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Meter_performer();
~Meter_performer();
Molecule*brew_molecule_p() const;
public:
Meter(Array<Scalar> args) ;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Meter);
};
#endif // METER_HH
#ifndef MIDI_ITEM_HH
#define MIDI_ITEM_HH
+
#include "string.hh"
#include "lily-proto.hh"
+#include "virtual-methods.hh"
+
+/**
+ Any piece of midi information.
+ Maybe use base classes for RIFF files?
+ */
struct Midi_item {
+ Midi_item() { }
+ DECLARE_MY_RUNTIME_TYPEINFO;
static String i2varint_str( int i );
virtual void output_midi( Midi_stream& midi_stream_r ) const;
virtual String str() const = 0;
- NAME_MEMBERS();
+private:
+ Midi_item(Midi_item const&){}
+ void operator=(Midi_item const&){}
};
struct Midi_key : public Midi_item {
Midi_key( int accidentals_i, int minor_i );
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual String str() const;
- NAME_MEMBERS();
/* *************** */
int accidentals_i_;
int minor_i_;
};
+/**
+ Change instrument event
+ */
+struct Midi_instrument : public Midi_item {
+ Midi_instrument( int channel_i, String instrument_str );
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+ virtual String str() const;
+
+ int channel_i_;
+ Byte program_byte_;
+};
+
struct Midi_note : public Midi_item {
/**
- Generate a note-event on a channel pitch.
+ Generate a note-event on a channel.
@param #melreq_l# is the pitch.
*/
Midi_note( Melodic_req* melreq_l, int channel_i, bool on_b );
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
virtual String str() const;
/* *************** */
struct Midi_duration : public Midi_item {
Midi_duration( Real seconds_f );
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual String str() const;
- NAME_MEMBERS();
/* *************** */
Real seconds_f_;
};
struct Midi_chunk : Midi_item {
Midi_chunk();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void add( String str );
void set( String header_str, String data_str, String footer_str );
virtual String str() const;
- NAME_MEMBERS();
private:
String data_str_;
String footer_str_;
struct Midi_header : Midi_chunk {
/* *************** */
Midi_header( int format_i, int tracks_i, int clocks_per_4_i );
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
struct Midi_text : Midi_item {
MARKER, CUE_POINT
};
Midi_text( Midi_text::Type type, String text_str );
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
virtual String str() const;
/* *************** */
Type type_;
struct Midi_tempo : Midi_item {
Midi_tempo( int per_minute_4_i );
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual String str() const;
/* *************** */
struct Midi_time : Midi_item {
Midi_time( int num_i, int den_i, int clocks_per_1_i );
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual String str() const;
struct Midi_track : Midi_chunk {
int number_i_;
/* *************** */
- Midi_track( );
- NAME_MEMBERS();
+ Midi_track();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void add( int delta_time_i, String event );
-// void add( Moment delta_time_moment, Midi_item& mitem_r );
void add( Moment delta_time_moment, Midi_item* mitem_l );
};
public:
Music_iterator *daddy_iter_l_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Array<Translator *>report_to_l_arr_;
Translator *report_to_l()const;
class Change_iterator : public Music_iterator {
Change_reg * change_l_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual void process_and_next(Moment);
Change_iterator(Change_reg*);
};
public:
~Chord_iterator();
Chord_iterator(Chord const*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_print()const;
virtual void construct_children();
bool last_b_;
public:
Request_chord_iterator(Request_chord*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void process_and_next(Moment);
void next_element();
public:
Voice_iterator(Voice const*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_print()const;
virtual void construct_children();
String id_str_;
Music_list(Music_list const&);
Music_list();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Music_list,Music);
virtual void add(Music*);
virtual void transpose(Melodic_req const *);
class Chord : public Music_list {
public:
Chord();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Chord,Music);
virtual void translate(Moment dt);
virtual MInterval time_int()const;
class Request_chord : public Chord {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Request_chord();
VIRTUAL_COPY_CONS(Request_chord,Music);
};
Moment offset_mom_;
Voice();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Voice, Music);
virtual void translate(Moment dt);
virtual MInterval time_int()const;
/// what name (or look for this name)
String id_str_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Change_reg, Music);
};
#endif // MUSIC_LIST_HH
virtual void transpose(Melodic_req const *);
virtual void translate(Moment dt);
VIRTUAL_COPY_CONS(Music,Music);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Music();
protected:
virtual void do_print() const;
virtual void do_post_move_processing();
public:
Note_column_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // NOTE_COLUMN_GRAV_HH
Interval_t<int> head_positions_interval()const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Note_column();
virtual void set(Stem *);
void sort();
class Note_head : public Item {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
bool rest_b_;
int position_i_;
class Note_performer : public Performer {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Note_performer();
~Note_performer();
class Performer_group_performer : public Performer, public virtual Translator {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Input_translator* itrans_l_;
Performer_group_performer();
class Performer {
bool init_b_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Performer_group_performer* daddy_perf_l_;
Performer();
virtual ~Request(){}
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Request,Music);
virtual MInterval time_int() const;
#define REQUESTMETHODS(T,accessor) \
virtual T * accessor() { return this;}\
-NAME_MEMBERS();\
+DECLARE_MY_RUNTIME_TYPEINFO;\
VIRTUAL_COPY_CONS(T, Request);\
virtual void do_print() const
virtual void do_pre_move_processing();
public:
Rest_collision_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // REST_COLLISION_GRAV_HH
void add(Note_column*);
void add(Rest_column*);
void add(Collision*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Rest_collision();
protected:
virtual void do_post_processing();
*/
class Rest_column : public Head_column {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void translate_heads(int dy);
};
const char* type_ch_C_;
int priority_i_;
Score_align_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void acknowledge_element(Score_elem_info);
virtual void do_pre_move_processing();
virtual ~Score_elem();
Score_elem();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Interval width() const;
Interval height() const;
void typeset_all();
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Score_engraver();
class Score_horizontal_align_engraver : public Engraver {
Break_align_item * halign_p_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Score_horizontal_align_engraver();
protected:
virtual void acknowledge_element(Score_elem_info);
public Performer_group_performer, public Global_translator
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Score_performer();
~Score_performer();
virtual String TeX_string() const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Line_of_score();
void add(Score_elem *);
public:
Link_array<Script> script_l_arr_;
Link_array<Item> support_l_arr_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void add(Script *);
void add_support(Item*);
virtual int priority_i()const;
virtual bool inside_b()const;
virtual Atom get_atom(Paper_def* p, int dir_i_)const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual bool do_equal_b(General_script_def const &)const;
virtual void do_print() const;
/* *************** */
bool acceptable_elem_b(Score_elem*);
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Script_engraver();
protected:
virtual bool do_try_request(Request*);
static int compare(Script *const&, Script *const&) ;
Script();
void set_stem(Stem*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
virtual void do_post_move_processing();
public:
Slur_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // SLURGRAV_HH
virtual void do_substitute_dependency(Score_elem*, Score_elem*);
virtual void do_pre_processing();
SCORE_ELEM_CLONE(Slur);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // SLUR_HH
Array<Bar*> bar_l_arr_;
Vertical_align_element * valign_l_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Span_bar_engraver();
protected:
Link_array<Bar> spanning_l_arr_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Span_bar);
void add(Bar* );
void set( Vertical_align_element *);
class Span_score_bar_engraver : public Span_bar_engraver
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual Span_bar* get_span_bar_p()const;
};
class Piano_bar_engraver : public Span_score_bar_engraver
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual Span_bar * get_span_bar_p() const;
};
class Span_score_bar : public Span_bar
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Span_score_bar);
Span_score_bar();
protected:
class Piano_brace : public Span_score_bar
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Piano_brace);
protected:
virtual Interval do_width()const;
virtual void do_print() const;
SCORE_ELEM_CLONE(Spanner_elem_group);
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // SPANNER_ELEM_GROUP_HH
PCol *left_col_l_, *right_col_l_;
/* *************** */
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual Spanner* spanner() { return this; }
Spanner();
bool broken_b() const;
class Staff_performer : public Performer_group_performer
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Staff_performer();
~Staff_performer();
Staff_side();
void add_support(Score_elem*);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual Interval symbol_height() const;
Staff_symbol *span_p_;
public:
Staff_sym_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual ~Staff_sym_engraver();
virtual void do_process_requests();
void set_extent(PCol* p1, PCol* p2);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Staff_symbol(int lines);
Real inter_note_f()const;
int steps_i()const;
SCORE_ELEM_CLONE(Line_of_staff);
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
/* *************** */
/**
int default_dir_i_;
public:
/* *************** */
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Stem_beam_engraver();
protected:
/// ensure that this Stem also encompasses the Notehead #n#
void add(Note_head*n);
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Real hpos_f()const;
virtual void handle_broken_dependencies();
virtual void do_add_processing();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // SUPER_ELEM_HH
bool acceptable_request_b(Request*) const;
bool do_try_request(Request*) ;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // SWALLOW_GRAV_HH
class Swallow_performer : public Performer {
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual bool do_try_request (Request* ) { return true; }
};
class Text_def : public General_script_def {
protected:
virtual Atom get_atom(Paper_def* p, int dir_i_)const;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Text_def,General_script_def);
public:
/**
virtual void acknowledge_element(Score_elem_info);
public:
Text_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // TEXTGRAV_HH
Text_item(General_script_def*,int dir=0);
virtual ~Text_item();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
General_script_def * tdef_p_;
Directional_spanner * support_span_l_;
General_script_def * spec_p_;
Offset text_off_;
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
void set_support(Directional_spanner*);
Text_spanner();
virtual void set_feature(Feature);
public:
Tie_engraver();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // TIE_GRAV_HH
void set_head(int, Note_head*head_l);
Tie();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Tie);
};
#endif // TIE_HH
virtual Translator *find_get_translator_l(String name, String id)=0;
virtual Translator *ancestor_l(int l=1)=0;
virtual ~Translator(){}
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Translator();
virtual Translator *get_default_interpreter()=0;
};
void add(Score_elem*);
bool contains_b(Score_elem const*)const;
Vertical_align_element();
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_substitute_dependency(Score_elem*,Score_elem*);
virtual void do_post_processing() ;
Vertical_align_spanner * valign_p_;
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
Vertical_align_engraver();
protected:
virtual void acknowledge_element(Score_elem_info);
class Vertical_align_spanner : public Vertical_align_element, public Spanner
{
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
SCORE_ELEM_CLONE(Vertical_align_spanner);
virtual void do_print() const { Vertical_align_element::do_print() ; }
public:
- NAME_MEMBERS();
+ DECLARE_MY_RUNTIME_TYPEINFO;
static bool static_acceptable_request_b(Request*);
Voice_group_engravers();
};
Item::find_prebroken_piece(Line_of_score*l) const
{
if (line_l() == l)
- return this;
+ return (Item*)this;
else if (broken_to_a_[0] && broken_to_a_[0]->line_l() == l)
return broken_to_a_[0];
else if (broken_to_a_[1] && broken_to_a_[1]->line_l() == l)
#include "text-item.hh"
#include "paper-def.hh"
#include "lookup.hh"
+#include "paper-def.hh"
Lyric_engraver::Lyric_engraver()
{
{
if ( lreq_l_ ) {
lyric_item_p_ = new Text_item(lreq_l_->tdef_p_ );
+
+ lyric_item_p_->translate_x( paper()->note_width()/2 );
lyric_item_p_->dir_i_ = -1;
lyric_item_p_->fat_b_ = true;
announce_element( Score_elem_info( lyric_item_p_, lreq_l_));
Midi_stream&
Midi_stream::operator <<( String str )
{
- // still debugging...
if ( check_debug )
str = String_convert::bin2hex_str( str );
- // string now 1.0.26-2 handles binary streaming
+
*os_p_ << str;
return *this;
}
void
Midi_stream::header()
{
-// *os_p_ << "% Creator: " << get_version();
-// *os_p_ << "% Automatically generated, at ";
-// time_t t(time(0));
-// *os_p_ << ctime(&t);
-
-// 4D 54 68 64 MThd
-// String str = "MThd";
-// 00 00 00 06 chunk length
-// 00 01 format 1
-// 00 01 one track
-// 00 60 96 per quarter-note
-
-// char const ch_C = "0000" "0006" "0001" "0001" "0060";
-// str += String_convert::hex2bin_str( ch_C );
-// *os_p_ << str;
-
-// *this << Midi_header( 1, 1, tempo_i_ );
+/*
+ 4D 54 68 64 MThd
+ String str = "MThd";
+ 00 00 00 06 chunk length
+ 00 01 format 1
+ 00 01 one track
+ 00 60 96 per quarter-note
+*/
*this << Midi_header( 1, tracks_i_, clocks_per_4_i_ );
}
check_version:
VERSION STRING ';' {
- if (*$2 != MUDELA_VERSION) {
+ if ( String( *$2 ) != MUDELA_VERSION) {
if (THIS->ignore_version_b_) {
THIS->here_input().error("Incorrect mudela version");
} else {
lyrics_elt:
text_def notemode_duration {
+ /* this sux! text-def should be feature of lyric-engraver. */
if (!THIS->lexer_p_->lyric_state_b())
THIS->parser_error("Have to be in Lyric mode for lyrics");
$$ = THIS->get_word_element($1, $2);
class C ## _align_engraver : public Score_align_engraver \
{ \
public: \
- NAME_MEMBERS(); \
+ DECLARE_MY_RUNTIME_TYPEINFO; \
C ## _align_engraver() : Score_align_engraver() \
{ type_ch_C_ = T::static_name();\
priority_i_ = p;} \