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 | 胶片模拟 | 5 | Provia, 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 |
| 1 | D范围优先级 | 2 | Off, Weak, Strong, Auto |
| 2 | 动态范围 | 2 | DR100, DR200, DR400, DR Auto |
| 3 | 单色调 暖/冷 | 6 | −18 … +18,间隔 1 |
| 4 | 单色调 洋红/绿 | 6 | −18 … +18,间隔 1 |
| 5 | 颗粒效果 | 3 | Off, Weak / Small, Strong / Small, Weak / Large, Strong / Large |
| 6 | 色彩效果 | 2 | Off, Weak, Strong |
| 7 | 彩色FX蓝色 | 2 | Off, Weak, Strong |
| 8 | 光滑皮肤效果 | 2 | Off, 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://r/<代码>?n=<配方名称>
simu://k/<代码>?n=<套组名称>&r=<第 1 组名称>&r=<第 2 组名称>…
同一段代码也能在浏览器打开,给没有 app 的人使用。代码位于片段(# 之后),在浏览器里读取,不会发送到服务器:
https://simurecipes.com/r#<代码>&n=<配方名称>
2026 年 10 月以前生成的链接指向 https://hayamayama.github.io/Simu-Support/r.html,会带着片段转到这个地址。
名称放在载荷之外。中文或日文名称放进代码会让长度加倍,二维码也会失去密集编码;名称正是需要让人读懂的那一项。套组的每一组自定义设置各有一个 r,顺序与代码中自定义设置的顺序相同。
夹在其他文字里的代码仍然是代码:读取端应搜索 SIMU、一位数字,再接八个以上字母表中的字符,因为整段消息常被直接粘贴。
发送方式
两行就够,第一行很重要。没有 Simu 的人看不懂单独一段代码。
秋影流光 · Classic Chrome · DR200
SIMU102KQY54AEMG0TN3B
问题,或想在这里附上自己写的 Simu 代码解码程序: developer@simurecipes.com