61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
|
||
|
import pymumble_py3
|
||
|
from pymumble_py3.callbacks import PYMUMBLE_CLBK_SOUNDRECEIVED as PCS
|
||
|
import sounddevice as sd
|
||
|
import numpy as np
|
||
|
import threading
|
||
|
import time
|
||
|
from modules.custom_mumble import CustomMumble
|
||
|
from setproctitle import setproctitle
|
||
|
|
||
|
|
||
|
setproctitle("Garmr")
|
||
|
|
||
|
|
||
|
# Connection details for Mumble server
|
||
|
server = "mumble.example.com" # server address
|
||
|
nick = "Garmr_Test"
|
||
|
port = 64738 # port number
|
||
|
passwd = "" # password
|
||
|
|
||
|
# Audio settings
|
||
|
SAMPLE_RATE = 48000
|
||
|
CHANNELS = 2
|
||
|
|
||
|
# Create a Mumble client using the custom wrapper class
|
||
|
mumble = CustomMumble(server, nick, password=passwd, port=port)
|
||
|
mumble.set_application_string("garmr")
|
||
|
|
||
|
# Set the sample rate and channels for Mumble
|
||
|
mumble.set_receive_sound((SAMPLE_RATE, CHANNELS))
|
||
|
|
||
|
# Create a SoundDevice audio handler
|
||
|
audio_handler = sd.OutputStream(samplerate=SAMPLE_RATE, channels=CHANNELS)
|
||
|
|
||
|
# Set the audio handler in the custom Mumble class
|
||
|
mumble.set_audio_handler(audio_handler)
|
||
|
|
||
|
# Set up the sound received callback
|
||
|
mumble.callbacks.set_callback(PCS, mumble.sound_received_handler)
|
||
|
|
||
|
# Start the Mumble client
|
||
|
mumble.start()
|
||
|
|
||
|
mumble.is_ready() # Wait for the client to be ready
|
||
|
|
||
|
# Keep the script running until interrupted
|
||
|
try:
|
||
|
while True:
|
||
|
time.sleep(1)
|
||
|
except KeyboardInterrupt:
|
||
|
pass
|
||
|
finally:
|
||
|
# Stop and close the SoundDevice stream
|
||
|
audio_handler.stop()
|
||
|
audio_handler.close()
|
||
|
|
||
|
# Stop the Mumble client
|
||
|
mumble.stop()
|