aboutsummaryrefslogtreecommitdiff
path: root/helpers/music_file.py
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2016-06-20 23:08:22 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2016-06-20 23:15:47 +0200
commit9de92b6dd2bd906f6a64fce7c90a6aff0dbb27a2 (patch)
treec654b7691e8bc92bd1726554e0d353604ebb4d71 /helpers/music_file.py
parentd479af33afa54fee7c22701c6012a1579ead395f (diff)
downloadMusicSampler-9de92b6dd2bd906f6a64fce7c90a6aff0dbb27a2.tar.gz
MusicSampler-9de92b6dd2bd906f6a64fce7c90a6aff0dbb27a2.tar.zst
MusicSampler-9de92b6dd2bd906f6a64fce7c90a6aff0dbb27a2.zip
Added music name, currently playing musics, pause/unpause
Diffstat (limited to 'helpers/music_file.py')
-rw-r--r--helpers/music_file.py19
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
3import pygame 3import pygame
4 4
5class MusicFile: 5class 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: