annotate data/model/NoteData.h @ 985:f073d924a7c3

Fix #1058 clicking row in Layer Edit dialog when colour 3d plot layer active jumps to wrong frame (was using sample rate where resolution intended)
author Chris Cannam
date Tue, 16 Sep 2014 10:29:19 +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