Chris@137: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@137: Chris@137: /* Chris@137: Sonic Annotator Chris@137: A utility for batch feature extraction from audio files. Chris@137: Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London. Chris@137: Copyright 2007-2014 QMUL. Chris@137: Chris@137: This program is free software; you can redistribute it and/or Chris@137: modify it under the terms of the GNU General Public License as Chris@137: published by the Free Software Foundation; either version 2 of the Chris@137: License, or (at your option) any later version. See the file Chris@137: COPYING included with this distribution for more information. Chris@137: */ Chris@137: Chris@137: #include "MIDIFeatureWriter.h" Chris@137: Chris@137: using namespace std; Chris@137: using Vamp::Plugin; Chris@137: using Vamp::PluginBase; Chris@137: Chris@137: #include "base/Exceptions.h" Chris@137: #include "data/fileio/MIDIFileWriter.h" Chris@137: Chris@137: MIDIFeatureWriter::MIDIFeatureWriter() : Chris@137: FileFeatureWriter(SupportOneFilePerTrackTransform | Chris@137: SupportOneFilePerTrack | Chris@137: SupportOneFileTotal, Chris@137: "mid") Chris@137: { Chris@137: } Chris@137: Chris@137: MIDIFeatureWriter::~MIDIFeatureWriter() Chris@137: { Chris@137: } Chris@137: Chris@137: MIDIFeatureWriter::ParameterList Chris@137: MIDIFeatureWriter::getSupportedParameters() const Chris@137: { Chris@137: ParameterList pl = FileFeatureWriter::getSupportedParameters(); Chris@137: return pl; Chris@137: } Chris@137: Chris@137: void Chris@137: MIDIFeatureWriter::setParameters(map ¶ms) Chris@137: { Chris@137: FileFeatureWriter::setParameters(params); Chris@137: } Chris@137: Chris@137: void Chris@137: MIDIFeatureWriter::setTrackMetadata(QString, TrackMetadata) Chris@137: { Chris@137: cerr << "MIDIFeatureWriter::setTrackMetadata: not supported (yet?)" << endl; Chris@137: } Chris@137: Chris@137: void Chris@137: MIDIFeatureWriter::write(QString trackId, Chris@137: const Transform &transform, Chris@137: const Plugin::OutputDescriptor& output, Chris@137: const Plugin::FeatureList& features, Chris@137: std::string summaryType) Chris@137: { Chris@137: QString filename = getOutputFilename(trackId, transform.getIdentifier()); Chris@137: if (filename == "") { Chris@137: throw FailedToOpenOutputStream(trackId, transform.getIdentifier()); Chris@137: } Chris@137: Chris@137: //!!! implement! Chris@137: } Chris@137: Chris@137: void Chris@137: MIDIFeatureWriter::finish() Chris@137: { Chris@137: for (NoteMap::const_iterator i = m_notes.begin(); i != m_notes.end(); ++i) { Chris@137: Chris@137: QString filename = i->first; Chris@137: NoteList notes = i->second; Chris@137: float rate = m_rates[filename]; Chris@137: Chris@137: TrivialNoteExportable exportable(notes); Chris@137: Chris@137: { Chris@137: MIDIFileWriter writer(filename, &exportable, rate); Chris@137: if (!writer.isOK()) { Chris@137: cerr << "ERROR: Failed to create MIDI writer: " Chris@137: << writer.getError() << endl; Chris@137: throw FileOperationFailed(filename, "create MIDI writer"); Chris@137: } Chris@137: writer.write(); Chris@137: } Chris@137: } Chris@137: } Chris@137: