61 lines
1.7 KiB
Python
Executable File
61 lines
1.7 KiB
Python
Executable File
#!/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()
|