From e40fc849149dd97c248866a4a1d026dda5e57b62 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Mon, 7 Mar 2011 19:01:11 +0000 Subject: clean3 --- .../midiplugins/filter/filter.cpp | 167 +++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 attic/muse_qt4_evolution/midiplugins/filter/filter.cpp (limited to 'attic/muse_qt4_evolution/midiplugins/filter/filter.cpp') diff --git a/attic/muse_qt4_evolution/midiplugins/filter/filter.cpp b/attic/muse_qt4_evolution/midiplugins/filter/filter.cpp new file mode 100644 index 00000000..ac99449e --- /dev/null +++ b/attic/muse_qt4_evolution/midiplugins/filter/filter.cpp @@ -0,0 +1,167 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: filter.cpp,v 1.10 2005/11/06 17:49:34 wschweer Exp $ +// +// filter - simple midi filter +// +// (C) Copyright 2005 Werner Schweer (ws@seh.de) +//========================================================= + +#include "filtergui.h" +#include "filter.h" +#include "midi.h" + +//--------------------------------------------------------- +// Filter +//--------------------------------------------------------- + +Filter::Filter(const char* name, const MempiHost* h) + : Mempi(name, h) + { + data.type = 0; // allow any events + for (int i = 0; i < 4; ++i) + data.ctrl[i] = -1; + gui = 0; + } + +//--------------------------------------------------------- +// Filter +//--------------------------------------------------------- + +Filter::~Filter() + { + if (gui) + delete gui; + } + +//--------------------------------------------------------- +// init +//--------------------------------------------------------- + +bool Filter::init() + { + gui = new FilterGui(this, 0); + gui->setWindowTitle("MusE: "+QString(name())); + gui->show(); + return false; + } + +//--------------------------------------------------------- +// getGeometry +//--------------------------------------------------------- + +void Filter::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 Filter::setGeometry(int x, int y, int w, int h) + { + gui->resize(QSize(w, h)); + gui->move(QPoint(x, y)); + } + +//--------------------------------------------------------- +// process +//--------------------------------------------------------- + +void Filter::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol) + { + for (iMidiEvent i = il->begin(); i != il->end(); ++i) { + if (!filterEvent(*i)) + ol->insert(*i); + } + } + +//--------------------------------------------------------- +// filterEvent +// return true if event filtered +//--------------------------------------------------------- + +bool Filter::filterEvent(const MidiEvent& event) + { + switch(event.type()) { + case ME_NOTEON: + case ME_NOTEOFF: + if (data.type & MIDI_FILTER_NOTEON) + return true; + break; + case ME_POLYAFTER: + if (data.type & MIDI_FILTER_POLYP) + return true; + break; + case ME_CONTROLLER: + if (data.type & MIDI_FILTER_CTRL) + return true; + for (int i = 0; i < 4; ++i) { + if (data.ctrl[i] == event.dataA()) + return true; + } + break; + case ME_PROGRAM: + if (data.type & MIDI_FILTER_PROGRAM) + return true; + break; + case ME_AFTERTOUCH: + if (data.type & MIDI_FILTER_AT) + return true; + break; + case ME_PITCHBEND: + if (data.type & MIDI_FILTER_PITCH) + return true; + break; + case ME_SYSEX: + if (data.type & MIDI_FILTER_SYSEX) + return true; + break; + default: + break; + } + return false; + } + +void Filter::getInitData(int* n, const unsigned char** p) const + { + *n = sizeof(data); + *p = (unsigned char*)&data; + } + +void Filter::setInitData(int n, const unsigned char* p) + { + memcpy((void*)&data, p, n); + if (gui) + gui->init(); + } + +//--------------------------------------------------------- +// inst +//--------------------------------------------------------- + +static Mempi* instantiate(const char* name, const MempiHost* h) + { + return new Filter(name, h); + } + +extern "C" { + static MEMPI descriptor = { + "Filter", + "MusE Simple Midi Filter", + "0.1", // filter version string + MEMPI_FILTER, // plugin type + MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, + instantiate + }; + + const MEMPI* mempi_descriptor() { return &descriptor; } + } + -- cgit v1.2.3