diff options
Diffstat (limited to 'helpers/music_file.py')
-rw-r--r-- | helpers/music_file.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/helpers/music_file.py b/helpers/music_file.py index 9976306..ba86142 100644 --- a/helpers/music_file.py +++ b/helpers/music_file.py | |||
@@ -92,6 +92,31 @@ class MusicFile: | |||
92 | 92 | ||
93 | threading.Thread(name="MSMusicLoad", target=self.load).start() | 93 | threading.Thread(name="MSMusicLoad", target=self.load).start() |
94 | 94 | ||
95 | def reload_properties(self, name=None, gain=1): | ||
96 | self.name = name or self.filename | ||
97 | if gain != self.initial_volume_factor: | ||
98 | self.initial_volume_factor = gain | ||
99 | self.reload_music_file() | ||
100 | |||
101 | def reload_music_file(self): | ||
102 | with file_lock: | ||
103 | try: | ||
104 | debug_print("Reloading « {} »".format(self.name)) | ||
105 | initial_db_gain = gain(self.initial_volume_factor * 100) | ||
106 | self.audio_segment = pydub.AudioSegment \ | ||
107 | .from_file(self.filename) \ | ||
108 | .set_frame_rate(Config.frame_rate) \ | ||
109 | .set_channels(Config.channels) \ | ||
110 | .set_sample_width(Config.sample_width) \ | ||
111 | .apply_gain(initial_db_gain) | ||
112 | except Exception as e: | ||
113 | error_print("failed to reload « {} »: {}"\ | ||
114 | .format(self.name, e)) | ||
115 | self.loading_error = e | ||
116 | self.to_failed() | ||
117 | else: | ||
118 | debug_print("Reloaded « {} »".format(self.name)) | ||
119 | |||
95 | # Machine related events | 120 | # Machine related events |
96 | def on_enter_loading(self): | 121 | def on_enter_loading(self): |
97 | with file_lock: | 122 | with file_lock: |