ODD
ODD Ball
ODD Ball 是 ODD 的 MIDI 硬體控制器:3 個打擊墊、4 顆旋鈕、3 支推桿。
它在 頻道 1 送出 CC、音符,設定檔引用了 1 份出處。 其中 10 個控制項標了未確認:數字是照目前出處的最佳判讀,按「學習」一次就能重新對應。
- 作者的 TouchDesigner 工具
- 10 個未確認
- 類型
- 硬體裝置
- 廠牌
- ODD
- 控制項
- 10 個控制項
- 訊息種類
- CC · 音符
- MIDI 頻道
- 1
- LED 回饋
- 不會送出
- 訊號
midi/oddball/…- 埠名稱比對
/odd\s*ball/i
拖曳旋鈕和推桿 · 點打擊墊和琴鍵 · 或接上真機按「接上」。除非你加了 MIDI 輸出,否則什麼都不會送出去。
MIDI 實作表
ODD Ball 每個控制項送出什麼
直接從設定檔產生,跟畫面上彈的是同一張表。頻道是 1–16,編號是真正的 MIDI 編號。
| 控制項 | 類型 | 訊息 | 頻道 | 編號 | 訊號 | LED 回饋 | 已確認 |
|---|---|---|---|---|---|---|---|
Move move |
旋鈕 | CC | 1 | 0 | midi/oddball/move |
— | 未確認 |
Spin spin |
旋鈕 | CC | 1 | 1 | midi/oddball/spin |
— | 未確認 |
Free fall freefall |
旋鈕 | CC | 1 | 2 | midi/oddball/freefall |
— | 未確認 |
Rot X rotx |
推桿 | CC | 1 | 3 | midi/oddball/rotx |
— | 未確認 |
Rot Y roty |
推桿 | CC | 1 | 4 | midi/oddball/roty |
— | 未確認 |
Rot Z rotz |
推桿 | CC | 1 | 5 | midi/oddball/rotz |
— | 未確認 |
Energy energy |
旋鈕 | CC | 1 | 6 | midi/oddball/energy |
— | 未確認 |
Tap / Bounce tap |
打擊墊 | 音符 · 力度 | 1 | 60 · C4 | midi/oddball/tap |
— | 未確認 |
Shake shake |
打擊墊 | 音符 · 力度 | 1 | 61 · C#4 | midi/oddball/shake |
— | 未確認 |
Twist twist |
打擊墊 | 音符 · 力度 | 1 | 62 · D4 | midi/oddball/twist |
— | 未確認 |
這一台還沒有寫 LED 回饋,OAV 不會讓它的燈亮,但每個控制項照樣可以彈、照樣送出各自的訊息。
出處
- 作者的工具 Midi_ODD_Ball_251212.tox (the artist's TouchDesigner tool and its annotations)the only source used; no manufacturer document was consulted — every control is marked unverified
這個設定檔從哪裡來
Che-Yu Wu's TouchDesigner tool (annotated): notes N1 Tap/Bounce, N2 Shake, N3 Twist (default notes 60–62, editable in the tool); CC0 MoveSmoothed, CC1 Spin Smoothed, CC2 Free Fall, CC3–5 X/Y/Z orientation, CC6 Energy; values scaled 0..128 → 0..1, orientation → 0..360°; note gates held with a 0.4 s release lag; a Mock mode switches the MIDI In for simulated LFO signals. TouchDesigner's MIDI In CHOP names channels 1-based (ch1ctrl75 = CC 74, ch10n37 = note 36); the numbers here are real MIDI numbers. Midi_ODD_Ball_251212.tox
說明
Mapping comes from the artist's TD tool, not from a manufacturer chart. The on-screen version is the TD tool's Mock mode: play the ball's gestures without the ball.
認得的埠名稱
- 比對
/odd\s*ball/i
訊號
每個控制項都會發出 midi/oddball/<控制項>(0..1)和 /raw。打擊墊多一個 /hit,無段旋鈕多 /delta,琴鍵有 /on、/off 和 n<音高>。最後動到的那個控制項是 midi/oddball/last。
用起來
把 ODD Ball 用在你的作品裡
一行嵌入
不用 import map,也不用建置。可以改
layout,加上hardware="ask"就有「接上」按鈕。<script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script> <oav-controller profile="odd-ball" readout></oav-controller>或用 iframe
給只能貼 iframe 的地方。每個事件都以
postMessage傳回來。<iframe src="https://openaudiovisual.com/embed/controller/?profile=odd-ball&readout" width="720" height="382" style="border:0;max-width:100%" allow="midi" title="ODD Ball"></iframe> <script> // every control the visitor plays arrives here addEventListener('message', (e) => { if (e.data?.source !== 'openav' || e.data.type !== 'control') return; console.log(e.data.detail.signal, e.data.detail.value); }); </script>送進 Ableton、TouchDesigner、Resolume
你在畫面上彈的,會變成真正的 MIDI,從 macOS 的 IAC 匯流排或 Windows 的 loopMIDI 埠送出。步驟在圖鑑頁。
<!-- what you play on this controller → the IAC bus (macOS) → Ableton, TouchDesigner, Resolume --> <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script> <oav-controller profile="odd-ball" midi-out="IAC" readout></oav-controller> <!-- Windows: midi-out="loopMIDI" · let the visitor pick a port: midi-out="ask" -->macOS:音訊 MIDI 設定 → MIDI 工作室 → IAC 驅動程式 → 勾「裝置在線上」。Windows 11:內建的 Windows MIDI Services 有 loopback(我們沒有實測);舊版 Windows:安裝 loopMIDI、新增一個埠,用
midi-out="loopMIDI"。
在 p5.js 裡,只要一行
一行注入會依這份設定檔裡的順序(也就是上面表格的順序)替旋鈕、推桿和打擊墊編號。網址加上 ?profile=odd-ball,畫面上的控制器就是這一台;真的 ODD Ball 接上時,會依埠名稱自動認出來。
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=odd-ball' }));| 在草稿裡 | 控制項 | 訊息 |
|---|---|---|
knob1 | Move move | CC 0 · 頻道 1 |
knob2 | Spin spin | CC 1 · 頻道 1 |
knob3 | Free fall freefall | CC 2 · 頻道 1 |
knob4 | Energy energy | CC 6 · 頻道 1 |
fader1 | Rot X rotx | CC 3 · 頻道 1 |
fader2 | Rot Y roty | CC 4 · 頻道 1 |
fader3 | Rot Z rotz | CC 5 · 頻道 1 |
pad1 | Tap / Bounce tap | 音符 60 · C4 · 頻道 1 |
pad2 | Shake shake | 音符 61 · C#4 · 頻道 1 |
pad3 | Twist twist | 音符 62 · D4 · 頻道 1 |
function draw() {
background(knob1 * 255); // Move · CC 0
circle(width / 2, height / 2, 50 + knob2 * 300); // Spin · CC 1
}
function padPressed(n, velocity) { // n = 1…3, as in the table
circle(random(width), random(height), velocity * 100);
}找不到
沒有你那台?
開一張 issue,寫廠牌型號、手上有沒有這台、手冊的連結。也可以自己寫設定檔,它就是一個 JSON 檔。
GitHub
這台的資料有錯嗎?
這一頁的每個數字都來自一個 JSON 檔。如果跟你的機器或手冊對不上,告訴我們你查的是哪個韌體版本,我們就改檔案。