musecbox 0.2.0__tar.gz → 0.2.2__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.
Files changed (100) hide show
  1. {musecbox-0.2.0 → musecbox-0.2.2}/PKG-INFO +1 -1
  2. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/__init__.py +1 -1
  3. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/missing_sfzs_dialog.py +1 -1
  4. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_import_dialog.py +2 -2
  5. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/balance_control_widget.py +4 -7
  6. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/main_window.py +4 -2
  7. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/track_widget.py +9 -7
  8. {musecbox-0.2.0 → musecbox-0.2.2}/pyproject.toml +1 -1
  9. {musecbox-0.2.0 → musecbox-0.2.2}/.gitignore +0 -0
  10. {musecbox-0.2.0 → musecbox-0.2.2}/LICENSE +0 -0
  11. {musecbox-0.2.0 → musecbox-0.2.2}/README.md +0 -0
  12. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/__main__.py +0 -0
  13. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/audio_recorder.py +0 -0
  14. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/__init__ +0 -0
  15. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/add_group_dialog.py +0 -0
  16. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/add_group_dialog.ui +0 -0
  17. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/connection_dialog.py +0 -0
  18. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/connection_dialog.ui +0 -0
  19. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/copy_sfz_dialog.py +0 -0
  20. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/copy_sfz_paths_dialog.py +0 -0
  21. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/copy_sfzs_dialog.py +0 -0
  22. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/copy_sfzs_dialog.ui +0 -0
  23. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/generic_plugin_dialog.py +0 -0
  24. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/instrument_selection_dialog.py +0 -0
  25. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/instrument_selection_dialog.ui +0 -0
  26. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/project_info_dialog.py +0 -0
  27. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/project_info_dialog.ui +0 -0
  28. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/project_load_dialog.py +0 -0
  29. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/project_load_dialog.ui +0 -0
  30. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/project_save_dialog.py +0 -0
  31. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/record_dialog.py +0 -0
  32. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/record_dialog.ui +0 -0
  33. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_apply_dialog.py +0 -0
  34. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_apply_dialog.ui +0 -0
  35. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_import_channel_widget.ui +0 -0
  36. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_import_dialog.ui +0 -0
  37. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_import_part_widget.ui +0 -0
  38. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_info_dialog.py +0 -0
  39. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_info_dialog.ui +0 -0
  40. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/score_load_dialog.py +0 -0
  41. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/sfz_file_dialog.py +0 -0
  42. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/sfz_file_dialog.ui +0 -0
  43. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/sfzdb_dialog.py +0 -0
  44. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/sfzdb_dialog.ui +0 -0
  45. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/track_creation_dialog.py +0 -0
  46. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/dialogs/track_creation_dialog.ui +0 -0
  47. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/__init__.py +0 -0
  48. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/horizontal_port_widget.ui +0 -0
  49. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/horizontal_track_plugin_widget.ui +0 -0
  50. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/horizontal_track_widget.ui +0 -0
  51. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/main_window.ui +0 -0
  52. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/plugin_widgets.py +0 -0
  53. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/port_widget.py +0 -0
  54. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/shared_plugin_widget.ui +0 -0
  55. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/vertical_port_widget.ui +0 -0
  56. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/vertical_track_plugin_widget.ui +0 -0
  57. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/gui/vertical_track_widget.ui +0 -0
  58. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/liquidsfz.py +0 -0
  59. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/Theremin/Stereo-Theremin.sfz +0 -0
  60. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/Theremin/Thick-Theremin.sfz +0 -0
  61. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/Theremin/Thin-Theremin.sfz +0 -0
  62. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/Theremin/samples/SINUS.wav +0 -0
  63. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/Theremin/samples/U-sinewave.wav +0 -0
  64. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/audio-icon-off.png +0 -0
  65. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/audio-icon-on.png +0 -0
  66. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/balance_control_widget.h +0 -0
  67. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/collapse-vertical.svg +0 -0
  68. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/collapse.svg +0 -0
  69. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/control-icon-off.png +0 -0
  70. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/control-icon-on.png +0 -0
  71. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/disable-off.png +0 -0
  72. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/disable-on.png +0 -0
  73. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/empty.sfz +0 -0
  74. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/expand-vertical.svg +0 -0
  75. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/expand.svg +0 -0
  76. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/lock.svg +0 -0
  77. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/menu.svg +0 -0
  78. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/meter.png +0 -0
  79. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/midi-icon-off.png +0 -0
  80. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/midi-icon-on.png +0 -0
  81. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/minus.svg +0 -0
  82. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/musecbox-icon.png +0 -0
  83. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/musescore_score.mscx +0 -0
  84. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/mute.svg +0 -0
  85. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/narrow-menu.svg +0 -0
  86. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/plus.svg +0 -0
  87. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/render.svg +0 -0
  88. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/solo.svg +0 -0
  89. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/res/unlock.svg +0 -0
  90. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/score_fixer.py +0 -0
  91. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/scripts/__init__.py +0 -0
  92. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/scripts/mbx_apply.py +0 -0
  93. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/scripts/mbx_project_info.py +0 -0
  94. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/scripts/mbx_track_setup.py +0 -0
  95. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/sfz_previewer.py +0 -0
  96. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/sfzdb.py +0 -0
  97. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/styles/dark.css +0 -0
  98. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/styles/light.css +0 -0
  99. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/styles/system.css +0 -0
  100. {musecbox-0.2.0 → musecbox-0.2.2}/musecbox/xdg/install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: musecbox
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: "MusecBox" is A GUI application designed to be an SFZ -based synth replacement
5
5
  Author-email: Leon Dionne <ldionne@dridesign.sh.cn>
6
6
  Description-Content-Type: text/markdown
@@ -77,7 +77,7 @@ from simple_carla.qt import CarlaQt
77
77
  from qt_extras import DevilBox
78
78
  from log_soso import StreamToLogger
79
79
 
80
- __version__ = "0.2.0"
80
+ __version__ = "0.2.2"
81
81
 
82
82
  APPLICATION_NAME = 'MusecBox'
83
83
  APP_PATH = dirname(realpath(__file__))
@@ -127,7 +127,7 @@ class MissingSFZ(QFrame):
127
127
  def slot_select(self):
128
128
  sfz_dialog = SFZFileDialog(self.track_widget.voice_name)
129
129
  if sfz_dialog.exec():
130
- self.track_widget.synth.change_sfz(sfz_dialog.sfz_filename)
130
+ self.track_widget.synth.load_sfz(sfz_dialog.sfz_filename)
131
131
  self.lbl_filename.setText(self.track_widget.synth.sfz_filename)
132
132
  self.lbl_icon.setText(CHAR_OKAY)
133
133
  self.is_missing = False
@@ -22,7 +22,7 @@ Provides a dialog used for importing MuseScore3 files
22
22
  """
23
23
 
24
24
  import logging
25
- from os.path import join, basename, dirname, splitext
25
+ from os.path import join, basename, dirname, realpath, splitext
26
26
  from functools import partial, reduce
27
27
  from collections import defaultdict
28
28
  from operator import and_
@@ -58,7 +58,7 @@ class ScoreImportDialog(QDialog):
58
58
  super().__init__(parent)
59
59
  with ShutUpQT():
60
60
  uic.loadUi(join(dirname(__file__), 'score_import_dialog.ui'), self)
61
- self.filename = filename
61
+ self.filename = realpath(filename)
62
62
  self.restore_geometry()
63
63
  self.setFixedWidth(704)
64
64
  self.finished.connect(self.save_geometry)
@@ -131,15 +131,10 @@ class BalanceControlWidget(QWidget):
131
131
  # Screen / internal plugin value conversions
132
132
 
133
133
  def resizeEvent(self, event):
134
- # Returns a new rectangle with dx1, dy1, dx2 and dy2 added respectively to the
135
- # existing coordinates of this rectangle.
136
134
  self.bounds_rect = QRect(QPoint(0, 0), event.size()).adjusted(
137
135
  TRACK_HALF_WIDTH + 1, 1, -TRACK_HALF_WIDTH - 1, -1)
138
136
  self.center_x = self.bounds_rect.center().x()
139
- # f_scale is what you divide event x by in order to get a value in a range
140
- # from -1.0 to 1.0 (proportion)
141
137
  self.f_scale = float(self.bounds_rect.width() / 2)
142
- self.f_track_half_width = TRACK_HALF_WIDTH / self.f_scale
143
138
  for group in self._groups.values():
144
139
  group.reposition()
145
140
  self.update()
@@ -304,7 +299,8 @@ class BalanceControlWidget(QWidget):
304
299
  """
305
300
  Called from TrackWidget when mouse hovers over it
306
301
  """
307
- self.change_focused_group(self._groups[pan_group_key], False)
302
+ if pan_group_key in self._groups:
303
+ self.change_focused_group(self._groups[pan_group_key], False)
308
304
 
309
305
  def hover_out(self):
310
306
  """
@@ -342,7 +338,8 @@ class BalanceControlWidget(QWidget):
342
338
 
343
339
  def _create_group(self, key, track):
344
340
  self._groups[key] = BCGroup(self, key, track)
345
- self._groups[key].reposition()
341
+ if self.isVisible():
342
+ self._groups[key].reposition()
346
343
  self._groups[key].show()
347
344
 
348
345
  def orphan(self, track):
@@ -30,7 +30,7 @@ from signal import signal, SIGINT, SIGTERM
30
30
  from socket import socket, AF_UNIX, SOCK_DGRAM, SOL_SOCKET, SO_REUSEADDR
31
31
  from qt_extras import SigBlock, ShutUpQT, DevilBox
32
32
  from qt_extras.list_layout import HListLayout, VListLayout
33
- from sfzen import SFZ
33
+ from sfzen import SFZ, SAMPLES_ABSPATH
34
34
  from sfzen.cleaners.liquidsfz import clean as liquid_clean
35
35
  from mscore import VoiceName
36
36
  from simple_carla import Plugin, Parameter, \
@@ -470,6 +470,7 @@ class MainWindow(QMainWindow):
470
470
  self.source_score = self.project_definition['source_score']
471
471
  set_application_style()
472
472
  self.show_hide_window_elements()
473
+ self.balance_control_widget.slot_set_lines(setting(KEY_BCWIDGET_LINES, int, 3))
473
474
  if 'exported_wav_file' in self.project_definition:
474
475
  self.wav_filename = self.project_definition['exported_wav_file']
475
476
  if ProjectLoadDialog(self, self.project_definition).exec():
@@ -587,7 +588,8 @@ class MainWindow(QMainWindow):
587
588
 
588
589
  def copy_sfzs(self):
589
590
  self.setCursor(Qt.WaitCursor)
590
- samples_mode = setting(KEY_SAMPLES_MODE, bool)
591
+ samples_mode = setting(KEY_SAMPLES_MODE, int, SAMPLES_ABSPATH)
592
+ logging.debug('Copying SFZs; samples_mode is %d', samples_mode)
591
593
  clean_sfzs = setting(KEY_CLEAN_SFZS, bool)
592
594
  title, _ = splitext(basename(self.project_filename))
593
595
  sfz_dir = join(self.project_dir(), title)
@@ -21,7 +21,7 @@
21
21
  Provides vertical and horizontal track widgets.
22
22
  """
23
23
  import logging, os
24
- from os.path import join, dirname, relpath, abspath, exists
24
+ from os.path import join, dirname, relpath, realpath, exists
25
25
  from math import floor
26
26
  from functools import partial
27
27
  from itertools import chain
@@ -751,9 +751,8 @@ class TrackSynth(LiquidSFZ):
751
751
  def __init__(self, port, slot, sfz_filename, *, saved_state = None):
752
752
  self.port = port
753
753
  self.slot = slot
754
- if not exists(sfz_filename):
755
- sfz_filename = abspath(join(main_window().project_dir(), sfz_filename))
756
- super().__init__(sfz_filename, saved_state = saved_state)
754
+ super().__init__(self._get_real(sfz_filename), saved_state = saved_state)
755
+ logging.debug('Loaded synth "%s"; SFZ filename: %s', self, self.sfz_filename)
757
756
 
758
757
  def track_widget(self):
759
758
  return main_window().port_widget(self.port).track_widget(self.slot)
@@ -764,13 +763,16 @@ class TrackSynth(LiquidSFZ):
764
763
 
765
764
  def load_sfz(self, sfz_filename):
766
765
  oldpath = self.sfz_filename
767
- if not exists(sfz_filename):
768
- sfz_filename = abspath(join(main_window().project_dir(), sfz_filename))
769
- super().load_sfz(sfz_filename)
766
+ super().load_sfz(self._get_real(sfz_filename))
770
767
  if oldpath != self.sfz_filename:
771
768
  main_window().unwatch(oldpath)
772
769
  main_window().watch(self.sfz_filename)
773
770
 
771
+ def _get_real(self, sfz_filename):
772
+ if exists(sfz_filename):
773
+ return realpath(sfz_filename)
774
+ return realpath(join(main_window().project_dir(), sfz_filename))
775
+
774
776
  def auto_load_complete(self):
775
777
  super().auto_load_complete()
776
778
  self.sig_sfz_loaded.emit(self.sfz_filename)
@@ -31,7 +31,7 @@ requires = ["flit_core >=3.2,<4"]
31
31
  build-backend = "flit_core.buildapi"
32
32
 
33
33
  [bumpver]
34
- current_version = "0.2.0"
34
+ current_version = "0.2.2"
35
35
  version_pattern = "MAJOR.MINOR.PATCH"
36
36
  commit_message = "Bump version {old_version} -> {new_version}"
37
37
  commit = true
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes