Last active
September 22, 2023 21:32
-
-
Save fuxoft/bda3ad93006f42233de64342f5e7130f to your computer and use it in GitHub Desktop.
gensym at line 30 generates non-unique values in Janet 1.31.0-c31314be
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn generator | |
[] | |
(def factory @{}) | |
(def generator-fun | |
(fn [output] | |
(ev/give output :stream-start) | |
(ev/give output 0) | |
(ev/give output :stream-end))) | |
(put factory :generate | |
(fn [self batch] | |
(def stream-out (ev/chan 1)) | |
(def generator (ev/chan)) | |
(ev/spawn (generator-fun generator)) | |
(assert (= :stream-start (ev/take generator))) | |
(ev/give stream-out (ev/take generator)) | |
(assert (= :stream-end (ev/take generator))) | |
stream-out)) | |
(put factory :new | |
(fn [&] | |
(def object (thaw factory)) | |
object)) | |
factory) | |
(def sinetone | |
(generator)) | |
(def track1 | |
@{:generators @{} | |
:note-on (fn [self note-num] | |
(print (gensym)) | |
(def generator (:new sinetone)) | |
(put (self :generators) :just-one generator)) | |
:renderer-coroutine (fn [self] | |
(coro | |
(forever | |
(map (fn [gen] (:generate gen 1)) (self :generators)) | |
(yield 0))))}) | |
(def wait | |
(do | |
(def render-fun | |
(do | |
(def cor (:renderer-coroutine track1)) | |
(fn [] (resume cor)))) | |
(fn [] | |
(repeat 10000 | |
(render-fun))))) | |
(forever | |
(:note-on track1 60) | |
(wait)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment