|
|
@@ -25,33 +25,33 @@ from PyQt4.QtGui import QColor, QFont, QPainter, QPixmap, QScrollArea, QWidget |
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
|
|
|
|
kMidiKey2RectMapHorizontal = { |
|
|
|
'0': QRectF(0, 0, 17, 59), # C |
|
|
|
'1': QRectF(13, 0, 8, 41), # C# |
|
|
|
'2': QRectF(17, 0, 17, 59), # D |
|
|
|
'3': QRectF(31, 0, 8, 41), # D# |
|
|
|
'4': QRectF(34, 0, 17, 59), # E |
|
|
|
'5': QRectF(51, 0, 17, 59), # F |
|
|
|
'6': QRectF(63, 0, 8, 41), # F# |
|
|
|
'7': QRectF(68, 0, 17, 59), # G |
|
|
|
'8': QRectF(81, 0, 8, 41), # G# |
|
|
|
'9': QRectF(85, 0, 17, 59), # A |
|
|
|
'10': QRectF(99, 0, 8, 41), # A# |
|
|
|
'11': QRectF(102, 0, 17, 59) # B |
|
|
|
'0': QRectF(0, 0, 24, 57), # C |
|
|
|
'1': QRectF(14, 0, 15, 33), # C# |
|
|
|
'2': QRectF(24, 0, 24, 57), # D |
|
|
|
'3': QRectF(42, 0, 15, 33), # D# |
|
|
|
'4': QRectF(48, 0, 24, 57), # E |
|
|
|
'5': QRectF(72, 0, 24, 57), # F |
|
|
|
'6': QRectF(84, 0, 15, 33), # F# |
|
|
|
'7': QRectF(96, 0, 24, 57), # G |
|
|
|
'8': QRectF(112, 0, 15, 33), # G# |
|
|
|
'9': QRectF(120, 0, 24, 57), # A |
|
|
|
'10': QRectF(140, 0, 15, 33), # A# |
|
|
|
'11': QRectF(144, 0, 24, 57) # B |
|
|
|
} |
|
|
|
|
|
|
|
kMidiKey2RectMapVertical = { |
|
|
|
'11': QRectF(0, 0, 59, 17), # B |
|
|
|
'10': QRectF(0, 11, 41, 8), # A# |
|
|
|
'9': QRectF(0, 16, 59, 17), # A |
|
|
|
'8': QRectF(0, 29, 41, 8), # G# |
|
|
|
'7': QRectF(0, 33, 59, 18), # G |
|
|
|
'6': QRectF(0, 47, 41, 8), # F# |
|
|
|
'5': QRectF(0, 50, 59, 17), # F |
|
|
|
'4': QRectF(0, 67, 59, 17), # E |
|
|
|
'3': QRectF(0, 79, 41, 8), # D# |
|
|
|
'2': QRectF(0, 84, 59, 17), # D |
|
|
|
'1': QRectF(0, 97, 41, 8), # C# |
|
|
|
'0': QRectF(0, 101, 59, 17) # C |
|
|
|
'11': QRectF(0, 0, 57, 24), # B |
|
|
|
'10': QRectF(0, 13, 33, 15), # A# |
|
|
|
'9': QRectF(0, 24, 57, 24), # A |
|
|
|
'8': QRectF(0, 41, 33, 15), # G# |
|
|
|
'7': QRectF(0, 48, 57, 24), # G |
|
|
|
'6': QRectF(0, 69, 33, 15), # F# |
|
|
|
'5': QRectF(0, 72, 57, 24), # F |
|
|
|
'4': QRectF(0, 96, 57, 24), # E |
|
|
|
'3': QRectF(0, 111, 33, 15), # D# |
|
|
|
'2': QRectF(0, 120, 57, 24), # D |
|
|
|
'1': QRectF(0, 139, 33, 15), # C# |
|
|
|
'0': QRectF(0, 144, 57, 24) # C |
|
|
|
} |
|
|
|
|
|
|
|
kMidiKeyboard2KeyMap = { |
|
|
@@ -107,7 +107,11 @@ class PixmapKeyboard(QWidget): |
|
|
|
|
|
|
|
self.fEnabledKeys = [] |
|
|
|
|
|
|
|
self.fFont = QFont("Monospace", 7, QFont.Normal) |
|
|
|
self.fFont = self.font() |
|
|
|
self.fFont.setFamily("Monospace") |
|
|
|
self.fFont.setPixelSize(12) |
|
|
|
self.fFont.setBold(True) |
|
|
|
|
|
|
|
self.fPixmap = QPixmap("") |
|
|
|
|
|
|
|
self.setCursor(Qt.PointingHandCursor) |
|
|
@@ -183,12 +187,12 @@ class PixmapKeyboard(QWidget): |
|
|
|
|
|
|
|
def handleMousePos(self, pos): |
|
|
|
if self.fPixmapMode == self.HORIZONTAL: |
|
|
|
if pos.x() < 0 or pos.x() > self.fOctaves * 119: |
|
|
|
if pos.x() < 0 or pos.x() > self.fOctaves * self.fWidth: |
|
|
|
return |
|
|
|
octave = int(pos.x() / self.fWidth) |
|
|
|
keyPos = QPointF(pos.x() % self.fWidth, pos.y()) |
|
|
|
elif self.fPixmapMode == self.VERTICAL: |
|
|
|
if pos.y() < 0 or pos.y() > self.fOctaves * 119: |
|
|
|
if pos.y() < 0 or pos.y() > self.fOctaves * self.fHeight: |
|
|
|
return |
|
|
|
octave = int(self.fOctaves - pos.y() / self.fHeight) |
|
|
|
keyPos = QPointF(pos.x(), (pos.y()-1) % self.fHeight) |
|
|
@@ -425,9 +429,9 @@ class PixmapKeyboard(QWidget): |
|
|
|
|
|
|
|
for i in range(self.fOctaves): |
|
|
|
if self.fPixmapMode == self.HORIZONTAL: |
|
|
|
painter.drawText(i * 119 + (2 if i == 0 else 1), 45, 16, 16, Qt.AlignCenter, "C%i" % (i-1)) |
|
|
|
painter.drawText(i * 168 + (4 if i == 0 else 3), 35, 20, 20, Qt.AlignCenter, "C%i" % (i-1)) |
|
|
|
elif self.fPixmapMode == self.VERTICAL: |
|
|
|
painter.drawText(44, (self.fOctaves * 119) - (i * 119) - 16, 16, 16, Qt.AlignCenter, "C%i" % (i-1)) |
|
|
|
painter.drawText(33, (self.fOctaves * 168) - (i * 168) - 20, 20, 20, Qt.AlignCenter, "C%i" % (i-1)) |
|
|
|
|
|
|
|
def _isNoteBlack(self, note): |
|
|
|
baseNote = note % 12 |
|
|
@@ -475,7 +479,8 @@ if __name__ == '__main__': |
|
|
|
app = QApplication(sys.argv) |
|
|
|
|
|
|
|
gui = PixmapKeyboard(None) |
|
|
|
gui.setMode(gui.VERTICAL) |
|
|
|
gui.setMode(gui.HORIZONTAL) |
|
|
|
#gui.setMode(gui.VERTICAL) |
|
|
|
gui.setEnabled(True) |
|
|
|
gui.show() |
|
|
|
|
|
|
|