summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/midiplugins/splitlayer
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-09-15 12:14:55 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-09-15 12:14:55 +0000
commitb0546e5e7f7044019892543c6c82029db8d564a7 (patch)
tree1b96a6260900f3fbf3513fb48a5a72aa89052dc8 /attic/muse_qt4_evolution/midiplugins/splitlayer
parent583c73d1a07154d3d2672d65d8cce6495f490454 (diff)
moved attic to a branch of it's own
Diffstat (limited to 'attic/muse_qt4_evolution/midiplugins/splitlayer')
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/CMakeLists.txt45
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.cpp209
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.h69
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.cpp263
-rw-r--r--attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.h65
5 files changed, 0 insertions, 651 deletions
diff --git a/attic/muse_qt4_evolution/midiplugins/splitlayer/CMakeLists.txt b/attic/muse_qt4_evolution/midiplugins/splitlayer/CMakeLists.txt
deleted file mode 100644
index b6803d8b..00000000
--- a/attic/muse_qt4_evolution/midiplugins/splitlayer/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-#=============================================================================
-# MusE
-# Linux Music Editor
-# $Id:$
-#
-# Copyright (C) 2002-2006 by Werner Schweer and others
-#
-# 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.
-#=============================================================================
-
-QT4_WRAP_CPP ( splitlayer_mocs splitlayergui.h )
-## QT4_WRAP_UI ( splitlayer_uis splitlayergui.ui )
-
-add_library ( splitlayer SHARED
- splitlayer.cpp
- splitlayergui.cpp
- splitlayergui.h
- ${splitlayer_mocs}
- )
-target_link_libraries( splitlayer
- midiplugin
- ${QT_LIBRARIES}
- )
-
-# - tell cmake to name target splitlayer.so instead of
-# libsplitlayer.so
-# - use precompiled header files
-#
-set_target_properties ( splitlayer
- PROPERTIES PREFIX ""
- COMPILE_FLAGS "-include ${PROJECT_BINARY_DIR}/all-pic.h"
- )
-
-install_targets ( /${CMAKE_INSTALL_LIBDIR}/${MusE_INSTALL_NAME}/midiplugins/ splitlayer )
-
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; }
- }
-
diff --git a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.h b/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.h
deleted file mode 100644
index 7c213c01..00000000
--- a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayer.h
+++ /dev/null
@@ -1,69 +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.
-//=============================================================================
-
-#ifndef __METRONOM_H__
-#define __METRONOM_H__
-
-#include "../libmidiplugin/mempi.h"
-
-static const int MIDI_CHANNELS = 16;
-
-//---------------------------------------------------------
-// SplitLayer - splits and layers for midi input
-//---------------------------------------------------------
-
-class SplitLayer : public Mempi {
-
- protected:
- struct InitData {
- int startVelo[MIDI_CHANNELS];
- int endVelo[MIDI_CHANNELS];
- int startPitch[MIDI_CHANNELS];
- int endPitch[MIDI_CHANNELS];
- int pitchOffset[MIDI_CHANNELS];
- int veloOffset[MIDI_CHANNELS];
- } data;
- int notes[128]; // bitmapped note-on/channel values
- bool learnMode;
- int learnChannel;
- bool learnStartPitch;
-
- SplitLayerGui* gui;
- friend class SplitLayerGui;
-
- virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*);
-
- public:
- SplitLayer(const char* name, const MempiHost*);
- ~SplitLayer();
- virtual bool init();
-
- virtual bool hasGui() const { return true; }
- virtual bool guiVisible() const { return gui->isVisible(); }
- virtual void showGui(bool val) { gui->setShown(val); }
- virtual void getGeometry(int* x, int* y, int* w, int* h) const;
- virtual void setGeometry(int, int, int, int);
-
- virtual void getInitData(int*, const unsigned char**) const;
- virtual void setInitData(int, const unsigned char*);
- };
-
-#endif
-
diff --git a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.cpp b/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.cpp
deleted file mode 100644
index b5d2bdb4..00000000
--- a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.cpp
+++ /dev/null
@@ -1,263 +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 "gui.h"
-
-//---------------------------------------------------------
-// SplitLayerGui
-//---------------------------------------------------------
-
-SplitLayerGui::SplitLayerGui(SplitLayer* f, QWidget* parent)
- : QWidget(parent)
- {
- sl = f;
- QGridLayout* grid = new QGridLayout;
- grid->setSpacing(1);
- setLayout(grid);
- QSignalMapper* m1 = new QSignalMapper(this);
- QSignalMapper* m2 = new QSignalMapper(this);
- QSignalMapper* m3 = new QSignalMapper(this);
- QSignalMapper* m4 = new QSignalMapper(this);
- QSignalMapper* m5 = new QSignalMapper(this);
- QSignalMapper* m6 = new QSignalMapper(this);
- connect(m1, SIGNAL(mapped(int)), SLOT(startPitchChanged(int)));
- connect(m2, SIGNAL(mapped(int)), SLOT(endPitchChanged(int)));
- connect(m3, SIGNAL(mapped(int)), SLOT(pitchOffsetChanged(int)));
- connect(m4, SIGNAL(mapped(int)), SLOT(startVeloChanged(int)));
- connect(m5, SIGNAL(mapped(int)), SLOT(endVeloChanged(int)));
- connect(m6, SIGNAL(mapped(int)), SLOT(veloOffsetChanged(int)));
- for (int i = 0; i < MIDI_CHANNELS; ++i) {
- QLabel* l = new QLabel(QString("Ch %1").arg(i+1));
- grid->addWidget(l, i, 0);
-
- p1[i] = new Awl::PitchEdit(0);
- p1[i]->setToolTip(tr("start pitch for split"));
- connect(p1[i], SIGNAL(valueChanged(int)), m1, SLOT(map()));
- m1->setMapping(p1[i], i);
-
- a1[i] = new QAction(this);
- a1[i]->setToolTip(tr("enable learn mode for start pitch"));
- a1[i]->setCheckable(true);
- QIcon icon;
- icon.addFile(":/xpm/recordOn.svg", ICON_SIZE, QIcon::Normal, QIcon::On);
- icon.addFile(":/xpm/recordOff.svg", ICON_SIZE, QIcon::Normal, QIcon::Off);
- a1[i]->setIcon(icon);
- a1[i]->setData(i);
- QToolButton* rb1 = new QToolButton;
- rb1->setDefaultAction(a1[i]);
- connect(rb1, SIGNAL(triggered(QAction*)), SLOT(learnStartPitch(QAction*)));
-
- p2[i] = new Awl::PitchEdit(0);
- p2[i]->setToolTip(tr("end pitch for split"));
- connect(p2[i], SIGNAL(valueChanged(int)), m2, SLOT(map()));
- m2->setMapping(p2[i], i);
-
- a2[i] = new QAction(this);
- a2[i]->setToolTip(tr("enable learn mode for end pitch"));
- a2[i]->setCheckable(true);
- a2[i]->setIcon(icon);
- a2[i]->setData(i);
- QToolButton* rb2 = new QToolButton;
- rb2->setDefaultAction(a2[i]);
- connect(rb2, SIGNAL(triggered(QAction*)), SLOT(learnEndPitch(QAction*)));
-
- p3[i] = new Awl::PitchEdit(0);
- p3[i]->setToolTip(tr("pitch offset for split"));
- p3[i]->setDeltaMode(true);
- connect(p3[i], SIGNAL(valueChanged(int)), m3, SLOT(map()));
- m3->setMapping(p3[i], i);
-
- p4[i] = new QSpinBox;
- p4[i]->setRange(0, 127);
- p4[i]->setToolTip(tr("start velocity for split"));
- connect(p4[i], SIGNAL(valueChanged(int)), m4, SLOT(map()));
- m4->setMapping(p4[i], i);
-
- p5[i] = new QSpinBox;
- p5[i]->setRange(0, 127);
- p5[i]->setToolTip(tr("end velocity for split"));
- connect(p5[i], SIGNAL(valueChanged(int)), m5, SLOT(map()));
- m5->setMapping(p5[i], i);
-
- p6[i] = new QSpinBox;
- p6[i]->setRange(-127, 127);
- p6[i]->setToolTip(tr("velocity offset for split"));
- connect(p6[i], SIGNAL(valueChanged(int)), m6, SLOT(map()));
- m6->setMapping(p6[i], i);
-
- grid->addWidget(p1[i], i, 1);
- grid->addWidget(rb1, i, 2);
- grid->addWidget(p2[i], i, 3);
- grid->addWidget(rb2, i, 4);
- grid->addWidget(p3[i], i, 5);
- grid->addWidget(p4[i], i, 7);
- grid->addWidget(p5[i], i, 8);
- grid->addWidget(p6[i], i, 9);
- }
- QFrame* fr = new QFrame;
- fr->setFrameStyle(QFrame::VLine | QFrame::Raised);
- fr->setLineWidth(4);
- grid->addWidget(fr, 0, 6, MIDI_CHANNELS, 1);
-
- int filedes[2]; // 0 - reading 1 - writing
- if (pipe(filedes) == -1) {
- perror("SplitLayerGui:creating pipe");
- exit(-1);
- }
- fd2 = filedes[0];
- fd1 = filedes[1];
-
- QSocketNotifier* socket = new QSocketNotifier(fd2,
- QSocketNotifier::Read, this);
- connect(socket, SIGNAL(activated(int)), SLOT(resetLearnMode(int)));
- init();
- }
-
-//---------------------------------------------------------
-// init
-//---------------------------------------------------------
-
-void SplitLayerGui::init()
- {
- for (int i = 0; i < MIDI_CHANNELS; ++i) {
- p1[i]->setValue(sl->data.startPitch[i]);
- p2[i]->setValue(sl->data.endPitch[i]);
- p3[i]->setValue(sl->data.pitchOffset[i]);
- p4[i]->setValue(sl->data.startVelo[i]);
- p5[i]->setValue(sl->data.endVelo[i]);
- p6[i]->setValue(sl->data.veloOffset[i]);
- }
- }
-
-//---------------------------------------------------------
-// learnStartPitch
-//---------------------------------------------------------
-
-void SplitLayerGui::learnStartPitch(QAction* a)
- {
- sl->learnChannel = a->data().toInt();
- sl->learnStartPitch = true;
- sl->learnMode = true;
- for (int i = 0; i < MIDI_CHANNELS; ++i) {
- if (a != a1[i])
- a1[i]->setChecked(false);
- if (a != a2[i])
- a2[i]->setChecked(false);
- }
- }
-
-//---------------------------------------------------------
-// learnEndPitch
-//---------------------------------------------------------
-
-void SplitLayerGui::learnEndPitch(QAction* a)
- {
- sl->learnChannel = a->data().toInt();
- sl->learnStartPitch = false;
- sl->learnMode = true;
- for (int i = 0; i < MIDI_CHANNELS; ++i) {
- if (a != a1[i])
- a1[i]->setChecked(false);
- if (a != a2[i])
- a2[i]->setChecked(false);
- }
- }
-
-//---------------------------------------------------------
-// startPitchChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::startPitchChanged(int n)
- {
- sl->data.startPitch[n] = p1[n]->value();
- }
-
-//---------------------------------------------------------
-// endPitchChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::endPitchChanged(int n)
- {
- sl->data.endPitch[n] = p2[n]->value();
- }
-
-//---------------------------------------------------------
-// pitchOffsetChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::pitchOffsetChanged(int n)
- {
- sl->data.pitchOffset[n] = p3[n]->value();
- }
-
-//---------------------------------------------------------
-// startVeloChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::startVeloChanged(int n)
- {
- sl->data.startVelo[n] = p4[n]->value();
- }
-
-//---------------------------------------------------------
-// endVeloChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::endVeloChanged(int n)
- {
- sl->data.endVelo[n] = p5[n]->value();
- }
-
-//---------------------------------------------------------
-// veloOffsetChanged
-//---------------------------------------------------------
-
-void SplitLayerGui::veloOffsetChanged(int n)
- {
- sl->data.veloOffset[n] = p6[n]->value();
- }
-
-//---------------------------------------------------------
-// resetLearnMode
-//---------------------------------------------------------
-
-void SplitLayerGui::resetLearnMode(int fd)
- {
- char buffer[16];
- read(fd, buffer, 16);
-
- for (int i = 0; i < MIDI_CHANNELS; ++i) {
- a1[i]->setChecked(false);
- a2[i]->setChecked(false);
- }
- init();
- }
-
-//---------------------------------------------------------
-// sendResetLearnMode
-//---------------------------------------------------------
-
-void SplitLayerGui::sendResetLearnMode()
- {
- write(fd1, "X", 1);
- }
-
diff --git a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.h b/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.h
deleted file mode 100644
index 4f2006ca..00000000
--- a/attic/muse_qt4_evolution/midiplugins/splitlayer/splitlayergui.h
+++ /dev/null
@@ -1,65 +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.
-//=============================================================================
-
-#ifndef __SPLITLAYERGUI_H__
-#define __SPLITLAYERGUI_H__
-
-#include "awl/pitchedit.h"
-
-class SplitLayer;
-
-//---------------------------------------------------------
-// SplitLayerGui
-//---------------------------------------------------------
-
-class SplitLayerGui : public QWidget {
- Q_OBJECT
- SplitLayer* sl;
-
- Awl::PitchEdit* p1[16];
- Awl::PitchEdit* p2[16];
- Awl::PitchEdit* p3[16];
- QSpinBox* p4[16];
- QSpinBox* p5[16];
- QSpinBox* p6[16];
-
- QAction* a1[16];
- QAction* a2[16];
- int fd1, fd2;
-
- private slots:
- void learnStartPitch(QAction*);
- void learnEndPitch(QAction*);
- void startPitchChanged(int);
- void endPitchChanged(int);
- void pitchOffsetChanged(int);
- void resetLearnMode(int);
- void startVeloChanged(int);
- void endVeloChanged(int);
- void veloOffsetChanged(int);
-
- public:
- SplitLayerGui(SplitLayer*, QWidget* parent=0);
- void init();
- void sendResetLearnMode();
- };
-
-#endif
-