diff --git a/eisblau.py b/eisblau.py new file mode 100644 index 0000000..0e735b0 --- /dev/null +++ b/eisblau.py @@ -0,0 +1,57 @@ +import argparse +import math +import time +from mido import MidiFile +from pythonosc import udp_client +import mido +import random + +mid = MidiFile('7eisblau.mid') + +random.seed(10) + +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) +client.send_message("/color", "blue") + + +accrued_time = 0 +note_count = 0 +coor = (50, 50) +direction = [1, 0] + + +client.send_message("/tcp_coordinates", (50, 50, 0, 0, 0, 0)) +for msg in mid.tracks[1]: + t = mido.tick2second(msg.time, mid.ticks_per_beat, 1000000) + beats = msg.time / mid.ticks_per_beat + accrued_time += t + if msg.type != "note_on" or msg.time == 0: + time.sleep(t) + continue + note_count += 1 + if note_count > 4: + note_count = 0 + coor = (coor[0] + direction[0] * accrued_time * 21, coor[1] + direction[1] * accrued_time * 21) + client.send_message("/tcp_coordinates", (coor[0], coor[1], 6, 0, 0, 0)) + accrued_time = 0 + for i, m in enumerate(direction): + if m != 0: + direction[i] = 0 + else: + direction[i] = random.choice((1, -1)) + + + + + print(msg.note) + time.sleep(t) + + +client.send_message("/tcp_coordinates", (coor[0], coor[1], 0, 0, 0, 0)) diff --git a/music_tracker.py b/gelb.py similarity index 94% rename from music_tracker.py rename to gelb.py index 03e404b..51691c8 100644 --- a/music_tracker.py +++ b/gelb.py @@ -39,3 +39,5 @@ for msg in mid.tracks[1]: x = math.cos(adj_angle) * magnitude client.send_message("/tcp_coordinates", (x, y, 6, 0, 0, 0)) time.sleep(t) + +client.send_message("/tcp_coordinates", (x, y, 0, 0, 0, 0)) diff --git a/main.py b/main.py index dc2b366..7ec5e61 100644 --- a/main.py +++ b/main.py @@ -20,12 +20,14 @@ def color_handler(unused_addr, c): t.pencolor(c) def coordinate_handler(unused_addr, x, y, z, roll, pitch, yaw): + prev_size = t.pensize t.pen(pensize=z) if z <= 0: t.penup() else: t.pendown() - + if prev_size == 0: + t.dot() t.goto(x, y) if __name__ == "__main__": diff --git a/rot.py b/rot.py new file mode 100644 index 0000000..5adab45 --- /dev/null +++ b/rot.py @@ -0,0 +1,57 @@ +import argparse +import math +import time +from mido import MidiFile +from pythonosc import udp_client +import mido +import random + +mid = MidiFile('6rot.mid') + +random.seed(10) + +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) +client.send_message("/color", "red") + + +accrued_time = 0 +note_count = 0 +center = (50, 50) +radius = 10 +direction = [1, 0] + + +client.send_message("/tcp_coordinates", (50, 50, 0, 0, 0, 0)) +for msg in mid.tracks[1]: + t = mido.tick2second(msg.time, mid.ticks_per_beat, 1000000) + beats = msg.time / mid.ticks_per_beat + accrued_time += t + if msg.type != "note_on" or msg.time == 0 or msg.velocity == 0: + time.sleep(t) + continue + print(msg.note) + + note_count += 1 + client.send_message("/tcp_coordinates", (center[0], center[1], 6, 0, 0, 0)) + + client.send_message("/tcp_coordinates", (center[0], center[1], 0, 0, 0, 0)) + if note_count > 4: + client.send_message("/tcp_coordinates", (center[0], center[1], 0, 0, 0, 0)) + center = (random.randint(0, 300), random.randint(0, 300)) + client.send_message("/tcp_coordinates", (center[0], center[1], 0, 0, 0, 0)) + + note_count = 0 + + + + time.sleep(t) + + +client.send_message("/tcp_coordinates", (coor[0], coor[1], 0, 0, 0, 0))