import argparse import subprocess from pythonosc.dispatcher import Dispatcher from pythonosc import osc_server from pythonosc import udp_client from typing import List, Any client = udp_client.SimpleUDPClient("127.0.0.1", 58110) def send_message(channel, message): print("will send a message ", channel, message) client.send_message(channel, message) def track_0(): cmd_0 = "ffmpeg -y -i \"$(tree -if ./audio_0 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/00.wav" proc_0 = subprocess.Popen(cmd_0,shell=True) wav_0 = proc_0.communicate()[0] def track_1(): cmd_1 = "ffmpeg -y -i \"$(tree -if ./audio_0 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/01.wav" proc_1 = subprocess.Popen(cmd_1,shell=True) wav_1 = proc_1.communicate()[0] def track_2(): cmd_2 = "ffmpeg -y -i \"$(tree -if ./audio_1 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/02.wav" proc_2 = subprocess.Popen(cmd_2,shell=True) wav_2 = proc_2.communicate()[0] def track_3(): cmd_3 = "ffmpeg -y -i \"$(tree -if ./audio_1 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/03.wav" proc_3 = subprocess.Popen(cmd_3,shell=True) wav_3 = proc_3.communicate()[0] def track_4(): cmd_4 = "ffmpeg -y -i \"$(tree -if ./audio_2 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/04.wav" proc_4 = subprocess.Popen(cmd_4,shell=True) wav_4 = proc_4.communicate()[0] def track_5(): cmd_5 = "ffmpeg -y -i \"$(tree -if ./audio_2 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/05.wav" proc_5 = subprocess.Popen(cmd_5,shell=True) wav_5 = proc_5.communicate()[0] def track_6(): cmd_6 = "ffmpeg -y -i \"$(tree -if ./audio_3 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/06.wav" proc_6 = subprocess.Popen(cmd_6,shell=True) wav_6 = proc_6.communicate()[0] def track_7(): cmd_7 = "ffmpeg -y -i \"$(tree -if ./audio_3 | grep -Eo '^(.*/)([^/]*)\.mp3$' | shuf -n 1)\" ./wav_files/07.wav" proc_7 = subprocess.Popen(cmd_7,shell=True) wav_7 = proc_7.communicate()[0] def init(address: str, *args: List[Any]) -> None: track_0() track_2() track_4() track_6() send_message("/begin/00", "./wav_files/00.wav") send_message("/begin/02", "./wav_files/02.wav") send_message("/begin/04", "./wav_files/04.wav") send_message("/begin/06", "./wav_files/06.wav") track_1() track_3() track_5() track_7() def set_done(address: str, *args: List[Any]) -> None: value1 = args[0] doneno = address[-2:] print(f"done{doneno}: {value1}") if doneno == "00": send_message("/begin/01", "./wav_files/01.wav") track_0() if doneno == "01": send_message("/begin/00", "./wav_files/00.wav") track_1() if doneno == "02": send_message("/begin/03", "./wav_files/03.wav") track_2() if doneno == "03": send_message("/begin/02", "./wav_files/02.wav") track_3() if doneno == "04": send_message("/begin/05", "./wav_files/05.wav") track_4() if doneno == "05": send_message("/begin/04", "./wav_files/04.wav") track_5() if doneno == "06": send_message("/begin/07", "./wav_files/07.wav") track_6() if doneno == "07": send_message("/begin/06", "./wav_files/06.wav") track_7() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--ip", default="127.0.0.1", help="The ip of the OSC server") parser.add_argument("--port", type=int, default=57120, help="The port the OSC server is listening on") args = parser.parse_args() dispatcher = Dispatcher() dispatcher.map("/done00", set_done) dispatcher.map("/done01", set_done) dispatcher.map("/done02", set_done) dispatcher.map("/done03", set_done) dispatcher.map("/done04", set_done) dispatcher.map("/done05", set_done) dispatcher.map("/done06", set_done) dispatcher.map("/done07", set_done) dispatcher.map("/hello", init) server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher) print("Serving on {}".format(server.server_address)) server.serve_forever()