2 // midiitem.hh -- part of GNU LilyPond
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
9 #include "lily-proto.hh"
12 static String i2varint_str( int i );
13 virtual void output_midi( Midi_stream& midi_stream_r ) const;
14 virtual String str() const = 0;
18 struct Midi_key : public Midi_item {
19 Midi_key( int accidentals_i, int minor_i );
21 virtual String str() const;
28 struct Midi_note : public Midi_item {
30 Generate a note-event on a channel pitch.
32 @param #melreq_l# is the pitch.
34 Midi_note( Melodic_req* melreq_l, int channel_i, bool on_b );
36 virtual String str() const;
39 int const c0_pitch_i_c_ = 60;
47 struct Midi_duration : public Midi_item {
48 Midi_duration( Real seconds_f );
50 virtual String str() const;
56 struct Midi_chunk : Midi_item {
59 void add( String str );
60 void set( String header_str, String data_str, String footer_str );
61 virtual String str() const;
69 struct Midi_header : Midi_chunk {
71 Midi_header( int format_i, int tracks_i, int clocks_per_4_i );
75 struct Midi_text : Midi_item {
78 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
81 Midi_text( Midi_text::Type type, String text_str );
83 virtual String str() const;
90 struct Midi_tempo : Midi_item {
91 Midi_tempo( int per_minute_4_i );
94 virtual String str() const;
100 struct Midi_time : Midi_item {
102 Midi_time( int num_i, int den_i, int clocks_per_1_i );
105 virtual String str() const;
107 /* *************** */
113 struct Midi_track : Midi_chunk {
115 /* *************** */
119 void add( int delta_time_i, String event );
120 // void add( Moment delta_time_moment, Midi_item& mitem_r );
121 void add( Moment delta_time_moment, Midi_item* mitem_l );
124 #endif // MIDI_ITEM_HH //