def __init__(self): super().__init__() self._prewarp_list = WarpList('pre', self._get_base_wave, self._get_update_signal_type) self._base_func_selector = KqtComboBox() self._postwarp_list = WarpList('post', self._get_base_wave, self._get_update_signal_type) self._waveform = Waveform() pw_layout = QVBoxLayout() pw_layout.setSpacing(0) pw_layout.addWidget(self._prewarp_list) pw_layout.addWidget(self._base_func_selector) pw_layout.addWidget(self._postwarp_list) ed_layout = QHBoxLayout() ed_layout.setSpacing(0) ed_layout.addLayout(pw_layout) ed_layout.addWidget(self._waveform) v = QVBoxLayout() v.setContentsMargins(0, 0, 0, 0) v.setSpacing(2) v.addWidget(HeaderLine('Waveshaping')) v.addLayout(ed_layout) self.setLayout(v)
def __init__(self): super().__init__() self._sample_size = KqtComboBox() self._sample_count = QSpinBox() self._sample_count.setRange(1, 128) self._range_min = SamplePitchRangeMinEditor() self._range_max = SamplePitchRangeMaxEditor() self._centre_pitch = SampleCentrePitchEditor() self.add_to_updaters(self._range_min, self._range_max, self._centre_pitch) h = QHBoxLayout() h.setContentsMargins(0, 0, 0, 0) h.setSpacing(2) h.addWidget(QLabel('Sample size:')) h.addWidget(self._sample_size) h.addWidget(QLabel('Sample count:')) h.addWidget(self._sample_count) h.addWidget(QLabel('Pitch range:')) h.addWidget(self._range_min) h.addWidget(self._range_max) h.addWidget(QLabel('Centre pitch:')) h.addWidget(self._centre_pitch) self.setLayout(h)
def __init__(self): super().__init__() self._expr_names = KqtComboBox() h = QHBoxLayout() h.setContentsMargins(0, 0, 0, 0) h.setSpacing(4) h.addWidget(QLabel('Default note expression:')) h.addWidget(self._expr_names, 1) self.setLayout(h)
def __init__(self, warp_type, index, get_base_wave, get_update_signal_type): super().__init__() self._warp_type = warp_type self._index = index self._get_base_wave = get_base_wave self._get_update_signal_type = get_update_signal_type self._down_button = ProcessorIconButton() self._up_button = ProcessorIconButton() self._func_selector = KqtComboBox() self._slider = QSlider(Qt.Horizontal) self._slider.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred) self._value_display = QLabel() self._remove_button = ProcessorIconButton() self.add_to_updaters(self._down_button, self._up_button, self._remove_button) self._slider.setRange(-self._ARG_SCALE, self._ARG_SCALE) self._up_button.setEnabled(self._index != 0) fm = QFontMetrics(QFont()) value_width = fm.boundingRect('{}'.format(-1.0 / self._ARG_SCALE)).width() value_width += 10 self._value_display.setFixedWidth(value_width) h = QHBoxLayout() h.setContentsMargins(0, 0, 0, 0) h.setSpacing(2) h.addWidget(self._down_button) h.addWidget(self._up_button) h.addWidget(self._func_selector) h.addWidget(self._slider) h.addWidget(self._value_display) h.addWidget(self._remove_button) self.setLayout(h)