diff options
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/midi_time_axis.cc | 13 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_track.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 8 | ||||
-rw-r--r-- | libs/ardour/midi_track.cc | 28 | ||||
-rw-r--r-- | libs/ardour/session.cc | 6 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 12 |
7 files changed, 47 insertions, 27 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 7992051ade..6fe2f01a90 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -395,11 +395,9 @@ MidiStreamView::setup_rec_box () rec_data_ready_connections.drop_connections (); - boost::shared_ptr<MidiDiskstream> mds = _trackview.midi_track()->midi_diskstream(); - sources.push_back (_trackview.midi_track()->write_source()); - mds->write_source()->ViewDataRangeReady.connect + _trackview.midi_track()->write_source()->ViewDataRangeReady.connect (rec_data_ready_connections, invalidator (*this), ui_bind (&MidiStreamView::rec_data_range_ready, this, _1, _2, boost::weak_ptr<Source>(_trackview.midi_track()->write_source())), diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 83567c42d9..9477e5c02e 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -195,13 +195,10 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session* sess, controls_vbox.pack_start(_midi_controls_box, false, false); - boost::shared_ptr<MidiDiskstream> diskstream = midi_track()->midi_diskstream(); - // restore channel selector settings - _channel_selector.set_channel_mode(diskstream->get_channel_mode(), - diskstream->get_channel_mask()); + _channel_selector.set_channel_mode(midi_track()->get_channel_mode(), midi_track()->get_channel_mask()); _channel_selector.mode_changed.connect( - sigc::mem_fun(*midi_track()->midi_diskstream(), &MidiDiskstream::set_channel_mode)); + sigc::mem_fun(*midi_track(), &MidiTrack::set_channel_mode)); _channel_selector.mode_changed.connect( sigc::mem_fun(*this, &MidiTimeAxisView::set_channel_mode)); @@ -782,8 +779,7 @@ void MidiTimeAxisView::show_all_automation () { if (midi_track()) { - const set<Evoral::Parameter> params = midi_track()->midi_diskstream()-> - midi_playlist()->contained_automation(); + const set<Evoral::Parameter> params = midi_track()->midi_playlist()->contained_automation(); for (set<Evoral::Parameter>::const_iterator i = params.begin(); i != params.end(); ++i) { create_automation_child(*i, true); @@ -797,8 +793,7 @@ void MidiTimeAxisView::show_existing_automation () { if (midi_track()) { - const set<Evoral::Parameter> params = midi_track()->midi_diskstream()-> - midi_playlist()->contained_automation(); + const set<Evoral::Parameter> params = midi_track()->midi_playlist()->contained_automation(); for (set<Evoral::Parameter>::const_iterator i = params.begin(); i != params.end(); ++i) { create_automation_child(*i, true); diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index d74f5e53b9..c2428339c7 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -42,8 +42,6 @@ class AudioTrack : public Track int roll (nframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick, bool can_record, bool rec_monitors_input, bool& need_butler); - boost::shared_ptr<AudioDiskstream> audio_diskstream() const; - void use_new_diskstream (); void set_diskstream (boost::shared_ptr<Diskstream>); @@ -60,6 +58,7 @@ class AudioTrack : public Track boost::shared_ptr<AudioFileSource> write_source (uint32_t n = 0); protected: + boost::shared_ptr<AudioDiskstream> audio_diskstream () const; XMLNode& state (bool full); int _set_state (const XMLNode&, int, bool call_base); diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 0399492a02..5d5bdc0cb4 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -44,8 +44,6 @@ public: void handle_transport_stopped (bool abort, bool did_locate, bool flush_processors); - boost::shared_ptr<MidiDiskstream> midi_diskstream() const; - void use_new_diskstream (); void set_diskstream (boost::shared_ptr<Diskstream>); @@ -92,6 +90,10 @@ public: void set_midi_thru (bool yn); boost::shared_ptr<SMFSource> write_source (uint32_t n = 0); + void set_channel_mode (ChannelMode, uint16_t); + ChannelMode get_channel_mode (); + uint16_t get_channel_mask (); + boost::shared_ptr<MidiPlaylist> midi_playlist (); protected: XMLNode& state (bool full); @@ -99,6 +101,8 @@ protected: int _set_state (const XMLNode&, int, bool call_base); private: + boost::shared_ptr<MidiDiskstream> midi_diskstream () const; + void write_out_of_band_data (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes); void set_state_part_two (); diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 10bd7a23a5..9fc2755a16 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -570,7 +570,29 @@ MidiTrack::set_midi_thru (bool yn) boost::shared_ptr<SMFSource> MidiTrack::write_source (uint32_t n) { - boost::shared_ptr<MidiDiskstream> ds = boost::dynamic_pointer_cast<MidiDiskstream> (_diskstream); - assert (ds); - return ds->write_source (); + return midi_diskstream()->write_source (); +} + +void +MidiTrack::set_channel_mode (ChannelMode mode, uint16_t mask) +{ + midi_diskstream()->set_channel_mode (mode, mask); +} + +ChannelMode +MidiTrack::get_channel_mode () +{ + return midi_diskstream()->get_channel_mode (); +} + +uint16_t +MidiTrack::get_channel_mask () +{ + return midi_diskstream()->get_channel_mask (); +} + +boost::shared_ptr<MidiPlaylist> +MidiTrack::midi_playlist () +{ + return midi_diskstream()->midi_playlist (); } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 5c9ee380c9..9cf48b7154 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1461,7 +1461,7 @@ Session::new_midi_track (TrackMode mode, RouteGroup* route_group, uint32_t how_m auto_connect_route (track, existing_inputs, existing_outputs); - track->midi_diskstream()->non_realtime_input_change(); + track->non_realtime_input_change(); if (route_group) { route_group->add (track); } @@ -1630,7 +1630,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod route_group->add (track); } - track->audio_diskstream()->non_realtime_input_change(); + track->non_realtime_input_change(); track->DiskstreamChanged.connect_same_thread (*this, boost::bind (&Session::resort_routes, this)); track->set_remote_control_id (control_id); @@ -3327,7 +3327,7 @@ Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end, boost::shared_ptr<AudioFileSource> fsource; uint32_t x; char buf[PATH_MAX+1]; - ChanCount nchans(track.audio_diskstream()->n_channels()); + ChanCount nchans(track.n_channels()); nframes_t position; nframes_t this_chunk; nframes_t to_do; diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 833ead56e2..280d6365ad 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1300,11 +1300,13 @@ Session::set_state (const XMLNode& node, int version) goto out; } - if (version < 3000 && ((child = find_named_node (node, X_("DiskStreams"))) == 0)) { - error << _("Session: XML state has no diskstreams section") << endmsg; - goto out; - } else if (load_diskstreams_2X (*child, version)) { - goto out; + if (version < 3000) { + if ((child = find_named_node (node, X_("DiskStreams"))) == 0) { + error << _("Session: XML state has no diskstreams section") << endmsg; + goto out; + } else if (load_diskstreams_2X (*child, version)) { + goto out; + } } if ((child = find_named_node (node, "Routes")) == 0) { |