lilypond-0.0.39
[lilypond.git] / lily / include / midi-item.hh
blob6f105724578ea4c2e8fc327a7f3a5f3260016363
1 //
2 // midiitem.hh -- part of LilyPond
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
6 #ifndef MIDI_ITEM_HH
7 #define MIDI_ITEM_HH
8 #include "string.hh"
9 #include "proto.hh"
11 struct Midi_item {
12 /* *************** */
13 static String i2varint_str( int i );
14 virtual void output_midi( Midi_stream& midi_stream_r ) const;
15 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;
23 int accidentals_i_;
24 int minor_i_;
27 struct Midi_note : public Midi_item {
28 /* *************** */
29 int const c0_pitch_i_c_ = 60;
30 Byte dynamic_byte_;
32 /**
33 Generate a note-event on a channel pitch.
35 @param #melreq_l# is the pitch.
37 Midi_note( Melodic_req* melreq_l, int channel_i, bool on_b );
39 virtual String str() const;
41 int channel_i_;
42 int on_b_;
43 int pitch_i_;
46 struct Midi_duration : public Midi_item {
47 /* *************** */
48 Midi_duration( Real seconds_f );
50 virtual String str() const;
52 Real seconds_f_;
55 struct Midi_chunk : Midi_item {
56 /* *************** */
57 Midi_chunk();
59 void add( String str );
60 void set( String header_str, String data_str, String footer_str );
61 virtual String str() const;
63 private:
64 String data_str_;
65 String footer_str_;
66 String header_str_;
69 struct Midi_header : Midi_chunk {
70 /* *************** */
71 Midi_header( int format_i, int tracks_i, int clocks_per_4_i );
74 struct Midi_text : Midi_item {
75 /* *************** */
76 enum Type {
77 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
78 MARKER, CUE_POINT
80 Midi_text( Midi_text::Type type, String text_str );
82 virtual String str() const;
84 Type type_;
85 String text_str_;
88 struct Midi_tempo : Midi_item {
89 /* *************** */
90 Midi_tempo( int per_minute_4_i );
92 virtual String str() const;
94 int per_minute_4_i_;
97 struct Midi_track : Midi_chunk {
98 /* *************** */
99 int number_i_;
100 Midi_track( int number_i );
102 void add( int delta_time_i, String event );
103 // void add( Moment delta_time_moment, Midi_item& mitem_r );
104 void add( Moment delta_time_moment, Midi_item* mitem_l );
107 #endif // MIDI_ITEM_HH //