{:beat-link-trigger-version "7.4.1",
 :triggers [{:bar true,
             :start "Start",
             :channel 1,
             :start-stop false,
             :note 127,
             :gear false,
             :stop true,
             :expressions {:setup "",
                           :activation ";; 再生開始時に /playing 1 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 1)))",
                           :deactivation ";; 再生終了時に /playing 0 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 0)))",
                           :tracked "(let [mf  (org.deepsymmetry.beatlink.data.MetadataFinder/getInstance)\n      tm  track-metadata\n      title   (when tm (.getTitle tm))\n      artist  (some-> (when tm (.getArtist tm)) .label)\n      dur     (when tm (.getDuration tm))\n      state   {:playing       trigger-active?\n               :on-air        on-air?\n               :bpm           effective-tempo\n               :beat          beat-number\n               :beat-in-bar   beat-within-bar\n               :pitch         pitch-multiplier\n               :title         title\n               :artist        artist\n               :duration      dur}\n      c (:osc-client @globals)]\n  (when (.isRunning mf)\n    (swap! locals\n           (fn [locs]\n             (let [old (:last-state locs)]\n               (when (and c (not= old state))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/playing\")        (int (if trigger-active? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/onAir\")          (int (if on-air? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")            (float effective-tempo))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beat\")           (int beat-number))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\")  (int beat-within-bar))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/pitchMultiplier\") (float pitch-multiplier))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/title\")          (or title \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/artist\")         (or artist \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/duration\")       (float (or dur 0))))\n               (assoc locs :last-state state))))))",
                           :beat "(when (and trigger-active? (:osc-client @globals))\n  (let [c (:osc-client @globals)]\n    (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")           (float effective-tempo))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beat\")          (int beat-number))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\") (int beat-within-bar))))",
                           :shutdown ""},
             :comment "",
             :outputs nil,
             :send true,
             :players #beat_link_trigger.util.PlayerChoice{:number 1},
             :enabled "Always",
             :message "Custom"}
            {:bar true,
             :start "Start",
             :channel 1,
             :start-stop false,
             :note 127,
             :gear false,
             :stop true,
             :expressions {:setup "",
                           :activation ";; 再生開始時に /playing 1 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 1)))",
                           :deactivation ";; 再生終了時に /playing 0 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 0)))",
                           :tracked "(let [mf  (org.deepsymmetry.beatlink.data.MetadataFinder/getInstance)\n      tm  track-metadata\n      title   (when tm (.getTitle tm))\n      artist  (some-> (when tm (.getArtist tm)) .label)\n      dur     (when tm (.getDuration tm))\n      state   {:playing       trigger-active?\n               :on-air        on-air?\n               :bpm           effective-tempo\n               :beat          beat-number\n               :beat-in-bar   beat-within-bar\n               :pitch         pitch-multiplier\n               :title         title\n               :artist        artist\n               :duration      dur}\n      c (:osc-client @globals)]\n  (when (.isRunning mf)\n    (swap! locals\n           (fn [locs]\n             (let [old (:last-state locs)]\n               (when (and c (not= old state))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/playing\")        (int (if trigger-active? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/onAir\")          (int (if on-air? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")            (float effective-tempo))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beat\")           (int beat-number))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\")  (int beat-within-bar))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/pitchMultiplier\") (float pitch-multiplier))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/title\")          (or title \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/artist\")         (or artist \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/duration\")       (float (or dur 0))))\n               (assoc locs :last-state state))))))",
                           :beat "(when (and trigger-active? (:osc-client @globals))\n  (let [c (:osc-client @globals)]\n    (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")           (float effective-tempo))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beat\")          (int beat-number))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\") (int beat-within-bar))))",
                           :shutdown ""},
             :comment "",
             :outputs nil,
             :send true,
             :players #beat_link_trigger.util.PlayerChoice{:number 2},
             :enabled "Always",
             :message "Custom"}
            {:bar true,
             :start "Start",
             :channel 1,
             :start-stop false,
             :note 127,
             :gear false,
             :stop true,
             :expressions {:setup "",
                           :activation ";; 再生開始時に /playing 1 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 1)))",
                           :deactivation ";; 再生終了時に /playing 0 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 0)))",
                           :tracked "(let [mf  (org.deepsymmetry.beatlink.data.MetadataFinder/getInstance)\n      tm  track-metadata\n      title   (when tm (.getTitle tm))\n      artist  (some-> (when tm (.getArtist tm)) .label)\n      dur     (when tm (.getDuration tm))\n      state   {:playing       trigger-active?\n               :on-air        on-air?\n               :bpm           effective-tempo\n               :beat          beat-number\n               :beat-in-bar   beat-within-bar\n               :pitch         pitch-multiplier\n               :title         title\n               :artist        artist\n               :duration      dur}\n      c (:osc-client @globals)]\n  (when (.isRunning mf)\n    (swap! locals\n           (fn [locs]\n             (let [old (:last-state locs)]\n               (when (and c (not= old state))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/playing\")        (int (if trigger-active? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/onAir\")          (int (if on-air? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")            (float effective-tempo))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beat\")           (int beat-number))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\")  (int beat-within-bar))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/pitchMultiplier\") (float pitch-multiplier))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/title\")          (or title \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/artist\")         (or artist \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/duration\")       (float (or dur 0))))\n               (assoc locs :last-state state))))))",
                           :beat "(when (and trigger-active? (:osc-client @globals))\n  (let [c (:osc-client @globals)]\n    (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")           (float effective-tempo))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beat\")          (int beat-number))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\") (int beat-within-bar))))",
                           :shutdown ""},
             :comment "",
             :outputs nil,
             :send true,
             :players #beat_link_trigger.util.PlayerChoice{:number 3},
             :enabled "Always",
             :message "Custom"}
            {:bar true,
             :start "Start",
             :channel 1,
             :start-stop false,
             :note 127,
             :gear false,
             :stop true,
             :expressions {:setup "",
                           :activation ";; 再生開始時に /playing 1 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 1)))",
                           :deactivation ";; 再生終了時に /playing 0 を送信\n(when-let [c (:osc-client @globals)]\n  (osc/osc-send c (str \"/deck/\" device-number \"/playing\") (int 0)))",
                           :tracked "(let [mf  (org.deepsymmetry.beatlink.data.MetadataFinder/getInstance)\n      tm  track-metadata\n      title   (when tm (.getTitle tm))\n      artist  (some-> (when tm (.getArtist tm)) .label)\n      dur     (when tm (.getDuration tm))\n      state   {:playing       trigger-active?\n               :on-air        on-air?\n               :bpm           effective-tempo\n               :beat          beat-number\n               :beat-in-bar   beat-within-bar\n               :pitch         pitch-multiplier\n               :title         title\n               :artist        artist\n               :duration      dur}\n      c (:osc-client @globals)]\n  (when (.isRunning mf)\n    (swap! locals\n           (fn [locs]\n             (let [old (:last-state locs)]\n               (when (and c (not= old state))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/playing\")        (int (if trigger-active? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/onAir\")          (int (if on-air? 1 0)))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")            (float effective-tempo))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beat\")           (int beat-number))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\")  (int beat-within-bar))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/pitchMultiplier\") (float pitch-multiplier))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/title\")          (or title \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/artist\")         (or artist \"\"))\n                 (osc/osc-send c (str \"/deck/\" device-number \"/duration\")       (float (or dur 0))))\n               (assoc locs :last-state state))))))",
                           :beat "(when (and trigger-active? (:osc-client @globals))\n  (let [c (:osc-client @globals)]\n    (osc/osc-send c (str \"/deck/\" device-number \"/bpm\")           (float effective-tempo))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beat\")          (int beat-number))\n    (osc/osc-send c (str \"/deck/\" device-number \"/beatWithinBar\") (int beat-within-bar))))",
                           :shutdown ""},
             :comment "",
             :outputs nil,
             :send true,
             :players #beat_link_trigger.util.PlayerChoice{:number 4},
             :enabled "Always",
             :message "Custom"}],
 :send-status? false,
 :expressions {:setup ";; 全トリガー共通の OSC クライアント (localhost:8000)\n(swap! globals assoc :osc-client (osc/osc-client \"localhost\" 8000))",
               :shutdown ";; 終了時に OSC クライアントを閉じる\n(when-let [c (:osc-client @globals)]\n  (osc/osc-close c))\n(swap! globals dissoc :osc-client)",
               :shared ""},
 :window-positions {:carabiner [1211 216],
                    :waveform-detail-4 [932 516 600 200],
                    :waveform-detail-1 [539 429 600 200],
                    :waveform-detail-3 [2573 722 600 200],
                    :triggers [1030 330 763 513],
                    :overlay [977 251],
                    :nrepl [887 363],
                    :waveform-detail-2 [327 351 600 200],
                    :player-status [680 314]},
 :tracks-using-playlists? false}
