Compare commits

..

4 Commits

Author SHA1 Message Date
06524577ff finished gelb 2025-09-30 11:13:50 +02:00
44b7caed76 Merge branch 'master' into mussorgsky 2025-09-09 10:37:08 +02:00
1a07709d39 almost finished gelb 2025-09-09 10:16:11 +02:00
f5c6e36d05 init gelb 2025-09-09 09:48:00 +02:00
3 changed files with 41 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
2gelb.mid Executable file

Binary file not shown.

41
music_tracker.py Normal file
View File

@@ -0,0 +1,41 @@
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 = 0
mean = 74.1
client.send_message("/color", "yellow")
for msg in mid.tracks[1]:
t = mido.tick2second(msg.time, mid.ticks_per_beat, 1000000)
beats = msg.time / mid.ticks_per_beat
rotation = 2 * math.pi * beats / 16
angle += rotation
magnitude += beats * 3
if msg.type != "note_on" or msg.time == 0:
time.sleep(t)
continue
print(msg.note)
adj_angle = angle + (msg.note - mean) / 9
y = math.sin(adj_angle) * magnitude
x = math.cos(adj_angle) * magnitude
client.send_message("/tcp_coordinates", (x, y, 6, 0, 0, 0))
time.sleep(t)