From 54bebfd260bc6d43a19b85c1006557479f03312b Mon Sep 17 00:00:00 2001 From: Jake Zerrer Date: Sat, 1 Nov 2025 17:19:05 -0400 Subject: Add bus functions --- src/midi.clj | 108 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 57 insertions(+), 51 deletions(-) diff --git a/src/midi.clj b/src/midi.clj index e330876..dabca7c 100644 --- a/src/midi.clj +++ b/src/midi.clj @@ -117,64 +117,70 @@ (m/? (m/via m/blk (.close receiver))) (log/log! {:level :info, :id :midi/rx-closed})))))) +(defn >bus + "Opens device named `name`. + + Device will consume `flow`, a flow of Message objects." + [name flow] + (let [device + (first + (select-devices (get-all-midi-device-info) + name false true))] + (with-device device + (fn [d] + (with-rx d flow))))) + +(defn bus name + (m/ap + (m/amb= + (m/? m/never) + (loop [] + (log/log! {:level :debug, :id :midi/echo-rx-awaiting-value}) + (m/amb + (m/? rv) + (recur))))))))))) (def run - (m/sp - (let [txd - (first - (select-devices (get-all-midi-device-info) - "CoreMIDI4J - IAC Bus" true false)) - - rxd - (first - (select-devices (get-all-midi-device-info) - "CoreMIDI4J - IAC Bus" false true))] - - (m/? (echo txd rxd 0 0))))) + (echo "CoreMIDI4J - IAC Bus" 0 0)) ;; CoreMidiSource is TX Device ;; CoreMidiDestination is RX Device -- cgit v1.2.3