]> git.donarmstrong.com Git - lilypond.git/blob - hdr/midiitem.hh
9527c5337514628349df7430849f47ad0d283564
[lilypond.git] / hdr / midiitem.hh
1 //
2 //  midiitem.hh -- part of LilyPond
3 //
4 //  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #ifndef MIDI_ITEM_HH
7 #define MIDI_ITEM_HH
8
9 struct Midi_item {
10         /* *************** */
11         static String int2varlength_str( int i );
12         virtual void output_midi( Midi_stream& midi_stream_r );
13         virtual String str() = 0;
14 };
15
16 struct Midi_note : public Midi_item {
17         /* *************** */
18         int const c0_pitch_i_c_ = 60;
19         Midi_note( Melodic_req* melreq_l, int channel_i, bool on_bo );
20         
21         virtual String str();
22
23         int channel_i_;
24         int on_bo_;
25         int pitch_i_;
26 };
27
28 struct Midi_duration : public Midi_item {
29         /* *************** */
30         Midi_duration( Real seconds_f );
31
32         virtual String str();
33
34         Real seconds_f_;
35 };
36
37 struct Midi_chunk : Midi_item {
38         /* *************** */
39         Midi_chunk();
40
41         void add( String str );
42         void set( String header_str, String data_str, String footer_str );
43         virtual String str();
44
45 private:
46         String data_str_;
47         String footer_str_;
48         String header_str_;
49 };
50
51 struct Midi_header : Midi_chunk {
52         /* *************** */
53         Midi_header( int format_i, int tracks_i, int tempo_i );
54 };
55
56 struct Midi_track : Midi_chunk {
57         /* *************** */
58         int number_i_;
59         Midi_track( int number_i );
60
61         void add( int delta_time_i, String event );
62 //      void add( Moment delta_time_moment, Midi_item& mitem_r );
63         void add( Moment delta_time_moment, Midi_item* mitem_l );
64 };
65
66 #endif // MIDI_ITEM_HH //
67