summaryrefslogtreecommitdiff
path: root/src/scratch.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/scratch.clj')
-rw-r--r--src/scratch.clj50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/scratch.clj b/src/scratch.clj
index 77eb609..43a3df0 100644
--- a/src/scratch.clj
+++ b/src/scratch.clj
@@ -1,6 +1,8 @@
(ns scratch
(:require [midi :refer [print-all-midi-devices >bus <bus] :as midi]
- [missionary.core :as m]))
+ [missionary.core :as m])
+
+ (:import [javax.sound.midi MidiSystem Receiver ShortMessage MidiDevice$Info MidiDevice Transmitter MidiMessage]))
#_(print-all-midi-devices)
@@ -9,26 +11,36 @@
(def run
(<bus
midi-keyboard
- #_
- (fn [f] (m/ap
- (let [[i] ]
- (m/group-by #(.getCh %) ))
- (println (m/?< f))))
+ #_(fn [f] (m/ap
+ (let [[i]]
+ (m/group-by #(.getCh %)))
+ (println (m/?< f))))
(fn [f]
(m/ap
- (let [[ch vs]
- (m/?> 128 (midi/|channels (midi/|short-messages f)))]
- (println "CH" ch (m/?< vs)))
- #_
- (let [[ch >ch-messages]
- (m/?> 128 (midi/|channels (midi/|short-messages f)))
- #_#_
- [note >note-messages]
- (m/?> 128 (midi/|notes >ch-messages))]
- (println "CH" ch)
- #_#_
- (println "HELLO")
- [ch note (m/?< >note-messages)])))))
+ (let [[ch ch-messages]
+ (m/?> 128 (midi/|channels (midi/|short-messages f)))
+ [note note-messages] (m/?> 128 (midi/|notes ch-messages))]
+ (println
+ [ch note
+ (m/?<
+ (m/relieve
+ (m/reductions
+ (fn [_prev curr]
+ (when (some? curr)
+ (cond
+ (= (.getCommand ^ShortMessage curr) ShortMessage/NOTE_ON)
+ (.getData2 ^ShortMessage curr)
+ (= (.getCommand ^ShortMessage curr) ShortMessage/POLY_PRESSURE)
+ (.getData2 ^ShortMessage curr)
+ (= (.getCommand ^ShortMessage curr) ShortMessage/NOTE_OFF)
+ nil))) nil note-messages)))]))
+ #_(let [[ch >ch-messages]
+ (m/?> 128 (midi/|channels (midi/|short-messages f)))
+ #_#_[note >note-messages]
+ (m/?> 128 (midi/|notes >ch-messages))]
+ (println "CH" ch)
+ #_#_(println "HELLO")
+ [ch note (m/?< >note-messages)])))))
(def cancel
(run prn prn))