diff options
Diffstat (limited to 'helpers/music_file.py')
-rw-r--r-- | helpers/music_file.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/helpers/music_file.py b/helpers/music_file.py index f6b0117..d40a132 100644 --- a/helpers/music_file.py +++ b/helpers/music_file.py | |||
@@ -3,28 +3,35 @@ import pydub | |||
3 | import pygame | 3 | import pygame |
4 | 4 | ||
5 | class MusicFile: | 5 | class MusicFile: |
6 | def __init__(self, filename, lock, channel_id): | 6 | def __init__(self, filename, lock, channel_id, name = None): |
7 | self.filename = filename | 7 | self.filename = filename |
8 | self.channel_id = channel_id | 8 | self.channel_id = channel_id |
9 | self.name = name or filename | ||
9 | self.raw_data = None | 10 | self.raw_data = None |
10 | self.sound = None | 11 | self.sound = None |
11 | 12 | ||
12 | self.loaded = False | 13 | self.loaded = False |
14 | self.flag_paused = False | ||
13 | threading.Thread(name = "MSMusicLoad", target = self.load_sound, args = [lock]).start() | 15 | threading.Thread(name = "MSMusicLoad", target = self.load_sound, args = [lock]).start() |
14 | 16 | ||
15 | def load_sound(self, lock): | 17 | def load_sound(self, lock): |
16 | lock.acquire() | 18 | lock.acquire() |
17 | print("Loading {}".format(self.filename)) | 19 | print("Loading « {} »".format(self.name)) |
18 | self.raw_data = pydub.AudioSegment.from_file(self.filename).raw_data | 20 | self.raw_data = pydub.AudioSegment.from_file(self.filename).raw_data |
19 | self.sound = pygame.mixer.Sound(self.raw_data) | 21 | self.sound = pygame.mixer.Sound(self.raw_data) |
20 | print("Loaded {}".format(self.filename)) | 22 | print("Loaded « {} »".format(self.name)) |
21 | self.loaded = True | 23 | self.loaded = True |
22 | lock.release() | 24 | lock.release() |
23 | 25 | ||
24 | def is_playing(self): | 26 | def is_playing(self): |
25 | return self.channel().get_busy() | 27 | return self.channel().get_busy() |
26 | 28 | ||
29 | def is_paused(self): | ||
30 | return self.flag_paused | ||
31 | |||
27 | def play(self, fade_in = 0, volume = 100, start_at = 0): | 32 | def play(self, fade_in = 0, volume = 100, start_at = 0): |
33 | self.channel().set_endevent() | ||
34 | self.channel().set_endevent(pygame.USEREVENT) | ||
28 | self.set_volume(volume) | 35 | self.set_volume(volume) |
29 | 36 | ||
30 | if start_at > 0: | 37 | if start_at > 0: |
@@ -37,9 +44,15 @@ class MusicFile: | |||
37 | self.sound = pygame.mixer.Sound(self.raw_data) | 44 | self.sound = pygame.mixer.Sound(self.raw_data) |
38 | 45 | ||
39 | self.channel().play(self.sound, fade_ms = fade_in * 1000) | 46 | self.channel().play(self.sound, fade_ms = fade_in * 1000) |
47 | self.flag_paused = False | ||
40 | 48 | ||
41 | def pause(self): | 49 | def pause(self): |
42 | self.channel().pause() | 50 | self.channel().pause() |
51 | self.flag_paused = True | ||
52 | |||
53 | def unpause(self): | ||
54 | self.channel().unpause() | ||
55 | self.flag_paused = False | ||
43 | 56 | ||
44 | def stop(self, fade_out = 0): | 57 | def stop(self, fade_out = 0): |
45 | if fade_out > 0: | 58 | if fade_out > 0: |