Simu

SIMU1

Recipe code format

Version 1 · last updated 8 October 2026

A Simu code is one short string holding a whole film recipe, or a whole seven-slot kit. It needs no server, no account and no network.

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

This page documents it completely so anyone can write a Simu code from their own site, script or camera app without asking. Nothing is encrypted and nothing is hidden; the string is short because twenty settings pack into about eleven bytes.

Shape

SIMU1 02KQY54AEMG0TN3B
│     └── Crockford base32 of the payload
└──────── "SIMU" + format version (one digit)

payload = [flags: 8] [body …] [pad to byte] [CRC-8: 8]

A reader that finds a version higher than it knows must refuse the code outright rather than guess at it.

Flags byte

ValueMeans
0one recipe — body is a single record
1a kit — body is [count−1: 3] then that many [slot−1: 3][record]

Slot numbers are 1–7 and a kit holds 1–7 of them. Slots the kit does not mention are absent, not empty: on the camera they are left untouched.

A record

Eighteen bits of presence mask, most significant bit first, in the field order of the table below. Then, for each set bit and in the same order, that field's value at that field's width. Nothing is written for a field whose bit is clear.

The mask is the reason this format exists rather than a list of twenty numbers. A recipe that never mentioned Shadow is not a recipe asking for Shadow 0. A format that could not tell those apart would hand the receiving camera a value nobody chose.

Fields

#FieldBitsValues, in index order
0Film Simulation5Provia, Velvia, Astia, PRO Neg. Hi, PRO Neg. Std, Monochrome, Monochrome + Yellow, Monochrome + Red, Monochrome + Green, Sepia, Classic Chrome, Acros, Acros + Yellow, Acros + Red, Acros + Green, Eterna, Classic Neg., Eterna Bleach Bypass, Nostalgic Neg., Reala Ace
1D Range Priority2Off, Weak, Strong, Auto
2Dynamic Range2DR100, DR200, DR400, DR Auto
3Monochrome Warm/Cool6−18 … +18, step 1
4Monochrome Magenta/Green6−18 … +18, step 1
5Grain Effect3Off, Weak / Small, Strong / Small, Weak / Large, Strong / Large
6Color Chrome Effect2Off, Weak, Strong
7Color Chrome FX Blue2Off, Weak, Strong
8Smooth Skin Effect2Off, Weak, Strong
9White Balance4 (+11)see below
10WB Shift Red5−9 … +9, step 1
11WB Shift Blue5−9 … +9, step 1
12Highlight4−2 … +4, step 0.5
13Shadow4−2 … +4, step 0.5
14Color4−4 … +4, step 1
15Sharpness4−4 … +4, step 1
16High ISO NR4−4 … +4, step 1
17Clarity4−5 … +5, step 1

A numeric field's index is (value − minimum) / step.

This order never changes. A new setting is appended and the version goes up; nothing already here ever moves, because moving it would silently change the meaning of every code already in the world.

White balance

Indices 0–12 are: Auto, Daylight, Incandescent, Underwater, Fluorescent 1, Fluorescent 2, Fluorescent 3, Shade, Custom 1, Custom 2, Custom 3, Auto White Priority, Auto Ambience Priority.

Index 13 means a colour temperature, and is the only value in the format followed by anything: eleven further bits holding (kelvin − 2000) / 10. So 6300K is exact rather than snapped to a nearby entry in a list.

Not carried

ISO and Exposure Compensation. They are free text in practice — "up to ISO 6400" — they are never written to the camera, and carrying them would put a variable-length string inside a format whose whole value is being short. Send them in the readable line instead.

Checksum

CRC-8/ATM: polynomial 0x07, initial value 0, no final XOR, computed over every byte before it.

It is not optional. Messaging apps wrap and truncate, and a code that decodes into a plausible recipe after losing its tail is worse than one that refuses — twenty settings get written to somebody's camera either way.

Alphabet

Crockford base32, five bits per character, most significant first, zero padded at the end:

0123456789ABCDEFGHJKMNPQRSTVWXYZ

No I, L, O or U. Readers should accept lower case, and should read I and L as 1 and O as 0, because codes get copied off photographs by hand. Upper case is worth keeping on the way out: QR encodes upper-case alphanumerics in a denser mode, which is the difference between a code that scans across a table and one that does not.

Sending one

Two lines are enough, and the first one matters. A bare code means nothing to anybody without Simu.

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

Questions, or a decoder written for Simu codes to be linked here: developer@simurecipes.com

SIMU1

配方代碼格式

第 1 版 · 最後更新:2026 年 10 月 8 日

Simu 代碼是一段短字串,裝著一整份底片配方,或一整個七組自訂設定的套組。不需要伺服器、帳號或網路。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

本頁完整記載這個格式,任何人都能從自己的網站、程式或相機 app 產生 Simu 代碼,不必事先詢問。內容沒有加密,也沒有隱藏;字串很短,是因為二十項設定只佔大約十一個位元組。

結構

SIMU1 02KQY54AEMG0TN3B
│     └── 酬載的 Crockford base32
└──────── "SIMU" + 格式版本(一位數字)

酬載 = [旗標: 8] [主體 …] [補齊至整數位元組] [CRC-8: 8]

讀取端遇到比自己認得的版本更高的代碼,必須直接拒絕,不可猜測內容。

旗標位元組

值意義
0一份配方:主體是一筆紀錄
1一個套組:主體是 [數量−1: 3],接著是該數量的 [自訂設定編號−1: 3][紀錄]

自訂設定編號為 1–7,一個套組含 1–7 組。套組沒提到的自訂設定只是不在代碼裡,不代表空白:相機上的這些自訂設定保持不動。

一筆紀錄

先是 18 位元的存在遮罩,最高位元在前,依照下表的欄位順序。接著,對每個為 1 的位元,依相同順序寫入該欄位的值,寬度為該欄位的位元數。位元為 0 的欄位不寫入任何內容。

這個格式不是二十個數字的列表,原因就在遮罩。從沒提到陰影的配方,並不是要求陰影 0 的配方。無法區分兩者的格式,會把一個沒有人選過的值交給接收端的相機。

欄位

#欄位位元值(依索引順序)
0軟片模擬5Provia, Velvia, Astia, PRO Neg. Hi, PRO Neg. Std, Monochrome, Monochrome + Yellow, Monochrome + Red, Monochrome + Green, Sepia, Classic Chrome, Acros, Acros + Yellow, Acros + Red, Acros + Green, Eterna, Classic Neg., Eterna Bleach Bypass, Nostalgic Neg., Reala Ace
1D範圍優先順序2Off, Weak, Strong, Auto
2動態範圍2DR100, DR200, DR400, DR Auto
3單色調 暖/冷6−18 … +18,間隔 1
4單色調 洋紅/綠6−18 … +18,間隔 1
5顆粒效果3Off, Weak / Small, Strong / Small, Weak / Large, Strong / Large
6色彩效果2Off, Weak, Strong
7色彩效果藍色2Off, Weak, Strong
8柔膚效果2Off, Weak, Strong
9白平衡4 (+11)見下方
10白平衡偏移 紅5−9 … +9,間隔 1
11白平衡偏移 藍5−9 … +9,間隔 1
12高光4−2 … +4,間隔 0.5
13陰影4−2 … +4,間隔 0.5
14色彩4−4 … +4,間隔 1
15銳利度4−4 … +4,間隔 1
16高ISO降噪4−4 … +4,間隔 1
17清晰度4−5 … +5,間隔 1

值以英文名稱列出,與解碼程式使用的名稱相同。

數值欄位的索引為 (值 − 最小值) / 間隔。

這個順序永遠不變。新的設定只加在最後,並提高版本號;已有的欄位永遠不會移動,因為移動會悄悄改變每一段既有代碼的意思。

白平衡

索引 0–12 依序為:Auto, Daylight, Incandescent, Underwater, Fluorescent 1, Fluorescent 2, Fluorescent 3, Shade, Custom 1, Custom 2, Custom 3, Auto White Priority, Auto Ambience Priority。

索引 13 代表色溫,也是格式中唯一後面還接著內容的值:再接 11 位元,存放 (kelvin − 2000) / 10。因此 6300K 是精確值,不會對應到清單中相近的項目。

不包含的設定

ISO 和曝光補償。它們實際上是自由文字(例如「ISO 最高 6400」),也從不寫入相機;放進代碼,等於在以短為價值的格式裡塞進長度不定的字串。這兩項寫在可讀的那一行。

校驗碼

CRC-8/ATM:多項式 0x07,初始值 0,不做最終 XOR,計算範圍是它之前的每一個位元組。

校驗碼不可省略。聊天 app 會換行和截斷,末尾遺失卻仍能解出看似合理配方的代碼,比被拒絕的代碼更糟:一旦解出來,不論對錯,二十項設定都會寫進某人的相機。

字母表

Crockford base32,每個字元 5 位元,最高位元在前,結尾補零:

0123456789ABCDEFGHJKMNPQRSTVWXYZ

不含 I、L、O、U。讀取端應接受小寫,並把 I 和 L 讀成 1、O 讀成 0,因為代碼會被人從照片上手抄。輸出時保持大寫:QR code 以較密的模式編碼大寫英數字,這決定了代碼能否隔著桌子掃到。

傳送方式

兩行就夠,第一行很重要。沒有 Simu 的人看不懂單獨一段代碼。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

問題,或想在這裡附上自己寫的 Simu 代碼解碼程式: developer@simurecipes.com

SIMU1

配方代码格式

第 1 版 · 最后更新:2026 年 10 月 8 日

Simu 代码是一段短字符串,装着一整份胶片配方,或一整个七组自定义设置的套组。不需要服务器、账号或网络。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

本页完整记载这个格式,任何人都能从自己的网站、程序或相机 app 生成 Simu 代码,不必事先询问。内容没有加密,也没有隐藏;字符串很短,是因为二十项设置只占大约十一个字节。

结构

SIMU1 02KQY54AEMG0TN3B
│     └── 载荷的 Crockford base32
└──────── "SIMU" + 格式版本(一位数字)

载荷 = [标志: 8] [主体 …] [补齐至整字节] [CRC-8: 8]

读取端遇到比自己认识的版本更高的代码,必须直接拒绝,不可猜测内容。

标志字节

值含义
0一份配方:主体是一条记录
1一个套组:主体是 [数量−1: 3],接着是该数量的 [自定义设置编号−1: 3][记录]

自定义设置编号为 1–7,一个套组含 1–7 组。套组没提到的自定义设置只是不在代码里,不代表空白:相机上的这些自定义设置保持不动。

一条记录

先是 18 位的存在掩码,最高位在前,按照下表的字段顺序。接着,对每个为 1 的位,按相同顺序写入该字段的值,宽度为该字段的位数。位为 0 的字段不写入任何内容。

这个格式不是二十个数字的列表,原因就在掩码。从没提到阴影的配方,并不是要求阴影 0 的配方。无法区分两者的格式,会把一个没有人选过的值交给接收端的相机。

字段

#字段位数值(按索引顺序)
0胶片模拟5Provia, Velvia, Astia, PRO Neg. Hi, PRO Neg. Std, Monochrome, Monochrome + Yellow, Monochrome + Red, Monochrome + Green, Sepia, Classic Chrome, Acros, Acros + Yellow, Acros + Red, Acros + Green, Eterna, Classic Neg., Eterna Bleach Bypass, Nostalgic Neg., Reala Ace
1D范围优先级2Off, Weak, Strong, Auto
2动态范围2DR100, DR200, DR400, DR Auto
3单色调 暖/冷6−18 … +18,间隔 1
4单色调 洋红/绿6−18 … +18,间隔 1
5颗粒效果3Off, Weak / Small, Strong / Small, Weak / Large, Strong / Large
6色彩效果2Off, Weak, Strong
7彩色FX蓝色2Off, Weak, Strong
8光滑皮肤效果2Off, Weak, Strong
9白平衡4 (+11)见下方
10白平衡偏移 红5−9 … +9,间隔 1
11白平衡偏移 蓝5−9 … +9,间隔 1
12高光4−2 … +4,间隔 0.5
13阴影4−2 … +4,间隔 0.5
14色彩4−4 … +4,间隔 1
15锐度4−4 … +4,间隔 1
16高ISO降噪4−4 … +4,间隔 1
17清晰度4−5 … +5,间隔 1

值以英文名称列出,与解码程序使用的名称相同。

数值字段的索引为 (值 − 最小值) / 间隔。

这个顺序永远不变。新的设置只加在最后,并提高版本号;已有的字段永远不会移动,因为移动会悄悄改变每一段已有代码的意思。

白平衡

索引 0–12 依次为:Auto, Daylight, Incandescent, Underwater, Fluorescent 1, Fluorescent 2, Fluorescent 3, Shade, Custom 1, Custom 2, Custom 3, Auto White Priority, Auto Ambience Priority。

索引 13 代表色温,也是格式中唯一后面还接着内容的值:再接 11 位,存放 (kelvin − 2000) / 10。因此 6300K 是精确值,不会对应到列表中相近的项目。

不包含的设置

ISO 和曝光补偿。它们实际上是自由文字(例如"ISO 最高 6400"),也从不写入相机;放进代码,等于在以短为价值的格式里塞进长度不定的字符串。这两项写在可读的那一行。

校验码

CRC-8/ATM:多项式 0x07,初始值 0,不做最终 XOR,计算范围是它之前的每一个字节。

校验码不可省略。聊天 app 会换行和截断,末尾丢失却仍能解出看似合理配方的代码,比被拒绝的代码更糟:一旦解出来,不论对错,二十项设置都会写进某人的相机。

字母表

Crockford base32,每个字符 5 位,最高位在前,结尾补零:

0123456789ABCDEFGHJKMNPQRSTVWXYZ

不含 I、L、O、U。读取端应接受小写,并把 I 和 L 读成 1、O 读成 0,因为代码会被人从照片上手抄。输出时保持大写:二维码以较密的模式编码大写字母和数字,这决定了代码能否隔着桌子扫到。

发送方式

两行就够,第一行很重要。没有 Simu 的人看不懂单独一段代码。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

问题,或想在这里附上自己写的 Simu 代码解码程序: developer@simurecipes.com

SIMU1

レシピコードの形式

バージョン 1 · 最終更新:2026年10月8日

Simu コードは、フィルムレシピ 1 つ、または 7 つのカスタム登録からなるキット 1 つをまるごと収めた短い文字列です。サーバー、アカウント、ネットワークは必要ありません。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

このページは形式をすべて記載しており、誰でも自分のサイト、スクリプト、カメラアプリから、許可を求めずに Simu コードを作れます。暗号化も隠された部分もありません。文字列が短いのは、20 の設定が約 11 バイトに収まるためです。

構造

SIMU1 02KQY54AEMG0TN3B
│     └── ペイロードの Crockford base32
└──────── "SIMU" + 形式のバージョン(数字 1 桁)

ペイロード = [フラグ: 8] [本体 …] [バイト境界までの埋め] [CRC-8: 8]

知っているより新しいバージョンのコードを見つけた読み取り側は、内容を推測せず、そのコードを拒否しなければなりません。

フラグバイト

値意味
0レシピ 1 つ。本体は 1 つのレコード
1キット。本体は [件数−1: 3]、続いてその件数分の [登録番号−1: 3][レコード]

登録番号は 1〜7 で、キットは 1〜7 件を含みます。キットに含まれないカスタム登録はコードにないだけで、空という意味ではありません。カメラのその登録はそのまま残ります。

レコード

まず 18 ビットの存在マスクが、最上位ビットから、下の表のフィールド順に並びます。続いて、1 のビットごとに同じ順で、そのフィールドの値をそのフィールドのビット幅で書きます。ビットが 0 のフィールドには何も書きません。

この形式が 20 個の数値の並びでない理由は、このマスクにあります。シャドウに触れていないレシピは、シャドウ 0 を求めるレシピではありません。この 2 つを区別できない形式では、誰も選んでいない値が受け取る側のカメラに渡ります。

フィールド

#フィールドビット値(インデックス順)
0フィルムシミュレーション5Provia, Velvia, Astia, PRO Neg. Hi, PRO Neg. Std, Monochrome, Monochrome + Yellow, Monochrome + Red, Monochrome + Green, Sepia, Classic Chrome, Acros, Acros + Yellow, Acros + Red, Acros + Green, Eterna, Classic Neg., Eterna Bleach Bypass, Nostalgic Neg., Reala Ace
1Dレンジ優先2Off, Weak, Strong, Auto
2ダイナミックレンジ2DR100, DR200, DR400, DR Auto
3モノクロカラー(暖・寒)6−18 … +18、刻み 1
4モノクロカラー(マゼンタ・グリーン)6−18 … +18、刻み 1
5グレイン・エフェクト3Off, Weak / Small, Strong / Small, Weak / Large, Strong / Large
6カラークローム・エフェクト2Off, Weak, Strong
7カラークローム ブルー2Off, Weak, Strong
8スムーススキン・エフェクト2Off, Weak, Strong
9ホワイトバランス4 (+11)下記参照
10ホワイトバランスシフト 赤5−9 … +9、刻み 1
11ホワイトバランスシフト 青5−9 … +9、刻み 1
12ハイライト4−2 … +4、刻み 0.5
13シャドウ4−2 … +4、刻み 0.5
14カラー4−4 … +4、刻み 1
15シャープネス4−4 … +4、刻み 1
16高感度ノイズ低減4−4 … +4、刻み 1
17明瞭度4−5 … +5、刻み 1

値は英語名で記載しています。デコーダーが使う名前と同じです。

数値フィールドのインデックスは (値 − 最小値) / 刻み です。

この順番は変わりません。新しい設定は末尾に追加し、バージョンを上げます。既存のフィールドは動かしません。動かすと、すでに出回っているすべてのコードの意味が気づかれないまま変わるためです。

ホワイトバランス

インデックス 0〜12 は次のとおりです:Auto, Daylight, Incandescent, Underwater, Fluorescent 1, Fluorescent 2, Fluorescent 3, Shade, Custom 1, Custom 2, Custom 3, Auto White Priority, Auto Ambience Priority。

インデックス 13 は色温度を表し、この形式で後ろに続きがある唯一の値です。さらに 11 ビットで (kelvin − 2000) / 10 を保持します。そのため 6300K は一覧の近い値に丸められず、正確に保たれます。

含まれないもの

ISO と露出補正。実際には「ISO 6400 まで」のような自由記述で、カメラに書き込まれることもありません。これらを入れると、短さに価値がある形式に可変長の文字列が入ることになります。この 2 つは読める行のほうに書きます。

チェックサム

CRC-8/ATM:多項式 0x07、初期値 0、最終 XOR なし。それより前のすべてのバイトに対して計算します。

省略はできません。メッセージアプリは改行を入れたり途中で切ったりします。末尾が欠けても一見正しいレシピに解読されるコードは、拒否されるコードより悪い結果になります。解読されれば、正しくても誤っていても、20 の設定が誰かのカメラに書き込まれます。

文字セット

Crockford base32。1 文字 5 ビット、最上位ビットから並べ、末尾はゼロで埋めます:

0123456789ABCDEFGHJKMNPQRSTVWXYZ

I・L・O・U は含みません。コードは写真から手で書き写されるため、読み取り側は小文字も受け付け、I と L を 1、O を 0 として読みます。出力は大文字のままにします。QR コードは英大文字と数字をより密なモードで符号化でき、テーブル越しに読み取れるかどうかはこれで決まります。

送り方

2 行で足り、1 行目が大切です。Simu を持っていない人には、コードだけでは何も伝わりません。

秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B

質問、または Simu コードのデコーダーを作ってここにリンクを載せたい場合: developer@simurecipes.com