2 midi-item.hh -- declare Midi items
4 (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
11 #include "lily-proto.hh"
14 Any piece of midi information.
16 Maybe use base classes for RIFF files?
19 Midi_item( Audio_item* audio_item_l );
20 static String i2varint_str( int i );
21 void output( Midi_stream* midi_stream_l ) const;
22 virtual String str() const = 0;
24 Audio_item* audio_item_l_;
28 Midi_item( Midi_item const& );
29 Midi_item& operator =( Midi_item const& );
32 struct Midi_key : public Midi_item {
33 Midi_key( Audio_item* audio_item_l );
35 virtual String str() const;
39 Change instrument event
41 struct Midi_instrument : public Midi_item {
42 Midi_instrument( int channel_i, String instrument_str );
44 virtual String str() const;
45 String instrument_str_;
48 struct Midi_note : public Midi_item {
50 Generate a note-event on a channel.
52 @param #melreq_l# is the pitch.
54 Midi_note( Audio_item* audio_item_l );
56 virtual String str() const;
59 int const c0_pitch_i_c_ = 60;
64 struct Midi_duration : public Midi_item {
65 Midi_duration( Real seconds_f );
67 virtual String str() const;
72 struct Midi_chunk : Midi_item {
75 void add( String str );
76 void set( String header_str, String data_str, String footer_str );
77 virtual String str() const;
84 struct Midi_header : Midi_chunk {
86 Midi_header( int format_i, int tracks_i, int clocks_per_4_i );
89 struct Midi_text : Midi_item {
91 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
95 Midi_text( Audio_item* audio_item_l );
96 Midi_text( Midi_text::Type type, String text_str );
98 virtual String str() const;
104 struct Midi_tempo : Midi_item {
105 Midi_tempo( Audio_item* audio_item_l );
106 Midi_tempo( int per_minute_4_i );
108 virtual String str() const;
113 struct Midi_meter : Midi_item {
114 Midi_meter( Audio_item* audio_item_l );
116 virtual String str() const;
120 struct Midi_track : Midi_chunk {
122 /* *************** */
125 void add( int delta_time_i, String event );
126 void add( Moment delta_time_moment, Midi_item* mitem_l );
129 #endif // MIDI_ITEM_HH