From 23cec55bfc564040fe39dbcfe380c1e5306212f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Fri, 10 Dec 2021 12:30:12 +0100 Subject: [PATCH] renaming files --- Partition.py | 34 --------------- Note.py => chroma_case/Note.py | 3 ++ chroma_case/Partition.py | 41 ++++++++++++++++++ chroma_case/__init__.py | 0 chroma_case/__pycache__/Note.cpython-39.pyc | Bin 0 -> 1030 bytes .../__pycache__/Partition.cpython-39.pyc | Bin 0 -> 1558 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 137 bytes leds.py | 1 - main.py | 21 +++++++++ test.py | 15 +++++++ 10 files changed, 80 insertions(+), 35 deletions(-) delete mode 100644 Partition.py rename Note.py => chroma_case/Note.py (87%) create mode 100644 chroma_case/Partition.py create mode 100644 chroma_case/__init__.py create mode 100644 chroma_case/__pycache__/Note.cpython-39.pyc create mode 100644 chroma_case/__pycache__/Partition.cpython-39.pyc create mode 100644 chroma_case/__pycache__/__init__.cpython-39.pyc create mode 100644 main.py create mode 100644 test.py diff --git a/Partition.py b/Partition.py deleted file mode 100644 index c54ec62..0000000 --- a/Partition.py +++ /dev/null @@ -1,34 +0,0 @@ -import asyncio, datetime -from typing import Callable - -from .Note import Note - -async def wait_until(dt): - # sleep until the specified datetime - now = datetime.datetime.now() - await asyncio.sleep((dt - now).total_seconds()) - -async def run_at(dt, coro): - await wait_until(dt) - return await coro - - -class Partition: - - def __init__(self, name:str, notes:list[Note]) -> None: - - self.__name = name - self.__notes = notes - - - async def play(self, output_lambda:Callable([str, tuple[int, int, int], int], None)): - now = datetime.datetime.now() - for note in self.__notes: - asyncio.create_task(run_at( - now + datetime.time(milliseconds = note.get_start_time()), - output_lambda( - note.get_key(), - note.get_color(), - note.get_duration() - ) - )) diff --git a/Note.py b/chroma_case/Note.py similarity index 87% rename from Note.py rename to chroma_case/Note.py index acca0d5..1d9e8dd 100644 --- a/Note.py +++ b/chroma_case/Note.py @@ -11,6 +11,9 @@ class Note: def get_key(self): return self.__key + def get_color(self): + return self.__color + def get_start_time(self): return self.__start_time diff --git a/chroma_case/Partition.py b/chroma_case/Partition.py new file mode 100644 index 0000000..02a2359 --- /dev/null +++ b/chroma_case/Partition.py @@ -0,0 +1,41 @@ +import asyncio, datetime +from typing import Callable + +from .Note import Note + +async def wait_until(dt): + # sleep until the specified datetime + now = datetime.datetime.now() + await asyncio.sleep((dt - now).total_seconds()) + +async def run_at(dt, coro): + await wait_until(dt) + return await coro + +class Partition: + + def __init__(self, name:str, notes:list[Note]) -> None: + + self.__name = name + self.__notes = notes + + + def play(self, output_lambda:Callable[[str, tuple[int, int, int], int], None]): + now = datetime.datetime.now() + tasks_to_wait = [] + for note in self.__notes: + tasks_to_wait.append( + asyncio.create_task( + lambda: asyncio.wait( + run_at( + now + datetime.timedelta(milliseconds= note.get_start_time()), + output_lambda( + note.get_key(), + note.get_color(), + note.get_duration() + ) + ) + ) + ) + ) + asyncio.wait(tasks_to_wait) diff --git a/chroma_case/__init__.py b/chroma_case/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chroma_case/__pycache__/Note.cpython-39.pyc b/chroma_case/__pycache__/Note.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cec098b918262432537c5d3400306d627282621b GIT binary patch literal 1030 zcmb7Dy>iqr5SIL(i+$k;6~had0(TS)!!SdU?wWLNG>%tr2LA-vE|PJ_Jw{&OY8swJ zZ61M+ie25=XJ$fi^6aNwt#?0ZSIVMj!En5M`!oB+8G9sSK5R5TqO{Kut{5=jTa+JG z%D}p2v7O`kKVyn`hs%Nw1Hi-9bd(=vCGgO&z=1X=V9Y+Z67axO6cK2*y8mOoh0gKd+Nb zQ^_R1DK=T1q&KoJ6It9Q`9?KWCi1M632o@j?VS#UDC(jU!lB~?2+Z<0efN?1XY}XT zq-l^&Vrt-_GO(|BT1730xuRS1iW*OiZs`FBeCY=^ XeP$gWjhUYc)WQ2b{RfKvjl%u{#(&TB literal 0 HcmV?d00001 diff --git a/chroma_case/__pycache__/Partition.cpython-39.pyc b/chroma_case/__pycache__/Partition.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d87e69cebabf81c3aac100942be5ff28e126bc8f GIT binary patch literal 1558 zcmZux&2Aev5GJ|Y)k>Be$4!$MXn~vx?8UnD(1T$FNPwn22nBpwpdjcaWv@f+DkK+y z4CQ14b`E`m9HgVqeSjYN7JKa}uTY?MXDG|DfKr&@%y2dQ=8tkP=n+`sAAXmAa687zc?slx2BwIjhUBZA<`i^h*d)p$N>rq{;S-*7kYklxk~~%&mBOCiu%KU1)Pfsbmh3slyNfdJshpFr+AV4j?j1znO4)U!o2 zCv*CoEclWv=}!Re4FL$`h}_Uo7PqOAUi)&Q+o-DFw;kzbRZ-S$?2OjaeBf&@jc~fC zE9ElQGUaUt?zka#3%0+9!_#`AhsAMuDyw0BtQ#}b<#bq_+Ik{IA)OxnBCRidSy%hh zS=)OrOD~$rmnK2Lh@7wp$xwwyEekUCf8^d9?@{lo$C2M(6 z+d4p8u|66T+f+h&1ireLZd3aRv;t^jA+(o3?hP)zygEA}jDZ-Lo@;uQU zu&26cCgMP}a2V-sfVJMJ=x+BtEX7q7J}m-`J|ao?0)I zF$J%H+zzlgofARk3^+hqhtBdHaqn1&;Pvr_1#iF$oi=0p7#!JMWSEHu`ALN+E2xgZ zFYYRn(DU7U-}~zipb-ak5^PT7vLD2G8nSFKPinV*G=BFh`r_5sG&P7c0=C9DN)*Z znQxzHFPw+A7HG^nsK3>-yo*9no7(1m6jfs-Hh#$QO_Xyib(kOf417LJ{lO}ahu?zT zVR1NRbQdVW-#_eMc6V_xaq)p^>sw)*j%C`!u zVcdn6?ybd%$|CzUYyk|+I+&gCwFr@i-q^#_FgqM?M9={op*_k2ak_oWZj6Jk=U#-Q96;$0)n-AUxUZ8;?0TYL%ZQ)JlkZS0$=foG|#y!{5PUz#;Y zh|1zj-~fkaP1(~VSh6(48*g`kf<4BY6G8N25P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HXenx(7s(x}( zW=3M3epFIwX^wtsW`TZkMp1rlVtjI9ajJfNd}dx|NqoFsLFFwDo80`A(wtN~kU5`$ Gm;nG@_8xZt literal 0 HcmV?d00001 diff --git a/leds.py b/leds.py index 121f10e..858bd39 100755 --- a/leds.py +++ b/leds.py @@ -27,7 +27,6 @@ def playNote(color, secondsToStay, pixelsToFill): pixels[pixelIndex] = color time.sleep(secondsToStay) -def incomingNote(color, time, pixelsToFill): diff --git a/main.py b/main.py new file mode 100644 index 0000000..e4901e1 --- /dev/null +++ b/main.py @@ -0,0 +1,21 @@ +from chroma_case.Partition import Partition +from chroma_case.Note import Note +import asyncio +import sys + +def printing(key, color, duration): + print(f"key: {key}, c:{color} for {duration / 1000}s") + + +def main(): + n = Note("fa", (0, 255, 0), 1000, 1000) + + p = Partition("test", [n]) + + p.play(printing) + + return 0 + + +if __name__ == "__main__": + sys.exit(asyncio.run(main())) \ No newline at end of file diff --git a/test.py b/test.py new file mode 100644 index 0000000..9dbc03c --- /dev/null +++ b/test.py @@ -0,0 +1,15 @@ +import asyncio + +async def nested(): + return 42 + +async def main(): + # Schedule nested() to run soon concurrently + # with "main()". + task = asyncio.create_task(nested()) + + # "task" can now be used to cancel "nested()", or + # can simply be awaited to wait until it is complete: + await task + +asyncio.run(main()) \ No newline at end of file