-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsound.py
74 lines (54 loc) · 1.31 KB
/
sound.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from constants import SOUND, MUSIC, SOUND_VOL, MUSIC_VOL, TRACKS
import random
try:
import pyglet.media.avbin
have_avbin = True
except:
pyglet.options['audio'] = ('silent')
have_avbin = False
# GENERAL
tracks = []
playing_tracks = []
def start_music():
for t in TRACKS:
tracks.append(play_music(t, None, 0))
inc_music()
def inc_music():
if not len(tracks):
return
t = random.choice(tracks)
tracks.remove(t)
playing_tracks.append(t)
t.volume = MUSIC_VOL
def dec_music():
if not len(playing_tracks):
return
t = random.choice(playing_tracks)
playing_tracks.remove(t)
tracks.append(t)
t.volume = 0
# MUSIC
def play_music(name, player, vol = MUSIC_VOL):
if not MUSIC:
return
if not have_avbin:
return
if not player:
player = pyglet.media.Player()
player.queue(pyglet.resource.media(name, streaming=True))
player.volume = vol
player.eos_action = 'loop'
player.play()
return player
# SOUND
sounds = {}
def load_sound(name):
if not SOUND:
return
if name not in sounds:
sounds[name] = pyglet.resource.media(name, streaming=False)
def play_sound(name, vol = SOUND_VOL):
if not SOUND:
return
load_sound(name)
sounds[name].play().volume = vol