# HG changeset patch # User Chris Cannam # Date 1568975087 -3600 # Node ID a72921e2194ff6739f1828bc3f1a2fcc1e09f140 # Parent 894c2a7804445385df6f434cd48c12d213f8ecfe Ensure CSV-style export from time-freq box model is in the expected format diff -r 894c2a780444 -r a72921e2194f data/model/TimeFrequencyBoxModel.h --- a/data/model/TimeFrequencyBoxModel.h Thu Sep 19 15:17:56 2019 +0100 +++ b/data/model/TimeFrequencyBoxModel.h Fri Sep 20 11:24:47 2019 +0100 @@ -208,7 +208,7 @@ } int getColumnCount() const override { - return 5; + return 6; } bool isColumnTimeValue(int column) const override { @@ -234,8 +234,8 @@ case 0: return tr("Time"); case 1: return tr("Frame"); case 2: return tr("Duration"); - case 3: return tr("Minimum Frequency"); - case 4: return tr("Maximum Frequency"); + case 3: return tr("Min Freq"); + case 4: return tr("Max Freq"); case 5: return tr("Label"); default: return tr("Unknown"); } @@ -323,14 +323,34 @@ DataExportOptions options, sv_frame_t startFrame, sv_frame_t duration) const override { - return m_events.toDelimitedDataString - (delimiter, - options, - startFrame, - duration, - m_sampleRate, - m_resolution, - Event().withValue(0.f).withDuration(m_resolution)); + + // We need a custom format here + + EventVector ee = m_events.getEventsSpanning(startFrame, duration); + + QString s; + + for (auto e: ee) { + + QStringList list; + + list << RealTime::frame2RealTime + (e.getFrame(), getSampleRate()) + .toString().c_str() + << RealTime::frame2RealTime + (e.getFrame() + e.getDuration(), getSampleRate()) + .toString().c_str() + << QString("%1").arg(e.getValue()) + << QString("%1").arg(e.getValue() + fabsf(e.getLevel())); + + if (e.getLabel() != "") { + list << e.getLabel(); + } + + s += list.join(delimiter) + "\n"; + } + + return s; } protected: