Mercurial > hg > svcore
diff data/model/FlexiNoteModel.h @ 1069:32ab6c48efaa
Merge from branch tonioni
author | Chris Cannam |
---|---|
date | Mon, 20 Apr 2015 09:11:34 +0100 |
parents | 57633d605547 |
children | 48e9f538e6e9 |
line wrap: on
line diff
--- a/data/model/FlexiNoteModel.h Mon Mar 02 17:21:34 2015 +0000 +++ b/data/model/FlexiNoteModel.h Mon Apr 20 09:11:34 2015 +0100 @@ -42,15 +42,15 @@ struct FlexiNote { public: - FlexiNote(long _frame) : frame(_frame), value(0.0f), duration(0), level(1.f) { } - FlexiNote(long _frame, float _value, int _duration, float _level, QString _label) : + FlexiNote(sv_frame_t _frame) : frame(_frame), value(0.0f), duration(0), level(1.f) { } + FlexiNote(sv_frame_t _frame, float _value, sv_frame_t _duration, float _level, QString _label) : frame(_frame), value(_value), duration(_duration), level(_level), label(_label) { } int getDimensions() const { return 3; } - long frame; + sv_frame_t frame; float value; - int duration; + sv_frame_t duration; float level; QString label; @@ -66,13 +66,15 @@ .arg(XmlExportable::encodeEntities(label)).arg(extraAttributes); } - QString toDelimitedDataString(QString delimiter, int sampleRate) const + QString toDelimitedDataString(QString delimiter, DataExportOptions opts, sv_samplerate_t sampleRate) const { QStringList list; list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); list << QString("%1").arg(value); list << RealTime::frame2RealTime(duration, sampleRate).toString().c_str(); - list << QString("%1").arg(level); + if (!(opts & DataExportOmitLevels)) { + list << QString("%1").arg(level); + } if (label != "") list << label; return list.join(delimiter); } @@ -102,15 +104,15 @@ Q_OBJECT public: - FlexiNoteModel(int sampleRate, int resolution, - bool notifyOnAdd = true) : + FlexiNoteModel(sv_samplerate_t sampleRate, int resolution, + bool notifyOnAdd = true) : IntervalModel<FlexiNote>(sampleRate, resolution, notifyOnAdd), m_valueQuantization(0) { PlayParameterRepository::getInstance()->addPlayable(this); } - FlexiNoteModel(int sampleRate, int resolution, + FlexiNoteModel(sv_samplerate_t sampleRate, int resolution, float valueMinimum, float valueMaximum, bool notifyOnAdd = true) : IntervalModel<FlexiNote>(sampleRate, resolution, @@ -208,7 +210,7 @@ command->deletePoint(point); switch (column) { - case 4: point.level = value.toDouble(); break; + case 4: point.level = float(value.toDouble()); break; case 5: point.label = value.toString(); break; } @@ -231,20 +233,20 @@ return getNotesWithin(getStartFrame(), getEndFrame()); } - NoteList getNotesWithin(int startFrame, int endFrame) const + NoteList getNotesWithin(sv_frame_t startFrame, sv_frame_t endFrame) const { PointList points = getPoints(startFrame, endFrame); NoteList notes; for (PointList::iterator pli = points.begin(); pli != points.end(); ++pli) { - int duration = pli->duration; + sv_frame_t duration = pli->duration; if (duration == 0 || duration == 1) { - duration = getSampleRate() / 20; + duration = sv_frame_t(getSampleRate() / 20); } - int pitch = lrintf(pli->value); + int pitch = int(lrintf(pli->value)); int velocity = 100; if (pli->level > 0.f && pli->level <= 1.f) { - velocity = lrintf(pli->level * 127); + velocity = int(lrintf(pli->level * 127)); } NoteData note(pli->frame, duration, pitch, velocity);