summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp')
-rw-r--r--attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp250
1 files changed, 0 insertions, 250 deletions
diff --git a/attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp b/attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp
deleted file mode 100644
index 7a9b6ed2..00000000
--- a/attic/muse_qt4_evolution/midiplugins/drumglue/drumglue.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-//=========================================================
-// MusE
-// Linux Music Editor
-//
-// drumglue - filter
-//
-// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se)
-// (C) Copyright 2005- Werner Schweer (ws@seh.de)
-// Copyright: See COPYING file that comes with this distribution
-//=========================================================
-
-#include "drumgluegui.h"
-#include "drumglue.h"
-#include "midi.h"
-#include "midievent.h"
-
-
-
-//---------------------------------------------------------
-// DrumInstrument - get next index
-// - next output instrument to use
-//---------------------------------------------------------
-int DrumInstrument::getNextIndex(int /*velocity*/)
-{
- // for now we simply do a round robin
- //
- // future improvements are to keep track of
- // the time since the last hit and the
- // weight set for each instrument.
- // the incoming velocity should be checked that it's in range
- if (outputInstruments.size() == 0)
- return -1;
-
- if (lastOutputIndex+1 > outputInstruments.size()-1)
- return 0;
- else
- return lastOutputIndex+1;
-}
-
-//---------------------------------------------------------
-// DrumInstrument - get velocity
-// - velocity value to use
-//---------------------------------------------------------
-int DrumInstrument::getVelocity(int /*index*/, int velocity)
-{
- // for now we just return the same velocity
- // future improvements are to allow for some
- return velocity;
-}
-
-
-//---------------------------------------------------------
-// DrumGlue - constructor
-//---------------------------------------------------------
-DrumGlue::DrumGlue(const char* name, const MempiHost* h)
- : Mempi(name, h)
- {
- gui = 0;
- saveData = NULL;
- }
-
-//---------------------------------------------------------
-// DrumGlue - destructor
-//---------------------------------------------------------
-DrumGlue::~DrumGlue()
- {
- if (gui)
- delete gui;
- if (saveData)
- delete saveData;
- }
-
-//---------------------------------------------------------
-// init
-//---------------------------------------------------------
-
-bool DrumGlue::init()
- {
- gui = new DrumGlueGui(this, 0);
- gui->setWindowTitle("MusE: "+QString(name()));
- gui->show();
- return false;
- }
-
-//---------------------------------------------------------
-// getGeometry
-//---------------------------------------------------------
-
-void DrumGlue::getGeometry(int* x, int* y, int* w, int* h) const
- {
- QPoint pos(gui->pos());
- QSize size(gui->size());
- *x = pos.x();
- *y = pos.y();
- *w = size.width();
- *h = size.height();
- }
-
-//---------------------------------------------------------
-// setGeometry
-//---------------------------------------------------------
-
-void DrumGlue::setGeometry(int x, int y, int w, int h)
- {
- gui->resize(QSize(w, h));
- gui->move(QPoint(x, y));
- }
-
-//---------------------------------------------------------
-// process
-//---------------------------------------------------------
-
-void DrumGlue::process(unsigned , unsigned , MidiEventList* il, MidiEventList* ol)
- {
-
- for (iMidiEvent i = il->begin(); i != il->end(); ++i) {
- MidiEvent temp=*i;
- if (temp.isNote() && !temp.isNoteOff())
- {
- foreach(DrumInstrument *di, drumInstruments) {
- if (temp.dataA() == di->inKey) {
- int inVelocity = temp.dataB();
- int instrumentIdx = di->getNextIndex(inVelocity);
- if (instrumentIdx==-1) {
- // no instrument defined, yet, skip it
- break;
- }
- int outKey = di->outputInstruments[instrumentIdx]->outKey;
- int outVelocity= di->getVelocity(instrumentIdx, inVelocity);
- printf("inKey=%d outKey =%d outVelocity=%d instrumentIdx=%d\n", di->inKey, outKey, outVelocity, instrumentIdx);
- temp.setA(outKey);
- temp.setB(outVelocity);
-
- ol->insert(temp); // note on
-
- temp.setB(0);
- ol->insert(temp); // note off
-
- di->lastOutputIndex = instrumentIdx;
- di->outputTime = temp.time();
- break;
- }
- }
- }
- if (temp.isNoteOff()) ; // we just throw it away, we will insert noteoffs for each note on
- }
- }
-
-//
-// getInitData - return configuration to MusE
-//
-void DrumGlue::getInitData(int* n, const unsigned char** p) const
- {
- QString saveStr;
-
- foreach (DrumInstrument *di, drumInstruments) {
- QString drumline = "DRUM " +di->name + " " + QString("%1").arg(di->inKey) + "\n";
- saveStr.append(drumline);
- foreach (DrumOutputInstrument *doi, di->outputInstruments) {
- QString outputline = "OUTPUT " +
- QString("%1").arg(doi->outKey) + " " +
- QString("%1").arg(doi->lowestVelocity) + " " +
- QString("%1").arg(doi->highestVelocity) + " " +
- QString("%1").arg(doi->prefer) + " " +
- QString("%1").arg(doi->preferFast) + "\n";
- saveStr.append(outputline);
-
- }
- }
-
- *n = saveStr.length();
-
- if (saveData)
- delete saveData;
-
-
- saveData = new unsigned char[saveStr.length()];
-
- strncpy((char*)saveData, saveStr.toLatin1().data(), saveStr.length());
- saveData[saveStr.length()]=0;
- printf("getInitData -\n%s\n",saveData);
-
- *p = saveData;
-
- }
-
-void DrumGlue::setInitData(int n, const unsigned char* p)
- {
- if (saveData)
- delete saveData;
- saveData = new unsigned char[n+1];
-
- strncpy((char*)saveData,(char*)p,n);
- saveData[n]=0;
-
- QString loadStr = (char*)saveData;
- printf("setInitData -\n%s\n",saveData);
-
- QStringList loadList = loadStr.split("\n");
-
- DrumInstrument *currentInstrument=NULL;
- foreach (QString line, loadList) {
- QStringList splitLine = line.split(" ");
- if (splitLine[0] == "DRUM") {
- if (currentInstrument)
- drumInstruments.append(currentInstrument);
-
- currentInstrument = new DrumInstrument();
- currentInstrument->name = splitLine[1];
- currentInstrument->inKey = splitLine[2].toInt();
- }
- if (splitLine[0] == "OUTPUT") {
- DrumOutputInstrument *doi = new DrumOutputInstrument;
- doi->outKey = splitLine[1].toInt();
- doi->lowestVelocity = splitLine[2].toInt();
- doi->highestVelocity = splitLine[3].toInt();
- doi->prefer = splitLine[4].toInt();
- doi->preferFast = splitLine[5].toInt();
- currentInstrument->outputInstruments.append(doi);
- }
- }
- if (currentInstrument)
- drumInstruments.append(currentInstrument);
-
- if (gui)
- gui->init();
- }
-
-//---------------------------------------------------------
-// inst
-//---------------------------------------------------------
-
-static Mempi* instantiate(const char* name, const MempiHost* h)
- {
- return new DrumGlue(name, h);
- }
-
-extern "C" {
- static MEMPI descriptor = {
- "DrumGlue",
- "Drum instrument mux filter",
- "0.1", // filter version string
- MEMPI_FILTER, // plugin type
- MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION,
- instantiate
- };
-
- const MEMPI* mempi_descriptor() { return &descriptor; }
- }
-