summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp')
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp209
1 files changed, 0 insertions, 209 deletions
diff --git a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp b/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp
deleted file mode 100644
index 7ea4ba3e..00000000
--- a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-//=============================================================================
-// MusE
-// Linux Music Editor
-// $Id:$
-//
-// Copyright (C) 2006 by Werner Schweer
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//=============================================================================
-
-#include "splitlayergui.h"
-#include "splitlayer.h"
-#include "midi.h"
-#include "midievent.h"
-
-//---------------------------------------------------------
-// SplitLayer
-//---------------------------------------------------------
-
-SplitLayer::SplitLayer(const char* name, const MempiHost* h)
- : Mempi(name, h)
- {
- gui = 0;
- }
-
-//---------------------------------------------------------
-// SplitLayer
-//---------------------------------------------------------
-
-SplitLayer::~SplitLayer()
- {
- if (gui)
- delete gui;
- }
-
-//---------------------------------------------------------
-// init
-//---------------------------------------------------------
-
-bool SplitLayer::init()
- {
- data.startVelo[0] = 0;
- data.endVelo[0] = 128;
- data.startPitch[0] = 0;
- data.endPitch[0] = 128;
- data.pitchOffset[0] = 0;
- data.veloOffset[0] = 0;
- for (int i = 1; i < MIDI_CHANNELS; ++i) {
- data.startVelo[i] = 0;
- data.endVelo[i] = 0;
- data.startPitch[i] = 0;
- data.endPitch[i] = 0;
- data.pitchOffset[i] = 0;
- data.veloOffset[i] = 0;
- }
- memset(notes, 0, 128 * sizeof(int));
- learnMode = false;
- gui = new SplitLayerGui(this, 0);
- gui->hide();
- gui->setWindowTitle(QString(name()));
- gui->init();
- return false;
- }
-
-//---------------------------------------------------------
-// getGeometry
-//---------------------------------------------------------
-
-void SplitLayer::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 SplitLayer::setGeometry(int x, int y, int w, int h)
- {
- gui->resize(QSize(w, h));
- gui->move(QPoint(x, y));
- }
-
-//---------------------------------------------------------
-// process
-//---------------------------------------------------------
-
-void SplitLayer::process(unsigned, unsigned, MidiEventList* il, MidiEventList* ol)
- {
- for (iMidiEvent i = il->begin(); i != il->end(); ++i) {
- if (i->type() != ME_NOTEON && i->type() != ME_NOTEOFF) {
- ol->insert(*i);
- continue;
- }
- int pitch = i->dataA();
- int velo = i->dataB();
- if (learnMode) {
- if (learnStartPitch)
- data.startPitch[learnChannel] = pitch;
- else
- data.endPitch[learnChannel] = pitch;
- learnMode = false;
- gui->sendResetLearnMode();
- return;
- }
- if (i->type() == ME_NOTEON && velo) {
- for (int ch = 0; ch < MIDI_CHANNELS; ++ch) {
- MidiEvent event(*i);
- if (pitch >= data.startPitch[ch]
- && pitch <= data.endPitch[ch]
- && velo >= data.startVelo[ch]
- && velo <= data.endVelo[ch]) {
- notes[pitch] |= (1 << ch);
- event.setChannel(ch);
- int p = pitch;
- int v = velo;
- p += data.pitchOffset[ch];
- if (p > 127)
- p = 127;
- else if (p < 0)
- p = 0;
- v += data.veloOffset[ch];
- if (v > 127)
- v = 127;
- else if (v < 0)
- v = 0;
- event.setA(p);
- event.setB(v);
- ol->insert(event);
- }
- }
- }
- else {
- for (int ch = 0; ch < MIDI_CHANNELS; ++ch) {
- if (notes[pitch] & (1 << ch)) {
- MidiEvent event(*i);
- event.setChannel(ch);
- int p = pitch + data.pitchOffset[ch];
- if (p < 0)
- p = 0;
- else if (p > 127)
- p = 127;
- event.setA(p);
- ol->insert(event);
- }
- }
- notes[pitch] = 0;
- }
- }
- }
-
-//---------------------------------------------------------
-// getInitData
-//---------------------------------------------------------
-
-void SplitLayer::getInitData(int* n, const unsigned char** p) const
- {
- *n = sizeof(data);
- *p = (unsigned char*)&data;
- }
-
-//---------------------------------------------------------
-// setInitData
-//---------------------------------------------------------
-
-void SplitLayer::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 SplitLayer(name, h);
- }
-
-extern "C" {
- static MEMPI descriptor = {
- "SplitLayer",
- "MusE Midi Splits and Layers",
- "0.1", // version string
- MEMPI_FILTER,
- MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION,
- instantiate
- };
-
- const MEMPI* mempi_descriptor() { return &descriptor; }
- }
-