annotate src/LiveInstruments.cpp @ 298:ebe5e0942bb8 livemode

More toward a possible live mode
author Chris Cannam
date Fri, 28 Nov 2014 10:18:22 +0000
parents
children a4216826f01c
rev   line source
Chris@298 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@298 2
Chris@298 3 /*
Chris@298 4 Silvet
Chris@298 5
Chris@298 6 A Vamp plugin for note transcription.
Chris@298 7 Centre for Digital Music, Queen Mary University of London.
Chris@298 8
Chris@298 9 This program is free software; you can redistribute it and/or
Chris@298 10 modify it under the terms of the GNU General Public License as
Chris@298 11 published by the Free Software Foundation; either version 2 of the
Chris@298 12 License, or (at your option) any later version. See the file
Chris@298 13 COPYING included with this distribution for more information.
Chris@298 14 */
Chris@298 15
Chris@298 16 #include "LiveInstruments.h"
Chris@298 17
Chris@298 18 #include "data/include/templates.h"
Chris@298 19
Chris@298 20 using namespace std;
Chris@298 21
Chris@298 22 InstrumentPack
Chris@298 23 LiveAdapter::adapt(const InstrumentPack &original)
Chris@298 24 {
Chris@298 25 vector<InstrumentPack::Templates> templates;
Chris@298 26
Chris@298 27 for (vector<InstrumentPack::Templates>::const_iterator i =
Chris@298 28 original.templates.begin();
Chris@298 29 i != original.templates.end(); ++i) {
Chris@298 30
Chris@298 31 InstrumentPack::Templates t;
Chris@298 32 t.lowestNote = i->lowestNote;
Chris@298 33 t.highestNote = i->highestNote;
Chris@298 34 t.data.resize(i->data.size());
Chris@298 35
Chris@298 36 for (int j = 0; j < int(i->data.size()); ++j) {
Chris@298 37 t.data[j].resize(SILVET_TEMPLATE_HEIGHT/5);
Chris@298 38 for (int k = 0; k < SILVET_TEMPLATE_HEIGHT/5; ++k) {
Chris@298 39 t.data[j][k] = i->data[j][k * 5 + 2 - SILVET_TEMPLATE_MAX_SHIFT];
Chris@298 40 }
Chris@298 41 }
Chris@298 42 templates.push_back(t);
Chris@298 43 }
Chris@298 44
Chris@298 45 InstrumentPack live(original.lowestNote,
Chris@298 46 original.highestNote,
Chris@298 47 original.name,
Chris@298 48 templates);
Chris@298 49
Chris@298 50 live.templateHeight = SILVET_TEMPLATE_HEIGHT/5;
Chris@298 51 live.templateMaxShift = 0;
Chris@298 52 live.templateSize = live.templateHeight;
Chris@298 53
Chris@298 54 live.maxPolyphony = original.maxPolyphony;
Chris@298 55 live.pitchSparsity = original.pitchSparsity;
Chris@298 56 live.sourceSparsity = original.sourceSparsity;
Chris@298 57 live.levelThreshold = original.levelThreshold;
Chris@298 58
Chris@298 59 return live;
Chris@298 60 }
Chris@298 61
Chris@298 62 vector<InstrumentPack>
Chris@298 63 LiveAdapter::adaptAll(const vector<InstrumentPack> &v)
Chris@298 64 {
Chris@298 65 vector<InstrumentPack> out;
Chris@298 66 for (int i = 0; i < (int)v.size(); ++i) {
Chris@298 67 InstrumentPack p(LiveAdapter::adapt(v[i]));
Chris@298 68 out.push_back(p);
Chris@298 69 }
Chris@298 70 return out;
Chris@298 71 }