diff options
| author | Jake Zerrer <him@jakezerrer.com> | 2025-11-05 15:32:14 -0500 |
|---|---|---|
| committer | Jake Zerrer <him@jakezerrer.com> | 2025-11-05 15:32:55 -0500 |
| commit | 2a4fce4fef775f6661a625303de9b28b446f1877 (patch) | |
| tree | e470e267956b55f3b8260be55d3b74dd0acc0e34 /src/scratch.clj | |
| parent | 17ec1243e674e5a211eeb86d7491c63b951e4fd7 (diff) | |
Create keyboard function
Diffstat (limited to 'src/scratch.clj')
| -rw-r--r-- | src/scratch.clj | 31 |
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) |
