You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.1 KiB
Python

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()