33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
|
from pythonosc.dispatcher import Dispatcher
|
||
|
from pythonosc.osc_server import ThreadingOSCUDPServer
|
||
|
#from pythonosc.osc_server import AsyncIOOSCUDPServer
|
||
|
import logging
|
||
|
from pydub import AudioSegment
|
||
|
from pydub.playback import _play_with_simpleaudio
|
||
|
|
||
|
logging.basicConfig(format='[{asctime}][{levelname[0]}] {message}', \
|
||
|
style='{', level=logging.INFO, datefmt='%m/%d/%Y %I:%M:%S %p')
|
||
|
_l = logging.getLogger("vrc-osc-imm")
|
||
|
_l.debug("Set up formatting and level for log, establishing paths and function definition")
|
||
|
audio_segs = {"L": AudioSegment.from_mp3("./assets/audio/left.mp3"), "R": AudioSegment.from_mp3("./assets/audio/right.mp3")}
|
||
|
def play_clip(addr, val):
|
||
|
_l.debug(f"{addr}:{val}")
|
||
|
side = addr[-1]
|
||
|
if val:
|
||
|
if side not in ('L','R'):
|
||
|
_l.error("OSC address not valid for audio playback")
|
||
|
else:
|
||
|
_l.info(f"Playing {side}")
|
||
|
#play_file(audio_paths[side])
|
||
|
play_obj = _play_with_simpleaudio(audio_segs[side])
|
||
|
|
||
|
_l.debug("Creating dispatcher and mapping OSC addresses")
|
||
|
dispatcher = Dispatcher()
|
||
|
dispatcher.map("/avatar/parameters/Touch_Ear_*",play_clip)
|
||
|
server_addr = ("127.0.0.1",9001)
|
||
|
#server = AsyncIOOSCUDPServer(server_addr, dispatcher, asyncio.get_event_loop())
|
||
|
server = ThreadingOSCUDPServer(server_addr, dispatcher)
|
||
|
_l.info(f"Starting server at {server_addr[0]}:{server_addr[1]}")
|
||
|
#server.serve()
|
||
|
server.serve_forever()
|
||
|
_l.info("Exiting")
|