summaryrefslogtreecommitdiff
path: root/src/scratch.clj
diff options
context:
space:
mode:
authorJake Zerrer <him@jakezerrer.com>2025-11-05 15:32:14 -0500
committerJake Zerrer <him@jakezerrer.com>2025-11-05 15:32:55 -0500
commit2a4fce4fef775f6661a625303de9b28b446f1877 (patch)
treee470e267956b55f3b8260be55d3b74dd0acc0e34 /src/scratch.clj
parent17ec1243e674e5a211eeb86d7491c63b951e4fd7 (diff)
Create keyboard function
Diffstat (limited to 'src/scratch.clj')
-rw-r--r--src/scratch.clj31
1 files changed, 3 insertions, 28 deletions
diff --git a/src/scratch.clj b/src/scratch.clj
index 63d54a3..80baa83 100644
--- a/src/scratch.clj
+++ b/src/scratch.clj
@@ -1,41 +1,16 @@
(ns scratch
(:require [midi :refer [print-all-midi-devices >bus <bus] :as midi]
- [missionary.core :as m])
-
- (:import [javax.sound.midi ShortMessage]))
+ [missionary.core :as m]))
#_(print-all-midi-devices)
(def midi-keyboard "CoreMIDI4J - Minilab3 MIDI")
(def run
- (<bus
- midi-keyboard
- (fn [f]
- (m/ap
- (let [[ch ch-messages]
- (m/?> 128 (midi/|channels (midi/|short-messages (m/stream f))))
- ch-messages (m/stream ch-messages)]
- (println
- (m/amb=
- (let [[note note-messages] (m/?> 128 (midi/|notes ch-messages))]
- [:key 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 [[control-number control-messages] (m/?> 128 (midi/|control-changes ch-messages))]
- [:control ch control-number (.getData2 ^ShortMessage (m/?< control-messages))]))))))))
+ (midi/<bus midi-keyboard midi/keyboard))
(def cancel
(run prn prn))
+
(cancel)