EXAMPLES

記述例

「これはどう書くのか」に答えるページです。図の下にケーブル表と部材表を出しているものがあります。表に何が出るかが答えそのものである例が多く、そこが読めないと書き分けた意味がわかりません。

01カメラをスイッチャーにつなぐ

ポートを宣言して、つなぐ。最小の1枚はこれだけです。

機材に口を宣言して、口と口をつなぎますout SDI : sdi は「SDI という名前の出力が1つあり、そこを通るのは SDI 信号」という意味です。

basic.khmclean
device cam "カメラ"       as camera   { out SDI : sdi }
device sw  "スイッチャー" as switcher { in  1   : sdi }

cam.SDI -> sw.1 : sdi
output
カメラSDIスイッチャー1

cam sw SDI 1 は自分で決める名前です。camera switcher sdi は決められた語から選びます。どちらがどちらかは下の「自由に決める語と、選ぶ語」にまとめてあります。

ケーブル表

番号送出受け信号長さ送出端受け端
カメラスイッチャーSDI

長さもケーブル番号も書いていないので、表の該当欄は空です。何も書いていないことと未定と書いたことは別で、その区別は下の「長さがまだわからない」にあります。

02長さ・ケーブル番号・被覆の色を書く

信号名のうしろに、長さ、番号、色の順で足します。

結線に足せるものは決まった順に並びます。長さ"番号"[color=…]。どれも省けます。

length.khmclean
device cam "カメラ"       as camera   { out SDI : sdi }
device sw  "スイッチャー" as switcher { in  1   : sdi  out PGM : sdi }
device rec "レコーダー"   as recorder { in  SDI : sdi }

cam.SDI -> sw.1    : sdi 30m "V-01" [color=青]
sw.PGM  -> rec.SDI : sdi  2m "V-10"
output
V-01 30mV-10 2mカメラSDIスイッチャー1PGMレコーダーSDI

ケーブル表

番号送出受け信号長さ送出端受け端
V-01カメラスイッチャーSDI30m
V-10スイッチャーレコーダーSDI2m

番号は現場で読み上げるものなので、そのまま表の1列目になります。色は図の線の色になり、白黒で刷るときは theme: mono にすると色ではなく線種で描き分けます。

03長さがまだわからない

?m と書きます。空欄のままにするのとは別の意味になります。

長さを省くことは元からできました。ただその空欄は2つの意味を同時に持っていました。「まだ測っていない」「誰も考えていない」です。van に積む人が見る表では、片方だけが残っている仕事です。

unknown.khmclean
device dk  "卓"   as mixer   { out L, R, SUB : xlr }
device sp1 "SP1"  as speaker { in IN : xlr }
device sp2 "SP2"  as speaker { in IN : xlr }
device sub "サブ" as speaker { in IN : xlr }

dk.L   -> sp1.IN : xlr 15m "A-01"   # 測った
dk.R   -> sp2.IN : xlr ?m  "A-02"   # ケーブルは要る。長さはこれから
dk.SUB -> sub.IN : xlr     "A-03"   # 長さについて何も言っていない
output
A-01 15mA-02 ?mA-03LRSUBSP1INSP2INサブIN

ケーブル表

番号送出受け信号長さ送出端受け端
A-01SP1XLR15m
A-02SP2XLR?m
A-03サブXLR

?m は表に ?m と出ます。単位は書きます。どの単位で測るかは未定の対象ではないからです。?m ?ft など、この言語が知っている単位すべてが使えます。

?m も長さなので、長さとして扱われます。無線区間には書けませんし、adapter の端に書けばその端はソケットになります(下の「変換ケーブルと変換アダプタ」)。

04同じつなぎ方を何本もまとめて書く

宣言では 1..4、結線では (1, 2, 3, 4) です。

口の宣言は範囲で書けます。in 1..4 : sdi は4つの入力です。in CH[1..16] : xlr のように接頭辞つきでも書けます。

many.khmclean
device sw  "スイッチャー" as switcher { out 1..4 : sdi }
device rec "レコーダー"   as recorder { in  1..4 : sdi }

sw.(1, 2, 3, 4) -> rec.(1, 2, 3, 4) : sdi 5m
output
5m5m5m5mスイッチャー1234レコーダー1234

ケーブル表

番号送出受け信号長さ送出端受け端
スイッチャーレコーダーSDI5m
スイッチャーレコーダーSDI5m
スイッチャーレコーダーSDI5m
スイッチャーレコーダーSDI5m

結線側は括弧に並べます。左右の数が揃っていれば順に結ばれ、4本の別々の結線になります。表も4行です。

結線では sw.(1..4) という範囲の書き方は使えません。これは意図的です。 口の並びは連番であることが多いので宣言では範囲が便利ですが、結線を範囲で書くと、片側の口が1つずれただけで黙って全部が1つずれた結線になります。図は正しく描かれ、表も正しく出て、現場で挿すまで誰も気づきません。並べて書けば、数が合わないことがその場でわかります。

05変換ケーブル1本ですませる(HDMI-DVI など)

via で結線に添えます。1本のケーブルなので1行です。

HDMI-DVI のケーブルは、切れ目のない1本です。途中に止まる場所はありません。だからこれは結線に添える情報で、via で書きます。

lead.khmclean
device pc  "PC"       as computer { out HDMI : hdmi }
device mon "モニター" as display  { in  DVI  : dvi }

pc.HDMI -> mon.DVI : hdmi 2m "V-01" via "HDMI-DVI変換ケーブル"
output
V-01 2m ⇄PCHDMIモニターDVI

ケーブル表

番号送出受け信号長さ送出端受け端
V-01PCモニターHDMI2m

部材表

(空)

ケーブル表に1行、部材表は空です。1個の物は1行になります。これを adapter で書くと図の途中に箱が立ち、1本のケーブルが2本に見えてしまいます。

06片側がケーブル一体の変換アダプタ(USB-HDMI など)

端の数ではなく、どの端がソケットかで決まります。

USB-HDMI の変換は端が2つですが、これは分岐点です。USB 側は生えていて、HDMI 側はソケットで、そこに届くケーブルは誰かが持っていく1本だからです。前項の HDMI-DVI ケーブルも端は2つで、こちらは1本です。端の数では区別できません。

結線は、長さかケーブル番号が書かれていなければ一体です。 この1つの規則が表を決めます。

dongle.khmclean
device pc  "ノートPC"       as computer  { out USB  : usb }
adapter dg "USB-HDMI変換"                { in  USB  : usb
                                            out HDMI : hdmi }
device pj  "プロジェクター" as projector { in  HDMI : hdmi }

pc.USB  -> dg.USB  : usb              # 一体。ケーブル表に出ない
dg.HDMI -> pj.HDMI : hdmi 5m "V-01"   # ソケット。持っていくケーブル1本
output
V-01 5mノートPCUSBUSB-HDMI変換USBHDMIプロジェクターHDMI

ケーブル表

番号送出受け信号長さ送出端受け端
V-01USB-HDMI変換プロジェクターHDMI5m

部材表

部材つながる先
USB-HDMI変換1ノートPC / プロジェクター

USB 側には何も書いていないので一体と読まれ、ケーブル表に出ません。HDMI 側には 5m "V-01" があるのでソケットと読まれ、持っていくケーブルとして1行出ます。変換器そのものは部材表に1個。現場で必要なものと過不足なく一致します。

07分配パネルのように、口が全部ソケットのもの

差し込む先の数だけケーブルが要ります。

同じ adapter でも、口が全部ソケットならケーブルはその数だけ要ります。前項との違いは書き方ではなく、それぞれの結線に長さと番号を書いたかどうかだけです。

panel.khmclean
device dk  "卓"         as mixer   { out MAIN : xlr }
adapter pp "分配パネル"            { in  IN : xlr
                                      out A  : xlr
                                      out B  : xlr }
device sp1 "SP1"        as speaker { in IN : xlr }
device sp2 "SP2"        as speaker { in IN : xlr }

dk.MAIN -> pp.IN  : xlr 10m "A-01"
pp.A    -> sp1.IN : xlr  5m "A-02"
pp.B    -> sp2.IN : xlr  5m "A-03"
output
A-01 10mA-02 5mA-03 5mMAIN分配パネルINABSP1INSP2IN

ケーブル表

番号送出受け信号長さ送出端受け端
A-01分配パネルXLR10m
A-02分配パネルSP1XLR5m
A-03分配パネルSP2XLR5m

部材表

部材つながる先
分配パネル1卓 / SP1 / SP2

3本と、パネル1枚。端がいくつあっても規則は同じです。

08成型の分岐ケーブル(4分岐など)

as cable を足すと、部材ではなくケーブル表に出ます。

尻尾が全部成型された分岐ケーブルは、部材であると同時にケーブルです。van に積まれ、番号が振られ、積む人が見るのはケーブル表です。部材表にだけ載せると、その人の見る紙に載りません。

moulded.khmclean
device  dk  "卓" as mixer { out MAIN : xlr }
adapter fan "XLR4分岐ケーブル" as cable 5m "C-01" {
  in  IN : xlr
  out A  : xlr
  out B  : xlr
}
device sp1 "SP1" as speaker { in IN : xlr }
device sp2 "SP2" as speaker { in IN : xlr }

dk.MAIN -> fan.IN : xlr
fan.A   -> sp1.IN : xlr
fan.B   -> sp2.IN : xlr
output
MAINXLR4分岐ケーブルINABSP1INSP2IN

ケーブル表

番号送出受け信号長さ送出端受け端
C-01XLR4分岐ケーブル卓 / SP1 / SP2XLR5m

部材表

(空)

1個の物が1行です。プラグごとに3行にはなりません。届く先はまとめて並びます。部材表からは外れるので、二重に数えられません。

as cable のうしろには結線と同じように長さとケーブル番号を書けます。書くものが同じなのは、指しているものが同じ誰かが探して測って番号を振るケーブルだからです。

09TRRS を TRS 2本に分ける

同じ形の物が2通りあります。分かれ目は結線に長さを書いたかどうかだけです。

1本のケーブルとして書く場合。ヘッドセット分岐のように、TRRS のプラグから2本の尻尾が生えている物です。

splitter-lead.khmclean
device pc "ノートPC" as computer { io HS : trrs35 }

adapter sp "TRRS→TRS×2 分岐ケーブル" as cable 0.2m "A-01" {
  io  IN  : trrs35
  out MIC : trs35
  out HP  : trs35
}

device mic "マイク"     as microphone { in PLUG : trs35 }
device hp  "ヘッドホン" as speaker    { in PLUG : trs35 }

pc.HS  -> sp.IN    : trrs35   # 生えている
sp.MIC -> mic.PLUG : trs35    # 生えている
sp.HP  -> hp.PLUG  : trs35    # 生えている
output
ノートPCHSTRRS→TRS×2 分岐ケーブルINMICHPマイクPLUGヘッドホンPLUG

ケーブル表

番号送出受け信号長さ送出端受け端
A-01TRRS→TRS×2 分岐ケーブルノートPC / マイク / ヘッドホンTRRS 3.5mm0.2m

部材表

(空)

結線には何も書きません。 : trrs35 : trs35 だけです。長さもケーブル番号も付けない。書いた瞬間そこはソケットになり、「別途ケーブルが要る」という意味に変わります。1本なので書きません。長さと番号は as cable のうしろに、物として1つだけ付けます。

次は差し込み口がある分岐アダプタとして書く場合。宣言はほとんど同じです。

splitter-panel.khmclean
device pc "ノートPC" as computer { io HS : trrs35 }

adapter sp "TRRS分岐アダプタ" {
  io  IN  : trrs35
  out MIC : trs35
  out HP  : trs35
}

device mic "コンデンサマイク" as microphone { in IN : trs35 }
device amp "アンプ"           as amplifier  { in IN : trs35 }

pc.HS  -> sp.IN  : trrs35            # 生えている
sp.MIC -> mic.IN : trs35 2m "A-01"   # ソケット
sp.HP  -> amp.IN : trs35 3m "A-02"   # ソケット
output
A-01 2mA-02 3mノートPCHSTRRS分岐アダプタINMICHPコンデンサマイクINアンプIN

ケーブル表

番号送出受け信号長さ送出端受け端
A-01TRRS分岐アダプタコンデンサマイクTRS 3.5mm2m
A-02TRRS分岐アダプタアンプTRS 3.5mm3m

部材表

部材つながる先
TRRS分岐アダプタ1ノートPC / コンデンサマイク / アンプ
1本のケーブル分岐アダプタ
as cable "A-01"付ける付けない
各結線の長さ・番号書かない書く
ケーブル表1行2行
部材表1個

変えたのは2か所だけです。どちらも PC 側には何も書いていないので、TRRS のプラグが生えている点は共通しています。分岐アダプタの側で部材表の「つながる先」にノートPC が入っているのはそのためです。

現場での判断はこれだけです — その口に別のケーブルを挿すか。挿すなら長さか番号を書く、挿さないなら書かない。

10ワイヤレスマイクを書く

無線の信号型を使えば、線ではなく波として描かれます。

uhf のような無線の信号型はコネクタを持ちません。長さも書けません。代わりに [ch=…] でチャンネルを書きます。

wireless.khmclean
device mic "ワイヤレスマイク" as microphone { out RF : uhf }
device rx  "受信機"           as interface  {
  in  RF  : uhf
  out CH1 : xlr
}
device desk "卓" as mixer { in CH1 : xlr }

mic.RF -> rx.RF     : uhf [ch=38]
rx.CH1 -> desk.CH1  : xlr 3m "A-01"
output
ch 38A-01 3mワイヤレスマイクRF受信機RFCH1CH1

ケーブル表

番号送出受け信号長さ送出端受け端
A-01受信機XLR3m

無線表

番号送出受け信号乗り物チャンネル
ワイヤレスマイク受信機ワイヤレス (UHF)ch 38

2枚に分かれます。 ケーブル表に出るのは受信機から卓までの XLR 1本だけで、電波の区間は無線表です。長さもコネクタも巻くものも無い行がケーブル表にあると、測り忘れたケーブルに見えてしまうためです。

2枚は別の人が別のものを探して読みます。届く長さがあるかと、同じチャンネルが2系統で重なっていないかです。

11無線 LAN 経由の NDI のように、何かに乗っている信号

over で「中身」と「乗り物」を分けて書きます。

NDI は映像ですが、流れているのは Ethernet です。無線 LAN なら電波です。図が語りたいのは NDI で、物理を決めるのは Ethernet や WiFi です。over はこの2つを分けます。

over.khmclean
device cam "中継カメラ"       as camera   { out WIFI : ndi }
device ap  "アクセスポイント" as router   { io  WIFI : ndi
                                             out LAN  : ndi }
device pc  "収録PC"           as recorder { in  LAN  : ndi }

cam.WIFI -> ap.WIFI : ndi over wifi [ch=36]
ap.LAN   -> pc.LAN  : ndi over lan 20m "N-01"
output
ch 36N-01 20m中継カメラWIFIアクセスポイントWIFILAN収録PCLAN

ケーブル表

番号送出受け信号長さ送出端受け端
N-01アクセスポイント収録PCNDI20m

無線表

番号送出受け信号乗り物チャンネル
中継カメラアクセスポイントNDIWi-Fich 36

乗り物が物理を決めます。 同じ NDI が2枚に分かれました。over wifi の区間は無線表で、コネクタを持たずチャンネルを持ちます。over lan の区間はケーブル表で、RJ45 と長さと番号を持ちます。中身が同じでも乗り物で行き先が変わるのが、over の効き方そのものです。

無線表の乗り物の欄には Wi-Fi が入ります。名前は中身のもの、周波数は乗り物のものなので、列が分かれています。前の項のワイヤレスマイクではこの欄が空でした。uhf は自分自身の乗り物で、「UHF が UHF に乗っている」とは書く意味がないからです。

over を書かなければ、信号は自分自身の乗り物です。これまでどおりの動きになります。

12同じ LAN に Dante と NDI が同居する

乗り物が同じでも、中身が違えば別の線として描かれます。

1本の Cat ケーブルに何が乗っているかは、現場では別々の関心事です。over で書き分ければ、同じ RJ45 でも図の上では別の系統として読めます。

dante.khmclean
device dk "卓"         as mixer    { io DANTE : dante }
device sw "L2スイッチ" as router   { io 1 : dante  io 2 : ndi }
device pc "配信PC"     as computer { io LAN : ndi }

dk.DANTE -> sw.1   : dante over lan 15m "N-01"
sw.2     -> pc.LAN : ndi   over lan 10m "N-02"
output
N-01 15mN-02 10mDANTEL2スイッチ12配信PCLAN

ケーブル表

番号送出受け信号長さ送出端受け端
N-01L2スイッチDante15m
N-02L2スイッチ配信PCNDI10m

13場所ごとにまとめる

group で囲むと、図でも囲まれます。

ステージ、ラック、調整室。置き場所が違うものは違う場所に描かれてほしいので、group で囲みます。

group.khmclean
diagram "会場" { direction: LR }

group stage "ステージ" {
  device cam1 "FX3"  as camera     { out SDI : sdi }
  device mic1 "SM58" as microphone { out OUT : xlr }
}

group rack "ラック" {
  device sw    "ATEM" as switcher { in 1..2      : sdi  out PGM  : sdi }
  device mixer "DM3"  as mixer    { in CH[1..2]  : xlr  out L, R : xlr }
}

cam1.SDI -> sw.1      : sdi 30m "V-01"
mic1.OUT -> mixer.CH1 : xlr 20m "A-01"
output
会場ステージラックV-01 30mA-01 20mFX3SDISM58OUTATEM12PGMDM3CH1CH2LR

機材表

機器種別設置ポート数
FX3cameraステージ1
SM58microphoneステージ1
ATEMswitcherラック3
DM3mixerラック4

機材表にはグループが列として出ます。diagram "会場" { direction: LR } で向きを変えられます。

14口の並びに切れ目を入れる

gap は実物のパネルの余白です。

実物のパネルには区切りがあります。図がそれと違う並びだと、図を見ながら現物を触る人が数え間違えますgap はその余白です。gap 2 で2つぶん空きます。

gap.khmclean
device sw "ATEM Mini Extreme" as switcher {
  in  1..4 : hdmi
  gap
  in  5..8 : sdi
  gap 2
  in  AUDIO_L, AUDIO_R : trs
  out PGM    : sdi
  gap
  out STREAM : lan
}
output
ATEM Mini Extreme12345678AUDIO_LAUDIO_RPGMSTREAM

15同じ機材を何台も置く

model で一度書いて、from で呼びます。

同じ卓を2台置くとき、口の一覧を2回書く必要はありません。model に書いて device … from … で呼びます。名前だけ変えられます。

library.khmclean
model dm3 "Yamaha DM3" as mixer {
  in  CH[1..16] : xlr
  out L, R      : xlr
  @vendor "Yamaha"
}

device foh from dm3
device mon from dm3 "モニター卓"
output
Yamaha DM3CH1CH2CH3CH4CH5CH6CH7CH8CH9CH10CH11CH12CH13CH14CH15CH16LRモニター卓CH1CH2CH3CH4CH5CH6CH7CH8CH9CH10CH11CH12CH13CH14CH15CH16LR

@vendor "Yamaha" のような注記も付けられます。機材表に出ます。

16挿さらない組み合わせを見つけてもらう

コネクタが同じでも通らないものを指摘します。

形が合うことと通ることは別です。HDBaseT は Cat ケーブルと RJ45 を使いますが Ethernet ではないので、スイッチには挿せません。SDI と同期基準は BNC を共有しますが、映像を入れてもロックしません。

faults.khm2 diagnostic
device ext   "HDBaseT受信器"       as interface { out CAT : hdbaset }
device netsw "L2スイッチ"           as router    { in  1   : lan }
device cam   "カメラ"               as camera    { out SDI : sdi }
device fs    "フレームシンクロナイザ" as generic   { in  REF : genlock }

ext.CAT -> netsw.1 : hdbaset 20m "N-01"
cam.SDI -> fs.REF  : sdi     5m  "V-90"
output
N-01 20mV-90 5mHDBaseT受信器CATL2スイッチ1カメラSDIフレームシンクロナイザREF

これはこのページのビルドが実際に出した文言です。警告は既定ではビルドを止めません。止めたいときは --strict を付けます。

17白黒で刷る

theme: mono にすると色ではなく線種で描き分けます。

現場に持っていく紙は白黒のことがあります。色だけで描き分けた図は、刷った瞬間に読めなくなります。

mono.khmclean
diagram "白黒印刷用" { theme: mono }

device cam "カメラ"       as camera   { out SDI : sdi }
device sw  "スイッチャー" as switcher { in 1 : sdi  out PGM : sdi }
device rec "レコーダー"   as recorder { in SDI : sdi }

cam.SDI -> sw.1    : sdi 30m "V-01" [color=青]
sw.PGM  -> rec.SDI : sdi 2m  "V-10"
output
白黒印刷用V-01 30mV-10 2mカメラSDIスイッチャー1PGMレコーダーSDI

[color=青] はそのまま残しておいて構いません。mono のときは線種に置き換えられます。選べるテーマは次のとおりです。

lightdarkmonoblueprint

18自由に決める語と、選ぶ語

名前は自分で決め、種別と信号型は一覧から選びます。

どの語を自分で決められて、どの語が決まっているのかがわかりにくい、というのはもっともです。分かれ目は1つです。あなたの現場を指す語は自由、この言語が意味を知っている語は一覧から

書く場所どちらか
機材の id(device の直後)自由cam1 foh sw
表示名("…"自由"FX3" "モニター卓"
ポート名自由SDI 1..4 CH[1..16]
ケーブル番号("…"自由"V-01" "A-12"
注記(@…自由@vendor "Yamaha"
機材種別(as …一覧からcamera mixer router
信号型(: …一覧からsdi xlr dante
単位一覧からm cm ft
色([color=…]一覧から blue
テーマ一覧からlight mono

一覧にない信号型が要るときは signal で自分で定義できます。一覧は閉じてはいません。以下はすべて公開済みパッケージから読み出したもので、手で書き写したものではありません。

機材種別as のうしろに書きます。

cameraswitchermixerrecorderplayerdisplayprojectorspeakermicrophoneamplifiercomputerconvertertransmitterreceivermatrixpatchbayrouterinterfacegeneric

単位

mmcmminft

— 日本語と英語のどちらでも書けます。

red
blue
green
yellow
orange
purple
black
white
graygrey
brown
pink

信号型: のうしろに書きます。コネクタも載せてあります。コネクタなしは無線です。

映像

componentComponentBNC / RCA
compositeCompositeBNC / RCA
dpDisplayPortDisplayPort / DisplayPort Mini
dviDVIDVI-D / DVI-I
fiberFiberLC / SC / OpticalCON
hdbasetHDBaseTRJ45
hdmiHDMIHDMI / HDMI Mini / HDMI Micro
ndiNDIRJ45
sdiSDIBNC / DIN 1.0/2.3
st2110ST 2110RJ45 / SFP
vgaVGAD-sub 15
wireless-video無線映像コネクタなし

音声

adatADATTOSLINK
aesAES/EBUXLR / BNC
danteDanteRJ45
iemIEMコネクタなし
madiMADIBNC / SC
opticalOpticalTOSLINK
rcaRCARCA
spdifS/PDIFRCA / TOSLINK
speakonSpeakonNL4 / NL8
trrsTRRS 1/4"TRRS 1/4"
trrs35TRRS 3.5mmTRRS 3.5mm
trsTRS 1/4"TRS 1/4"
trs35TRS 3.5mmTRS 3.5mm
uhfワイヤレス (UHF)コネクタなし
xlrXLRXLR-M / XLR-F / Mini XLR-M / Mini XLR-F / Mini XLR-4M / Mini XLR-4F

制御

dmxDMXXLR-5 / XLR-3
gpioGPIOTerminal / D-sub
irIRコネクタなし
midiMIDIDIN-5 / TRS 3.5mm
rs232RS-232D-sub 9
rs422RS-422D-sub 9
rs485RS-485D-sub 9 / XLR
wireless-dmx無線 DMXコネクタなし

ネットワーク

bluetoothBluetoothコネクタなし
lanLANRJ45
usbUSBUSB-A / USB-B / USB-C / USB Micro-B / USB Mini-B
wifiWi-Fiコネクタなし

電源

acACIEC C13 / IEC C14 / NEMA
dcDCBarrel / XLR-4
poePoERJ45
usbpdUSB PDUSB-C

同期

genlockGenlockBNC
timecodeTimecodeBNC / XLR
wordclockWord ClockBNC

汎用

generic