# JV-1080 Patch Select (M4L)

A Max for Live MIDI effect device that lets you select and browse patches on a
Roland JV-1080 sound module directly from Ableton Live — 640 factory/user
patches (USER + PR-A through PR-D banks) with a category browser, direct
CoreMIDI connection to the hardware, and correct recall when you save and
reload a Live Set.

## Features

- Bank / Patch / Channel controls that automatically send Bank Select MSB
  (CC0) → Bank Select LSB (CC32) → Program Change in the correct order
- VALUE dial: a single continuous parameter (0–1791) that scrolls through
  every bank in hardware order (USER → PR-A…D → CARD → XP-A…D), fully
  synced with Bank/Patch and automatable/MIDI-mappable in Live
- Cat / Preset browser: filter by category, then pick a patch by name
  (`U001 SomePatch`) — selecting one sends the bank/patch change immediately
- On-panel JV-1080-style LCD that fetches and displays the current patch name
  via SysEx
- Direct CoreMIDI I/O via a bundled `midibridge` helper — no virtual MIDI
  cable or extra routing required, just pick the output port from the device
- Bank/Patch/VALUE are saved as Live device parameters, so your selection is
  recalled correctly when a Live Set is reloaded (including graceful
  handling of the "midibridge not yet connected" moment right after load)

## Requirements

- macOS (Apple Silicon or Intel)
- Ableton Live 11 or later, with Max for Live installed
- A Roland JV-1080 connected via CoreMIDI — either a USB-MIDI interface, a
  MIDI interface's DIN ports, or a network MIDI session that exposes a
  CoreMIDI port for the JV-1080
- The JV-1080's MIDI IN must be reachable from the Mac; SysEx patch-name
  fetch also requires the JV-1080's MIDI OUT to be routed back in

## Installation

1. Unzip the downloaded package.
2. Double-click **Install.command**.
   - Approve any macOS security prompt if one appears (see Troubleshooting).
   - This copies the device's dependency files into
     `~/Documents/Max 9/Library/cotofu/` (and also
     `~/Documents/Max 8/Library/cotofu/` if a Max 8 folder exists), and
     clears the macOS quarantine flag on the bundled `midibridge` binary.
3. Move `JV1080 Patch Select.amxd` into your Ableton Live **User Library**
   (Live > Places > User Library, typically
   `~/Music/Ableton/User Library/Presets/MIDI Effects/Max MIDI Effect/`).
4. In Live, drag the device onto a MIDI track routed to the JV-1080.

## Usage

The whole device is one JV-1080-style panel — there are no separate
dropdowns or numboxes, everything below the LCD lives in the bottom strip.

1. **PORT**: click the PORT row (LED + port name) to open a popup and pick
   the CoreMIDI output port connected to your JV-1080. The device connects
   directly — no separate MIDI routing in Live's I/O is required for
   sending patch changes. The LED lights up green once connected.
2. **CH**: drag up/down on the CH row to set the MIDI channel the
   JV-1080's Part is listening on.
3. Select a patch either by:
   - the **LCD**: click the bank name to step to the next bank, or
     drag up/down on the number/patch-name area to change the Patch number,
   - the **VALUE** dial (drag up/down, or use the ▲▼ steppers, or
     Cmd-drag for fine control), or
   - the **CAT / PRESET** browser in the bottom strip — click CAT to filter
     by category from a popup, then click PRESET to open a scrollable list
     of named patches (mouse wheel or click-and-drag to scroll) and pick
     one, or step through the current category with the ◀ ▶ buttons.
4. **FETCH**: click to request the current patch name from the JV-1080 via
   SysEx and refresh the on-panel LCD.
5. **RESEND**: click to resend the current Bank/Patch/Channel selection —
   useful after power-cycling the JV-1080 or reconnecting MIDI.
6. Bank, Patch, Channel, Unit, and Value are saved as Live device
   parameters even though there's no separate widget for them: automate
   them, MIDI-map them to a hardware controller, and they will be recalled
   when you reload the Live Set (the device waits for the bridge to
   reconnect before re-syncing, so a saved selection is not silently
   overwritten).

## Getting sound

This device **selects patches only — it does not carry notes or audio.**
To play and hear the JV-1080, set up sound the usual way for external
hardware. The simplest is Live's built-in **External Instrument** device
on the same track:

- *MIDI To*: the MIDI port your JV-1080 is connected to
- *Audio From*: the audio interface inputs the JV's outputs are wired to

Alternatively, monitor the JV-1080 through your mixer and just use this
device for patch selection.

## Separate MIDI in/out ports

The Port menu opens the input and output that share the same port name.
If your setup needs *different* ports for each direction (for example,
sending through one interface and receiving through another), use Live's
own routing instead:

1. Set Port to **"Track (Live routing)"**
2. Choose the *input* with the track's **MIDI From**
3. Choose the *output* with an **External Instrument** device placed
   after this device (**MIDI To** → the port your JV-1080 is connected to)

Program/bank changes work over any Live version this way. SysEx features
(Fetch etc.) over track routing require **Live 11.1+**, and passing SysEx
through External Instrument may depend on your Live version — if Fetch
does not respond in this configuration, patch selection still works.

## Known limitations

- **Direct connection is macOS-only (Apple Silicon).** The PORT popup's
  direct CoreMIDI connection is implemented via a compiled Swift helper
  (`midibridge`); there is no Windows or Intel-Mac build of it.
  On Windows or Intel Macs, set Port to **"Track (Live routing)"** and
  route the track's MIDI output to your JV-1080 — patch selection works
  over normal Live routing, and SysEx features require Live 11.1+.
  This mode is currently untested on Windows; reports welcome.
- The category browser only covers USER and PR-A–D (640 patches harvested
  from a real unit); CARD and XP-A–D expansion banks are not included in the
  browser but remain selectable via Bank/Patch/VALUE.
- SysEx patch-name fetch requires the JV-1080's MIDI OUT to be wired back
  into the Mac; without it, Bank/Patch/PC selection still works, but the LCD
  patch name will not update.

## Troubleshooting

**Device shows "not connected" / PORT popup is empty**
- Confirm the JV-1080 is powered on and its MIDI interface is visible in
  Audio MIDI Setup (Applications > Utilities > Audio MIDI Setup > MIDI
  Studio) before opening Live.
- Reselect the port from the PORT popup, or click **Resend**.
- If the PORT popup never populates, quit and reopen Live (the `midibridge`
  process needs to start and enumerate CoreMIDI endpoints once per Live
  session).

**macOS blocks `midibridge` from running (Gatekeeper warning)**
- Run **Install.command** again — it clears the quarantine flag on the
  binary. If macOS still refuses, open System Settings > Privacy & Security
  and allow the blocked item, or run in Terminal:
  `xattr -d com.apple.quarantine ~/Documents/"Max 9"/Library/cotofu/midibridge`

**SysEx patch name never updates after Fetch**
- Verify the JV-1080's MIDI OUT is physically connected and routed back to
  the Mac (SysEx receive requires this; sending patch changes does not).
- Check the JV-1080's SysEx receive is enabled (Utility menu on the unit)
  and its Device ID matches the Unit# field on the device.

**Bank/Patch reverts to an old value right after loading a Live Set**
- This is expected for a few hundred milliseconds while `midibridge`
  reconnects; the saved VALUE parameter is the source of truth and the
  display will settle once the bridge reports ready.

---

# 日本語

## 概要

Roland JV-1080 のパッチ(音色)を Ableton Live から直接選択・ブラウズできる
Max for Live MIDI エフェクトデバイスです。USER + PR-A〜PR-D 計640パッチの
カテゴリブラウザ、CoreMIDI 経由でのハードウェアへの直結、Live セット保存/
ロード時の正しいリコールに対応しています。

## 動作要件

- macOS(Apple Silicon / Intel)
- Ableton Live 11 以降、Max for Live インストール済み
- CoreMIDI で接続された Roland JV-1080(USB-MIDI インターフェース、MIDI
  インターフェースの DIN ポート、またはネットワーク MIDI 経由で CoreMIDI
  ポートとして見えていること)

## インストール手順

1. ダウンロードした zip を解凍する
2. **Install.command** をダブルクリックする
   - macOS のセキュリティ警告が出た場合は下記トラブルシューティングを参照
   - `~/Documents/Max 9/Library/cotofu/`(Max 8 フォルダがあれば
     `~/Documents/Max 8/Library/cotofu/` にも)へ依存ファイル一式がコピーされ、
     同梱の `midibridge` の quarantine 属性が解除されます
3. `JV1080 Patch Select.amxd` を Ableton Live の User Library
   (Live > Places > User Library、通常は
   `~/Music/Ableton/User Library/Presets/MIDI Effects/Max MIDI Effect/`)
   に移動する
4. Live で MIDI トラックにドラッグして使用する

## 使い方

デバイスは JV-1080 風パネル1枚のみで、独立したドロップダウンや数値ボックス
はありません。LCD より下はすべて下段ストリップに統合されています。

- **PORT**: 下段ストリップの PORT (LED + ポート名) をクリックしてポップアップ
  を開き、JV-1080 が繋がっている CoreMIDI ポートを選択(LED は接続完了で緑に)
- **CH**: CH 表示を上下ドラッグして JV-1080 側パートの受信チャンネルに合わせる
- **LCD のバンク表示をクリック**で次バンクへ順送り、**番号/パッチ名部分を
  上下ドラッグ**で Patch 番号を直接変更、または **VALUE** ダイヤル(ドラッグ/
  ▲▼/Cmd+ドラッグ)、または **CAT / PRESET** ブラウザ(CAT クリックでカテゴリ
  ポップアップ、PRESET クリックでスクロール可能な一覧、◀▶で前後移動)でパッチ
  を選択
- **FETCH**: SysEx で現在のパッチ名を取得しパネル LCD を更新
- **RESEND**: 現在の選択を再送(電源入れ直し後など)
- Bank/Patch/Channel/Unit/Value は専用ウィジェットが無くても Live の
  デバイスパラメータとしてセット保存され、ロード時に復元されます

## 音を出すには

このデバイスは**パッチの切り替え専用**で、ノートやオーディオは扱いません。
JV-1080 を演奏して音を聴くには、外部ハードウェアの通常のセットアップが
必要です。いちばん簡単なのは同じトラックに Live 標準の **External
Instrument** を置く方法です:

- *MIDI To*: JV-1080 がつながっている MIDI ポート
- *Audio From*: JV の出力をつないだオーディオインターフェースの入力

あるいはミキサー経由で JV-1080 をモニターし、このデバイスはパッチ選択
専用として使ってください。

## MIDI の入力と出力を別ポートにしたい場合

Port メニューは「同じ名前のポート」の入出力をまとめて開きます。方向ごとに
別のポートを使いたい場合は、Live 側のルーティングを使ってください:

1. Port を **"Track (Live routing)"** にする
2. **入力**はトラックの **MIDI From** で選ぶ
3. **出力**はこのデバイスの後ろに置いた **External Instrument** の
   **MIDI To** で選ぶ(JV-1080 がつながっているポート)

この方法でプログラム/バンクチェンジは確実に動作します。SysEx 系機能
(Fetch 等)をトラックルーティングで使うには **Live 11.1 以降**が必要で、
External Instrument 経由の SysEx 通過は Live のバージョンに依存する可能性
があります — この構成で Fetch が応答しなくても、パッチ選択自体は動きます。

## 既知の制約

- **直結機能は macOS (Apple Silicon) 専用です。** PORT ポップアップの CoreMIDI
  直結は Swift 製ツール `midibridge` によるもので、Windows / Intel Mac 版は
  ありません。Windows / Intel Mac では PORT を **"Track (Live routing)"** にして
  トラックの MIDI 出力を JV-1080 にルーティングしてください(パッチ選択は
  通常の Live ルーティングで動作、SysEx 機能は Live 11.1 以降が必要)。
  Windows での動作は未検証です。
- カテゴリブラウザは実機収穫データ(USER + PR-A〜D)のみが対象です。CARD /
  XP-A〜D 拡張バンクはブラウザ対象外ですが、LCD の Bank/Patch や VALUE では
  選択可能です。

## トラブルシューティング

- **"not connected" と表示される / PORT ポップアップが空**: JV-1080 の電源と
  MIDI 接続を確認し(Audio MIDI設定で見えているか)、PORT ポップアップから
  選び直すか RESEND を押す。改善しない場合は Live を再起動する。
- **Gatekeeper に `midibridge` がブロックされる**: Install.command を再実行
  するか、ターミナルで
  `xattr -d com.apple.quarantine ~/Documents/"Max 9"/Library/cotofu/midibridge`
  を実行する。
- **Fetch してもパッチ名が更新されない**: JV-1080 の MIDI OUT がマシンに
  返っているか、JV-1080 側の SysEx 受信設定と Device ID(Unit# と一致)を
  確認する。

---

© 2026 Itsuki Doi (Cotofu). All rights reserved. Not affiliated with Roland
Corporation. JV-1080 is a trademark of Roland Corporation.
