# HG changeset patch # User Chris Cannam # Date 1193046335 0 # Node ID 7a4bd2c8585c1655c21b0b3683f2ac39764aead5 # Parent c324d410b096d83cb1f399b0cfbf0699c16aaadb * Some export fixes, and avoid clipping on resampling on import diff -r c324d410b096 -r 7a4bd2c8585c base/XmlExportable.cpp --- a/base/XmlExportable.cpp Thu Oct 18 16:20:26 2007 +0000 +++ b/base/XmlExportable.cpp Mon Oct 22 09:45:35 2007 +0000 @@ -19,10 +19,14 @@ #include #include +#include + QString XmlExportable::toXmlString(QString indent, QString extraAttributes) const { + std::cerr << "XmlExportable::toXmlString" << std::endl; + QString s; { diff -r c324d410b096 -r 7a4bd2c8585c data/fileio/CodedAudioFileReader.cpp --- a/data/fileio/CodedAudioFileReader.cpp Thu Oct 18 16:20:26 2007 +0000 +++ b/data/fileio/CodedAudioFileReader.cpp Mon Oct 22 09:45:35 2007 +0000 @@ -291,6 +291,13 @@ void CodedAudioFileReader::pushBuffer(float *buffer, size_t sz, bool final) { + for (size_t i = 0; i < sz; ++i) { + if (buffer[i] > 1.f) buffer[i] = 1.f; + } + for (size_t i = 0; i < sz; ++i) { + if (buffer[i] < -1.f) buffer[i] = -1.f; + } + if (m_resampler) { float ratio = float(m_sampleRate) / float(m_fileRate); @@ -303,14 +310,16 @@ ratio, final); - for (size_t i = 0; i < out; ++i) { - if (m_resampleBuffer[i] > 1.f) m_resampleBuffer[i] = 1.f; - if (m_resampleBuffer[i] < -1.f) m_resampleBuffer[i] = -1.f; - } - buffer = m_resampleBuffer; sz = out; } + + for (size_t i = 0; i < sz; ++i) { + if (buffer[i] > 1.f) buffer[i] = 1.f; + } + for (size_t i = 0; i < sz; ++i) { + if (buffer[i] < -1.f) buffer[i] = -1.f; + } } m_frameCount += sz; diff -r c324d410b096 -r 7a4bd2c8585c data/model/EditableDenseThreeDimensionalModel.cpp --- a/data/model/EditableDenseThreeDimensionalModel.cpp Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/EditableDenseThreeDimensionalModel.cpp Mon Oct 22 09:45:35 2007 +0000 @@ -270,6 +270,20 @@ } } +QString +EditableDenseThreeDimensionalModel::toDelimitedDataString(QString delimiter) const +{ + QString s; + for (size_t i = 0; i < m_data.size(); ++i) { + QStringList list; + for (size_t j = 0; j < m_data[i].size(); ++j) { + list << QString("%1").arg(m_data[i][j]); + } + s += list.join(delimiter) + "\n"; + } + return s; +} + void EditableDenseThreeDimensionalModel::toXml(QTextStream &out, QString indent, @@ -277,6 +291,8 @@ { // For historical reasons we read and write "resolution" as "windowSize" + std::cerr << "EditableDenseThreeDimensionalModel::toXml" << std::endl; + Model::toXml (out, indent, QString("type=\"dense\" dimensions=\"3\" windowSize=\"%1\" yBinCount=\"%2\" minimum=\"%3\" maximum=\"%4\" dataset=\"%5\" %6") @@ -307,6 +323,7 @@ out << m_data[i][j]; } out << QString("\n"); + out.flush(); } out << indent + "\n"; diff -r c324d410b096 -r 7a4bd2c8585c data/model/EditableDenseThreeDimensionalModel.h --- a/data/model/EditableDenseThreeDimensionalModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/EditableDenseThreeDimensionalModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -109,6 +109,8 @@ virtual void setCompletion(int completion); virtual int getCompletion() const { return m_completion; } + virtual QString toDelimitedDataString(QString delimiter) const; + virtual void toXml(QTextStream &out, QString indent = "", QString extraAttributes = "") const; diff -r c324d410b096 -r 7a4bd2c8585c data/model/ImageModel.h --- a/data/model/ImageModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/ImageModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -56,7 +56,7 @@ QStringList list; list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); list << image; - list << label; + if (label != "") list << label; return list.join(delimiter); } diff -r c324d410b096 -r 7a4bd2c8585c data/model/NoteModel.h --- a/data/model/NoteModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/NoteModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -58,7 +58,7 @@ list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); list << QString("%1").arg(value); list << QString("%1").arg(duration); - list << label; + if (label != "") list << label; return list.join(delimiter); } @@ -126,6 +126,9 @@ QString indent = "", QString extraAttributes = "") const { + std::cerr << "NoteModel::toXml: extraAttributes = \"" + << extraAttributes.toStdString() << std::endl; + SparseValueModel::toXml (out, indent, diff -r c324d410b096 -r 7a4bd2c8585c data/model/SparseModel.h --- a/data/model/SparseModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/SparseModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -548,6 +548,9 @@ QString indent, QString extraAttributes) const { + std::cerr << "SparseModel::toXml: extraAttributes = \"" + << extraAttributes.toStdString() << std::endl; + Model::toXml (out, indent, diff -r c324d410b096 -r 7a4bd2c8585c data/model/SparseOneDimensionalModel.h --- a/data/model/SparseOneDimensionalModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/SparseOneDimensionalModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -43,7 +43,7 @@ { QStringList list; list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); - list << label; + if (label != "") list << label; return list.join(delimiter); } diff -r c324d410b096 -r 7a4bd2c8585c data/model/SparseTimeValueModel.h --- a/data/model/SparseTimeValueModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/SparseTimeValueModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -51,7 +51,7 @@ QStringList list; list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); list << QString("%1").arg(value); - list << label; + if (label != "") list << label; return list.join(delimiter); } diff -r c324d410b096 -r 7a4bd2c8585c data/model/SparseValueModel.h --- a/data/model/SparseValueModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/SparseValueModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -110,11 +110,16 @@ } } - virtual void toXml(QTextStream &stream, QString indent = "", + virtual void toXml(QTextStream &stream, + QString indent = "", QString extraAttributes = "") const { + std::cerr << "SparseValueModel::toXml: extraAttributes = \"" + << extraAttributes.toStdString() << std::endl; + SparseModel::toXml - (stream, indent, + (stream, + indent, QString("%1 minimum=\"%2\" maximum=\"%3\" units=\"%4\"") .arg(extraAttributes).arg(m_valueMinimum).arg(m_valueMaximum) .arg(this->encodeEntities(m_units))); diff -r c324d410b096 -r 7a4bd2c8585c data/model/TextModel.h --- a/data/model/TextModel.h Thu Oct 18 16:20:26 2007 +0000 +++ b/data/model/TextModel.h Mon Oct 22 09:45:35 2007 +0000 @@ -52,7 +52,7 @@ QStringList list; list << RealTime::frame2RealTime(frame, sampleRate).toString().c_str(); list << QString("%1").arg(height); - list << label; + if (label != "") list << label; return list.join(delimiter); }