summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cpcache/61020924.basis1
-rw-r--r--.cpcache/61020924.cp1
-rw-r--r--.cpcache/61020924.main4
-rw-r--r--.gitignore17
-rw-r--r--.nrepl-port1
-rw-r--r--deps.edn3
-rw-r--r--src/main.clj45
7 files changed, 72 insertions, 0 deletions
diff --git a/.cpcache/61020924.basis b/.cpcache/61020924.basis
new file mode 100644
index 0000000..c6372b8
--- /dev/null
+++ b/.cpcache/61020924.basis
@@ -0,0 +1 @@
+{:classpath {"" {:path-key :paths}, "/Users/jake/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar" {:lib-name org.clojure/core.cache}, "/Users/jake/.m2/repository/refactor-nrepl/refactor-nrepl/3.10.0/refactor-nrepl-3.10.0.jar" {:lib-name refactor-nrepl/refactor-nrepl}, "/Users/jake/.m2/repository/missionary/missionary/b.46/missionary-b.46.jar" {:lib-name missionary/missionary}, "/Users/jake/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar" {:lib-name org.clojure/data.priority-map}, "/Users/jake/.m2/repository/cider/orchard/0.31.1/orchard-0.31.1.jar" {:lib-name cider/orchard}, "/Users/jake/.m2/repository/cider/cider-nrepl/0.53.2/cider-nrepl-0.53.2.jar" {:lib-name cider/cider-nrepl}, "src" {:path-key :paths}, "/Users/jake/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar" {:lib-name org.ow2.asm/asm}, "/Users/jake/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar" {:lib-name org.clojure/tools.reader}, "/Users/jake/.m2/repository/cloroutine/cloroutine/13/cloroutine-13.jar" {:lib-name cloroutine/cloroutine}, "/Users/jake/.m2/repository/org/clojure/tools.analyzer/1.1.1/tools.analyzer-1.1.1.jar" {:lib-name org.clojure/tools.analyzer}, "/Users/jake/.m2/repository/org/clojure/core.specs.alpha/0.4.74/core.specs.alpha-0.4.74.jar" {:lib-name org.clojure/core.specs.alpha}, "/Users/jake/.m2/repository/nrepl/nrepl/1.3.1/nrepl-1.3.1.jar" {:lib-name nrepl/nrepl}, "/Users/jake/.m2/repository/mx/cider/logjam/0.3.0/logjam-0.3.0.jar" {:lib-name mx.cider/logjam}, "/Users/jake/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar" {:lib-name org.clojure/clojure}, "/Users/jake/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar" {:lib-name org.reactivestreams/reactive-streams}, "/Users/jake/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar" {:lib-name org.clojure/core.memoize}, "resources" {:path-key :paths}, "/Users/jake/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.3/tools.analyzer.jvm-1.2.3.jar" {:lib-name org.clojure/tools.analyzer.jvm}, "/Users/jake/.m2/repository/org/clojure/spec.alpha/0.5.238/spec.alpha-0.5.238.jar" {:lib-name org.clojure/spec.alpha}}, :basis-config {:project "deps.edn", :user "/Users/jake/.config/clojure/deps.edn", :extra {:deps {nrepl/nrepl {:mvn/version "1.3.1"}, cider/cider-nrepl {:mvn/version "0.53.2"}, refactor-nrepl/refactor-nrepl {:mvn/version "3.10.0"}}, :aliases {:cider/nrepl {:main-opts ["-m" "nrepl.cmdline" "--middleware" "[refactor-nrepl.middleware/wrap-refactor,cider.nrepl/cider-middleware]"]}}}, :args nil, :aliases [:cider/nrepl]}, :mvn/repos {"central" {:url "https://repo1.maven.org/maven2/"}, "clojars" {:url "https://repo.clojars.org/"}}, :argmap {:main-opts ["-m" "nrepl.cmdline" "--middleware" "[refactor-nrepl.middleware/wrap-refactor,cider.nrepl/cider-middleware]"]}, :paths ["" "src" "resources"], :classpath-roots ["" "src" "resources" "/Users/jake/.m2/repository/cider/cider-nrepl/0.53.2/cider-nrepl-0.53.2.jar" "/Users/jake/.m2/repository/missionary/missionary/b.46/missionary-b.46.jar" "/Users/jake/.m2/repository/nrepl/nrepl/1.3.1/nrepl-1.3.1.jar" "/Users/jake/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar" "/Users/jake/.m2/repository/refactor-nrepl/refactor-nrepl/3.10.0/refactor-nrepl-3.10.0.jar" "/Users/jake/.m2/repository/cider/orchard/0.31.1/orchard-0.31.1.jar" "/Users/jake/.m2/repository/mx/cider/logjam/0.3.0/logjam-0.3.0.jar" "/Users/jake/.m2/repository/cloroutine/cloroutine/13/cloroutine-13.jar" "/Users/jake/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar" "/Users/jake/.m2/repository/org/clojure/core.specs.alpha/0.4.74/core.specs.alpha-0.4.74.jar" "/Users/jake/.m2/repository/org/clojure/spec.alpha/0.5.238/spec.alpha-0.5.238.jar" "/Users/jake/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.3/tools.analyzer.jvm-1.2.3.jar" "/Users/jake/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar" "/Users/jake/.m2/repository/org/clojure/tools.analyzer/1.1.1/tools.analyzer-1.1.1.jar" "/Users/jake/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar" "/Users/jake/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar" "/Users/jake/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar" "/Users/jake/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar"], :libs {org.clojure/clojure {:mvn/version "1.12.0", :deps/manifest :mvn, :parents #{[]}, :paths ["/Users/jake/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar"]}, org.clojure/tools.analyzer {:mvn/version "1.1.1", :deps/manifest :mvn, :dependents [org.clojure/tools.analyzer.jvm], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm]}, :paths ["/Users/jake/.m2/repository/org/clojure/tools.analyzer/1.1.1/tools.analyzer-1.1.1.jar"]}, org.clojure/core.specs.alpha {:mvn/version "0.4.74", :deps/manifest :mvn, :dependents [org.clojure/clojure], :parents #{[org.clojure/clojure]}, :paths ["/Users/jake/.m2/repository/org/clojure/core.specs.alpha/0.4.74/core.specs.alpha-0.4.74.jar"]}, org.clojure/spec.alpha {:mvn/version "0.5.238", :deps/manifest :mvn, :dependents [org.clojure/clojure], :parents #{[org.clojure/clojure]}, :paths ["/Users/jake/.m2/repository/org/clojure/spec.alpha/0.5.238/spec.alpha-0.5.238.jar"]}, mx.cider/logjam {:mvn/version "0.3.0", :exclusions #{org.clojure/clojure}, :deps/manifest :mvn, :dependents [cider/cider-nrepl], :parents #{[cider/cider-nrepl]}, :paths ["/Users/jake/.m2/repository/mx/cider/logjam/0.3.0/logjam-0.3.0.jar"]}, cider/orchard {:mvn/version "0.31.1", :exclusions #{org.clojure/clojure}, :deps/manifest :mvn, :dependents [cider/cider-nrepl], :parents #{[cider/cider-nrepl]}, :paths ["/Users/jake/.m2/repository/cider/orchard/0.31.1/orchard-0.31.1.jar"]}, org.clojure/tools.analyzer.jvm {:mvn/version "1.2.3", :deps/manifest :mvn, :dependents [cloroutine/cloroutine], :parents #{[missionary/missionary cloroutine/cloroutine]}, :paths ["/Users/jake/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.3/tools.analyzer.jvm-1.2.3.jar"]}, cloroutine/cloroutine {:mvn/version "13", :deps/manifest :mvn, :dependents [missionary/missionary], :parents #{[missionary/missionary]}, :paths ["/Users/jake/.m2/repository/cloroutine/cloroutine/13/cloroutine-13.jar"]}, refactor-nrepl/refactor-nrepl {:mvn/version "3.10.0", :deps/manifest :mvn, :parents #{[]}, :paths ["/Users/jake/.m2/repository/refactor-nrepl/refactor-nrepl/3.10.0/refactor-nrepl-3.10.0.jar"]}, org.ow2.asm/asm {:mvn/version "9.2", :deps/manifest :mvn, :dependents [org.clojure/tools.analyzer.jvm], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm]}, :paths ["/Users/jake/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar"]}, cider/cider-nrepl {:mvn/version "0.53.2", :deps/manifest :mvn, :parents #{[]}, :paths ["/Users/jake/.m2/repository/cider/cider-nrepl/0.53.2/cider-nrepl-0.53.2.jar"]}, missionary/missionary {:mvn/version "b.46", :deps/manifest :mvn, :parents #{[]}, :paths ["/Users/jake/.m2/repository/missionary/missionary/b.46/missionary-b.46.jar"]}, org.clojure/tools.reader {:mvn/version "1.3.6", :deps/manifest :mvn, :dependents [org.clojure/tools.analyzer.jvm], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm]}, :paths ["/Users/jake/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar"]}, org.reactivestreams/reactive-streams {:mvn/version "1.0.4", :deps/manifest :mvn, :dependents [missionary/missionary], :parents #{[missionary/missionary]}, :paths ["/Users/jake/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar"]}, nrepl/nrepl {:mvn/version "1.3.1", :deps/manifest :mvn, :parents #{[]}, :paths ["/Users/jake/.m2/repository/nrepl/nrepl/1.3.1/nrepl-1.3.1.jar"]}, org.clojure/core.memoize {:mvn/version "1.0.253", :deps/manifest :mvn, :dependents [org.clojure/tools.analyzer.jvm], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm]}, :paths ["/Users/jake/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar"]}, org.clojure/data.priority-map {:mvn/version "1.1.0", :deps/manifest :mvn, :dependents [org.clojure/core.cache], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm org.clojure/core.memoize org.clojure/core.cache]}, :paths ["/Users/jake/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar"]}, org.clojure/core.cache {:mvn/version "1.0.225", :deps/manifest :mvn, :dependents [org.clojure/core.memoize], :parents #{[missionary/missionary cloroutine/cloroutine org.clojure/tools.analyzer.jvm org.clojure/core.memoize]}, :paths ["/Users/jake/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar"]}}, :aliases {:deps {:replace-paths [], :replace-deps {org.clojure/tools.deps.cli {:mvn/version "0.11.86"}}, :ns-default clojure.tools.deps.cli.api, :ns-aliases {help clojure.tools.deps.cli.help}}, :test {:extra-paths ["test"]}, :dev {:extra-paths ["dev"]}, :cider/nrepl {:main-opts ["-m" "nrepl.cmdline" "--middleware" "[refactor-nrepl.middleware/wrap-refactor,cider.nrepl/cider-middleware]"]}}, :deps {org.clojure/clojure {:mvn/version "1.12.0"}, missionary/missionary {:mvn/version "b.46"}, nrepl/nrepl {:mvn/version "1.3.1"}, cider/cider-nrepl {:mvn/version "0.53.2"}, refactor-nrepl/refactor-nrepl {:mvn/version "3.10.0"}}} \ No newline at end of file
diff --git a/.cpcache/61020924.cp b/.cpcache/61020924.cp
new file mode 100644
index 0000000..8818d57
--- /dev/null
+++ b/.cpcache/61020924.cp
@@ -0,0 +1 @@
+:src:resources:/Users/jake/.m2/repository/cider/cider-nrepl/0.53.2/cider-nrepl-0.53.2.jar:/Users/jake/.m2/repository/missionary/missionary/b.46/missionary-b.46.jar:/Users/jake/.m2/repository/nrepl/nrepl/1.3.1/nrepl-1.3.1.jar:/Users/jake/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar:/Users/jake/.m2/repository/refactor-nrepl/refactor-nrepl/3.10.0/refactor-nrepl-3.10.0.jar:/Users/jake/.m2/repository/cider/orchard/0.31.1/orchard-0.31.1.jar:/Users/jake/.m2/repository/mx/cider/logjam/0.3.0/logjam-0.3.0.jar:/Users/jake/.m2/repository/cloroutine/cloroutine/13/cloroutine-13.jar:/Users/jake/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar:/Users/jake/.m2/repository/org/clojure/core.specs.alpha/0.4.74/core.specs.alpha-0.4.74.jar:/Users/jake/.m2/repository/org/clojure/spec.alpha/0.5.238/spec.alpha-0.5.238.jar:/Users/jake/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.3/tools.analyzer.jvm-1.2.3.jar:/Users/jake/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar:/Users/jake/.m2/repository/org/clojure/tools.analyzer/1.1.1/tools.analyzer-1.1.1.jar:/Users/jake/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar:/Users/jake/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar:/Users/jake/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar:/Users/jake/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar \ No newline at end of file
diff --git a/.cpcache/61020924.main b/.cpcache/61020924.main
new file mode 100644
index 0000000..6dc5574
--- /dev/null
+++ b/.cpcache/61020924.main
@@ -0,0 +1,4 @@
+-m
+nrepl.cmdline
+--middleware
+[refactor-nrepl.middleware/wrap-refactor,cider.nrepl/cider-middleware]
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b877d15
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,17 @@
+.DS_Store
+.idea
+*.log
+tmp/
+
+/target
+/classes
+/checkouts
+profiles.clj
+pom.xml
+pom.xml.asc
+*.jar
+*.class
+/.lein-*
+/.nrepl-port
+/.prepl-port
+/.cpcache
diff --git a/.nrepl-port b/.nrepl-port
new file mode 100644
index 0000000..668f17b
--- /dev/null
+++ b/.nrepl-port
@@ -0,0 +1 @@
+60733 \ No newline at end of file
diff --git a/deps.edn b/deps.edn
new file mode 100644
index 0000000..b806450
--- /dev/null
+++ b/deps.edn
@@ -0,0 +1,3 @@
+{:paths ["" "src" "resources"]
+ :deps {missionary/missionary {:mvn/version "b.46"}}
+ :aliases {:dev {:extra-paths ["dev"]}}}
diff --git a/src/main.clj b/src/main.clj
new file mode 100644
index 0000000..fdb306f
--- /dev/null
+++ b/src/main.clj
@@ -0,0 +1,45 @@
+(ns main
+ (:require [missionary.core :as m]
+ [clojure.set :refer [difference]]))
+
+;; How many times per second are output continuous values sampled and turned
+;; into events?
+(def sample-rate (atom 1))
+
+;; Temporary atom to explore the concept of note state as a continuous value
+(def notes-on (atom #{}))
+(def >notes-on (m/signal (m/watch notes-on)))
+
+(defn play-note [v] (swap! notes-on conj v))
+
+(defn stop-note [v] (swap! notes-on disj v))
+
+(def clock
+ (m/ap
+ (loop []
+ (m/amb
+ (m/?
+ (m/sleep (/ 1000 @sample-rate)))
+ :tick
+ (recur)))))
+
+#_(play-note 1)
+#_(stop-note 1)
+
+;; convert the continuous time >notes-on flow to a series of discrete midi note on and off events
+(def output
+ (m/eduction (map (fn [{:keys [note-on note-off]}] {:note-on note-on :note-off note-off}))
+ (m/reductions (fn [{:keys [active note-on note-off]} [curr _]]
+ {:note-on (difference (difference curr active) note-on)
+ :note-off (difference (difference active curr) note-off)
+ :active curr})
+ #{}
+ (m/sample
+ vector
+ >notes-on
+ clock))))
+
+(def cancel
+ ((m/reduce prn output) {} {}))
+
+(cancel)