ducking improved #68
This commit is contained in:
parent
11b27ede02
commit
ef9ac57d8e
@ -36,6 +36,7 @@ max_track_duration = 60
|
|||||||
# If ducking is enabled, the bot will automatically attenuate its volume when someone is talking.
|
# If ducking is enabled, the bot will automatically attenuate its volume when someone is talking.
|
||||||
ducking = False
|
ducking = False
|
||||||
ducking_volume = 0.05
|
ducking_volume = 0.05
|
||||||
|
ducking_threshold = 3000
|
||||||
|
|
||||||
[webinterface]
|
[webinterface]
|
||||||
enabled = False
|
enabled = False
|
||||||
@ -81,6 +82,9 @@ user_unban = userunban
|
|||||||
url_ban = urlban
|
url_ban = urlban
|
||||||
url_unban = urlunban
|
url_unban = urlunban
|
||||||
|
|
||||||
|
ducking = duck
|
||||||
|
ducking_threshold = duckthres
|
||||||
|
|
||||||
#command to reload the ban list
|
#command to reload the ban list
|
||||||
reload = reload
|
reload = reload
|
||||||
|
|
||||||
|
34
mumbleBot.py
34
mumbleBot.py
@ -168,7 +168,8 @@ class MumbleBot:
|
|||||||
self.on_ducking = False
|
self.on_ducking = False
|
||||||
if var.config.getboolean("bot", "ducking"):
|
if var.config.getboolean("bot", "ducking"):
|
||||||
self.is_ducking = True
|
self.is_ducking = True
|
||||||
self.ducking_volume = var.config.getfloat("bot", "ducking_volume")
|
self.ducking_volume = var.config.getfloat("bot", "ducking_volume", fallback=0.05)
|
||||||
|
self.ducking_threshold = var.config.getfloat("bot", "ducking_threshold", fallback=3000)
|
||||||
self.mumble.callbacks.set_callback(pymumble.constants.PYMUMBLE_CLBK_SOUNDRECEIVED, self.ducking_sound_received)
|
self.mumble.callbacks.set_callback(pymumble.constants.PYMUMBLE_CLBK_SOUNDRECEIVED, self.ducking_sound_received)
|
||||||
self.mumble.set_receive_sound(True)
|
self.mumble.set_receive_sound(True)
|
||||||
|
|
||||||
@ -526,6 +527,30 @@ class MumbleBot:
|
|||||||
self.send_msg(var.config.get(
|
self.send_msg(var.config.get(
|
||||||
'strings', 'current_volume') % int(self.volume_set * 100), text)
|
'strings', 'current_volume') % int(self.volume_set * 100), text)
|
||||||
|
|
||||||
|
elif command == var.config.get('command', 'ducking'):
|
||||||
|
if parameter == "" or parameter == "on":
|
||||||
|
self.is_ducking = True
|
||||||
|
self.ducking_volume = var.config.getfloat("bot", "ducking_volume", fallback=0.05)
|
||||||
|
self.ducking_threshold = var.config.getint("bot", "ducking_threshold", fallback=3000)
|
||||||
|
self.mumble.callbacks.set_callback(pymumble.constants.PYMUMBLE_CLBK_SOUNDRECEIVED,
|
||||||
|
self.ducking_sound_received)
|
||||||
|
self.mumble.set_receive_sound(True)
|
||||||
|
logging.info('bot: ducking is on')
|
||||||
|
msg = "Ducking on."
|
||||||
|
self.send_msg(msg, text)
|
||||||
|
elif parameter == "off":
|
||||||
|
self.is_ducking = False
|
||||||
|
self.mumble.set_receive_sound(False)
|
||||||
|
msg = "Ducking off."
|
||||||
|
logging.info('bot: ducking is off')
|
||||||
|
self.send_msg(msg, text)
|
||||||
|
|
||||||
|
elif command == var.config.get('command', 'ducking_threshold'):
|
||||||
|
if parameter is not None and parameter.isdigit():
|
||||||
|
self.ducking_threshold = int(parameter)
|
||||||
|
msg = "Ducking threshold set to %d." % self.ducking_threshold
|
||||||
|
self.send_msg(msg, text)
|
||||||
|
|
||||||
elif command == var.config.get('command', 'current_music'):
|
elif command == var.config.get('command', 'current_music'):
|
||||||
if len(var.playlist.playlist) > 0:
|
if len(var.playlist.playlist) > 0:
|
||||||
current_music = var.playlist.current_item()
|
current_music = var.playlist.current_item()
|
||||||
@ -882,8 +907,11 @@ class MumbleBot:
|
|||||||
self.last_volume_cycle_time = time.time()
|
self.last_volume_cycle_time = time.time()
|
||||||
|
|
||||||
def ducking_sound_received(self, user, sound):
|
def ducking_sound_received(self, user, sound):
|
||||||
self.on_ducking = True
|
if audioop.rms(sound.pcm, 2) > self.ducking_threshold:
|
||||||
self.ducking_release = time.time() + 1 # ducking release after 0.5s
|
print("ducking trigger")
|
||||||
|
self.on_ducking = True
|
||||||
|
self.ducking_release = time.time() + 1 # ducking release after 1s
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
# Parse the html from the message to get the URL
|
# Parse the html from the message to get the URL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user