+ if (_session.record_status() != Session::Disabled) {
+ return;
+ }
+
+ if (yn != _step_editing) {
+ _step_editing = yn;
+ StepEditStatusChange (yn);
+ }
+}
+
+boost::shared_ptr<SMFSource>
+MidiTrack::write_source (uint32_t)
+{
+ return midi_diskstream()->write_source ();
+}
+
+void
+MidiTrack::set_playback_channel_mode(ChannelMode mode, uint16_t mask)
+{
+ if (_playback_filter.set_channel_mode(mode, mask)) {
+ _session.set_dirty();
+ }
+}
+
+void
+MidiTrack::set_capture_channel_mode(ChannelMode mode, uint16_t mask)
+{
+ if (_capture_filter.set_channel_mode(mode, mask)) {
+ _session.set_dirty();
+ }
+}
+
+void
+MidiTrack::set_playback_channel_mask (uint16_t mask)
+{
+ if (_playback_filter.set_channel_mask(mask)) {
+ _session.set_dirty();
+ }
+}
+
+void
+MidiTrack::set_capture_channel_mask (uint16_t mask)
+{
+ if (_capture_filter.set_channel_mask(mask)) {
+ _session.set_dirty();
+ }
+}
+
+boost::shared_ptr<MidiPlaylist>
+MidiTrack::midi_playlist ()
+{
+ return midi_diskstream()->midi_playlist ();
+}
+
+void
+MidiTrack::diskstream_data_recorded (boost::weak_ptr<MidiSource> src)
+{
+ DataRecorded (src); /* EMIT SIGNAL */
+}
+
+bool
+MidiTrack::input_active () const
+{
+ return _input_active;
+}
+
+void
+MidiTrack::set_input_active (bool yn)
+{
+ if (yn != _input_active) {
+ _input_active = yn;
+ map_input_active (yn);
+ InputActiveChanged (); /* EMIT SIGNAL */
+ }
+}
+
+void
+MidiTrack::map_input_active (bool yn)
+{
+ if (!_input) {
+ return;
+ }
+
+ PortSet& ports (_input->ports());
+
+ for (PortSet::iterator p = ports.begin(DataType::MIDI); p != ports.end(DataType::MIDI); ++p) {
+ boost::shared_ptr<MidiPort> mp = boost::dynamic_pointer_cast<MidiPort> (*p);
+ if (yn != mp->input_active()) {
+ mp->set_input_active (yn);
+ }
+ }