Compare commits

...

6 Commits

Author SHA1 Message Date
2f7f6d0a1c transfer to other computer 2025-10-01 10:26:15 +02:00
0d8e0a85c7 other midi files 2025-09-30 11:16:11 +02:00
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
9 changed files with 160 additions and 1 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
1ublau.mid Executable file

Binary file not shown.

BIN
2gelb.mid Executable file

Binary file not shown.

BIN
6rot.mid Executable file

Binary file not shown.

BIN
7eisblau.mid Executable file

Binary file not shown.

57
eisblau.py Normal file
View File

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

43
gelb.py Normal file
View File

@ -0,0 +1,43 @@
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)
client.send_message("/tcp_coordinates", (x, y, 0, 0, 0, 0))

View File

@ -20,12 +20,14 @@ def color_handler(unused_addr, c):
t.pencolor(c) t.pencolor(c)
def coordinate_handler(unused_addr, x, y, z, roll, pitch, yaw): def coordinate_handler(unused_addr, x, y, z, roll, pitch, yaw):
prev_size = t.pensize
t.pen(pensize=z) t.pen(pensize=z)
if z <= 0: if z <= 0:
t.penup() t.penup()
else: else:
t.pendown() t.pendown()
if prev_size == 0:
t.dot()
t.goto(x, y) t.goto(x, y)
if __name__ == "__main__": if __name__ == "__main__":

57
rot.py Normal file
View File

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