summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-02-15 19:44:27 +0000
committerDavid Robillard <d@drobilla.net>2009-02-15 19:44:27 +0000
commit166395c96b8a85d90b9785e629c739494494130f (patch)
treead688f25e8298519f63829e926a09d8739fbf5b0 /libs
parentecaf107ed3dd2bb3443a92fc3dd9cf566d3439e3 (diff)
Fix genererally retarded and broken note range / diskstream display / etc. related things (correctly display region contents on initial session load).
git-svn-id: svn://localhost/ardour2/branches/3.0@4583 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/midi_region.h3
-rw-r--r--libs/ardour/ardour/midi_source.h17
-rw-r--r--libs/ardour/audiofilesource.cc2
-rw-r--r--libs/ardour/midi_source.cc13
-rw-r--r--libs/ardour/smf_source.cc13
-rw-r--r--libs/evoral/evoral/SMF.hpp2
6 files changed, 26 insertions, 24 deletions
diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h
index 356e418fc1..00c71ab6ee 100644
--- a/libs/ardour/ardour/midi_region.h
+++ b/libs/ardour/ardour/midi_region.h
@@ -27,10 +27,11 @@
#include <pbd/undo.h>
#include <ardour/ardour.h>
-#include <ardour/region.h>
#include <ardour/gain.h>
#include <ardour/logcurve.h>
+#include <ardour/midi_model.h>
#include <ardour/midi_source.h>
+#include <ardour/region.h>
class XMLNode;
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index f5c660d9cb..9e01881186 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -21,24 +21,21 @@
#define __ardour_midi_source_h__
#include <string>
-
#include <time.h>
-
-#include <glibmm/thread.h>
-
#include <sigc++/signal.h>
-
-#include <ardour/source.h>
-#include <ardour/ardour.h>
-#include <ardour/buffer.h>
-#include <ardour/midi_model.h>
+#include <glibmm/thread.h>
#include <pbd/stateful.h>
#include <pbd/xml++.h>
+#include <evoral/Sequence.hpp>
+#include <ardour/ardour.h>
+#include <ardour/buffer.h>
+#include <ardour/source.h>
using std::string;
namespace ARDOUR {
+class MidiModel;
template<typename T> class MidiRingBuffer;
/** Source for MIDI data */
@@ -93,7 +90,7 @@ class MidiSource : public Source
virtual void load_model(bool lock=true, bool force_reload=false) = 0;
virtual void destroy_model() = 0;
- void set_note_mode(NoteMode mode) { if (_model) _model->set_note_mode(mode); }
+ void set_note_mode(NoteMode mode);
boost::shared_ptr<MidiModel> model() { return _model; }
void set_model(boost::shared_ptr<MidiModel> m) { _model = m; }
diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc
index 0064fd0b8e..9ac63c21fb 100644
--- a/libs/ardour/audiofilesource.cc
+++ b/libs/ardour/audiofilesource.cc
@@ -403,7 +403,7 @@ AudioFileSource::move_to_trash (const ustring& trash_dir_name)
if (::rename (_path.c_str(), newpath.c_str()) != 0) {
PBD::error << string_compose (
- _("cannot rename midi file source from %1 to %2 (%3)"),
+ _("cannot rename audio file source from %1 to %2 (%3)"),
_path, newpath, strerror (errno)) << endmsg;
return -1;
}
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc
index e5b1d813c5..70abb99e56 100644
--- a/libs/ardour/midi_source.cc
+++ b/libs/ardour/midi_source.cc
@@ -33,6 +33,7 @@
#include <pbd/basename.h>
#include <ardour/audioengine.h>
+#include <ardour/midi_model.h>
#include <ardour/midi_ring_buffer.h>
#include <ardour/midi_source.h>
#include <ardour/session.h>
@@ -51,9 +52,7 @@ sigc::signal<void,MidiSource *> MidiSource::MidiSourceCreated;
MidiSource::MidiSource (Session& s, string name)
: Source (s, name, DataType::MIDI)
, _timeline_position(0)
- , _model(new MidiModel(this))
, _writing (false)
- , _model_iter(*_model.get(), 0.0)
, _last_read_end(0)
{
_read_data_count = 0;
@@ -63,9 +62,7 @@ MidiSource::MidiSource (Session& s, string name)
MidiSource::MidiSource (Session& s, const XMLNode& node)
: Source (s, node)
, _timeline_position(0)
- , _model(new MidiModel(this))
, _writing (false)
- , _model_iter(*_model.get(), 0.0)
, _last_read_end(0)
{
_read_data_count = 0;
@@ -237,3 +234,11 @@ MidiSource::session_saved()
}
}
+void
+MidiSource::set_note_mode(NoteMode mode)
+{
+ if (_model) {
+ _model->set_note_mode(mode);
+ }
+}
+
diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc
index 7072cc8634..bcf4aecae0 100644
--- a/libs/ardour/smf_source.cc
+++ b/libs/ardour/smf_source.cc
@@ -35,12 +35,13 @@
#include <evoral/SMFReader.hpp>
#include <evoral/Control.hpp>
-#include <ardour/smf_source.h>
-#include <ardour/session.h>
-#include <ardour/midi_ring_buffer.h>
-#include <ardour/tempo.h>
#include <ardour/audioengine.h>
#include <ardour/event_type_map.h>
+#include <ardour/midi_model.h>
+#include <ardour/midi_ring_buffer.h>
+#include <ardour/session.h>
+#include <ardour/smf_source.h>
+#include <ardour/tempo.h>
#include "i18n.h"
@@ -167,7 +168,7 @@ SMFSource::read_unlocked (MidiRingBuffer<nframes_t>& dst, nframes_t start, nfram
_last_read_end = start + dur;
- while (!Evoral::SMF::eof()) {
+ while (true) {
ret = read_event(&ev_delta_t, &ev_size, &ev_buffer);
if (ret == -1) { // EOF
break;
@@ -623,7 +624,7 @@ SMFSource::load_model(bool lock, bool force_reload)
Glib::Mutex::Lock lm (_lock);
}
- if (_model && !force_reload && !_model->empty()) {
+ if (_model && !force_reload) {
return;
}
diff --git a/libs/evoral/evoral/SMF.hpp b/libs/evoral/evoral/SMF.hpp
index 73d56e5eaa..0be2a4b8a7 100644
--- a/libs/evoral/evoral/SMF.hpp
+++ b/libs/evoral/evoral/SMF.hpp
@@ -57,7 +57,6 @@ public:
uint16_t num_tracks() const;
uint16_t ppqn() const;
bool is_empty() const { return _empty; }
- bool eof() const { assert(false); return true; }
void begin_write();
void append_event_delta(uint32_t delta_t, uint32_t size, const uint8_t* buf);
@@ -69,7 +68,6 @@ private:
std::string _path;
smf_t* _smf;
smf_track_t* _smf_track;
-
bool _empty; ///< true iff file contains(non-empty) events
};