| @@ -93,21 +93,39 @@ class XYGraphicsScene(QGraphicsScene): | |||||
| def setSmooth(self, smooth): | def setSmooth(self, smooth): | ||||
| self.m_smooth = smooth | self.m_smooth = smooth | ||||
| def setSmoothValues(self, x, y): | |||||
| self.m_smooth_x = x*(self.p_size.x()+self.p_size.width()) | |||||
| self.m_smooth_y = y*(self.p_size.y()+self.p_size.height()) | |||||
| def handleCC(self, param, value): | def handleCC(self, param, value): | ||||
| sendUpdate = False | |||||
| if (param == self.cc_x): | if (param == self.cc_x): | ||||
| xp = (float(value)/63)-1.025 | |||||
| sendUpdate = True | |||||
| xp = (float(value)/63)-1.0 | |||||
| yp = self.m_cursor.y()/(self.p_size.y()+self.p_size.height()) | yp = self.m_cursor.y()/(self.p_size.y()+self.p_size.height()) | ||||
| if (xp < -1.0): | |||||
| xp = -1.0 | |||||
| elif (xp > 1.0): | |||||
| xp = 1.0 | |||||
| self.setPosX(xp, False) | self.setPosX(xp, False) | ||||
| elif (param == self.cc_y): | |||||
| if (param == self.cc_y): | |||||
| sendUpdate = True | |||||
| xp = self.m_cursor.x()/(self.p_size.x()+self.p_size.width()) | xp = self.m_cursor.x()/(self.p_size.x()+self.p_size.width()) | ||||
| yp = (float(value)/63)-1.025 | |||||
| self.setPosY(yp, False) | |||||
| yp = (float(value)/63)-1.0 | |||||
| else: | |||||
| return | |||||
| if (yp < -1.0): | |||||
| yp = -1.0 | |||||
| elif (yp > 1.0): | |||||
| yp = 1.0 | |||||
| self.emit(SIGNAL("cursorMoved(float, float)"), xp, yp) | |||||
| self.setPosY(yp, False) | |||||
| if (sendUpdate): | |||||
| self.emit(SIGNAL("cursorMoved(float, float)"), xp, yp) | |||||
| def handleMousePos(self, pos): | def handleMousePos(self, pos): | ||||
| if (not self.p_size.contains(pos)): | if (not self.p_size.contains(pos)): | ||||
| @@ -274,8 +292,11 @@ class XYControllerW(QMainWindow, ui_xycontroller.Ui_XYControllerW): | |||||
| self.scene.updateSize(self.graphicsView.size()) | self.scene.updateSize(self.graphicsView.size()) | ||||
| self.graphicsView.centerOn(0, 0) | self.graphicsView.centerOn(0, 0) | ||||
| self.slot_updateSceneX(self.dial_x.value()) | |||||
| self.slot_updateSceneY(self.dial_y.value()) | |||||
| dial_x = self.dial_x.value() | |||||
| dial_y = self.dial_y.value() | |||||
| self.slot_updateSceneX(dial_x) | |||||
| self.slot_updateSceneY(dial_y) | |||||
| self.scene.setSmoothValues(float(dial_x)/100, float(dial_y)/100) | |||||
| @pyqtSlot(int) | @pyqtSlot(int) | ||||
| def slot_noteOn(self, note): | def slot_noteOn(self, note): | ||||
| @@ -291,11 +312,11 @@ class XYControllerW(QMainWindow, ui_xycontroller.Ui_XYControllerW): | |||||
| @pyqtSlot(int) | @pyqtSlot(int) | ||||
| def slot_updateSceneX(self, x): | def slot_updateSceneX(self, x): | ||||
| self.scene.setPosX(float(x)/100) | |||||
| self.scene.setPosX(float(x)/100, not self.dial_x.isSliderDown()) | |||||
| @pyqtSlot(int) | @pyqtSlot(int) | ||||
| def slot_updateSceneY(self, y): | def slot_updateSceneY(self, y): | ||||
| self.scene.setPosY(float(y)/100) | |||||
| self.scene.setPosY(float(y)/100, not self.dial_y.isSliderDown()) | |||||
| @pyqtSlot(str) | @pyqtSlot(str) | ||||
| def slot_checkCC_X(self, text): | def slot_checkCC_X(self, text): | ||||
| @@ -408,8 +429,12 @@ class XYControllerW(QMainWindow, ui_xycontroller.Ui_XYControllerW): | |||||
| self.dial_x.setValue(self.settings.value("DialX", 50, type=int)) | self.dial_x.setValue(self.settings.value("DialX", 50, type=int)) | ||||
| self.dial_y.setValue(self.settings.value("DialY", 50, type=int)) | self.dial_y.setValue(self.settings.value("DialY", 50, type=int)) | ||||
| self.cc_x = self.settings.value("ControlX", 1, type=int) | self.cc_x = self.settings.value("ControlX", 1, type=int) | ||||
| self.cc_y = self.settings.value("ControlY", 2, type=int) | self.cc_y = self.settings.value("ControlY", 2, type=int) | ||||
| self.scene.setControlX(self.cc_x) | |||||
| self.scene.setControlY(self.cc_y) | |||||
| self.m_channels = toList(self.settings.value("Channels", [1])) | self.m_channels = toList(self.settings.value("Channels", [1])) | ||||
| for i in range(len(self.m_channels)): | for i in range(len(self.m_channels)): | ||||
| @@ -554,7 +579,7 @@ if __name__ == '__main__': | |||||
| jack_client = jacklib.client_open("XY-Controller", jacklib.JackNullOption, jacklib.pointer(jack_status)) | jack_client = jacklib.client_open("XY-Controller", jacklib.JackNullOption, jacklib.pointer(jack_status)) | ||||
| if not jack_client: | if not jack_client: | ||||
| QMessageBox.critical(None, app.translate("RenderW", "Error"), app.translate("RenderW", "Could not connect to JACK, possible errors:\n%s" % (get_jack_status_error_string(jack_status)))) | |||||
| QMessageBox.critical(None, app.translate("XYControllerW", "Error"), app.translate("XYControllerW", "Could not connect to JACK, possible errors:\n%s" % (get_jack_status_error_string(jack_status)))) | |||||
| sys.exit(1) | sys.exit(1) | ||||
| jack_midi_in_port = jacklib.port_register(jack_client, "midi_in", jacklib.JACK_DEFAULT_MIDI_TYPE, jacklib.JackPortIsInput, 0) | jack_midi_in_port = jacklib.port_register(jack_client, "midi_in", jacklib.JACK_DEFAULT_MIDI_TYPE, jacklib.JackPortIsInput, 0) | ||||