From 17ec1243e674e5a211eeb86d7491c63b951e4fd7 Mon Sep 17 00:00:00 2001 From: Jake Zerrer Date: Wed, 5 Nov 2025 14:53:57 -0500 Subject: Implement basic CC messages --- src/scratch.clj | 51 ++++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) (limited to 'src/scratch.clj') diff --git a/src/scratch.clj b/src/scratch.clj index 43a3df0..63d54a3 100644 --- a/src/scratch.clj +++ b/src/scratch.clj @@ -2,7 +2,7 @@ (:require [midi :refer [print-all-midi-devices >bus 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)]))))) + (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))])))))))) (def cancel (run prn prn)) -- cgit v1.2.3