diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/.DS_Store differ diff --git a/2gelb.mid b/2gelb.mid new file mode 100755 index 0000000..71f7535 Binary files /dev/null and b/2gelb.mid differ diff --git a/music_tracker.py b/music_tracker.py new file mode 100644 index 0000000..c39ef46 --- /dev/null +++ b/music_tracker.py @@ -0,0 +1,39 @@ +import argparse +import math +import time +from mido import MidiFile +from pythonosc import udp_client +import mido + +mid = MidiFile('2gelb.mid') + + + +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=5005, + help="The port the OSC server is listening on") +args = parser.parse_args() + +client = udp_client.SimpleUDPClient(args.ip, args.port) +angle = 0 +magnitude = 20 + +for msg in mid.tracks[1]: + t = mido.tick2second(msg.time, mid.ticks_per_beat, 1000000) + beats = msg.time / mid.ticks_per_beat + time.sleep(t) + rotation = 2 * math.pi * beats / 16 + + angle += rotation + magnitude += beats + if msg.type != "note_on": + continue + + print(angle) + print(magnitude) + + y = math.sin(angle) * magnitude + x = math.cos(angle) * magnitude + client.send_message("/tcp_coordinates", (x, y, 10, 0, 0, 0))