annotate plugin/transform/PluginTransformer.h @ 340:516819f2b97b

* Add Erase tool and mode * Add icons for Normalize buttons in property boxes, and for Show Peaks * Add support for velocity in notes -- not yet reflected in display or editable in the note edit dialog, but they are imported from MIDI, played, and exported * Begin work on making pastes align pasted times (subtler than I thought)
author Chris Cannam
date Fri, 23 Nov 2007 16:48:23 +0000
parents 1afaf98dbf11
children
rev   line source
Chris@320 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@320 2
Chris@320 3 /*
Chris@320 4 Sonic Visualiser
Chris@320 5 An audio file viewer and annotation editor.
Chris@320 6 Centre for Digital Music, Queen Mary, University of London.
Chris@320 7 This file copyright 2006 QMUL.
Chris@320 8
Chris@320 9 This program is free software; you can redistribute it and/or
Chris@320 10 modify it under the terms of the GNU General Public License as
Chris@320 11 published by the Free Software Foundation; either version 2 of the
Chris@320 12 License, or (at your option) any later version. See the file
Chris@320 13 COPYING included with this distribution for more information.
Chris@320 14 */
Chris@320 15
Chris@328 16 #ifndef _PLUGIN_TRANSFORMER_H_
Chris@328 17 #define _PLUGIN_TRANSFORMER_H_
Chris@320 18
Chris@331 19 #include "ModelTransformer.h"
Chris@320 20
Chris@320 21 #include "base/Window.h"
Chris@320 22
Chris@320 23 #include "vamp-sdk/Plugin.h"
Chris@320 24
Chris@328 25 //!!! should this just move back up to Transformer? It is after all used
Chris@320 26 //directly in all sorts of generic places, like Document
Chris@320 27
Chris@331 28 class PluginTransformer : public ModelTransformer
Chris@320 29 {
Chris@320 30 public:
Chris@320 31 class ExecutionContext {
Chris@320 32 public:
Chris@320 33 // Time domain:
Chris@320 34 ExecutionContext(int _c = -1, size_t _bs = 0);
Chris@320 35
Chris@320 36 // Frequency domain:
Chris@320 37 ExecutionContext(int _c, size_t _ss, size_t _bs, WindowType _wt);
Chris@320 38
Chris@320 39 // From plugin defaults:
Chris@320 40 ExecutionContext(int _c, const Vamp::PluginBase *_plugin);
Chris@320 41
Chris@320 42 bool operator==(const ExecutionContext &);
Chris@320 43
Chris@320 44 void makeConsistentWithPlugin(const Vamp::PluginBase *_plugin);
Chris@320 45
Chris@320 46 int channel;
Chris@320 47 Vamp::Plugin::InputDomain domain;
Chris@320 48 size_t stepSize;
Chris@320 49 size_t blockSize;
Chris@320 50 WindowType windowType;
Chris@320 51 size_t startFrame;
Chris@320 52 size_t duration; // 0 -> whole thing
Chris@320 53 float sampleRate; // 0 -> model's rate
Chris@333 54 bool updates;
Chris@320 55 };
Chris@320 56
Chris@320 57 protected:
Chris@328 58 PluginTransformer(Model *inputModel,
Chris@328 59 const ExecutionContext &context);
Chris@320 60
Chris@320 61 ExecutionContext m_context;
Chris@320 62 };
Chris@320 63
Chris@320 64 #endif