annotate data/model/NoteData.h @ 994:8c9c425b4958

Support plugin version in RDF transforms, and bail out in Sonic Annotator if it doesn't match
author Chris Cannam
date Fri, 10 Oct 2014 15:24:28 +0100
parents 59e7fe1b1003
children 0d3d1ec7dfde
rev   line source
Chris@852 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@852 2
Chris@852 3 /*
Chris@852 4 Sonic Visualiser
Chris@852 5 An audio file viewer and annotation editor.
Chris@852 6 Centre for Digital Music, Queen Mary, University of London.
Chris@852 7
Chris@852 8 This program is free software; you can redistribute it and/or
Chris@852 9 modify it under the terms of the GNU General Public License as
Chris@852 10 published by the Free Software Foundation; either version 2 of the
Chris@852 11 License, or (at your option) any later version. See the file
Chris@852 12 COPYING included with this distribution for more information.
Chris@852 13 */
Chris@852 14
Chris@852 15 #ifndef NOTE_DATA_H
Chris@852 16 #define NOTE_DATA_H
Chris@852 17
Chris@852 18 #include <vector>
Chris@852 19
Chris@865 20 #include "base/Pitch.h"
Chris@865 21
Chris@852 22 struct NoteData
Chris@852 23 {
Chris@929 24 NoteData(int _start, int _dur, int _mp, int _vel) :
Chris@852 25 start(_start), duration(_dur), midiPitch(_mp), frequency(0),
Chris@852 26 isMidiPitchQuantized(true), velocity(_vel) { };
Chris@852 27
Chris@929 28 int start; // audio sample frame
Chris@929 29 int duration; // in audio sample frames
Chris@852 30 int midiPitch; // 0-127
Chris@865 31 float frequency; // Hz, to be used if isMidiPitchQuantized false
Chris@852 32 bool isMidiPitchQuantized;
Chris@852 33 int velocity; // MIDI-style 0-127
Chris@865 34
Chris@865 35 float getFrequency() const {
Chris@865 36 if (isMidiPitchQuantized) {
Chris@865 37 return Pitch::getFrequencyForPitch(midiPitch);
Chris@865 38 } else {
Chris@865 39 return frequency;
Chris@865 40 }
Chris@865 41 }
Chris@852 42 };
Chris@852 43
Chris@852 44 typedef std::vector<NoteData> NoteList;
Chris@852 45
Chris@852 46 class NoteExportable
Chris@852 47 {
Chris@852 48 public:
Chris@852 49 virtual NoteList getNotes() const = 0;
Chris@929 50 virtual NoteList getNotesWithin(int startFrame, int endFrame) const = 0;
Chris@852 51 };
Chris@852 52
Chris@852 53 #endif