kitbash 1.0.1__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,3 +6,5 @@ temp
6
6
  temp.*
7
7
  debug.*
8
8
  TODO
9
+ /venv
10
+ /dist
@@ -1,11 +1,10 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: kitbash
3
- Version: 1.0.1
3
+ Version: 1.1.0
4
4
  Summary: kitbash is a program you can use to combine parts of various SFZ files into a
5
5
  Author-email: Leon Dionne <ldionne@dridesign.sh.cn>
6
6
  Description-Content-Type: text/markdown
7
7
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
8
- License-File: LICENSE
9
8
  Requires-Dist: PyQt5
10
9
  Requires-Dist: conn_jack
11
10
  Requires-Dist: jack_audio_player
@@ -31,7 +31,7 @@ from PyQt5.QtWidgets import QApplication
31
31
  from qt_extras import DevilBox
32
32
  from conn_jack import JackConnectError
33
33
 
34
- __version__ = "1.0.1"
34
+ __version__ = "1.1.0"
35
35
 
36
36
  APPLICATION_NAME = "kitbash"
37
37
  PACKAGE_DIR = os.path.dirname(__file__)
@@ -353,18 +353,14 @@ class MainWindow(QMainWindow, GeometrySaver):
353
353
  self.clear()
354
354
  # Setup background threadpool for KitLoader and KitBasher workers
355
355
  self.background_threadpool = QThreadPool()
356
- # Setup connection manager and synth creation pool
357
- self.conn_man = JackConnectionManager()
358
- self.conn_man.on_error(self.jack_error)
359
- self.conn_man.on_xrun(self.jack_xrun)
360
- self.conn_man.on_shutdown(self.jack_shutdown)
361
- self.conn_man.on_client_registration(self.jack_client_registration)
362
- self.conn_man.on_port_registration(self.jack_port_registration)
356
+ self.setup_conn_man()
363
357
  # Fill sink/source menus:
364
358
  self.fill_cmb_sources()
365
359
  self.fill_cmb_sinks()
366
360
  # Setup signals
367
- self.sig_ports_complete.connect(self.slot_ports_complete)
361
+ # Note: sig_ports_complete is emitted from a JACK.Client process thread.
362
+ # That is why we force use of QueuedConnection between that signal and the main GUI thread.
363
+ self.sig_ports_complete.connect(self.slot_ports_complete, type = Qt.QueuedConnection)
368
364
  self.cmb_midi_srcs.currentTextChanged.connect(self.slot_midi_src_changed)
369
365
  self.cmb_audio_sinks.currentTextChanged.connect(self.slot_audio_sink_changed)
370
366
  # Setup MidiSplitter
@@ -391,6 +387,7 @@ class MainWindow(QMainWindow, GeometrySaver):
391
387
  self.action_save_bashed_kit.triggered.connect(self.slot_save_kit)
392
388
  self.action_save_kit_as.triggered.connect(self.slot_save_kit_as)
393
389
  self.action_add_drumkit.triggered.connect(self.slot_add_drumkit)
390
+ self.b_add_drumkit.clicked.connect(self.slot_add_drumkit)
394
391
  self.action_remove_all_kits.triggered.connect(self.slot_remove_all_kits)
395
392
  self.action_reload_style.triggered.connect(self.slot_reload_style)
396
393
  self.menu_recent_project.aboutToShow.connect(self.slot_show_recent_projects)
@@ -400,6 +397,15 @@ class MainWindow(QMainWindow, GeometrySaver):
400
397
  self.b_copy_path.clicked.connect(self.slot_copy_kit_path)
401
398
  self.b_xruns.clicked.connect(self.slot_xruns_clicked)
402
399
 
400
+ def setup_conn_man(self):
401
+ # Setup JackConnectionManager
402
+ self.conn_man = JackConnectionManager()
403
+ self.conn_man.on_error(self.jack_error)
404
+ self.conn_man.on_xrun(self.jack_xrun)
405
+ self.conn_man.on_shutdown(self.jack_shutdown)
406
+ self.conn_man.on_client_registration(self.jack_client_registration)
407
+ self.conn_man.on_port_registration(self.jack_port_registration)
408
+
403
409
  def update_ui(self):
404
410
  title = APPLICATION_NAME \
405
411
  if self.project_filename is None \
@@ -411,6 +417,7 @@ class MainWindow(QMainWindow, GeometrySaver):
411
417
  self.action_remove_all_kits.setEnabled(has_kits)
412
418
  self.action_new_project.setEnabled(has_kits)
413
419
  self.action_save_project.setEnabled(has_kits and self.dirty)
420
+ self.action_save_project_as.setEnabled(has_kits)
414
421
  self.action_save_bashed_kit.setEnabled(has_kits)
415
422
  self.b_save_kit.setEnabled(has_kits)
416
423
  self.b_copy_path.setVisible(bool(self.bashed_sfz_filename))
@@ -549,6 +556,7 @@ class MainWindow(QMainWindow, GeometrySaver):
549
556
  PyQt closeEvent overload.
550
557
  """
551
558
  if self.okay_to_clear():
559
+ self.conn_man.close()
552
560
  for drumkit_widget in self.drumkit_widgets:
553
561
  drumkit_widget.synth.quit()
554
562
  self.save_geometry()
@@ -53,6 +53,9 @@
53
53
  <verstretch>0</verstretch>
54
54
  </sizepolicy>
55
55
  </property>
56
+ <property name="toolTip">
57
+ <string>Save this bashed kit</string>
58
+ </property>
56
59
  <property name="text">
57
60
  <string/>
58
61
  </property>
@@ -62,6 +65,25 @@
62
65
  </property>
63
66
  </widget>
64
67
  </item>
68
+ <item>
69
+ <widget class="QPushButton" name="b_add_drumkit">
70
+ <property name="sizePolicy">
71
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
72
+ <horstretch>0</horstretch>
73
+ <verstretch>0</verstretch>
74
+ </sizepolicy>
75
+ </property>
76
+ <property name="toolTip">
77
+ <string>Add an existing drumkit to the mix</string>
78
+ </property>
79
+ <property name="text">
80
+ <string/>
81
+ </property>
82
+ <property name="icon">
83
+ <iconset theme="list-add"/>
84
+ </property>
85
+ </widget>
86
+ </item>
65
87
  <item>
66
88
  <widget class="QLabel" name="lbl_bashed_sfz_filename">
67
89
  <property name="minimumSize">
@@ -70,6 +92,9 @@
70
92
  <height>0</height>
71
93
  </size>
72
94
  </property>
95
+ <property name="toolTip">
96
+ <string>Path to the current bashed kit</string>
97
+ </property>
73
98
  <property name="text">
74
99
  <string/>
75
100
  </property>
@@ -80,11 +105,15 @@
80
105
  <property name="enabled">
81
106
  <bool>true</bool>
82
107
  </property>
108
+ <property name="toolTip">
109
+ <string>Copy the path to the current bashed kit to the clipboard</string>
110
+ </property>
83
111
  <property name="text">
84
112
  <string/>
85
113
  </property>
86
114
  <property name="icon">
87
- <iconset theme="edit-copy"/>
115
+ <iconset theme="edit-copy">
116
+ <normaloff>.</normaloff>.</iconset>
88
117
  </property>
89
118
  </widget>
90
119
  </item>
@@ -114,7 +143,11 @@
114
143
  </widget>
115
144
  </item>
116
145
  <item>
117
- <widget class="QComboBox" name="cmb_midi_srcs"/>
146
+ <widget class="QComboBox" name="cmb_midi_srcs">
147
+ <property name="toolTip">
148
+ <string>Get MIDI input from this JACK client</string>
149
+ </property>
150
+ </widget>
118
151
  </item>
119
152
  </layout>
120
153
  </item>
@@ -131,7 +164,11 @@
131
164
  </widget>
132
165
  </item>
133
166
  <item>
134
- <widget class="QComboBox" name="cmb_audio_sinks"/>
167
+ <widget class="QComboBox" name="cmb_audio_sinks">
168
+ <property name="toolTip">
169
+ <string>Send audio out to this JACK client</string>
170
+ </property>
171
+ </widget>
135
172
  </item>
136
173
  </layout>
137
174
  </item>
@@ -143,12 +180,15 @@
143
180
  <item>
144
181
  <widget class="QLabel" name="lbl3">
145
182
  <property name="text">
146
- <string>Velocity:</string>
183
+ <string>Touch vel.:</string>
147
184
  </property>
148
185
  </widget>
149
186
  </item>
150
187
  <item>
151
188
  <widget class="QSpinBox" name="spn_velocity">
189
+ <property name="toolTip">
190
+ <string>Play instruments when clicked at this MIDI velocity</string>
191
+ </property>
152
192
  <property name="maximum">
153
193
  <number>127</number>
154
194
  </property>
@@ -179,6 +219,9 @@
179
219
  <height>16777215</height>
180
220
  </size>
181
221
  </property>
222
+ <property name="toolTip">
223
+ <string>JACK &quot;xruns&quot; - click to reset</string>
224
+ </property>
182
225
  <property name="text">
183
226
  <string>0</string>
184
227
  </property>
@@ -242,11 +285,6 @@
242
285
  <string>&amp;Recent Projects ...</string>
243
286
  </property>
244
287
  </widget>
245
- <widget class="QMenu" name="menu_recent_drumkits">
246
- <property name="title">
247
- <string>Recent &amp;Drumkits</string>
248
- </property>
249
- </widget>
250
288
  <addaction name="action_new_project"/>
251
289
  <addaction name="action_open_project"/>
252
290
  <addaction name="action_save_project"/>
@@ -256,8 +294,6 @@
256
294
  <addaction name="action_save_bashed_kit"/>
257
295
  <addaction name="action_save_kit_as"/>
258
296
  <addaction name="separator"/>
259
- <addaction name="menu_recent_drumkits"/>
260
- <addaction name="separator"/>
261
297
  <addaction name="action_quit"/>
262
298
  </widget>
263
299
  <widget class="QMenu" name="menu_View">
@@ -278,7 +314,14 @@
278
314
  <property name="title">
279
315
  <string>&amp;Edit</string>
280
316
  </property>
317
+ <widget class="QMenu" name="menu_recent_drumkits">
318
+ <property name="title">
319
+ <string>Recent &amp;Drumkits</string>
320
+ </property>
321
+ </widget>
281
322
  <addaction name="action_add_drumkit"/>
323
+ <addaction name="menu_recent_drumkits"/>
324
+ <addaction name="separator"/>
282
325
  <addaction name="action_remove_all_kits"/>
283
326
  </widget>
284
327
  <addaction name="menu_File"/>
@@ -30,7 +30,7 @@ requires = ["flit_core >=3.2,<4"]
30
30
  build-backend = "flit_core.buildapi"
31
31
 
32
32
  [bumpver]
33
- current_version = "1.0.1"
33
+ current_version = "1.1.0"
34
34
  version_pattern = "MAJOR.MINOR.PATCH"
35
35
  commit_message = "Bump version {old_version} -> {new_version}"
36
36
  commit = true
File without changes
File without changes
File without changes
File without changes