ocs.py
# Loeme vajalikud moodulid, osc teadete saatmiseks ja ühenduse võtmiseks serveriga
# from pythonosc import osc_message_builder
from pythonosc import udp_client
from random import random, randint

# Loeme mooduli pauside tegemiseks
import time


def varvi_koik(red=0, green=0, blue=0, paus=0.0):
    for kihi_nr in range(1, 11):
        client.send_message(f"/{kihi_nr}layer/red", red)
        client.send_message(f"/{kihi_nr}layer/green", green)
        client.send_message(f"/{kihi_nr}layer/blue", blue)
    if paus > 0:
        time.sleep(paus)


def varvi_kiht(kihi_nr, red, green, blue, paus: 0.0):
    client.send_message(f"/{kihi_nr}layer/red", red)
    client.send_message(f"/{kihi_nr}layer/green", green)
    client.send_message(f"/{kihi_nr}layer/blue", blue)
    if paus > 0:
        time.sleep(paus)


def fade_kiht(kihi_nr, fade, paus: 0.0):
    client.send_message(f"/{kihi_nr}layer/fade", fade)
    if paus > 0:
        time.sleep(paus)


def source_kiht(kihi_nr, source, paus: 0.0):
    client.send_message(f"/{kihi_nr}layer/source", source)
    if paus > 0:
        time.sleep(paus)


# Loome OSC kliendi ja ühendame selle serveriga (vajadusel muuda IP või port)

# client = udp_client.SimpleUDPClient("10.16.112.130", 6666)
client = udp_client.SimpleUDPClient("127.0.0.1", 6666)


def demo():
    # print("Kõik tühjaks")
    # varvi_koik()
    # time.sleep(1)
    client.send_message("/preset", 1.0)
    fade_kiht(11, 0, 0.0)
    print("Ühe kaupa juhuslikud värvid")
    for kiht in range(1, 11):
        fade_kiht(kiht, 1, 0.0)
        varvi_kiht(kiht, random(), random(), random(), 0.4)

    print("Juhuslikud värvivahetused")
    for _ in range(20):
        varvi_kiht(randint(1, 10), random(), random(), random(), 0.2)

    print("Juhuslikud värvivahetused")

    for nr in range(5):
        r = random()
        g = random()
        b = random()
        for kiht in range(1, 11):
            varvi_kiht(kiht, r, g, b, 0.2)

    print("Kõik koos")
    for i in range(10):
        varvi_koik(random(), random(), random(), 0.2)

    print("Trepist üles ja alla")
    for i in range(10):
        print(i, end=" ")
        for kiht in range(1, 11, 2):
            varvi_kiht(kiht, random(), random(), random(), 0.2)
        for kiht in range(1, 11, 2):
            varvi_kiht(11 - kiht, random(), random(), random(), 0.2)

    print("Juhuslik värv")
    varvi_koik(random(), random(), random(), 0.2)

    print("Valmis")


def mesi():
    fade_kiht(11, 0, 0.0)
    source_kiht(12, "3video", 0.0)
    client.send_message("/sourcepreset", 2)
    client.send_message("/sources/1video/videopath", "c:/tort/")
    client.send_message("/sources/2video/videopath", "c:/tort/")

    client.send_message("/sources/1video/clip", "mesi.png")
    client.send_message("/sources/2video/clip", "mesi2.png")
    client.send_message("/sources/1video/on", 1)
    client.send_message("/sources/2video/on", 1)

    client.send_message("/sources/1cam/on", 0)
    client.send_message("/sources/2cam/on", 0)
    for kiht in range(1, 11):
        varvi_kiht(kiht, 255, 255, 255, 0.0)
        source_kiht(kiht, f"{1+ kiht % 2}video", 0.0)
        fade_kiht(kiht, 1, 0.0)


#     fade_value = 0.2
#     while fade_value <= 1:
#         print(f"Fade: {fade_value}")
#         for kiht in range(1,11):
#             fade_kiht(kiht, fade_value, 0.0)
#         fade_value += 0.1
#         time.sleep(0.5)
# client.send_message("/store7", "")


def samavideo():
    fade_kiht(11, 0, 0.0)
    client.send_message("/sourcepreset", 3)
    client.send_message("/sources/1video/videopath", "c:/tort/")

    client.send_message("/sources/1video/clip", "particles.mp4")
    client.send_message("/sources/1video/on", 1)

    for kiht in range(1, 11):
        varvi_kiht(kiht, 255, 255, 255, 0.0)
        source_kiht(kiht, "1video", 0.0)
        fade_kiht(kiht, 1, 0.0)


def tamme():

    # Meil pole pisavalt kanaleid suurte kihtide jaoks
    fade_kiht(12, 0, 0.0)
    fade_kiht(11, 0, 0.0)
    videod = {
        1: "T.png",
        2: "A.png",
        3: "M.png",
        4: "E.png",
        5: "K.png",
        6: "O.png",
        7: "L.png",
    }
    k = {9: 1, 7: 2, 5: 3, 3: 3, 1: 4, 10: 5, 8: 6, 6: 6, 4: 7}
    client.send_message("/sourcepreset", 6)
    for kanal in range(1, 8):
        client.send_message(f"/sources/{kanal}video/videopath", "c:/tort/")
        client.send_message(f"/sources/{kanal}video/clip", videod[kanal])
        client.send_message(f"/sources/{kanal}video/on", 1)
    # alumine jääb tühjaks
    source_kiht(2, "2solid", 0.0)
    varvi_kiht(2, random(), random(), random(), 0.0)
    for kiht in k:
        varvi_kiht(kiht, random(), random(), random(), 0.0)
        source_kiht(kiht, f"{k[kiht]}video", 0.0)
        fade_kiht(kiht, 1, 0.3)


def lastetood():
    fade_kiht(12, 0, 0.0)
    client.send_message("/sourcepreset", 5)
    client.send_message("/sources/3video/videopath", "c:/tort/")

    client.send_message("/sources/3video/clip", "image2.jpg")
    client.send_message("/sources/3video/on", 1)
    varvi_kiht(12, 255, 255, 255, 0.0)
    source_kiht(12, "3video", 0.0)
    fade_kiht(12, 1, 0.0)

    for too in range(3, 17):
        client.send_message("/sources/3video/clip", f"image{too}.jpg")
        print(f"image{too}.jpg")
        time.sleep(4)

    client.send_message("/sources/3video/clip", "image2.jpg")


# lastetood()
# mesi()
# demo()
# samavideo()
print("Valmis")