#include "libardour-config.h"
#endif
-#include <vector>
-#include <cstdio>
-
-#include <glibmm/fileutils.h>
-#include <glibmm/miscutils.h>
-
#include "pbd/error.h"
-#include "pbd/convert.h"
-#include "pbd/enumwriter.h"
#include "ardour/midi_playlist.h"
#include "ardour/midi_playlist_source.h"
-#include "ardour/midi_region.h"
-#include "ardour/debug.h"
-#include "ardour/filename_extensions.h"
-#include "ardour/session.h"
-#include "ardour/session_directory.h"
-#include "ardour/session_playlists.h"
-#include "ardour/source_factory.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
using namespace PBD;
+namespace ARDOUR {
+class MidiStateTracker;
+class Session;
+template <typename T> class MidiRingBuffer;
+}
+
+namespace Evoral {
+template <typename T> class EventSink;
+template <typename Time> class Event;
+}
+
/*******************************************************************************
As of May 2011, it appears too complex to support compound regions for MIDI
because of the need to be able to edit the data represented by the region. It
********************************************************************************/
MidiPlaylistSource::MidiPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<MidiPlaylist> p,
- uint32_t /*chn*/, frameoffset_t begin, framecnt_t len, Source::Flag flags)
+ uint32_t /*chn*/, sampleoffset_t begin, samplecnt_t len, Source::Flag flags)
: Source (s, DataType::MIDI, name)
, MidiSource (s, name, flags)
, PlaylistSource (s, orig, name, p, DataType::MIDI, begin, len, flags)
return node;
}
-
int
MidiPlaylistSource::set_state (const XMLNode& node, int version)
{
return 0;
}
-framecnt_t
-MidiPlaylistSource::length (framepos_t) const
+samplecnt_t
+MidiPlaylistSource::length (samplepos_t) const
{
- pair<framepos_t,framepos_t> extent = _playlist->get_extent();
+ pair<samplepos_t,samplepos_t> extent = _playlist->get_extent();
return extent.second - extent.first;
}
-framecnt_t
-MidiPlaylistSource::read_unlocked (Evoral::EventSink<framepos_t>& dst,
- framepos_t /*position*/,
- framepos_t start, framecnt_t cnt,
- MidiStateTracker*) const
+samplecnt_t
+MidiPlaylistSource::read_unlocked (const Lock& lock,
+ Evoral::EventSink<samplepos_t>& dst,
+ samplepos_t /*position*/,
+ samplepos_t start,
+ samplecnt_t cnt,
+ Evoral::Range<samplepos_t>* loop_range,
+ MidiStateTracker*,
+ MidiChannelFilter*) const
{
boost::shared_ptr<MidiPlaylist> mp = boost::dynamic_pointer_cast<MidiPlaylist> (_playlist);
return 0;
}
- return mp->read (dst, start, cnt);
+ return mp->read (dst, start, cnt, loop_range);
}
-framecnt_t
-MidiPlaylistSource::write_unlocked (MidiRingBuffer<framepos_t>&,
- framepos_t,
- framecnt_t)
+samplecnt_t
+MidiPlaylistSource::write_unlocked (const Lock&,
+ MidiRingBuffer<samplepos_t>&,
+ samplepos_t,
+ samplecnt_t)
{
fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::write_unlocked() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return 0;
}
void
-MidiPlaylistSource::append_event_unlocked_beats(const Evoral::Event<Evoral::MusicalTime>& /*ev*/)
+MidiPlaylistSource::append_event_beats(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<Temporal::Beats>& /*ev*/)
{
- fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_unlocked_beats() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_beats() called - should be impossible") << endmsg;
+ abort(); /*NOTREACHED*/
}
void
-MidiPlaylistSource::append_event_unlocked_frames(const Evoral::Event<framepos_t>& /* ev */, framepos_t /*source_start*/)
+MidiPlaylistSource::append_event_samples(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<samplepos_t>& /* ev */, samplepos_t /*source_start*/)
{
- fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_unlocked_frames() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_samples() called - should be impossible") << endmsg;
+ abort(); /*NOTREACHED*/
}
void
-MidiPlaylistSource::load_model (bool, bool)
+MidiPlaylistSource::load_model (const Glib::Threads::Mutex::Lock&, bool)
{
/* nothing to do */
}
void
-MidiPlaylistSource::destroy_model ()
+MidiPlaylistSource::destroy_model (const Glib::Threads::Mutex::Lock&)
{
/* nothing to do */
}
void
-MidiPlaylistSource::flush_midi ()
+MidiPlaylistSource::flush_midi (const Lock& lock)
{
}