diff options
Diffstat (limited to 'attic/muse2-oom/muse2/muse/midiedit/piano.cpp')
-rw-r--r-- | attic/muse2-oom/muse2/muse/midiedit/piano.cpp | 554 |
1 files changed, 0 insertions, 554 deletions
diff --git a/attic/muse2-oom/muse2/muse/midiedit/piano.cpp b/attic/muse2-oom/muse2/muse/midiedit/piano.cpp deleted file mode 100644 index 6d42556c..00000000 --- a/attic/muse2-oom/muse2/muse/midiedit/piano.cpp +++ /dev/null @@ -1,554 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: piano.cpp,v 1.3 2004/05/31 11:48:55 lunar_shuttle Exp $ -// (C) Copyright 1999 Werner Schweer (ws@seh.de) -//========================================================= - -#include <QMouseEvent> -#include <QPainter> - -#include <stdio.h> - -#include "piano.h" - -static const char *oct_xpm[] = { -// w h colors - "40 91 2 1", - ". c #dedede", - "# c #565656", - // x - "####################################### ", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 10 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", // 7 - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 10 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "####################################### ", //---------------------- - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", // 9 - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", //------------------------ - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", // 7 - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //-------------------------- - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - "..........................###..........#", - ".........................#...#.........#", - ".........................#.............#", - ".........................#.............#", - ".........................#...#.........#", // 10 - "..........................###..........#", - ".......................................#", - ".......................................#", - ".......................................#", - }; - -static const char *mk1_xpmC1[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###.....#....#", - ".........................#...#...##....#", - ".........................#........#....#", - ".........................#........#....#", - ".........................#...#....#....#", // 10 - "..........................###....###...#", - ".......................................#", - ".......................................#", - ".......................................#", - }; -static const char *mk1_xpmC2[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###....##....#", - ".........................#...#..#..#...#", - ".........................#........#....#", - ".........................#.......#.....#", - ".........................#...#..#......#", // 10 - "..........................###...####...#", - ".......................................#", - ".......................................#", - ".......................................#", - }; -static const char *mk1_xpmC3[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###....##....#", - ".........................#...#..#..#...#", - ".........................#........#....#", - ".........................#.........#...#", - ".........................#...#..#..#...#", // 10 - "..........................###....##....#", - ".......................................#", - ".......................................#", - ".......................................#", - }; -static const char *mk1_xpmC4[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###...#..#...#", - ".........................#...#..#..#...#", - ".........................#......####...#", - ".........................#.........#...#", - ".........................#...#.....#...#", // 10 - "..........................###......#...#", - ".......................................#", - ".......................................#", - ".......................................#", - }; -static const char *mk1_xpmC5[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###...####...#", - ".........................#...#..#......#", - ".........................#......###....#", - ".........................#.........#...#", - ".........................#...#.....#...#", // 10 - "..........................###...###....#", - ".......................................#", - ".......................................#", - ".......................................#", - }; - -static const char *mk1_xpmC6[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###....###...#", - ".........................#...#..#......#", - ".........................#......###....#", - ".........................#......#..#...#", - ".........................#...#..#..#...#", // 10 - "..........................###...###....#", - ".......................................#", - ".......................................#", - ".......................................#", - }; - -static const char *mk1_xpmC7[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###...####...#", - ".........................#...#.....#...#", - ".........................#........#....#", - ".........................#.......#.....#", - ".........................#...#..#......#", // 10 - "..........................###...#......#", - ".......................................#", - ".......................................#", - ".......................................#", - }; -static const char *mk1_xpmC8[] = { - "40 10 2 1", - ". c #dedede", - "# c #565656", - ".......................................#", - "..........................###....##....#", - ".........................#...#..#..#....#", - ".........................#.......##....#", - ".........................#......#..#...#", - ".........................#...#..#..#...#", // 10 - "..........................###....##....#", - ".......................................#", - ".......................................#", - ".......................................#", - }; - -static const char *mk1_xpm[] = { - "40 13 2 1", - ". c #2d95b7", - "# c none", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "#######################................#", - "########################...............#", - "########################...............#", - "####################################### ", - }; - -static const char *mk2_xpm[] = { - "40 13 2 1", - ". c #2d95b7", - "# c none", - "########################...............#", - "########################...............#", - "#######################................#", //------------------------ - ".......................................#", - ".......................................#", - ".......................................#", // 6 - ".......................................#", - ".......................................#", - ".......................................#", //-------------------------- - "#######################................#", - "########################...............#", - "########################...............#", // 7 - "####################################### ", - }; - -static const char *mk3_xpm[] = { - "40 13 2 1", - ". c #2d95b7", - "# c none", - "########################...............#", - "########################...............#", - "#######################................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - ".......................................#", - "########################################", - }; - -static const char *mk4_xpm[] = { - "40 13 2 1", - "# c #2d95b7", - ". c none", - "........................................", - "........................................", - "........................................", - "#######################.................", - "########################................", - "########################................", - "########################................", - "########################................", - "########################................", - "#######################.................", - "........................................", - "........................................", - "........................................", - }; -/* - 0 1 2 3 4 5 6 7 8 9 10 - c-2 c-1 C0 C1 C2 C3 C4 C5 C6 C7 C8 - G8 - - Grid über Oktave: - - +------------+ ------------------------------ - 11 | | - | h | 7 - +------+ | - 10 | a# +-----+ .............................. - +------+ a | - 9 | | 6 - +------+ | - 8 | g# +-----+ .............................. - +------+ g | - 7 | | 5 - +------+ | - 6 | f# +-----+ .............................. - +------+ f | - 5 | | 4 - | | - +------------+ ------------------------------ - 4 | | - | e | 3 - +------+ | - 3 | d# +-----+ .............................. - +------+ d | - 2 | | 2 - +------+ | - 1 | c# +-----+ .............................. - +------+ c | - | | 1 - 0 | | - +------------+ ------------------------------ - */ - -//--------------------------------------------------------- -// Piano -//--------------------------------------------------------- - -Piano::Piano(QWidget* parent, int ymag) - : View(parent, 1, ymag) - { - setMouseTracking(true); - curPitch = -1; - octave = new QPixmap(oct_xpm); - c_keys[0] = new QPixmap(mk1_xpmC8); - c_keys[1] = new QPixmap(mk1_xpmC7); - c_keys[2] = new QPixmap(mk1_xpmC6); - c_keys[3] = new QPixmap(mk1_xpmC5); - c_keys[4] = new QPixmap(mk1_xpmC4); - c_keys[5] = new QPixmap(mk1_xpmC3); - c_keys[6] = new QPixmap(mk1_xpmC2); - c_keys[7] = new QPixmap(mk1_xpmC1); - - mk1 = new QPixmap(mk1_xpm); - mk2 = new QPixmap(mk2_xpm); - mk3 = new QPixmap(mk3_xpm); - mk4 = new QPixmap(mk4_xpm); - keyDown = -1; - button = Qt::NoButton; - } - -//--------------------------------------------------------- -// draw -//--------------------------------------------------------- - -void Piano::draw(QPainter& p, const QRect& r) - { - QPoint offset(0, KH*2); - p.drawTiledPixmap(r, *octave, r.topLeft()+offset); - - // draw C notes - for (int drawKey = 0; drawKey < 8;drawKey++) { - int octaveSize=91; - - int drawY = octaveSize * drawKey + 81 - KH*2; - if (drawY > r.y() && drawY < r.y() + r.height()) { - //printf("drawing c %d at %d r.y %d r.x %d\n",drawKey, drawY, r.y(), r.x()); - p.drawPixmap(0,drawY,*c_keys[drawKey]); - } - } - //p.drawTiledPixmap(r, *c1, r.topLeft()+offset + coffset); - //printf("drawText KH %d %d, x %d y %d\n",KH, curPitch, r.x(), r.y()); - //p.drawText(r,Qt::AlignAuto,"A"); - if (curPitch == -1) - return; - int y = pitch2y(curPitch); - QPixmap* pm; - switch(curPitch % 12) { - case 0: - case 5: - pm = mk3; - break; - case 2: - case 7: - case 9: - pm = mk2; - break; - case 4: - case 11: - pm = mk1; - break; - default: - pm = mk4; - break; - } - p.drawPixmap(0, y, *pm); - } - -//--------------------------------------------------------- -// pitch2y -//--------------------------------------------------------- - -int Piano::pitch2y(int pitch) const - { - int tt[] = { - 12, 19, 25, 32, 38, 51, 58, 64, 71, 77, 84, 90 - }; - int y = (75 * KH) - (tt[pitch%12] + (7 * KH) * (pitch/12)); - if (y < 0) - y = 0; - return y; - } - -//--------------------------------------------------------- -// y2pitch -//--------------------------------------------------------- - -int Piano::y2pitch(int y) const - { - const int total = (10 * 7 + 5) * KH; // 75 Ganztonschritte - y = total - y; - int oct = (y / (7 * KH)) * 12; - char kt[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 6, 6, 6, 6, 6, 6, 6, - 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, - 9, 9, 9, 9, 9, 9, - 10, 10, 10, 10, 10, 10, 10, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 - }; - return kt[y % 91] + oct; - } - -//--------------------------------------------------------- -// leaveEvent -//--------------------------------------------------------- - -void Piano::leaveEvent(QEvent*) - { - if (keyDown != -1) { - emit keyReleased(keyDown, shift); - keyDown = -1; - } - emit pitchChanged(-1); - setPitch(-1); - } - -//--------------------------------------------------------- -// setPitch -//--------------------------------------------------------- - -void Piano::setPitch(int pitch) - { - if (curPitch == pitch) - return; - curPitch = pitch; - redraw(); - } - -//--------------------------------------------------------- -// viewMouseMoveEvent -//--------------------------------------------------------- - -void Piano::viewMouseMoveEvent(QMouseEvent* event) - { - int pitch = y2pitch(event->y()); - emit pitchChanged(pitch); - setPitch(pitch); - - if (button != Qt::NoButton) { - int nk = y2pitch(event->y()); - if (nk < 0 || nk > 127) - nk = -1; - if (nk != keyDown) { - if (keyDown != -1) { - emit keyReleased(keyDown, shift); - } - keyDown = nk; - if (keyDown != -1) { - int velocity = event->x()*127/40; - //emit keyPressed(keyDown, shift); - emit keyPressed(keyDown, velocity>127 ? 127 : velocity, shift); - } - } - } - } - -//--------------------------------------------------------- -// viewMousePressEvent -//--------------------------------------------------------- - -void Piano::viewMousePressEvent(QMouseEvent* event) - { - button = event->button(); - shift = event->modifiers() & Qt::ShiftModifier; - if (keyDown != -1) { - emit keyReleased(keyDown, shift); - keyDown = -1; - } - keyDown = y2pitch(event->y()); - if (keyDown < 0 || keyDown > 127) { - keyDown = -1; - } - else { - int velocity = event->x()*127/40; - emit keyPressed(keyDown, velocity>127 ? 127 : velocity, shift); //emit keyPressed(keyDown, shift); - } - } - -//--------------------------------------------------------- -// viewMouseReleaseEvent -//--------------------------------------------------------- - -void Piano::viewMouseReleaseEvent(QMouseEvent* event) - { - button = Qt::NoButton; - shift = event->modifiers() & Qt::ShiftModifier; - if (keyDown != -1) { - emit keyReleased(keyDown, shift); - keyDown = -1; - } - } - |