// extra element to signify the end of the mapping, must be kept last
{ 0, NUM_CONTROLS, 0.0, 0.0 }
};
+
+Audio_control_change::Audio_control_change (int control, int value)
+ : control_ (control),
+ value_ (value)
+{
+}
Real value_;
};
+class Audio_control_change : public Audio_item
+{
+public:
+ Audio_control_change (int control, int value);
+
+ int control_;
+ int value_;
+};
+
int moment_to_ticks (Moment);
Real moment_to_real (Moment);
Moment remap_grace_duration (Moment);
class All_font_metrics;
class Audio_column;
+class Audio_control_change;
class Audio_control_function_value_change;
class Audio_dynamic;
class Audio_element;
class Lyric_performer;
class Mensural_ligature_engraver;
class Midi_chunk;
+class Midi_control_change;
class Midi_control_function_value_change;
class Midi_duration;
class Midi_dynamic;
Real seconds_;
};
+/**
+ MIDI control change
+*/
+class Midi_control_change : public Midi_channel_item
+{
+public:
+ DECLARE_CLASSNAME (Midi_control_change);
+ Midi_control_change (Audio_control_change *ai);
+ virtual ~Midi_control_change ();
+ virtual string to_string () const;
+
+ Audio_control_change *audio_;
+};
+
/**
Change instrument event
*/
else if (Audio_control_function_value_change *i
= dynamic_cast<Audio_control_function_value_change *> (a))
return new Midi_control_function_value_change (i);
+ else if (Audio_control_change *i = dynamic_cast<Audio_control_change *> (a))
+ return new Midi_control_change (i);
else
assert (0);
{
}
+Midi_control_change::Midi_control_change (Audio_control_change *ai)
+ : Midi_channel_item (ai),
+ audio_ (ai)
+{
+}
+
Midi_item::~Midi_item ()
{
}
{
}
+Midi_control_change::~Midi_control_change ()
+{
+}
+
string
int2midi_varint_string (int i)
{
return str;
}
+string
+Midi_control_change::to_string () const
+{
+ Byte status_byte = (char) (0xB0 + channel_);
+ string str = ::to_string ((char)status_byte);
+ str += ::to_string ((char) (audio_->control_));
+ str += ::to_string ((char) (audio_->value_));
+ return str;
+}
+
char const *
Midi_item::name () const
{