davinci-resolve-mcp 2.57.4 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/AGENTS.md +20 -0
  2. package/CHANGELOG.md +197 -2
  3. package/LICENSE +1 -1
  4. package/README.md +73 -1
  5. package/bin/davinci-resolve-advanced-mcp.mjs +20 -0
  6. package/docs/README.md +19 -0
  7. package/docs/SKILL.md +62 -1
  8. package/docs/contributing.md +1 -1
  9. package/docs/guides/control-panel.md +9 -0
  10. package/docs/kernels/README.md +21 -0
  11. package/docs/kernels/audio-fairlight-kernel.md +22 -0
  12. package/docs/kernels/color-grade-kernel.md +51 -0
  13. package/docs/kernels/fusion-composition-kernel.md +17 -0
  14. package/docs/kernels/media-pool-ingest-kernel.md +20 -0
  15. package/docs/kernels/render-deliver-kernel.md +32 -0
  16. package/docs/kernels/timeline-conform-interchange-kernel.md +39 -0
  17. package/docs/kernels/timeline-edit-kernel.md +17 -0
  18. package/docs/process/release-process.md +29 -7
  19. package/docs/reference/api-coverage.md +1 -1
  20. package/docs/reference/api-limitations.md +38 -1
  21. package/install.py +27 -4
  22. package/package.json +23 -2
  23. package/resolve-advanced/README.md +194 -0
  24. package/resolve-advanced/package.json +50 -0
  25. package/resolve-advanced/server/black-balance.mjs +92 -0
  26. package/resolve-advanced/server/capabilities.mjs +86 -0
  27. package/resolve-advanced/server/cdl-io.mjs +76 -0
  28. package/resolve-advanced/server/contrast-normalize.mjs +180 -0
  29. package/resolve-advanced/server/db-patch.mjs +91 -0
  30. package/resolve-advanced/server/deliverable-entities.mjs +86 -0
  31. package/resolve-advanced/server/deliverable-qc.mjs +270 -0
  32. package/resolve-advanced/server/editorial.mjs +370 -0
  33. package/resolve-advanced/server/exposure-level.mjs +129 -0
  34. package/resolve-advanced/server/extract-frames.mjs +196 -0
  35. package/resolve-advanced/server/ffprobe-media.mjs +88 -0
  36. package/resolve-advanced/server/gamut-legal.mjs +112 -0
  37. package/resolve-advanced/server/grade-body-patch.mjs +246 -0
  38. package/resolve-advanced/server/grade-transfer.mjs +66 -0
  39. package/resolve-advanced/server/group-grade-read.mjs +137 -0
  40. package/resolve-advanced/server/index.mjs +105 -0
  41. package/resolve-advanced/server/lib.mjs +84 -0
  42. package/resolve-advanced/server/libs.mjs +65 -0
  43. package/resolve-advanced/server/lineage-db.mjs +479 -0
  44. package/resolve-advanced/server/lut-apply.mjs +61 -0
  45. package/resolve-advanced/server/match-to-reference.mjs +173 -0
  46. package/resolve-advanced/server/media-inventory.mjs +169 -0
  47. package/resolve-advanced/server/media-ops.mjs +243 -0
  48. package/resolve-advanced/server/node-meta-db.mjs +62 -0
  49. package/resolve-advanced/server/node-provenance.mjs +102 -0
  50. package/resolve-advanced/server/offline-ref-db.mjs +420 -0
  51. package/resolve-advanced/server/offline-ref.mjs +179 -0
  52. package/resolve-advanced/server/project-db.mjs +233 -0
  53. package/resolve-advanced/server/provenance-audit.mjs +210 -0
  54. package/resolve-advanced/server/qc-frame.mjs +224 -0
  55. package/resolve-advanced/server/qc-sampler.mjs +67 -0
  56. package/resolve-advanced/server/readback.mjs +77 -0
  57. package/resolve-advanced/server/render-manifest.mjs +93 -0
  58. package/resolve-advanced/server/reverse-clip-db.mjs +270 -0
  59. package/resolve-advanced/server/runner-apply-contract.mjs +64 -0
  60. package/resolve-advanced/server/runner.mjs +244 -0
  61. package/resolve-advanced/server/saturation-match.mjs +108 -0
  62. package/resolve-advanced/server/scope-read.mjs +257 -0
  63. package/resolve-advanced/server/season-look.mjs +96 -0
  64. package/resolve-advanced/server/shot-intent.mjs +82 -0
  65. package/resolve-advanced/server/shot-match.mjs +147 -0
  66. package/resolve-advanced/server/skin-match.mjs +205 -0
  67. package/resolve-advanced/server/spec-compile.mjs +217 -0
  68. package/resolve-advanced/server/tone-curve-transfer.mjs +184 -0
  69. package/resolve-advanced/server/tool-catalog.mjs +265 -0
  70. package/resolve-advanced/server/tools/audio.mjs +54 -0
  71. package/resolve-advanced/server/tools/audio_plan.mjs +58 -0
  72. package/resolve-advanced/server/tools/capabilities.mjs +16 -0
  73. package/resolve-advanced/server/tools/color_trace.mjs +165 -0
  74. package/resolve-advanced/server/tools/conform.mjs +291 -0
  75. package/resolve-advanced/server/tools/deliverable.mjs +105 -0
  76. package/resolve-advanced/server/tools/drp.mjs +232 -0
  77. package/resolve-advanced/server/tools/drt.mjs +200 -0
  78. package/resolve-advanced/server/tools/drx.mjs +943 -0
  79. package/resolve-advanced/server/tools/editorial.mjs +69 -0
  80. package/resolve-advanced/server/tools/fairlight.mjs +108 -0
  81. package/resolve-advanced/server/tools/fusion.mjs +64 -0
  82. package/resolve-advanced/server/tools/media.mjs +102 -0
  83. package/resolve-advanced/server/tools/offline_ref.mjs +123 -0
  84. package/resolve-advanced/server/tools/pipeline.mjs +137 -0
  85. package/resolve-advanced/server/tools/project_db.mjs +200 -0
  86. package/resolve-advanced/server/tools/project_read.mjs +212 -0
  87. package/resolve-advanced/server/tools/provenance.mjs +73 -0
  88. package/resolve-advanced/server/verify-grade.mjs +113 -0
  89. package/resolve-advanced/server/white-balance-match.mjs +122 -0
  90. package/resolve-advanced/vendor/audio/format-converter.js +330 -0
  91. package/resolve-advanced/vendor/audio/split.js +173 -0
  92. package/resolve-advanced/vendor/audio/trim.js +188 -0
  93. package/resolve-advanced/vendor/audio-fairlight/index.js +391 -0
  94. package/resolve-advanced/vendor/conform-qc/adapters/frame-sampler.js +56 -0
  95. package/resolve-advanced/vendor/conform-qc/adapters/local-ffmpeg-sampler.js +65 -0
  96. package/resolve-advanced/vendor/conform-qc/adapters/rendernode-ffmpeg-sampler.js +50 -0
  97. package/resolve-advanced/vendor/conform-qc/adapters/resolve/driver.py +176 -0
  98. package/resolve-advanced/vendor/conform-qc/adapters/resolve-driver.js +61 -0
  99. package/resolve-advanced/vendor/conform-qc/adapters/resolve-headless-driver.js +86 -0
  100. package/resolve-advanced/vendor/conform-qc/adapters/vision-validator.js +75 -0
  101. package/resolve-advanced/vendor/conform-qc/cli.js +63 -0
  102. package/resolve-advanced/vendor/conform-qc/compare/advisory.js +106 -0
  103. package/resolve-advanced/vendor/conform-qc/compare/decode.js +36 -0
  104. package/resolve-advanced/vendor/conform-qc/compare/index.js +61 -0
  105. package/resolve-advanced/vendor/conform-qc/compare/locate.js +70 -0
  106. package/resolve-advanced/vendor/conform-qc/compare/metrics.js +409 -0
  107. package/resolve-advanced/vendor/conform-qc/docs/runbook.md +72 -0
  108. package/resolve-advanced/vendor/conform-qc/index.js +49 -0
  109. package/resolve-advanced/vendor/conform-qc/knowledge/index.js +110 -0
  110. package/resolve-advanced/vendor/conform-qc/ops/conform-core.js +137 -0
  111. package/resolve-advanced/vendor/conform-qc/ops/conform-diff.js +109 -0
  112. package/resolve-advanced/vendor/conform-qc/ops/insert.js +108 -0
  113. package/resolve-advanced/vendor/conform-qc/ops/local-conform.js +61 -0
  114. package/resolve-advanced/vendor/conform-qc/ops/patch.js +80 -0
  115. package/resolve-advanced/vendor/conform-qc/ops/trigger.js +32 -0
  116. package/resolve-advanced/vendor/conform-qc/ops/verify.js +105 -0
  117. package/resolve-advanced/vendor/conform-qc/ops/workflow.js +30 -0
  118. package/resolve-advanced/vendor/conform-qc/oracle/emulate.js +155 -0
  119. package/resolve-advanced/vendor/conform-qc/oracle/index.js +38 -0
  120. package/resolve-advanced/vendor/conform-qc/oracle/resolve.js +196 -0
  121. package/resolve-advanced/vendor/conform-qc/package.json +16 -0
  122. package/resolve-advanced/vendor/conform-qc/packaging/emit-aaf.js +30 -0
  123. package/resolve-advanced/vendor/conform-qc/packaging/emit-fcp7.js +64 -0
  124. package/resolve-advanced/vendor/conform-qc/packaging/index.js +169 -0
  125. package/resolve-advanced/vendor/conform-qc/packaging/media-ops.js +56 -0
  126. package/resolve-advanced/vendor/conform-qc/packaging/otio.js +50 -0
  127. package/resolve-advanced/vendor/conform-qc/packaging/relink.js +50 -0
  128. package/resolve-advanced/vendor/conform-qc/packaging/surgical-relink.js +195 -0
  129. package/resolve-advanced/vendor/conform-qc/parse/index.js +54 -0
  130. package/resolve-advanced/vendor/conform-qc/parse/merge-dto.js +27 -0
  131. package/resolve-advanced/vendor/conform-qc/parse/xmeml-geometry.js +256 -0
  132. package/resolve-advanced/vendor/conform-qc/reference/burnin-ocr.js +100 -0
  133. package/resolve-advanced/vendor/conform-qc/reference/sidecar.js +37 -0
  134. package/resolve-advanced/vendor/conform-qc/repair/analysis.js +62 -0
  135. package/resolve-advanced/vendor/conform-qc/repair/index.js +78 -0
  136. package/resolve-advanced/vendor/conform-qc/repair/media-analysis.js +139 -0
  137. package/resolve-advanced/vendor/conform-qc/repair/media-index.js +135 -0
  138. package/resolve-advanced/vendor/conform-qc/repair/strategies.js +250 -0
  139. package/resolve-advanced/vendor/conform-qc/report/index.js +133 -0
  140. package/resolve-advanced/vendor/conform-qc/roles/index.js +96 -0
  141. package/resolve-advanced/vendor/conform-qc/synthetic/generate.js +233 -0
  142. package/resolve-advanced/vendor/conform-qc/test/advisory.test.js +85 -0
  143. package/resolve-advanced/vendor/conform-qc/test/cli.test.js +39 -0
  144. package/resolve-advanced/vendor/conform-qc/test/compare.test.js +152 -0
  145. package/resolve-advanced/vendor/conform-qc/test/conform-diff.test.js +70 -0
  146. package/resolve-advanced/vendor/conform-qc/test/emulate.test.js +51 -0
  147. package/resolve-advanced/vendor/conform-qc/test/frame-sampler.test.js +30 -0
  148. package/resolve-advanced/vendor/conform-qc/test/geometry.test.js +112 -0
  149. package/resolve-advanced/vendor/conform-qc/test/knowledge.test.js +56 -0
  150. package/resolve-advanced/vendor/conform-qc/test/lifecycle.test.js +110 -0
  151. package/resolve-advanced/vendor/conform-qc/test/local-ffmpeg-sampler.test.js +66 -0
  152. package/resolve-advanced/vendor/conform-qc/test/locate.test.js +63 -0
  153. package/resolve-advanced/vendor/conform-qc/test/media-analysis.test.js +63 -0
  154. package/resolve-advanced/vendor/conform-qc/test/media-index-normalized.test.js +65 -0
  155. package/resolve-advanced/vendor/conform-qc/test/media-index-origin.test.js +53 -0
  156. package/resolve-advanced/vendor/conform-qc/test/metrics-fast.test.js +91 -0
  157. package/resolve-advanced/vendor/conform-qc/test/oracle-reverse.test.js +86 -0
  158. package/resolve-advanced/vendor/conform-qc/test/oracle.test.js +136 -0
  159. package/resolve-advanced/vendor/conform-qc/test/p0-acceptance.test.js +60 -0
  160. package/resolve-advanced/vendor/conform-qc/test/p1-acceptance.test.js +75 -0
  161. package/resolve-advanced/vendor/conform-qc/test/p45-patch-acceptance.test.js +102 -0
  162. package/resolve-advanced/vendor/conform-qc/test/packaging.test.js +133 -0
  163. package/resolve-advanced/vendor/conform-qc/test/parse-stubs.test.js +28 -0
  164. package/resolve-advanced/vendor/conform-qc/test/repair-strategies.test.js +128 -0
  165. package/resolve-advanced/vendor/conform-qc/test/repair.test.js +84 -0
  166. package/resolve-advanced/vendor/conform-qc/test/report.test.js +52 -0
  167. package/resolve-advanced/vendor/conform-qc/test/resolve-readback.test.js +71 -0
  168. package/resolve-advanced/vendor/conform-qc/test/roles.test.js +107 -0
  169. package/resolve-advanced/vendor/conform-qc/test/runbook.test.js +30 -0
  170. package/resolve-advanced/vendor/conform-qc/test/scale-residual.test.js +40 -0
  171. package/resolve-advanced/vendor/conform-qc/test/sidecar.test.js +51 -0
  172. package/resolve-advanced/vendor/conform-qc/test/smoke.test.js +87 -0
  173. package/resolve-advanced/vendor/conform-qc/test/surgical-relink.test.js +73 -0
  174. package/resolve-advanced/vendor/conform-qc/test/synthetic.test.js +98 -0
  175. package/resolve-advanced/vendor/conform-qc/test/verify.test.js +93 -0
  176. package/resolve-advanced/vendor/conform-qc/test/vision-validator.test.js +43 -0
  177. package/resolve-advanced/vendor/conform-qc/test/workflow-driver.test.js +46 -0
  178. package/resolve-advanced/vendor/conform-qc/toolset/index.js +53 -0
  179. package/resolve-advanced/vendor/drp-format/README.md +116 -0
  180. package/resolve-advanced/vendor/drp-format/__tests__/_resolve-verify.js +39 -0
  181. package/resolve-advanced/vendor/drp-format/__tests__/add-media-clip.test.js +30 -0
  182. package/resolve-advanced/vendor/drp-format/__tests__/assemble-timeline.test.js +68 -0
  183. package/resolve-advanced/vendor/drp-format/__tests__/author-project.test.js +57 -0
  184. package/resolve-advanced/vendor/drp-format/__tests__/composition-text.test.js +98 -0
  185. package/resolve-advanced/vendor/drp-format/__tests__/diff.test.js +272 -0
  186. package/resolve-advanced/vendor/drp-format/__tests__/effect-filters-compressed.test.js +143 -0
  187. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/p0-3-session30-empty-effectfilters.drp +0 -0
  188. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-50pct.hex +1 -0
  189. package/resolve-advanced/vendor/drp-format/__tests__/fixtures/retimed-timemap-dynamic.hex +1 -0
  190. package/resolve-advanced/vendor/drp-format/__tests__/inject-grades.test.js +238 -0
  191. package/resolve-advanced/vendor/drp-format/__tests__/keyed-dict.test.js +85 -0
  192. package/resolve-advanced/vendor/drp-format/__tests__/lut-refs.test.js +119 -0
  193. package/resolve-advanced/vendor/drp-format/__tests__/media-blobs.test.js +25 -0
  194. package/resolve-advanced/vendor/drp-format/__tests__/media-timemap.test.js +119 -0
  195. package/resolve-advanced/vendor/drp-format/__tests__/place-fusion-title.test.js +52 -0
  196. package/resolve-advanced/vendor/drp-format/__tests__/place-generator.test.js +40 -0
  197. package/resolve-advanced/vendor/drp-format/__tests__/place-transition.test.js +48 -0
  198. package/resolve-advanced/vendor/drp-format/__tests__/protobuf-wire.test.js +64 -0
  199. package/resolve-advanced/vendor/drp-format/__tests__/relink-media.test.js +106 -0
  200. package/resolve-advanced/vendor/drp-format/__tests__/splice-clips.test.js +256 -0
  201. package/resolve-advanced/vendor/drp-format/assemble-timeline.js +65 -0
  202. package/resolve-advanced/vendor/drp-format/author-project.js +118 -0
  203. package/resolve-advanced/vendor/drp-format/composition-text.js +213 -0
  204. package/resolve-advanced/vendor/drp-format/curves-encoder.js +763 -0
  205. package/resolve-advanced/vendor/drp-format/diff.js +310 -0
  206. package/resolve-advanced/vendor/drp-format/drp-packager.js +201 -0
  207. package/resolve-advanced/vendor/drp-format/drp-validator.js +809 -0
  208. package/resolve-advanced/vendor/drp-format/effect-encoder.js +640 -0
  209. package/resolve-advanced/vendor/drp-format/extract-lut-refs.js +119 -0
  210. package/resolve-advanced/vendor/drp-format/grade-encoder.example.js +133 -0
  211. package/resolve-advanced/vendor/drp-format/grade-encoder.js +401 -0
  212. package/resolve-advanced/vendor/drp-format/grade-encoder.test.js +171 -0
  213. package/resolve-advanced/vendor/drp-format/grade-encoder.verify.js +249 -0
  214. package/resolve-advanced/vendor/drp-format/grade-node-extractor.js +495 -0
  215. package/resolve-advanced/vendor/drp-format/grade-parameter-decoder.js +774 -0
  216. package/resolve-advanced/vendor/drp-format/index.js +174 -0
  217. package/resolve-advanced/vendor/drp-format/inject-grades.js +219 -0
  218. package/resolve-advanced/vendor/drp-format/keyed-dict.js +227 -0
  219. package/resolve-advanced/vendor/drp-format/marker-encoder.js +532 -0
  220. package/resolve-advanced/vendor/drp-format/media-blobs.js +53 -0
  221. package/resolve-advanced/vendor/drp-format/media-timemap.js +164 -0
  222. package/resolve-advanced/vendor/drp-format/mp-folder-builder.js +293 -0
  223. package/resolve-advanced/vendor/drp-format/node-tree-encoder.js +1246 -0
  224. package/resolve-advanced/vendor/drp-format/package.json +18 -0
  225. package/resolve-advanced/vendor/drp-format/place-fusion-title.js +131 -0
  226. package/resolve-advanced/vendor/drp-format/place-generator.js +77 -0
  227. package/resolve-advanced/vendor/drp-format/place-transition.js +91 -0
  228. package/resolve-advanced/vendor/drp-format/power-window-encoder.js +776 -0
  229. package/resolve-advanced/vendor/drp-format/protobuf-wire.js +111 -0
  230. package/resolve-advanced/vendor/drp-format/qualifier-encoder.js +706 -0
  231. package/resolve-advanced/vendor/drp-format/relink-media.js +218 -0
  232. package/resolve-advanced/vendor/drp-format/rich-title-encoder.js +447 -0
  233. package/resolve-advanced/vendor/drp-format/seq-container-builder.js +572 -0
  234. package/resolve-advanced/vendor/drp-format/seq-surgery.js +155 -0
  235. package/resolve-advanced/vendor/drp-format/splice-clips.js +445 -0
  236. package/resolve-advanced/vendor/drp-format/templates/empty-project.drp +0 -0
  237. package/resolve-advanced/vendor/drp-format/templates/fusion-title.xml +56 -0
  238. package/resolve-advanced/vendor/drp-format/templates/generator-solid-color.xml +21 -0
  239. package/resolve-advanced/vendor/drp-format/templates/media-clip-h264.drp +0 -0
  240. package/resolve-advanced/vendor/drp-format/templates/transition-cross-dissolve.xml +22 -0
  241. package/resolve-advanced/vendor/drp-format/tool-registry.descriptor.js +80 -0
  242. package/resolve-advanced/vendor/drp-format/utils/safe-archive.js +54 -0
  243. package/resolve-advanced/vendor/drp-format/xml-builder.js +759 -0
  244. package/resolve-advanced/vendor/drt-format/__tests__/_resolve-verify.js +21 -0
  245. package/resolve-advanced/vendor/drt-format/__tests__/build.test.js +113 -0
  246. package/resolve-advanced/vendor/drt-format/__tests__/multi-format.test.js +93 -0
  247. package/resolve-advanced/vendor/drt-format/__tests__/parse-real-resolve21.test.js +51 -0
  248. package/resolve-advanced/vendor/drt-format/__tests__/parse.test.js +134 -0
  249. package/resolve-advanced/vendor/drt-format/__tests__/resolve-versions.test.js +120 -0
  250. package/resolve-advanced/vendor/drt-format/__tests__/schema-fingerprint.test.js +62 -0
  251. package/resolve-advanced/vendor/drt-format/__tests__/smoke.test.js +27 -0
  252. package/resolve-advanced/vendor/drt-format/__tests__/validate.test.js +109 -0
  253. package/resolve-advanced/vendor/drt-format/capabilities.js +69 -0
  254. package/resolve-advanced/vendor/drt-format/capability-domains.js +56 -0
  255. package/resolve-advanced/vendor/drt-format/drt-builder.js +42 -0
  256. package/resolve-advanced/vendor/drt-format/drt-parser.js +164 -0
  257. package/resolve-advanced/vendor/drt-format/drt-validator.js +98 -0
  258. package/resolve-advanced/vendor/drt-format/index.js +45 -0
  259. package/resolve-advanced/vendor/drt-format/package.json +17 -0
  260. package/resolve-advanced/vendor/drt-format/resolve-versions.js +153 -0
  261. package/resolve-advanced/vendor/drt-format/schema-fingerprint.js +74 -0
  262. package/resolve-advanced/vendor/drt-format/templates/drt-project-shell.xml +124 -0
  263. package/resolve-advanced/vendor/drx-codec/__tests__/curves-roundtrip.test.js +148 -0
  264. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-face-refinement.drx +58 -0
  265. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-filmgrain.drx +58 -0
  266. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-glow.drx +58 -0
  267. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-1-lens-flare.drx +58 -0
  268. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-25.drx +58 -0
  269. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p2-3-beauty-75.drx +58 -0
  270. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-no-lut.drx +58 -0
  271. package/resolve-advanced/vendor/drx-codec/__tests__/fixtures/p5-1-node-with-lut.drx +58 -0
  272. package/resolve-advanced/vendor/drx-codec/__tests__/hsl-curves-roundtrip.test.js +117 -0
  273. package/resolve-advanced/vendor/drx-codec/__tests__/lut-refs-roundtrip.test.js +112 -0
  274. package/resolve-advanced/vendor/drx-codec/__tests__/matte-roundtrip.test.js +167 -0
  275. package/resolve-advanced/vendor/drx-codec/__tests__/ofx-roundtrip.test.js +215 -0
  276. package/resolve-advanced/vendor/drx-codec/__tests__/ofx-slugs-discovery.test.js +149 -0
  277. package/resolve-advanced/vendor/drx-codec/__tests__/power-window-roundtrip.test.js +230 -0
  278. package/resolve-advanced/vendor/drx-codec/__tests__/qualifier-roundtrip.test.js +226 -0
  279. package/resolve-advanced/vendor/drx-codec/cdl-exporter.js +470 -0
  280. package/resolve-advanced/vendor/drx-codec/color-nlp-parser.js +833 -0
  281. package/resolve-advanced/vendor/drx-codec/data/color-nlp-action-mappings.json +2232 -0
  282. package/resolve-advanced/vendor/drx-codec/drx-generator.js +4123 -0
  283. package/resolve-advanced/vendor/drx-codec/drx-merger.js +320 -0
  284. package/resolve-advanced/vendor/drx-codec/drx-parser.js +1808 -0
  285. package/resolve-advanced/vendor/drx-codec/extract-custom-curves.js +215 -0
  286. package/resolve-advanced/vendor/drx-codec/extract-hsl-curves.js +180 -0
  287. package/resolve-advanced/vendor/drx-codec/extract-lut-refs.js +158 -0
  288. package/resolve-advanced/vendor/drx-codec/extract-matte-finesse.js +83 -0
  289. package/resolve-advanced/vendor/drx-codec/extract-ofx-params.js +226 -0
  290. package/resolve-advanced/vendor/drx-codec/extract-power-window.js +184 -0
  291. package/resolve-advanced/vendor/drx-codec/extract-qualifier.js +99 -0
  292. package/resolve-advanced/vendor/drx-codec/index.js +109 -0
  293. package/resolve-advanced/vendor/drx-codec/node-layout.js +249 -0
  294. package/resolve-advanced/vendor/drx-codec/resolved-drx-generator.js +393 -0
  295. package/resolve-advanced/vendor/drx-codec/tool-resolver.js +974 -0
  296. package/resolve-advanced/vendor/drx-codec/training-examples.js +548 -0
  297. package/resolve-advanced/vendor/drx-codec/vocabulary-intents.js +539 -0
  298. package/resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md +319 -0
  299. package/resolve-advanced/vendor/drx-parameters/DRX-VALUE-SCALING.md +251 -0
  300. package/resolve-advanced/vendor/drx-parameters/calibrated-ranges.json +17737 -0
  301. package/resolve-advanced/vendor/drx-parameters/corrector-types.js +120 -0
  302. package/resolve-advanced/vendor/drx-parameters/index.js +193 -0
  303. package/resolve-advanced/vendor/drx-parameters/parameter-codec.js +451 -0
  304. package/resolve-advanced/vendor/drx-parameters/parameter-ids.js +1292 -0
  305. package/resolve-advanced/vendor/drx-parameters/parameter-ranges.js +570 -0
  306. package/resolve-advanced/vendor/drx-parameters/parameter-validator.js +392 -0
  307. package/resolve-advanced/vendor/drx-parameters/resolvefx-registry.json +14973 -0
  308. package/resolve-advanced/vendor/drx-parameters/tool-registry.descriptor.js +38 -0
  309. package/resolve-advanced/vendor/drx-parameters/tools/drx-analyzer.js +371 -0
  310. package/resolve-advanced/vendor/fairlight/index.js +833 -0
  311. package/resolve-advanced/vendor/fusion-codec/composition-generator.js +401 -0
  312. package/resolve-advanced/vendor/fusion-codec/templates/blur-region.js +103 -0
  313. package/resolve-advanced/vendor/fusion-codec/templates/color-correct.js +87 -0
  314. package/resolve-advanced/vendor/fusion-codec/templates/film-grain.js +106 -0
  315. package/resolve-advanced/vendor/fusion-codec/templates/lower-third.js +241 -0
  316. package/resolve-advanced/vendor/fusion-codec/templates/picture-in-picture.js +188 -0
  317. package/resolve-advanced/vendor/fusion-codec/templates/text-overlay.js +161 -0
  318. package/resolve-advanced/vendor/fusion-codec/templates/title-card.js +184 -0
  319. package/resolve-advanced/vendor/fusion-codec/templates/vignette.js +107 -0
  320. package/resolve-advanced/vendor/fusion-codec/templates/watermark.js +101 -0
  321. package/scripts/agent-rules/README.md +68 -0
  322. package/src/analysis_dashboard.py +233 -1
  323. package/src/granular/common.py +1 -1
  324. package/src/server.py +479 -29
  325. package/src/utils/api_truth.py +117 -0
  326. package/src/utils/cut_ir.py +1 -1
  327. package/src/utils/failure_tracker.py +0 -2
  328. package/src/utils/timeline_xml.py +405 -0
@@ -0,0 +1,2232 @@
1
+ {
2
+ "version": "1.0",
3
+ "schema_version": "2025-01-08",
4
+ "description": "Natural Language to Color Correction Action Mappings for DaVinci Resolve",
5
+
6
+ "intent_classification": {
7
+ "exposure": {
8
+ "keywords": ["brighter", "darker", "exposure", "open up", "bring down", "overexposed", "underexposed", "lighten", "darken", "bright", "dark", "luminance", "brightness", "light level", "illuminate", "dim", "shadow detail", "highlight detail", "lifted", "crushed", "clipped", "blown", "muddy", "murky", "gamma", "midtones", "mids", "lift", "gain", "offset", "stops", "ev", "ire levels", "too hot", "too dark", "needs light", "bring up", "pull down", "push up", "raise", "lower", "boost exposure", "cut exposure", "open it up", "close it down"],
9
+ "regex_patterns": [
10
+ "(?:make|get|go)\\s+(?:it\\s+)?(?:brighter|darker|lighter|dimmer)",
11
+ "(?:increase|decrease|raise|lower|bring\\s+(?:up|down)|push\\s+(?:up|down)|pull\\s+(?:up|down))\\s+(?:the\\s+)?(?:exposure|brightness|luminance|light\\s+level|mids|midtones|shadows|highlights|gamma|lift|gain|offset)",
12
+ "(?:too|very|way\\s+too|slightly)\\s+(?:bright|dark|hot|underexposed|overexposed|muddy|murky|dim)",
13
+ "open\\s+(?:it\\s+)?up(?:\\s+(?:a\\s+)?(?:bit|touch|lot|more))?",
14
+ "(?:bring|pull|push|lift|raise|boost|bump)\\s+(?:the\\s+)?(?:shadows|mids|midtones|highlights|blacks|whites)",
15
+ "(?:recover|save|bring\\s+back)\\s+(?:the\\s+)?(?:shadow|highlight)\\s+detail",
16
+ "(?:clip|crush|blow\\s+out)\\s+(?:the\\s+)?(?:blacks|whites|shadows|highlights)",
17
+ "(?:i\\s+can't|hard\\s+to)\\s+see\\s+(?:the\\s+)?(?:detail|shadows|face)",
18
+ "(?:add|need)\\s+(?:more\\s+)?(?:light|brightness|exposure)",
19
+ "(?:stop|half\\s+stop|quarter\\s+stop|third\\s+stop)\\s+(?:brighter|darker|up|down)"
20
+ ],
21
+ "primary_tools": ["offset", "gamma", "lift", "gain", "hdr_exposure"],
22
+ "contextual_hints": {
23
+ "shadows": { "tools": ["lift", "low_range_curve"], "typical_adjustment": 0.05 },
24
+ "midtones": { "tools": ["gamma", "mid_curve"], "typical_adjustment": 0.08 },
25
+ "highlights": { "tools": ["gain", "high_curve"], "typical_adjustment": 0.08 },
26
+ "overall": { "tools": ["offset", "exposure_slider"], "typical_adjustment": 0.1 }
27
+ }
28
+ },
29
+ "contrast": {
30
+ "keywords": ["contrast", "punch", "pop", "flat", "crushed", "lifted", "milky", "deep", "dynamic range", "snappy", "crispy", "crunchy", "hard", "soft contrast", "s-curve", "toe", "shoulder", "range", "separation", "tonal range", "depth", "dimension", "flat looking", "log looking", "washed", "no punch", "lifeless", "thin", "muddy", "rich", "bold", "aggressive", "harsh", "gentle", "compressed", "expanded"],
31
+ "regex_patterns": [
32
+ "(?:add|remove|increase|decrease|more|less|boost|cut|pump\\s+up|dial\\s+back)\\s+(?:the\\s+)?contrast",
33
+ "(?:crush|lift|raise|lower|sink|deepen)\\s+(?:the\\s+)?(?:blacks|shadows|toe)",
34
+ "(?:clip|roll\\s+off|compress|expand)\\s+(?:the\\s+)?(?:highlights|whites|shoulder)",
35
+ "make\\s+it\\s+(?:pop|punch|punchier|snappy|snappier|crispy|flat|flatter|muddy|rich|deeper)",
36
+ "(?:more|less|add|reduce)\\s+(?:dynamic\\s+)?range",
37
+ "(?:looks?|too|very)\\s+(?:flat|washed|muddy|punchy|contrasty|harsh|soft)",
38
+ "(?:add|apply|use)\\s+(?:an?\\s+)?s[\\-\\s]?curve",
39
+ "(?:expand|compress|stretch|squash)\\s+(?:the\\s+)?(?:tonal\\s+)?range",
40
+ "(?:more|less|add|reduce)\\s+(?:depth|dimension|separation)",
41
+ "(?:lift|raise)\\s+(?:the\\s+)?(?:floor|black\\s+point|pedestal)",
42
+ "(?:bring\\s+down|lower)\\s+(?:the\\s+)?(?:ceiling|white\\s+point)"
43
+ ],
44
+ "primary_tools": ["contrast", "curves", "lift", "gain"],
45
+ "contextual_hints": {
46
+ "natural_contrast": { "method": "lift_gain_spread", "description": "adjust lift and gain oppositely" },
47
+ "punchy_contrast": { "method": "s_curve", "description": "add curve with dark and bright points" },
48
+ "film_contrast": { "method": "soft_clip", "description": "use soft clip for rolloff" }
49
+ }
50
+ },
51
+ "color_balance": {
52
+ "keywords": ["warmer", "cooler", "white balance", "color cast", "temperature", "tint", "orange", "blue", "green", "magenta", "golden", "cold", "icy", "amber", "tungsten", "daylight", "kelvin", "wb", "color temp", "cast", "shift", "lean", "push", "toward", "neutral", "cyan", "yellow", "pink", "salmon", "sunset", "moonlight", "candlelight", "fluorescent", "mixed lighting", "correct", "neutralize"],
53
+ "regex_patterns": [
54
+ "(?:make|get|push|shift|lean)\\s+(?:it\\s+)?(?:warmer|cooler|colder|more\\s+(?:golden|amber|orange|blue|cyan|neutral))",
55
+ "(?:add|remove|boost|reduce)\\s+(?:warmth|coolness|orange|blue|golden\\s+tones|cold\\s+tones)",
56
+ "(?:fix|correct|adjust|set|dial\\s+in)\\s+(?:the\\s+)?(?:white\\s+)?balance",
57
+ "(?:remove|fix|kill|neutralize|correct)\\s+(?:the\\s+)?(?:green|magenta|blue|orange|yellow|pink|cyan)\\s+(?:cast|tint)",
58
+ "(?:too|very|way\\s+too|slightly)\\s+(?:warm|cool|cold|green|magenta|orange|blue|yellow|pink)",
59
+ "(?:push|shift|move)\\s+(?:toward|away\\s+from)\\s+(?:warm|cool|blue|orange|green|magenta)",
60
+ "(?:feels?|looks?)\\s+(?:too\\s+)?(?:tungsten|daylight|fluorescent|mixed)",
61
+ "(?:warm|cool)\\s+(?:the\\s+)?(?:shadows|midtones|highlights|mids|highs|lows)",
62
+ "(?:split|separate)\\s+(?:the\\s+)?(?:warm|cool)\\s+(?:tones|colors)",
63
+ "(?:more|less)\\s+(?:golden|amber|blue|cyan|teal)(?:\\s+(?:in|on)\\s+(?:the\\s+)?(?:highlights|shadows|skin))?",
64
+ "(?:kelvin|color\\s+temp)\\s+(?:up|down|higher|lower)"
65
+ ],
66
+ "primary_tools": ["temp", "tint", "offset_color", "lift_color", "gamma_color", "gain_color"],
67
+ "contextual_hints": {
68
+ "global_temp": { "tools": ["temp"], "description": "overall temperature shift" },
69
+ "shadow_color": { "tools": ["lift_color"], "description": "color in shadows only" },
70
+ "midtone_color": { "tools": ["gamma_color"], "description": "color in midtones only" },
71
+ "highlight_color": { "tools": ["gain_color"], "description": "color in highlights only" }
72
+ }
73
+ },
74
+ "saturation": {
75
+ "keywords": ["saturated", "vivid", "colorful", "muted", "dull", "vibrant", "desaturate", "saturation", "black and white", "monochrome", "chroma", "color intensity", "color boost", "punchy colors", "rich colors", "juicy", "anemic", "washed out", "faded", "pastel", "bleached", "selective saturation", "color richness", "gray", "grayscale", "bw", "b&w", "mono", "chromatic", "achromatic", "color strength"],
76
+ "regex_patterns": [
77
+ "(?:boost|increase|decrease|reduce|add|remove|pump\\s+up|dial\\s+back)\\s+(?:the\\s+)?(?:saturation|chroma|vibrance|color(?:\\s+intensity)?)",
78
+ "(?:more|less)\\s+(?:saturated|vivid|colorful|vibrant|muted|dull|washed)",
79
+ "(?:make|go|convert)\\s+(?:it\\s+)?(?:black\\s+and\\s+white|monochrome|grayscale|bw|b&w|mono)",
80
+ "(?:add|remove|boost|kill|drain)\\s+(?:the\\s+)?(?:color|colors|vibrance|chroma)",
81
+ "(?:mute|punch\\s+up|pump|saturate|desaturate)\\s+(?:the\\s+)?colors?",
82
+ "(?:too|very|way\\s+too|slightly)\\s+(?:saturated|colorful|dull|muted|washed|vivid)",
83
+ "(?:rich|juicy|anemic|weak|strong|bold|subtle)\\s+colors?",
84
+ "(?:color\\s+)?(?:looks?|feels?)\\s+(?:washed|faded|punchy|flat|dead|alive)",
85
+ "(?:pastel|bleached|bleach\\s+bypass|skip\\s+bleach)(?:\\s+look)?",
86
+ "(?:selective|targeted)\\s+(?:saturation|desaturation)",
87
+ "(?:protect|preserve)\\s+(?:the\\s+)?(?:skin|skin\\s+tones)\\s+(?:saturation|color)"
88
+ ],
89
+ "primary_tools": ["saturation", "color_boost", "sat_curves", "hsl_saturation"],
90
+ "contextual_hints": {
91
+ "global": { "tools": ["saturation"], "description": "all colors equally" },
92
+ "natural": { "tools": ["color_boost"], "description": "protects skin tones" },
93
+ "selective": { "tools": ["hsl_saturation", "qualifier"], "description": "specific colors only" }
94
+ }
95
+ },
96
+ "specific_color": {
97
+ "keywords": ["reds", "blues", "greens", "yellows", "cyans", "magentas", "sky", "skin", "grass", "foliage", "water", "oranges", "purples", "violets", "teals", "pinks", "skin tones", "flesh tones", "complexion", "face color", "lips", "eyes", "hair", "trees", "leaves", "ocean", "sea", "clouds", "sunset colors", "fire", "neon", "hue", "hue shift", "color wheel", "selective color", "isolated color", "specific hue", "particular color"],
98
+ "regex_patterns": [
99
+ "(?:adjust|change|shift|fix|punch|mute|saturate|desaturate|brighten|darken|warm|cool)\\s+(?:the\\s+)?(?:reds?|blues?|greens?|yellows?|cyans?|magentas?|oranges?|purples?|violets?|teals?|pinks?)",
100
+ "(?:adjust|fix|correct|warm|cool|desaturate|saturate|shift)\\s+(?:the\\s+)?(?:skin(?:\\s+tones?)?|flesh\\s+tones?|complexion|face\\s+color)",
101
+ "(?:make|get|shift)\\s+(?:the\\s+)?(?:sky|grass|foliage|water|ocean|trees|leaves|clouds)\\s+(?:bluer|greener|warmer|cooler|more\\s+saturated|less\\s+saturated|brighter|darker)",
102
+ "(?:desaturate|saturate|punch|mute|shift|rotate)\\s+(?:the\\s+)?(?:reds?|blues?|greens?|yellows?|cyans?|magentas?|oranges?)",
103
+ "(?:hue|color)\\s+(?:shift|rotate|adjust|change)\\s+(?:the\\s+)?(?:reds?|blues?|greens?|etc\\.?)",
104
+ "(?:selective|isolated|specific|targeted)\\s+color\\s+(?:adjustment|correction|grade)",
105
+ "(?:only|just)\\s+(?:the\\s+)?(?:reds?|blues?|greens?|skin|sky|etc\\.?)",
106
+ "(?:push|pull|shift)\\s+(?:the\\s+)?(?:reds?|oranges?)\\s+(?:toward|away\\s+from)\\s+(?:orange|yellow|magenta)",
107
+ "(?:skin|face|talent)\\s+(?:looks?|is)\\s+(?:too\\s+)?(?:red|orange|green|pale|yellow|pink|blotchy)"
108
+ ],
109
+ "primary_tools": ["qualifier", "hsl_curves", "colorslice", "color_warper", "curves_hue_vs_hue"],
110
+ "requires_secondary": true,
111
+ "contextual_hints": {
112
+ "skin": { "workflow": "qualify skin tones, adjust within isolated area" },
113
+ "sky": { "workflow": "qualify blues and cyans in upper frame, adjust" },
114
+ "foliage": { "workflow": "qualify greens and yellows, adjust hue and saturation" }
115
+ }
116
+ },
117
+ "isolation": {
118
+ "keywords": ["isolate", "select", "just the", "only the", "that area", "subject", "background", "vignette", "mask", "window", "power window", "qualifier", "key", "matte", "selection", "garbage matte", "roto", "magic mask", "face", "person", "talent", "actor", "foreground", "edges", "corners", "center", "specific area", "region", "zone", "inside", "outside", "tracked", "following"],
119
+ "regex_patterns": [
120
+ "(?:isolate|select|grab|pick|key|qualify|mask|window)\\s+(?:just\\s+)?(?:the\\s+)?(?:subject|background|face|sky|person|talent|foreground|hair|clothing|skin|eyes|lips)",
121
+ "(?:just|only)\\s+(?:the\\s+)?(?:subject|background|highlights|shadows|midtones|face|sky|that\\s+area|this\\s+part|that\\s+region)",
122
+ "(?:add|create|draw|make)\\s+(?:a\\s+)?(?:vignette|mask|window|power\\s+window|circular\\s+window|square\\s+window|gradient)",
123
+ "(?:brighten|darken|warm|cool|desaturate|saturate|soften|sharpen|blur)\\s+(?:just\\s+)?(?:the\\s+)?(?:face|subject|background|edges|corners|center|foreground)",
124
+ "(?:separate|split|divide)\\s+(?:the\\s+)?(?:subject|foreground)\\s+(?:from|and)\\s+(?:the\\s+)?background",
125
+ "(?:track|follow|stick\\s+to)\\s+(?:the\\s+)?(?:face|subject|person|talent|movement)",
126
+ "(?:magic\\s+mask|auto\\s+mask|ai\\s+mask|person\\s+mask|face\\s+mask|object\\s+mask)",
127
+ "(?:darken|burn)\\s+(?:the\\s+)?(?:edges|corners|outside|perimeter)",
128
+ "(?:brighten|dodge)\\s+(?:the\\s+)?(?:center|subject|face|eyes)",
129
+ "(?:everything\\s+)?(?:except|but)\\s+(?:the\\s+)?(?:subject|face|sky|background)",
130
+ "(?:inside|outside|within|around)\\s+(?:the\\s+)?(?:selection|mask|window|qualified\\s+area)"
131
+ ],
132
+ "primary_tools": ["qualifier", "window", "magic_mask", "power_window", "gradient"],
133
+ "requires_secondary": true,
134
+ "contextual_hints": {
135
+ "subject_isolation": { "workflow": "use magic mask or qualifier to isolate" },
136
+ "vignette": { "workflow": "circular window, inverted, darken edges" },
137
+ "face_work": { "workflow": "window or qualifier on skin tones, track if moving" }
138
+ }
139
+ },
140
+ "texture": {
141
+ "keywords": ["sharp", "soft", "detail", "texture", "clarity", "gritty", "smooth", "blur", "focus", "diffusion", "pro mist", "glimmerglass", "halation", "grain", "noise", "crunchy", "crispy", "mushy", "dreamy", "ethereal", "harsh", "gentle", "defined", "undefined", "fine detail", "midtone detail", "local contrast", "skin texture", "pores", "wrinkles", "facial detail"],
142
+ "regex_patterns": [
143
+ "(?:add|remove|increase|decrease|boost|reduce|dial\\s+(?:up|down|back))\\s+(?:the\\s+)?(?:clarity|detail|texture|sharpness|sharpening|grain|noise|diffusion|softness|blur|grit)",
144
+ "(?:make|get)\\s+(?:it\\s+)?(?:sharper|softer|grittier|smoother|crispier|mushier|dreamier|more\\s+ethereal|more\\s+textured)",
145
+ "(?:soften|sharpen|blur|smooth|texture|grain)\\s+(?:the\\s+)?(?:image|midtones|skin|face|background|highlights|shadows)",
146
+ "(?:too|very)\\s+(?:sharp|soft|gritty|smooth|crispy|mushy|harsh|gentle)",
147
+ "(?:pro\\s+mist|glimmerglass|halation|diffusion|bloom|glow)(?:\\s+(?:look|effect))?",
148
+ "(?:hide|reduce|minimize|soften)\\s+(?:the\\s+)?(?:skin\\s+texture|pores|wrinkles|blemishes|imperfections|facial\\s+detail)",
149
+ "(?:bring\\s+out|enhance|emphasize|accentuate)\\s+(?:the\\s+)?(?:detail|texture|fine\\s+detail|midtone\\s+detail)",
150
+ "(?:local\\s+contrast|micro\\s+contrast|midtone\\s+detail|md)",
151
+ "(?:add|apply|dial\\s+in)\\s+(?:film\\s+)?grain",
152
+ "(?:remove|reduce|denoise|clean\\s+up)\\s+(?:the\\s+)?noise"
153
+ ],
154
+ "primary_tools": ["midtone_detail", "sharpen", "blur", "mist", "grain", "denoise"],
155
+ "contextual_hints": {
156
+ "overall_detail": { "tools": ["midtone_detail"], "description": "affects whole image detail" },
157
+ "selective_soft": { "workflow": "qualify skin, reduce detail in selection" },
158
+ "film_texture": { "tools": ["grain"], "description": "add organic film-like texture" }
159
+ }
160
+ },
161
+ "style": {
162
+ "keywords": ["film look", "cinematic", "vintage", "modern", "retro", "blockbuster", "teal and orange", "look", "feel", "mood", "vibe", "aesthetic", "style", "grade", "treatment", "color grade", "film stock", "kodak", "fuji", "arri", "red", "alexa", "70s", "80s", "90s", "noir", "horror", "thriller", "romantic", "comedy", "documentary", "broadcast", "commercial", "music video", "indie", "arthouse", "hollywood", "european", "asian cinema", "golden hour", "blue hour", "day for night", "night look", "moonlight", "sunset", "sunrise", "bleach bypass", "cross process", "instagram", "vsco", "lomo", "polaroid"],
163
+ "regex_patterns": [
164
+ "(?:give|add|create|apply|dial\\s+in)\\s+(?:it\\s+)?(?:a\\s+)?(?:film|cinematic|vintage|retro|modern|classic|hollywood|indie|arthouse|documentary|broadcast|commercial|music\\s+video)\\s+(?:look|feel|style|grade|vibe|aesthetic)",
165
+ "(?:make|get)\\s+(?:it\\s+)?(?:look\\s+)?(?:more\\s+)?(?:cinematic|filmic|vintage|retro|modern|stylized|natural|documentary|broadcast)",
166
+ "(?:teal\\s+and\\s+orange|orange\\s+and\\s+teal|split\\s+tone|split\\s+toning|day\\s+for\\s+night|bleach\\s+bypass|cross\\s+process|skip\\s+bleach)",
167
+ "(?:like|similar\\s+to|inspired\\s+by|reminiscent\\s+of)\\s+(?:a\\s+)?(?:film|movie|(?:specific\\s+)?film\\s+stock|kodak|fuji)",
168
+ "(?:70s|80s|90s|2000s|fifties|sixties|seventies|eighties|nineties)\\s+(?:look|feel|style|vibe|aesthetic)",
169
+ "(?:noir|horror|thriller|romantic|comedy|action|sci-fi|scifi|western|period|drama)\\s+(?:look|feel|style|genre|vibe)",
170
+ "(?:golden\\s+hour|blue\\s+hour|magic\\s+hour|sunset|sunrise|twilight|dawn|dusk|moonlight|candlelight|firelight)\\s+(?:look|feel|lighting)?",
171
+ "(?:instagram|vsco|lomo|polaroid|lomography|hipster|analog|analogue)\\s+(?:look|filter|style|vibe)?",
172
+ "(?:match|emulate|replicate|copy|mimic)\\s+(?:the\\s+)?(?:look|style|grade)\\s+(?:of|from)",
173
+ "(?:film\\s+stock|stock)\\s+(?:emulation|look|simulation)\\s+(?:like|for)?\\s+(?:kodak|fuji|vision|portra|ektar)"
174
+ ],
175
+ "primary_tools": ["compound_adjustment", "lut", "film_emulation"],
176
+ "is_compound": true,
177
+ "contextual_hints": {
178
+ "cinematic": { "adjustments": ["contrast_up", "saturation_slight_down", "teal_shadows_orange_highlights", "vignette"] },
179
+ "vintage": { "adjustments": ["lift_blacks", "saturation_down", "warmth_up", "contrast_down"] },
180
+ "film_stock": { "workflow": "apply film emulation LUT or build manually with characteristic curves" }
181
+ }
182
+ },
183
+ "undo_reset": {
184
+ "keywords": ["undo", "reset", "revert", "go back", "start over", "clear", "remove", "cancel", "redo", "previous", "original", "before", "baseline"],
185
+ "regex_patterns": [
186
+ "(?:undo|reset|revert|clear|remove|cancel)\\s+(?:the\\s+)?(?:last\\s+)?(?:change|adjustment|correction|grade|all)",
187
+ "(?:go|take\\s+it)\\s+back(?:\\s+(?:one|a)\\s+step)?",
188
+ "(?:start|begin)\\s+(?:over|again|fresh)",
189
+ "(?:back\\s+to|return\\s+to)\\s+(?:the\\s+)?(?:original|baseline|beginning|start)",
190
+ "(?:that\\s+was)?\\s*(?:too\\s+much|wrong|not\\s+right)",
191
+ "(?:never\\s+mind|forget\\s+that|scratch\\s+that)"
192
+ ],
193
+ "primary_tools": ["undo", "reset_node", "reset_grade"]
194
+ },
195
+ "comparison": {
196
+ "keywords": ["compare", "before after", "toggle", "show original", "a/b", "side by side", "split", "wipe", "reference", "match"],
197
+ "regex_patterns": [
198
+ "(?:show|toggle|compare)\\s+(?:me\\s+)?(?:the\\s+)?(?:before|original|ungraded)",
199
+ "(?:before|original)\\s+(?:and\\s+)?after",
200
+ "(?:a/?b|side\\s+by\\s+side|split|wipe)\\s+(?:compare|comparison|view)?",
201
+ "(?:compare|match)\\s+(?:to|with|against)\\s+(?:the\\s+)?(?:reference|original|another\\s+shot)"
202
+ ],
203
+ "primary_tools": ["bypass", "split_screen", "reference"]
204
+ }
205
+ },
206
+
207
+ "phrase_to_action": {
208
+ "make it brighter": {
209
+ "intent": "exposure",
210
+ "actions": [
211
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.08 },
212
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.05 }
213
+ ],
214
+ "alternatives": [
215
+ { "parameter": "hdr.global.exposure", "operation": "increase", "default_amount": 0.75 }
216
+ ]
217
+ },
218
+ "brighten it up": {
219
+ "intent": "exposure",
220
+ "actions": [
221
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.08 },
222
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.05 }
223
+ ]
224
+ },
225
+ "bring up the exposure": {
226
+ "intent": "exposure",
227
+ "actions": [
228
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.1 }
229
+ ]
230
+ },
231
+ "increase exposure": {
232
+ "intent": "exposure",
233
+ "actions": [
234
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.08 }
235
+ ]
236
+ },
237
+ "raise the exposure": {
238
+ "intent": "exposure",
239
+ "actions": [
240
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.08 }
241
+ ]
242
+ },
243
+ "add more light": {
244
+ "intent": "exposure",
245
+ "actions": [
246
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.08 }
247
+ ]
248
+ },
249
+ "lighten it": {
250
+ "intent": "exposure",
251
+ "actions": [
252
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.06 }
253
+ ]
254
+ },
255
+ "its too dark": {
256
+ "intent": "exposure",
257
+ "actions": [
258
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.1 },
259
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.06 }
260
+ ]
261
+ },
262
+ "too underexposed": {
263
+ "intent": "exposure",
264
+ "actions": [
265
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.12 }
266
+ ]
267
+ },
268
+ "make it darker": {
269
+ "intent": "exposure",
270
+ "actions": [
271
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.08 },
272
+ { "parameter": "primaries.gamma.y", "operation": "decrease", "default_amount": 0.05 }
273
+ ]
274
+ },
275
+ "darken it": {
276
+ "intent": "exposure",
277
+ "actions": [
278
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.08 }
279
+ ]
280
+ },
281
+ "bring down the exposure": {
282
+ "intent": "exposure",
283
+ "actions": [
284
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.1 }
285
+ ]
286
+ },
287
+ "decrease exposure": {
288
+ "intent": "exposure",
289
+ "actions": [
290
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.08 }
291
+ ]
292
+ },
293
+ "lower the exposure": {
294
+ "intent": "exposure",
295
+ "actions": [
296
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.08 }
297
+ ]
298
+ },
299
+ "its too bright": {
300
+ "intent": "exposure",
301
+ "actions": [
302
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.1 },
303
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.05 }
304
+ ]
305
+ },
306
+ "too overexposed": {
307
+ "intent": "exposure",
308
+ "actions": [
309
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.1 }
310
+ ]
311
+ },
312
+ "open it up": {
313
+ "intent": "exposure",
314
+ "actions": [
315
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.08 },
316
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
317
+ ]
318
+ },
319
+ "open up the shadows": {
320
+ "intent": "exposure",
321
+ "actions": [
322
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.06 },
323
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.03 }
324
+ ]
325
+ },
326
+ "bring out the shadow detail": {
327
+ "intent": "exposure",
328
+ "actions": [
329
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 }
330
+ ]
331
+ },
332
+ "recover the shadows": {
333
+ "intent": "exposure",
334
+ "actions": [
335
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.08 }
336
+ ]
337
+ },
338
+ "bring down the highlights": {
339
+ "intent": "exposure",
340
+ "actions": [
341
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.08 }
342
+ ]
343
+ },
344
+ "recover the highlights": {
345
+ "intent": "exposure",
346
+ "actions": [
347
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.1 },
348
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 900 }
349
+ ]
350
+ },
351
+ "pull down the whites": {
352
+ "intent": "exposure",
353
+ "actions": [
354
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.08 }
355
+ ]
356
+ },
357
+ "brighten the midtones": {
358
+ "intent": "exposure",
359
+ "actions": [
360
+ { "parameter": "primaries.gamma.y", "operation": "increase", "default_amount": 0.08 }
361
+ ]
362
+ },
363
+ "darken the midtones": {
364
+ "intent": "exposure",
365
+ "actions": [
366
+ { "parameter": "primaries.gamma.y", "operation": "decrease", "default_amount": 0.08 }
367
+ ]
368
+ },
369
+ "add contrast": {
370
+ "intent": "contrast",
371
+ "actions": [
372
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 }
373
+ ],
374
+ "side_effects": ["may_increase_saturation"],
375
+ "alternatives": [
376
+ { "method": "s_curve", "description": "More precise control" },
377
+ { "method": "lift_gain_spread", "description": "Lower lift, raise gain" }
378
+ ]
379
+ },
380
+ "more contrast": {
381
+ "intent": "contrast",
382
+ "actions": [
383
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 }
384
+ ]
385
+ },
386
+ "increase contrast": {
387
+ "intent": "contrast",
388
+ "actions": [
389
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 }
390
+ ]
391
+ },
392
+ "boost the contrast": {
393
+ "intent": "contrast",
394
+ "actions": [
395
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 }
396
+ ]
397
+ },
398
+ "punch it up": {
399
+ "intent": "contrast",
400
+ "actions": [
401
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 },
402
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 8 }
403
+ ]
404
+ },
405
+ "punchy": {
406
+ "intent": "contrast",
407
+ "actions": [
408
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 },
409
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 }
410
+ ]
411
+ },
412
+ "punchy contrast": {
413
+ "intent": "contrast",
414
+ "actions": [
415
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 35 }
416
+ ]
417
+ },
418
+ "make it punchier": {
419
+ "intent": "contrast",
420
+ "actions": [
421
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 }
422
+ ]
423
+ },
424
+ "snappy": {
425
+ "intent": "contrast",
426
+ "actions": [
427
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
428
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 20 }
429
+ ]
430
+ },
431
+ "make it snappy": {
432
+ "intent": "contrast",
433
+ "actions": [
434
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
435
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 20 }
436
+ ]
437
+ },
438
+ "crispy": {
439
+ "intent": "contrast",
440
+ "actions": [
441
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 },
442
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 30 }
443
+ ]
444
+ },
445
+ "remove contrast": {
446
+ "intent": "contrast",
447
+ "actions": [
448
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 25 }
449
+ ]
450
+ },
451
+ "less contrast": {
452
+ "intent": "contrast",
453
+ "actions": [
454
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 20 }
455
+ ]
456
+ },
457
+ "reduce contrast": {
458
+ "intent": "contrast",
459
+ "actions": [
460
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 25 }
461
+ ]
462
+ },
463
+ "flatten the image": {
464
+ "intent": "contrast",
465
+ "actions": [
466
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 30 }
467
+ ]
468
+ },
469
+ "flatten it out": {
470
+ "intent": "contrast",
471
+ "actions": [
472
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 30 }
473
+ ]
474
+ },
475
+ "make it flat": {
476
+ "intent": "contrast",
477
+ "actions": [
478
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 35 }
479
+ ]
480
+ },
481
+ "too contrasty": {
482
+ "intent": "contrast",
483
+ "actions": [
484
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 25 }
485
+ ]
486
+ },
487
+ "crush the blacks": {
488
+ "intent": "contrast",
489
+ "actions": [
490
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.05 }
491
+ ],
492
+ "result": "deeper_blacks_less_shadow_detail",
493
+ "opposite": "lift the blacks"
494
+ },
495
+ "crush the shadows": {
496
+ "intent": "contrast",
497
+ "actions": [
498
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.05 }
499
+ ]
500
+ },
501
+ "deeper blacks": {
502
+ "intent": "contrast",
503
+ "actions": [
504
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.04 }
505
+ ]
506
+ },
507
+ "sink the blacks": {
508
+ "intent": "contrast",
509
+ "actions": [
510
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.05 }
511
+ ]
512
+ },
513
+ "lift the blacks": {
514
+ "intent": "contrast",
515
+ "actions": [
516
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 }
517
+ ],
518
+ "result": "milky_blacks_more_shadow_detail",
519
+ "opposite": "crush the blacks",
520
+ "style_associations": ["vintage", "faded_film"]
521
+ },
522
+ "lift the shadows": {
523
+ "intent": "contrast",
524
+ "actions": [
525
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 }
526
+ ]
527
+ },
528
+ "raise the blacks": {
529
+ "intent": "contrast",
530
+ "actions": [
531
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 }
532
+ ]
533
+ },
534
+ "milky blacks": {
535
+ "intent": "contrast",
536
+ "actions": [
537
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.06 },
538
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 }
539
+ ]
540
+ },
541
+ "faded blacks": {
542
+ "intent": "contrast",
543
+ "actions": [
544
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.07 }
545
+ ]
546
+ },
547
+ "make it pop": {
548
+ "intent": "contrast",
549
+ "actions": [
550
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
551
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 },
552
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 25 }
553
+ ]
554
+ },
555
+ "pop it": {
556
+ "intent": "contrast",
557
+ "actions": [
558
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
559
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 }
560
+ ]
561
+ },
562
+ "more dynamic": {
563
+ "intent": "contrast",
564
+ "actions": [
565
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 }
566
+ ]
567
+ },
568
+ "add dynamic range": {
569
+ "intent": "contrast",
570
+ "actions": [
571
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.03 },
572
+ { "parameter": "primaries.gain.y", "operation": "increase", "default_amount": 0.03 }
573
+ ]
574
+ },
575
+ "expand the range": {
576
+ "intent": "contrast",
577
+ "actions": [
578
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.04 },
579
+ { "parameter": "primaries.gain.y", "operation": "increase", "default_amount": 0.04 }
580
+ ]
581
+ },
582
+ "compress the range": {
583
+ "intent": "contrast",
584
+ "actions": [
585
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
586
+ { "parameter": "primaries.gain.y", "operation": "decrease", "default_amount": 0.04 }
587
+ ]
588
+ },
589
+ "s-curve": {
590
+ "intent": "contrast",
591
+ "actions": [
592
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
593
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.02 },
594
+ { "parameter": "primaries.gain.y", "operation": "increase", "default_amount": 0.02 }
595
+ ]
596
+ },
597
+ "make it warmer": {
598
+ "intent": "color_balance",
599
+ "actions": [
600
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 600 }
601
+ ],
602
+ "result": "orange_yellow_shift",
603
+ "psychological_effect": "comfort_nostalgia_intimacy"
604
+ },
605
+ "warm it up": {
606
+ "intent": "color_balance",
607
+ "actions": [
608
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 600 }
609
+ ]
610
+ },
611
+ "add warmth": {
612
+ "intent": "color_balance",
613
+ "actions": [
614
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 500 }
615
+ ]
616
+ },
617
+ "more warmth": {
618
+ "intent": "color_balance",
619
+ "actions": [
620
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 500 }
621
+ ]
622
+ },
623
+ "warmer tones": {
624
+ "intent": "color_balance",
625
+ "actions": [
626
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 600 }
627
+ ]
628
+ },
629
+ "push it warm": {
630
+ "intent": "color_balance",
631
+ "actions": [
632
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 700 }
633
+ ]
634
+ },
635
+ "golden tones": {
636
+ "intent": "color_balance",
637
+ "actions": [
638
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 800 },
639
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 8 }
640
+ ]
641
+ },
642
+ "more golden": {
643
+ "intent": "color_balance",
644
+ "actions": [
645
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 700 },
646
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 5 }
647
+ ]
648
+ },
649
+ "make it cooler": {
650
+ "intent": "color_balance",
651
+ "actions": [
652
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 600 }
653
+ ],
654
+ "result": "blue_shift",
655
+ "psychological_effect": "tension_isolation_technology"
656
+ },
657
+ "cool it down": {
658
+ "intent": "color_balance",
659
+ "actions": [
660
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 600 }
661
+ ]
662
+ },
663
+ "add coolness": {
664
+ "intent": "color_balance",
665
+ "actions": [
666
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 500 }
667
+ ]
668
+ },
669
+ "cooler tones": {
670
+ "intent": "color_balance",
671
+ "actions": [
672
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 600 }
673
+ ]
674
+ },
675
+ "push it cool": {
676
+ "intent": "color_balance",
677
+ "actions": [
678
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 700 }
679
+ ]
680
+ },
681
+ "more blue": {
682
+ "intent": "color_balance",
683
+ "actions": [
684
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 600 }
685
+ ]
686
+ },
687
+ "bluer": {
688
+ "intent": "color_balance",
689
+ "actions": [
690
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 500 }
691
+ ]
692
+ },
693
+ "icy cold": {
694
+ "intent": "color_balance",
695
+ "actions": [
696
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 900 },
697
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 }
698
+ ]
699
+ },
700
+ "too warm": {
701
+ "intent": "color_balance",
702
+ "actions": [
703
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 500 }
704
+ ]
705
+ },
706
+ "too cool": {
707
+ "intent": "color_balance",
708
+ "actions": [
709
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 500 }
710
+ ]
711
+ },
712
+ "fix the white balance": {
713
+ "intent": "color_balance",
714
+ "workflow": [
715
+ { "step": 1, "action": "use_eyedropper_on_neutral_gray" },
716
+ { "step": 2, "action": "adjust_temp_and_tint" }
717
+ ],
718
+ "actions": [
719
+ { "parameter": "primaries.temp", "operation": "auto_or_manual" },
720
+ { "parameter": "primaries.tint", "operation": "auto_or_manual" }
721
+ ]
722
+ },
723
+ "correct the white balance": {
724
+ "intent": "color_balance",
725
+ "actions": [
726
+ { "parameter": "primaries.temp", "operation": "auto_or_manual" },
727
+ { "parameter": "primaries.tint", "operation": "auto_or_manual" }
728
+ ]
729
+ },
730
+ "neutralize it": {
731
+ "intent": "color_balance",
732
+ "actions": [
733
+ { "parameter": "primaries.temp", "operation": "set", "value": 0 },
734
+ { "parameter": "primaries.tint", "operation": "set", "value": 0 }
735
+ ]
736
+ },
737
+ "remove the green cast": {
738
+ "intent": "color_balance",
739
+ "actions": [
740
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 25 }
741
+ ],
742
+ "description": "push_toward_magenta"
743
+ },
744
+ "fix the green": {
745
+ "intent": "color_balance",
746
+ "actions": [
747
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 25 }
748
+ ]
749
+ },
750
+ "too green": {
751
+ "intent": "color_balance",
752
+ "actions": [
753
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 20 }
754
+ ]
755
+ },
756
+ "push magenta": {
757
+ "intent": "color_balance",
758
+ "actions": [
759
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 20 }
760
+ ]
761
+ },
762
+ "remove the magenta cast": {
763
+ "intent": "color_balance",
764
+ "actions": [
765
+ { "parameter": "primaries.tint", "operation": "decrease", "default_amount": 25 }
766
+ ],
767
+ "description": "push_toward_green"
768
+ },
769
+ "fix the magenta": {
770
+ "intent": "color_balance",
771
+ "actions": [
772
+ { "parameter": "primaries.tint", "operation": "decrease", "default_amount": 25 }
773
+ ]
774
+ },
775
+ "too magenta": {
776
+ "intent": "color_balance",
777
+ "actions": [
778
+ { "parameter": "primaries.tint", "operation": "decrease", "default_amount": 20 }
779
+ ]
780
+ },
781
+ "too pink": {
782
+ "intent": "color_balance",
783
+ "actions": [
784
+ { "parameter": "primaries.tint", "operation": "decrease", "default_amount": 20 }
785
+ ]
786
+ },
787
+ "push green": {
788
+ "intent": "color_balance",
789
+ "actions": [
790
+ { "parameter": "primaries.tint", "operation": "decrease", "default_amount": 20 }
791
+ ]
792
+ },
793
+ "warm the highlights": {
794
+ "intent": "color_balance",
795
+ "actions": [
796
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.04 },
797
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.02 }
798
+ ]
799
+ },
800
+ "warm up the highlights": {
801
+ "intent": "color_balance",
802
+ "actions": [
803
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.04 },
804
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.02 }
805
+ ]
806
+ },
807
+ "golden highlights": {
808
+ "intent": "color_balance",
809
+ "actions": [
810
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.05 },
811
+ { "parameter": "primaries.gain.g", "operation": "increase", "default_amount": 0.02 },
812
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.03 }
813
+ ]
814
+ },
815
+ "cool the highlights": {
816
+ "intent": "color_balance",
817
+ "actions": [
818
+ { "parameter": "primaries.gain.b", "operation": "increase", "default_amount": 0.04 },
819
+ { "parameter": "primaries.gain.r", "operation": "decrease", "default_amount": 0.02 }
820
+ ]
821
+ },
822
+ "blue highlights": {
823
+ "intent": "color_balance",
824
+ "actions": [
825
+ { "parameter": "primaries.gain.b", "operation": "increase", "default_amount": 0.05 }
826
+ ]
827
+ },
828
+ "cool the shadows": {
829
+ "intent": "color_balance",
830
+ "actions": [
831
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.04 },
832
+ { "parameter": "primaries.lift.r", "operation": "decrease", "default_amount": 0.02 }
833
+ ]
834
+ },
835
+ "blue shadows": {
836
+ "intent": "color_balance",
837
+ "actions": [
838
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.05 }
839
+ ]
840
+ },
841
+ "teal shadows": {
842
+ "intent": "color_balance",
843
+ "actions": [
844
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.04 },
845
+ { "parameter": "primaries.lift.g", "operation": "increase", "default_amount": 0.02 },
846
+ { "parameter": "primaries.lift.r", "operation": "decrease", "default_amount": 0.03 }
847
+ ]
848
+ },
849
+ "warm the shadows": {
850
+ "intent": "color_balance",
851
+ "actions": [
852
+ { "parameter": "primaries.lift.r", "operation": "increase", "default_amount": 0.04 },
853
+ { "parameter": "primaries.lift.b", "operation": "decrease", "default_amount": 0.02 }
854
+ ]
855
+ },
856
+ "warm up the shadows": {
857
+ "intent": "color_balance",
858
+ "actions": [
859
+ { "parameter": "primaries.lift.r", "operation": "increase", "default_amount": 0.04 },
860
+ { "parameter": "primaries.lift.b", "operation": "decrease", "default_amount": 0.02 }
861
+ ]
862
+ },
863
+ "warm the midtones": {
864
+ "intent": "color_balance",
865
+ "actions": [
866
+ { "parameter": "primaries.gamma.r", "operation": "increase", "default_amount": 0.03 },
867
+ { "parameter": "primaries.gamma.b", "operation": "decrease", "default_amount": 0.02 }
868
+ ]
869
+ },
870
+ "cool the midtones": {
871
+ "intent": "color_balance",
872
+ "actions": [
873
+ { "parameter": "primaries.gamma.b", "operation": "increase", "default_amount": 0.03 },
874
+ { "parameter": "primaries.gamma.r", "operation": "decrease", "default_amount": 0.02 }
875
+ ]
876
+ },
877
+ "add saturation": {
878
+ "intent": "saturation",
879
+ "actions": [
880
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 }
881
+ ],
882
+ "caution": "values_above_70_often_unnatural"
883
+ },
884
+ "boost saturation": {
885
+ "intent": "saturation",
886
+ "actions": [
887
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 }
888
+ ],
889
+ "caution": "values_above_70_often_unnatural"
890
+ },
891
+ "more saturation": {
892
+ "intent": "saturation",
893
+ "actions": [
894
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 }
895
+ ]
896
+ },
897
+ "increase saturation": {
898
+ "intent": "saturation",
899
+ "actions": [
900
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 }
901
+ ]
902
+ },
903
+ "saturate it": {
904
+ "intent": "saturation",
905
+ "actions": [
906
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 }
907
+ ]
908
+ },
909
+ "more colorful": {
910
+ "intent": "saturation",
911
+ "actions": [
912
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 }
913
+ ]
914
+ },
915
+ "richer colors": {
916
+ "intent": "saturation",
917
+ "actions": [
918
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 },
919
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 8 }
920
+ ]
921
+ },
922
+ "juicy colors": {
923
+ "intent": "saturation",
924
+ "actions": [
925
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 18 },
926
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 10 }
927
+ ]
928
+ },
929
+ "more vibrant": {
930
+ "intent": "saturation",
931
+ "actions": [
932
+ { "parameter": "primaries.color_boost", "operation": "increase", "default_amount": 30 }
933
+ ],
934
+ "description": "natural_saturation_boost_protects_skin"
935
+ },
936
+ "desaturate": {
937
+ "intent": "saturation",
938
+ "actions": [
939
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 }
940
+ ]
941
+ },
942
+ "desaturate it": {
943
+ "intent": "saturation",
944
+ "actions": [
945
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 }
946
+ ]
947
+ },
948
+ "less saturation": {
949
+ "intent": "saturation",
950
+ "actions": [
951
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 }
952
+ ]
953
+ },
954
+ "reduce saturation": {
955
+ "intent": "saturation",
956
+ "actions": [
957
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 }
958
+ ]
959
+ },
960
+ "make it vibrant": {
961
+ "intent": "saturation",
962
+ "actions": [
963
+ { "parameter": "primaries.color_boost", "operation": "increase", "default_amount": 30 }
964
+ ],
965
+ "description": "natural_saturation_boost_protects_skin"
966
+ },
967
+ "punch up the colors": {
968
+ "intent": "saturation",
969
+ "actions": [
970
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 },
971
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 18 }
972
+ ]
973
+ },
974
+ "tone down the colors": {
975
+ "intent": "saturation",
976
+ "actions": [
977
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 }
978
+ ],
979
+ "description": "reduce_saturation_muted_look"
980
+ },
981
+ "mute the colors": {
982
+ "intent": "saturation",
983
+ "actions": [
984
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 }
985
+ ]
986
+ },
987
+ "muted colors": {
988
+ "intent": "saturation",
989
+ "actions": [
990
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 }
991
+ ]
992
+ },
993
+ "less colorful": {
994
+ "intent": "saturation",
995
+ "actions": [
996
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 }
997
+ ]
998
+ },
999
+ "less vibrant": {
1000
+ "intent": "saturation",
1001
+ "actions": [
1002
+ { "parameter": "primaries.color_boost", "operation": "decrease", "default_amount": 25 }
1003
+ ]
1004
+ },
1005
+ "less saturated": {
1006
+ "intent": "saturation",
1007
+ "actions": [
1008
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 }
1009
+ ]
1010
+ },
1011
+ "drain the color": {
1012
+ "intent": "saturation",
1013
+ "actions": [
1014
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 25 }
1015
+ ]
1016
+ },
1017
+ "pull the color out": {
1018
+ "intent": "saturation",
1019
+ "actions": [
1020
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 30 }
1021
+ ]
1022
+ },
1023
+ "make it black and white": {
1024
+ "intent": "saturation",
1025
+ "actions": [
1026
+ { "parameter": "primaries.saturation", "operation": "set", "value": 0 }
1027
+ ]
1028
+ },
1029
+ "black and white": {
1030
+ "intent": "saturation",
1031
+ "actions": [
1032
+ { "parameter": "primaries.saturation", "operation": "set", "value": 0 }
1033
+ ]
1034
+ },
1035
+ "convert to bw": {
1036
+ "intent": "saturation",
1037
+ "actions": [
1038
+ { "parameter": "primaries.saturation", "operation": "set", "value": 0 }
1039
+ ]
1040
+ },
1041
+ "monochrome": {
1042
+ "intent": "saturation",
1043
+ "actions": [
1044
+ { "parameter": "primaries.saturation", "operation": "set", "value": 0 }
1045
+ ]
1046
+ },
1047
+ "grayscale": {
1048
+ "intent": "saturation",
1049
+ "actions": [
1050
+ { "parameter": "primaries.saturation", "operation": "set", "value": 0 }
1051
+ ]
1052
+ },
1053
+ "pastel colors": {
1054
+ "intent": "saturation",
1055
+ "actions": [
1056
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1057
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1058
+ ]
1059
+ },
1060
+ "washed out": {
1061
+ "intent": "saturation",
1062
+ "actions": [
1063
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 20 },
1064
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.05 },
1065
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1066
+ ]
1067
+ },
1068
+ "faded": {
1069
+ "intent": "saturation",
1070
+ "actions": [
1071
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 },
1072
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1073
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 12 }
1074
+ ]
1075
+ },
1076
+ "faded look": {
1077
+ "intent": "saturation",
1078
+ "actions": [
1079
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 },
1080
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1081
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 12 }
1082
+ ]
1083
+ },
1084
+ "bleach bypass": {
1085
+ "intent": "saturation",
1086
+ "actions": [
1087
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 30 },
1088
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 35 }
1089
+ ]
1090
+ },
1091
+ "skip bleach": {
1092
+ "intent": "saturation",
1093
+ "actions": [
1094
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 30 },
1095
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 35 }
1096
+ ]
1097
+ },
1098
+ "add clarity": {
1099
+ "intent": "texture",
1100
+ "actions": [
1101
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 40 }
1102
+ ],
1103
+ "caution": "can_emphasize_skin_imperfections"
1104
+ },
1105
+ "more clarity": {
1106
+ "intent": "texture",
1107
+ "actions": [
1108
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 35 }
1109
+ ]
1110
+ },
1111
+ "increase clarity": {
1112
+ "intent": "texture",
1113
+ "actions": [
1114
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 40 }
1115
+ ]
1116
+ },
1117
+ "add detail": {
1118
+ "intent": "texture",
1119
+ "actions": [
1120
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 35 }
1121
+ ]
1122
+ },
1123
+ "more detail": {
1124
+ "intent": "texture",
1125
+ "actions": [
1126
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 30 }
1127
+ ]
1128
+ },
1129
+ "bring out the detail": {
1130
+ "intent": "texture",
1131
+ "actions": [
1132
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 40 }
1133
+ ]
1134
+ },
1135
+ "sharpen it": {
1136
+ "intent": "texture",
1137
+ "actions": [
1138
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 35 },
1139
+ { "parameter": "blur.sharpen", "operation": "increase", "default_amount": 20 }
1140
+ ]
1141
+ },
1142
+ "make it sharper": {
1143
+ "intent": "texture",
1144
+ "actions": [
1145
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 35 }
1146
+ ]
1147
+ },
1148
+ "crisper": {
1149
+ "intent": "texture",
1150
+ "actions": [
1151
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 30 },
1152
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 15 }
1153
+ ]
1154
+ },
1155
+ "soften the image": {
1156
+ "intent": "texture",
1157
+ "actions": [
1158
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 25 }
1159
+ ],
1160
+ "optional": [
1161
+ { "parameter": "blur.mist", "operation": "increase", "default_amount": 15 }
1162
+ ]
1163
+ },
1164
+ "make it softer": {
1165
+ "intent": "texture",
1166
+ "actions": [
1167
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 35 },
1168
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 }
1169
+ ],
1170
+ "description": "reduce_detail_and_contrast_for_softer_look"
1171
+ },
1172
+ "softer": {
1173
+ "intent": "texture",
1174
+ "actions": [
1175
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 25 },
1176
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 10 }
1177
+ ]
1178
+ },
1179
+ "reduce clarity": {
1180
+ "intent": "texture",
1181
+ "actions": [
1182
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 30 }
1183
+ ]
1184
+ },
1185
+ "less detail": {
1186
+ "intent": "texture",
1187
+ "actions": [
1188
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 25 }
1189
+ ]
1190
+ },
1191
+ "diffused": {
1192
+ "intent": "texture",
1193
+ "actions": [
1194
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 30 },
1195
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 }
1196
+ ]
1197
+ },
1198
+ "add diffusion": {
1199
+ "intent": "texture",
1200
+ "actions": [
1201
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 35 },
1202
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 }
1203
+ ]
1204
+ },
1205
+ "pro mist look": {
1206
+ "intent": "texture",
1207
+ "actions": [
1208
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 40 },
1209
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 20 },
1210
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.03 }
1211
+ ]
1212
+ },
1213
+ "halation": {
1214
+ "intent": "texture",
1215
+ "actions": [
1216
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 20 },
1217
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1218
+ ]
1219
+ },
1220
+ "more gentle": {
1221
+ "intent": "texture",
1222
+ "actions": [
1223
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 25 },
1224
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 },
1225
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 6 }
1226
+ ],
1227
+ "description": "gentle_dreamy_look"
1228
+ },
1229
+ "soft and gentle": {
1230
+ "intent": "texture",
1231
+ "actions": [
1232
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 35 },
1233
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 },
1234
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 8 }
1235
+ ],
1236
+ "description": "soft_dreamy_romantic_look"
1237
+ },
1238
+ "softer and more gentle": {
1239
+ "intent": "texture",
1240
+ "actions": [
1241
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 35 },
1242
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 },
1243
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 8 }
1244
+ ]
1245
+ },
1246
+ "dreamy": {
1247
+ "intent": "texture",
1248
+ "actions": [
1249
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 40 },
1250
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 20 },
1251
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1252
+ ],
1253
+ "description": "ethereal_dreamy_look"
1254
+ },
1255
+ "dreamy look": {
1256
+ "intent": "texture",
1257
+ "actions": [
1258
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 40 },
1259
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 20 },
1260
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1261
+ ]
1262
+ },
1263
+ "ethereal": {
1264
+ "intent": "texture",
1265
+ "actions": [
1266
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 45 },
1267
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 25 },
1268
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1269
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 }
1270
+ ]
1271
+ },
1272
+ "make it gritty": {
1273
+ "intent": "texture",
1274
+ "actions": [
1275
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 60 },
1276
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 }
1277
+ ]
1278
+ },
1279
+ "gritty": {
1280
+ "intent": "texture",
1281
+ "actions": [
1282
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 55 },
1283
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1284
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 }
1285
+ ]
1286
+ },
1287
+ "gritty look": {
1288
+ "intent": "texture",
1289
+ "actions": [
1290
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 55 },
1291
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1292
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 }
1293
+ ]
1294
+ },
1295
+ "raw look": {
1296
+ "intent": "texture",
1297
+ "actions": [
1298
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 45 },
1299
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 },
1300
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 8 }
1301
+ ]
1302
+ },
1303
+ "add a vignette": {
1304
+ "intent": "isolation",
1305
+ "requires_secondary": true,
1306
+ "workflow": [
1307
+ { "step": 1, "action": "add_serial_node" },
1308
+ { "step": 2, "action": "create_circular_window" },
1309
+ { "step": 3, "action": "invert_window" },
1310
+ { "step": 4, "action": "reduce_exposure", "amount": -0.1 },
1311
+ { "step": 5, "action": "increase_softness", "amount": 40 }
1312
+ ]
1313
+ },
1314
+ "vignette": {
1315
+ "intent": "isolation",
1316
+ "requires_secondary": true,
1317
+ "workflow": [
1318
+ { "step": 1, "action": "add_serial_node" },
1319
+ { "step": 2, "action": "create_circular_window" },
1320
+ { "step": 3, "action": "invert_window" },
1321
+ { "step": 4, "action": "reduce_exposure", "amount": -0.1 }
1322
+ ]
1323
+ },
1324
+ "darken the edges": {
1325
+ "intent": "isolation",
1326
+ "requires_secondary": true,
1327
+ "workflow": [
1328
+ { "step": 1, "action": "add_vignette" }
1329
+ ]
1330
+ },
1331
+ "brighten the face": {
1332
+ "intent": "isolation",
1333
+ "requires_secondary": true,
1334
+ "workflow": [
1335
+ { "step": 1, "action": "add_circular_window_on_face" },
1336
+ { "step": 2, "action": "track_if_moving" },
1337
+ { "step": 3, "action": "increase_gamma" }
1338
+ ]
1339
+ },
1340
+ "brighten the subject": {
1341
+ "intent": "isolation",
1342
+ "requires_secondary": true,
1343
+ "workflow": [
1344
+ { "step": 1, "action": "use_magic_mask_or_qualifier" },
1345
+ { "step": 2, "action": "increase_exposure" }
1346
+ ]
1347
+ },
1348
+ "darken the background": {
1349
+ "intent": "isolation",
1350
+ "requires_secondary": true,
1351
+ "workflow": [
1352
+ { "step": 1, "action": "isolate_subject" },
1353
+ { "step": 2, "action": "invert" },
1354
+ { "step": 3, "action": "decrease_exposure" }
1355
+ ]
1356
+ },
1357
+ "isolate the sky": {
1358
+ "intent": "isolation",
1359
+ "requires_secondary": true,
1360
+ "workflow": [
1361
+ { "step": 1, "action": "add_luminance_qualifier_for_highlights" },
1362
+ { "step": 2, "action": "refine_with_gradient" }
1363
+ ]
1364
+ },
1365
+ "fix the skin tones": {
1366
+ "intent": "specific_color",
1367
+ "requires_secondary": true,
1368
+ "workflow": [
1369
+ { "step": 1, "action": "use_skin_tone_qualifier" },
1370
+ { "step": 2, "action": "adjust_hue_and_saturation" }
1371
+ ]
1372
+ },
1373
+ "film look": {
1374
+ "intent": "style",
1375
+ "is_compound": true,
1376
+ "actions": [
1377
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1378
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 850 },
1379
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.02 },
1380
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 5 }
1381
+ ],
1382
+ "optional": [
1383
+ { "effect": "add_grain" }
1384
+ ]
1385
+ },
1386
+ "filmic": {
1387
+ "intent": "style",
1388
+ "is_compound": true,
1389
+ "actions": [
1390
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1391
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 850 },
1392
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 5 }
1393
+ ]
1394
+ },
1395
+ "make it look like film": {
1396
+ "intent": "style",
1397
+ "is_compound": true,
1398
+ "actions": [
1399
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1400
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 850 },
1401
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 5 }
1402
+ ]
1403
+ },
1404
+ "cinematic look": {
1405
+ "intent": "style",
1406
+ "is_compound": true,
1407
+ "actions": [
1408
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1409
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.02 },
1410
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.02 },
1411
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 920 }
1412
+ ],
1413
+ "optional_vignette": true
1414
+ },
1415
+ "cinematic": {
1416
+ "intent": "style",
1417
+ "is_compound": true,
1418
+ "actions": [
1419
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1420
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.02 },
1421
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.02 }
1422
+ ]
1423
+ },
1424
+ "make it cinematic": {
1425
+ "intent": "style",
1426
+ "is_compound": true,
1427
+ "actions": [
1428
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1429
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.02 },
1430
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.02 }
1431
+ ]
1432
+ },
1433
+ "hollywood look": {
1434
+ "intent": "style",
1435
+ "is_compound": true,
1436
+ "actions": [
1437
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1438
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 },
1439
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.02 },
1440
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.02 }
1441
+ ]
1442
+ },
1443
+ "blockbuster look": {
1444
+ "intent": "style",
1445
+ "is_compound": true,
1446
+ "actions": [
1447
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 },
1448
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 },
1449
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.03 },
1450
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.03 }
1451
+ ]
1452
+ },
1453
+ "vintage look": {
1454
+ "intent": "style",
1455
+ "is_compound": true,
1456
+ "actions": [
1457
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1458
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1459
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 400 },
1460
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 }
1461
+ ]
1462
+ },
1463
+ "vintage": {
1464
+ "intent": "style",
1465
+ "is_compound": true,
1466
+ "actions": [
1467
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1468
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1469
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 400 },
1470
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 }
1471
+ ]
1472
+ },
1473
+ "make it vintage": {
1474
+ "intent": "style",
1475
+ "is_compound": true,
1476
+ "actions": [
1477
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1478
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1479
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 400 },
1480
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 18 }
1481
+ ]
1482
+ },
1483
+ "retro look": {
1484
+ "intent": "style",
1485
+ "is_compound": true,
1486
+ "actions": [
1487
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1488
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 12 },
1489
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 350 },
1490
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 }
1491
+ ]
1492
+ },
1493
+ "70s look": {
1494
+ "intent": "style",
1495
+ "is_compound": true,
1496
+ "actions": [
1497
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.05 },
1498
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 },
1499
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 500 },
1500
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 12 }
1501
+ ]
1502
+ },
1503
+ "80s look": {
1504
+ "intent": "style",
1505
+ "is_compound": true,
1506
+ "actions": [
1507
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 18 },
1508
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 15 }
1509
+ ]
1510
+ },
1511
+ "teal and orange": {
1512
+ "intent": "style",
1513
+ "is_compound": true,
1514
+ "actions": [
1515
+ { "parameter": "primaries.lift.r", "operation": "decrease", "default_amount": 0.04 },
1516
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.05 },
1517
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.05 },
1518
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.04 }
1519
+ ]
1520
+ },
1521
+ "orange and teal": {
1522
+ "intent": "style",
1523
+ "is_compound": true,
1524
+ "actions": [
1525
+ { "parameter": "primaries.lift.r", "operation": "decrease", "default_amount": 0.04 },
1526
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.05 },
1527
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.05 },
1528
+ { "parameter": "primaries.gain.b", "operation": "decrease", "default_amount": 0.04 }
1529
+ ]
1530
+ },
1531
+ "complementary colors": {
1532
+ "intent": "style",
1533
+ "is_compound": true,
1534
+ "actions": [
1535
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.04 },
1536
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.04 }
1537
+ ]
1538
+ },
1539
+ "split toning": {
1540
+ "intent": "style",
1541
+ "is_compound": true,
1542
+ "actions": [
1543
+ { "parameter": "primaries.lift.b", "operation": "increase", "default_amount": 0.03 },
1544
+ { "parameter": "primaries.gain.r", "operation": "increase", "default_amount": 0.03 }
1545
+ ]
1546
+ },
1547
+ "noir look": {
1548
+ "intent": "style",
1549
+ "is_compound": true,
1550
+ "actions": [
1551
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 35 },
1552
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 40 },
1553
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 200 }
1554
+ ]
1555
+ },
1556
+ "film noir": {
1557
+ "intent": "style",
1558
+ "is_compound": true,
1559
+ "actions": [
1560
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 40 },
1561
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 45 }
1562
+ ]
1563
+ },
1564
+ "moody": {
1565
+ "intent": "style",
1566
+ "is_compound": true,
1567
+ "actions": [
1568
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 },
1569
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 12 },
1570
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.03 }
1571
+ ]
1572
+ },
1573
+ "moody look": {
1574
+ "intent": "style",
1575
+ "is_compound": true,
1576
+ "actions": [
1577
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 },
1578
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 12 },
1579
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.03 }
1580
+ ]
1581
+ },
1582
+ "dark and moody": {
1583
+ "intent": "style",
1584
+ "is_compound": true,
1585
+ "actions": [
1586
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1587
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1588
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.05 },
1589
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.04 }
1590
+ ]
1591
+ },
1592
+ "horror look": {
1593
+ "intent": "style",
1594
+ "is_compound": true,
1595
+ "actions": [
1596
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 20 },
1597
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 30 },
1598
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 300 }
1599
+ ]
1600
+ },
1601
+ "thriller look": {
1602
+ "intent": "style",
1603
+ "is_compound": true,
1604
+ "actions": [
1605
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1606
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1607
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 200 }
1608
+ ]
1609
+ },
1610
+ "romantic look": {
1611
+ "intent": "style",
1612
+ "is_compound": true,
1613
+ "actions": [
1614
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 400 },
1615
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 },
1616
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 15 },
1617
+ { "parameter": "primaries.md", "operation": "decrease", "default_amount": 20 }
1618
+ ]
1619
+ },
1620
+ "day for night": {
1621
+ "intent": "style",
1622
+ "is_compound": true,
1623
+ "actions": [
1624
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 800 },
1625
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 25 },
1626
+ { "parameter": "primaries.offset.y", "operation": "decrease", "default_amount": 0.15 }
1627
+ ]
1628
+ },
1629
+ "night look": {
1630
+ "intent": "style",
1631
+ "is_compound": true,
1632
+ "actions": [
1633
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 600 },
1634
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 20 },
1635
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 }
1636
+ ]
1637
+ },
1638
+ "moonlight": {
1639
+ "intent": "style",
1640
+ "is_compound": true,
1641
+ "actions": [
1642
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 700 },
1643
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 18 },
1644
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1645
+ ]
1646
+ },
1647
+ "golden hour": {
1648
+ "intent": "style",
1649
+ "is_compound": true,
1650
+ "actions": [
1651
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 900 },
1652
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 },
1653
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 10 }
1654
+ ]
1655
+ },
1656
+ "golden hour look": {
1657
+ "intent": "style",
1658
+ "is_compound": true,
1659
+ "actions": [
1660
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 900 },
1661
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 },
1662
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 10 }
1663
+ ]
1664
+ },
1665
+ "magic hour": {
1666
+ "intent": "style",
1667
+ "is_compound": true,
1668
+ "actions": [
1669
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 800 },
1670
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 12 },
1671
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 10 }
1672
+ ]
1673
+ },
1674
+ "sunset look": {
1675
+ "intent": "style",
1676
+ "is_compound": true,
1677
+ "actions": [
1678
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 1000 },
1679
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 18 },
1680
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 15 }
1681
+ ]
1682
+ },
1683
+ "blue hour": {
1684
+ "intent": "style",
1685
+ "is_compound": true,
1686
+ "actions": [
1687
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 700 },
1688
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 10 },
1689
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 15 }
1690
+ ]
1691
+ },
1692
+ "documentary look": {
1693
+ "intent": "style",
1694
+ "is_compound": true,
1695
+ "actions": [
1696
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 10 },
1697
+ { "parameter": "primaries.md", "operation": "increase", "default_amount": 20 }
1698
+ ]
1699
+ },
1700
+ "natural look": {
1701
+ "intent": "style",
1702
+ "is_compound": true,
1703
+ "actions": [
1704
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 8 },
1705
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 5 }
1706
+ ]
1707
+ },
1708
+ "commercial look": {
1709
+ "intent": "style",
1710
+ "is_compound": true,
1711
+ "actions": [
1712
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 15 },
1713
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 18 },
1714
+ { "parameter": "primaries.offset.y", "operation": "increase", "default_amount": 0.03 }
1715
+ ]
1716
+ },
1717
+ "music video look": {
1718
+ "intent": "style",
1719
+ "is_compound": true,
1720
+ "actions": [
1721
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 20 },
1722
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 }
1723
+ ]
1724
+ },
1725
+ "broadcast look": {
1726
+ "intent": "style",
1727
+ "is_compound": true,
1728
+ "actions": [
1729
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 8 },
1730
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 10 }
1731
+ ]
1732
+ },
1733
+ "indie film look": {
1734
+ "intent": "style",
1735
+ "is_compound": true,
1736
+ "actions": [
1737
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 },
1738
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 12 },
1739
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.03 }
1740
+ ]
1741
+ },
1742
+ "arthouse look": {
1743
+ "intent": "style",
1744
+ "is_compound": true,
1745
+ "actions": [
1746
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 15 },
1747
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 10 },
1748
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 }
1749
+ ]
1750
+ },
1751
+ "cross processed": {
1752
+ "intent": "style",
1753
+ "is_compound": true,
1754
+ "actions": [
1755
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 300 },
1756
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 20 },
1757
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 18 },
1758
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 }
1759
+ ]
1760
+ },
1761
+ "xpro": {
1762
+ "intent": "style",
1763
+ "is_compound": true,
1764
+ "actions": [
1765
+ { "parameter": "primaries.temp", "operation": "decrease", "default_amount": 300 },
1766
+ { "parameter": "primaries.tint", "operation": "increase", "default_amount": 20 },
1767
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 18 },
1768
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 20 }
1769
+ ]
1770
+ },
1771
+ "lomo look": {
1772
+ "intent": "style",
1773
+ "is_compound": true,
1774
+ "actions": [
1775
+ { "parameter": "primaries.saturation", "operation": "increase", "default_amount": 20 },
1776
+ { "parameter": "primaries.contrast", "operation": "increase", "default_amount": 25 },
1777
+ { "parameter": "primaries.lift.y", "operation": "decrease", "default_amount": 0.03 }
1778
+ ]
1779
+ },
1780
+ "instagram filter": {
1781
+ "intent": "style",
1782
+ "is_compound": true,
1783
+ "actions": [
1784
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 10 },
1785
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1786
+ { "parameter": "primaries.temp", "operation": "increase", "default_amount": 300 }
1787
+ ]
1788
+ },
1789
+ "vsco look": {
1790
+ "intent": "style",
1791
+ "is_compound": true,
1792
+ "actions": [
1793
+ { "parameter": "primaries.saturation", "operation": "decrease", "default_amount": 12 },
1794
+ { "parameter": "primaries.lift.y", "operation": "increase", "default_amount": 0.04 },
1795
+ { "parameter": "primaries.contrast", "operation": "decrease", "default_amount": 10 }
1796
+ ]
1797
+ }
1798
+ },
1799
+
1800
+ "modifiers": {
1801
+ "intensity": {
1802
+ "barely": { "synonyms": ["hardly", "just barely", "imperceptible", "trace", "hair of"], "multiplier": 0.2 },
1803
+ "very_subtle": { "synonyms": ["tiny bit", "whisper of", "hint of", "touch of", "nudge"], "multiplier": 0.3 },
1804
+ "subtle": { "synonyms": ["slight", "gentle", "a touch", "a bit", "minor", "delicate", "soft", "light"], "multiplier": 0.5 },
1805
+ "mild": { "synonyms": ["modest", "easy", "tame", "restrained"], "multiplier": 0.6 },
1806
+ "moderate": { "synonyms": ["some", "medium", "reasonable", "decent", "fair amount"], "multiplier": 0.75 },
1807
+ "noticeable": { "synonyms": ["visible", "apparent", "clear", "definite"], "multiplier": 0.9 },
1808
+ "significant": { "synonyms": ["strong", "noticeable", "considerable", "meaningful", "real"], "multiplier": 1.0 },
1809
+ "bold": { "synonyms": ["striking", "pronounced", "marked", "emphatic"], "multiplier": 1.2 },
1810
+ "heavy": { "synonyms": ["intense", "serious", "substantial", "major"], "multiplier": 1.35 },
1811
+ "extreme": { "synonyms": ["aggressive", "maximum", "way more", "drastic", "radical"], "multiplier": 1.5 },
1812
+ "massive": { "synonyms": ["huge", "enormous", "crazy", "insane", "ridiculous"], "multiplier": 1.75 },
1813
+ "nuclear": { "synonyms": ["all the way", "full blast", "maxed out", "cranked", "slam it"], "multiplier": 2.0 }
1814
+ },
1815
+ "scope": {
1816
+ "global": { "synonyms": ["overall", "everywhere", "whole image", "entire frame", "all of it", "the whole thing"], "requires_secondary": false },
1817
+ "shadows": { "synonyms": ["in the shadows", "dark areas", "blacks", "low end", "bottom end", "dark tones", "shadow regions"], "target_range": "shadows" },
1818
+ "deep_shadows": { "synonyms": ["crushed blacks", "toe", "very dark", "near black"], "target_range": "deep_shadows" },
1819
+ "midtones": { "synonyms": ["in the mids", "middle tones", "gamma", "mid-range", "middle gray", "center tones"], "target_range": "midtones" },
1820
+ "low_mids": { "synonyms": ["lower midtones", "shadow-mids", "dark grays"], "target_range": "low_mids" },
1821
+ "high_mids": { "synonyms": ["upper midtones", "highlight-mids", "light grays"], "target_range": "high_mids" },
1822
+ "highlights": { "synonyms": ["in the highlights", "bright areas", "whites", "highs", "top end", "bright tones", "hot areas"], "target_range": "highlights" },
1823
+ "specular": { "synonyms": ["specular highlights", "brightest spots", "hottest areas", "clipping areas"], "target_range": "specular" },
1824
+ "skin": { "synonyms": ["skin tones", "flesh tones", "faces", "complexion", "face area"], "target_range": "skin", "requires_secondary": true },
1825
+ "sky": { "synonyms": ["the sky", "sky area", "clouds", "blue sky", "sky region"], "target_range": "sky", "requires_secondary": true },
1826
+ "background": { "synonyms": ["in the background", "bg", "behind subject", "back of frame"], "target_range": "background", "requires_secondary": true },
1827
+ "foreground": { "synonyms": ["in the foreground", "fg", "front of frame", "closer elements"], "target_range": "foreground", "requires_secondary": true },
1828
+ "subject": { "synonyms": ["the subject", "main subject", "talent", "person", "the actor"], "target_range": "subject", "requires_secondary": true },
1829
+ "edges": { "synonyms": ["the edges", "borders", "corners", "perimeter", "outside"], "target_range": "edges", "requires_secondary": true },
1830
+ "center": { "synonyms": ["the center", "middle of frame", "center of image"], "target_range": "center", "requires_secondary": true },
1831
+ "specific_area": { "synonyms": ["just this part", "only here", "that area", "this region", "selected area"], "requires_secondary": true }
1832
+ },
1833
+ "comparison": {
1834
+ "more": { "operation": "increase", "multiplier": 1.0 },
1835
+ "less": { "operation": "decrease", "multiplier": 1.0 },
1836
+ "much_more": { "operation": "increase", "multiplier": 1.5 },
1837
+ "way_more": { "operation": "increase", "multiplier": 1.75 },
1838
+ "slightly_more": { "operation": "increase", "multiplier": 0.5 },
1839
+ "a_bit_more": { "operation": "increase", "multiplier": 0.6 },
1840
+ "a_touch_more": { "operation": "increase", "multiplier": 0.4 },
1841
+ "much_less": { "operation": "decrease", "multiplier": 1.5 },
1842
+ "way_less": { "operation": "decrease", "multiplier": 1.75 },
1843
+ "slightly_less": { "operation": "decrease", "multiplier": 0.5 },
1844
+ "a_bit_less": { "operation": "decrease", "multiplier": 0.6 },
1845
+ "a_touch_less": { "operation": "decrease", "multiplier": 0.4 },
1846
+ "twice_as_much": { "operation": "increase", "multiplier": 2.0 },
1847
+ "half_as_much": { "operation": "decrease", "multiplier": 0.5 },
1848
+ "keep_going": { "operation": "continue", "multiplier": 1.0 },
1849
+ "more_of_that": { "operation": "continue", "multiplier": 1.0 },
1850
+ "back_off": { "operation": "reverse", "multiplier": 0.5 },
1851
+ "too_much": { "operation": "reverse", "multiplier": 0.7 }
1852
+ },
1853
+ "direction": {
1854
+ "up": { "synonyms": ["raise", "bring up", "push up", "lift", "boost", "crank up", "bump up"], "operation": "increase" },
1855
+ "down": { "synonyms": ["lower", "bring down", "push down", "drop", "reduce", "pull down", "knock down"], "operation": "decrease" },
1856
+ "toward": { "synonyms": ["shift toward", "move toward", "push toward", "lean toward"], "operation": "shift" },
1857
+ "away": { "synonyms": ["shift away", "move away", "push away", "pull away"], "operation": "shift_negative" },
1858
+ "warmer_direction": { "synonyms": ["toward warm", "toward orange", "toward yellow", "toward amber"], "target": "warm" },
1859
+ "cooler_direction": { "synonyms": ["toward cool", "toward blue", "toward cyan", "toward cold"], "target": "cool" },
1860
+ "greener_direction": { "synonyms": ["toward green", "more green"], "target": "green" },
1861
+ "magenta_direction": { "synonyms": ["toward magenta", "toward pink", "more magenta"], "target": "magenta" }
1862
+ },
1863
+ "quality": {
1864
+ "smooth": { "synonyms": ["gradual", "gentle rolloff", "soft transition", "feathered"], "quality": "smooth" },
1865
+ "harsh": { "synonyms": ["abrupt", "hard", "sharp transition", "sudden"], "quality": "harsh" },
1866
+ "natural": { "synonyms": ["organic", "realistic", "believable", "true to life"], "quality": "natural" },
1867
+ "stylized": { "synonyms": ["artistic", "creative", "exaggerated", "heightened"], "quality": "stylized" },
1868
+ "clean": { "synonyms": ["precise", "surgical", "exact", "clinical"], "quality": "clean" },
1869
+ "rough": { "synonyms": ["raw", "unpolished", "textured", "grungy"], "quality": "rough" },
1870
+ "balanced": { "synonyms": ["even", "uniform", "consistent", "level"], "quality": "balanced" },
1871
+ "unbalanced": { "synonyms": ["skewed", "weighted", "biased", "shifted"], "quality": "unbalanced" }
1872
+ },
1873
+ "temporal": {
1874
+ "quickly": { "synonyms": ["fast", "rapid", "snappy", "instant"], "speed": "fast" },
1875
+ "gradually": { "synonyms": ["slowly", "over time", "easing", "gently"], "speed": "slow" },
1876
+ "suddenly": { "synonyms": ["abruptly", "sharply", "immediately"], "speed": "instant" }
1877
+ },
1878
+ "precision": {
1879
+ "exactly": { "synonyms": ["precisely", "just", "right at"], "precision": "exact" },
1880
+ "approximately": { "synonyms": ["about", "around", "roughly", "more or less"], "precision": "approximate" },
1881
+ "between": { "synonyms": ["in the range of", "somewhere between", "from X to Y"], "precision": "range" }
1882
+ },
1883
+ "emphatic_patterns": {
1884
+ "description": "Patterns that boost or reduce intensity based on emphatic language. Amplifiers STACK - 'super mega ultra' applies all three boosts!",
1885
+ "amplifier_tiers": {
1886
+ "tier1_mild": {
1887
+ "boost": 0.1,
1888
+ "words": ["pretty", "quite", "fairly", "rather", "somewhat", "kinda", "sorta", "more"],
1889
+ "description": "Mild qualifiers, slight boost"
1890
+ },
1891
+ "tier2_moderate": {
1892
+ "boost": 0.15,
1893
+ "words": ["very", "really", "definitely", "certainly", "clearly", "noticeably", "visibly", "obviously", "actually", "truly", "genuinely"],
1894
+ "description": "Standard emphasis words"
1895
+ },
1896
+ "tier3_strong": {
1897
+ "boost": 0.2,
1898
+ "words": ["super", "extra", "hella", "mad", "wicked", "damn", "dang", "bloody", "friggin", "freaking", "frickin", "heckin", "real", "proper", "straight up", "legit", "lowkey", "highkey", "deadass"],
1899
+ "description": "Strong colloquial intensifiers"
1900
+ },
1901
+ "tier4_very_strong": {
1902
+ "boost": 0.25,
1903
+ "words": ["extremely", "incredibly", "seriously", "majorly", "heavily", "intensely", "severely", "deeply", "profoundly", "remarkably", "exceptionally", "particularly", "especially", "significantly", "substantially", "considerably", "dramatically"],
1904
+ "description": "Formal strong intensifiers"
1905
+ },
1906
+ "tier5_extreme": {
1907
+ "boost": 0.35,
1908
+ "words": ["ultra", "mega", "hyper", "uber", "turbo", "giga", "tera", "maximum", "max", "peak", "ultimate", "supreme", "paramount", "radical", "drastic", "severe", "massive", "enormous", "tremendous", "immense", "colossal", "monumental", "epic"],
1909
+ "description": "Extreme/prefix intensifiers"
1910
+ },
1911
+ "tier6_insane": {
1912
+ "boost": 0.45,
1913
+ "words": ["insanely", "ridiculously", "absurdly", "outrageously", "obscenely", "ludicrously", "preposterously", "stupidly", "crazy", "bonkers", "mental", "nuts", "bananas", "wild", "savage", "brutal", "beastly", "godly", "ungodly", "otherworldly", "astronomical"],
1914
+ "description": "Absurdist/hyperbolic intensifiers"
1915
+ },
1916
+ "tier7_nuclear": {
1917
+ "boost": 0.55,
1918
+ "words": ["nuclear", "atomic", "thermonuclear", "apocalyptic", "cataclysmic", "earth-shattering", "mind-blowing", "face-melting", "brain-melting", "soul-crushing", "maxed", "cranked", "slammed", "pegged", "pinned", "redlined", "balls to the wall", "full send", "all out", "gonzo", "off the charts", "through the roof", "to eleven", "to the max", "to the moon"],
1919
+ "description": "Maximum intensity - total commitment"
1920
+ }
1921
+ },
1922
+ "action_intensifiers": {
1923
+ "boost": 0.3,
1924
+ "words": ["crank", "cranked", "slam", "slammed", "blast", "blasted", "nuke", "nuked", "crush", "crushed", "smash", "smashed", "kill", "killed", "destroy", "destroyed", "hammer", "hammered", "pound", "pounded", "pump", "pumped", "jack", "jacked", "boost", "boosted", "amp", "amped", "juice", "juiced", "goose", "goosed", "ramp", "ramped", "dial", "dialed", "push", "pushed", "shove", "shoved", "yank", "yanked", "rip", "ripped", "tear", "send", "sent", "launch", "launched"],
1925
+ "description": "Action verbs that imply forceful adjustment"
1926
+ },
1927
+ "max_phrases": {
1928
+ "boost": 0.4,
1929
+ "patterns": ["all the way", "as X as possible", "to the max", "to the limit", "to the extreme", "to the moon", "to the stars", "full blast", "full power", "full throttle", "full strength", "full force", "full effect", "max power", "100 percent", "100%", "give it everything", "give me everything", "all you got", "dont hold back", "go hard", "go ham", "go crazy", "go nuts", "go wild", "go all in", "go all out", "go big", "let it rip", "let her rip"],
1930
+ "description": "Phrases indicating maximum effect"
1931
+ },
1932
+ "boost_patterns": {
1933
+ "repetition": {
1934
+ "patterns": ["really really", "very very", "way way", "much much", "super super", "so so", "more more"],
1935
+ "boost": 0.25,
1936
+ "description": "Repeated words indicate strong emphasis"
1937
+ },
1938
+ "stacked_intensifiers": {
1939
+ "patterns": ["really very", "super extremely", "incredibly very", "way too much", "so very", "so much more", "super duper", "extra extra"],
1940
+ "boost": 0.3,
1941
+ "description": "Multiple intensifiers stacked together"
1942
+ },
1943
+ "all_caps": {
1944
+ "description": "Words in ALL CAPS indicate shouting/emphasis",
1945
+ "boost_per_word": 0.2,
1946
+ "examples": ["make it WARMER", "WAY more contrast", "REALLY punch it up", "SUPER MEGA warm"]
1947
+ },
1948
+ "exclamation_marks": {
1949
+ "description": "Exclamation marks indicate urgency/emphasis",
1950
+ "single": 0.15,
1951
+ "double": 0.3,
1952
+ "triple_plus": 0.5,
1953
+ "examples": ["warmer!", "more contrast!!", "punch it up!!!"]
1954
+ }
1955
+ },
1956
+ "reduce_patterns": {
1957
+ "diminutives": {
1958
+ "patterns": ["just a bit", "just a touch", "just a tad", "just a hair", "just a smidge", "just a little", "only slightly", "barely any", "hardly noticeable", "the tiniest bit", "the slightest touch", "ever so slightly"],
1959
+ "reduction": -0.4,
1960
+ "description": "Diminutive phrases reduce intensity"
1961
+ },
1962
+ "hedging": {
1963
+ "patterns": ["maybe", "perhaps", "kind of", "sort of", "a little", "somewhat", "slightly", "a bit", "a touch", "mildly", "gently", "softly", "lightly"],
1964
+ "reduction": -0.2,
1965
+ "description": "Hedging language indicates uncertainty/subtlety"
1966
+ },
1967
+ "tentative": {
1968
+ "patterns": ["try", "test", "experiment", "see if", "what if we", "lets see", "how about", "could we", "might want to"],
1969
+ "reduction": -0.15,
1970
+ "description": "Tentative language suggests careful adjustments"
1971
+ }
1972
+ },
1973
+ "example_calculations": {
1974
+ "warmer": { "base": 1.0, "boost": 0, "final": 1.0 },
1975
+ "super warmer": { "base": 1.0, "boost": 0.2, "final": 1.2 },
1976
+ "super mega warmer": { "base": 1.0, "boost": 0.55, "final": 1.55 },
1977
+ "super ultra mega hyper warmer!!!": { "base": 1.0, "boost": 1.6, "final": 2.5, "note": "clamped to max 2.5" },
1978
+ "really really WARMER!!": { "base": 1.0, "boost": 0.85, "final": 1.85 },
1979
+ "crank up the warmth to the max": { "base": 1.0, "boost": 0.7, "final": 1.7 },
1980
+ "just a touch warmer": { "base": 1.0, "boost": -0.4, "final": 0.6 },
1981
+ "go absolutely nuclear on the contrast": { "base": 1.0, "boost": 1.25, "final": 2.25 }
1982
+ }
1983
+ }
1984
+ },
1985
+
1986
+ "parameters": {
1987
+ "primaries.lift.y": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1988
+ "primaries.lift.r": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
1989
+ "primaries.lift.g": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
1990
+ "primaries.lift.b": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
1991
+ "primaries.gamma.y": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.1, 0.1] },
1992
+ "primaries.gamma.r": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1993
+ "primaries.gamma.g": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1994
+ "primaries.gamma.b": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1995
+ "primaries.gain.y": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.1, 0.15] },
1996
+ "primaries.gain.r": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1997
+ "primaries.gain.g": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1998
+ "primaries.gain.b": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
1999
+ "primaries.offset.y": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.05, 0.05] },
2000
+ "primaries.offset.r": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
2001
+ "primaries.offset.g": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
2002
+ "primaries.offset.b": { "range": [-1, 1], "default": 0, "typical_adjustment": [-0.03, 0.03] },
2003
+ "primaries.temp": { "range": [-4000, 4000], "default": 0, "typical_adjustment": [-500, 800] },
2004
+ "primaries.tint": { "range": [-100, 100], "default": 0, "typical_adjustment": [-30, 30] },
2005
+ "primaries.contrast": { "range": [-100, 100], "default": 0, "typical_adjustment": [-20, 35] },
2006
+ "primaries.pivot": { "range": [0, 1], "default": 0.435 },
2007
+ "primaries.saturation": { "range": [0, 100], "default": 50, "typical_adjustment": [35, 65] },
2008
+ "primaries.color_boost": { "range": [-100, 100], "default": 0, "typical_adjustment": [-20, 40] },
2009
+ "primaries.md": { "range": [-100, 100], "default": 0, "typical_adjustment": [-30, 50] },
2010
+ "primaries.hue": { "range": [0, 100], "default": 50 },
2011
+ "primaries.shadows": { "range": [-100, 100], "default": 0 },
2012
+ "primaries.highlights": { "range": [-100, 100], "default": 0 },
2013
+ "hdr.global.exposure": { "range": [-5, 5], "default": 0, "unit": "stops" },
2014
+ "hdr.global.contrast": { "range": [-100, 100], "default": 0 },
2015
+ "hdr.global.saturation": { "range": [0, 200], "default": 100 },
2016
+ "hdr.black_offset": { "range": [-1, 1], "default": 0 },
2017
+ "curves.soft_clip.high": { "range": [0, 1023], "default": 1023 },
2018
+ "curves.soft_clip.high_soft": { "range": [0, 1023], "default": 0, "typical_adjustment": [900, 1023] },
2019
+ "curves.soft_clip.low": { "range": [0, 1023], "default": 0 },
2020
+ "curves.soft_clip.low_soft": { "range": [0, 1023], "default": 0 },
2021
+ "blur.radius": { "range": [0, 100], "default": 0, "typical_adjustment": [0, 15] },
2022
+ "blur.sharpen": { "range": [0, 100], "default": 0, "typical_adjustment": [0, 40] },
2023
+ "blur.mist": { "range": [0, 100], "default": 0, "typical_adjustment": [0, 30] }
2024
+ },
2025
+
2026
+ "synonyms": {
2027
+ "shadows": ["blacks", "shadow", "dark areas", "dark tones", "low end", "bottom end", "shadow detail", "dark regions", "the darks", "darker areas", "shadow tones", "black point", "toe", "lower tones", "crushed areas", "murky areas"],
2028
+ "deep_shadows": ["crushed blacks", "near black", "toe region", "very dark", "super dark", "pitch black areas"],
2029
+ "midtones": ["mids", "middle tones", "mid-range", "gamma", "middle", "middle gray", "mid values", "center tones", "neutral tones", "18% gray", "gray tones", "middle brightness", "core tones"],
2030
+ "highlights": ["whites", "highs", "bright areas", "bright tones", "top end", "hot spots", "bright regions", "highlight detail", "the brights", "lighter areas", "white point", "shoulder", "upper tones", "peak brightness", "luminous areas"],
2031
+ "specular_highlights": ["specular", "super bright", "clipping", "blown areas", "hottest spots", "peak white"],
2032
+ "brighter": ["lighter", "more exposure", "open up", "bring up", "raise", "lift", "illuminate", "lighten up", "add light", "brighten up", "boost exposure", "increase brightness", "more luminous", "open it up", "bring up the levels"],
2033
+ "darker": ["dimmer", "less exposure", "bring down", "lower", "drop", "crush", "darken up", "remove light", "reduce brightness", "pull down", "sink", "deepen", "make it darker", "less luminous"],
2034
+ "warmer": ["more orange", "golden", "amber", "sunset", "tungsten", "more yellow", "yellower", "richer warm", "add warmth", "push warm", "toward warm", "golden tones", "orange tones", "sunset tones", "candlelit", "firelight", "incandescent"],
2035
+ "cooler": ["more blue", "colder", "icy", "moonlight", "more cyan", "bluer", "richer cool", "add coolness", "push cool", "toward cool", "blue tones", "daylight", "overcast", "shadowy", "twilight", "arctic", "winter feel"],
2036
+ "saturated": ["colorful", "vivid", "punchy colors", "rich colors", "vibrant", "juicy", "intense colors", "bold colors", "strong colors", "chromatic", "full color", "color-rich", "lush colors"],
2037
+ "desaturated": ["muted", "washed out", "faded", "dull", "pale", "subdued", "pastel", "bleached", "color-weak", "less colorful", "neutral", "gray-ish", "monochromatic", "achromatic"],
2038
+ "contrasty": ["punchy", "dynamic", "high contrast", "snappy", "crisp", "bold contrast", "hard contrast", "aggressive contrast"],
2039
+ "flat": ["low contrast", "muddy", "dull", "lifeless", "washed", "soft contrast", "no punch", "compressed range", "milky"],
2040
+ "sharp": ["crisp", "detailed", "textured", "high detail", "defined", "clear", "razor sharp", "tack sharp"],
2041
+ "soft": ["smooth", "gentle", "diffused", "hazy", "dreamy", "low detail", "ethereal", "delicate", "misty"],
2042
+ "grain": ["noise", "texture", "film grain", "grit", "graininess", "organic texture", "photochemical"],
2043
+ "clean": ["noiseless", "smooth", "pristine", "pure", "clinical", "sterile", "digital clean"],
2044
+ "natural": ["realistic", "true to life", "organic", "neutral", "ungraded", "as shot", "documentary style"],
2045
+ "stylized": ["graded", "processed", "artistic", "creative look", "designed", "intentional", "crafted"],
2046
+ "cinematic": ["filmic", "movie look", "theatrical", "hollywood", "big screen", "feature film"],
2047
+ "broadcast": ["tv look", "rec709", "standard", "video", "news style", "clean broadcast"],
2048
+ "exposure": ["brightness", "luminance", "light level", "overall brightness", "image brightness"],
2049
+ "contrast": ["dynamic range", "tonal range", "punch", "snap", "bite", "separation"],
2050
+ "saturation": ["color intensity", "chroma", "color richness", "color strength", "vibrancy"],
2051
+ "temperature": ["white balance", "color temp", "kelvin", "warm cool balance", "wb"],
2052
+ "tint": ["green magenta", "g/m balance", "magenta green", "color tint", "hue shift"],
2053
+ "lift": ["shadow level", "black level", "shadow brightness", "pedestal", "setup"],
2054
+ "gamma": ["midtone level", "mid brightness", "middle gray level", "mid control"],
2055
+ "gain": ["highlight level", "white level", "highlight brightness", "peak level"],
2056
+ "offset": ["master level", "overall shift", "global brightness", "dc offset"],
2057
+ "vignette": ["edge darkening", "corner darkening", "light falloff", "edge fade"],
2058
+ "skin_tones": ["flesh tones", "complexion", "face color", "skin color", "portrait tones"],
2059
+ "sky_color": ["sky blue", "sky tones", "atmosphere color", "overhead color"],
2060
+ "foliage": ["grass", "trees", "leaves", "vegetation", "greenery", "plant color"],
2061
+ "water_color": ["ocean color", "sea color", "lake color", "water tones"]
2062
+ },
2063
+
2064
+ "color_terms": {
2065
+ "warm_colors": ["red", "orange", "yellow", "gold", "amber", "copper", "bronze", "rust", "terracotta", "coral", "peach", "apricot", "tangerine", "burnt orange", "sienna", "ochre", "mustard", "honey", "caramel", "champagne", "golden yellow", "sunset orange", "fire red", "crimson", "scarlet", "vermillion", "salmon", "rose gold"],
2066
+ "cool_colors": ["blue", "cyan", "teal", "purple", "violet", "indigo", "navy", "azure", "cobalt", "cerulean", "sapphire", "turquoise", "aqua", "aquamarine", "periwinkle", "lavender", "lilac", "plum", "mauve", "ice blue", "steel blue", "powder blue", "midnight blue", "ocean blue", "sky blue", "robin egg blue", "electric blue", "cornflower"],
2067
+ "neutral_colors": ["gray", "grey", "white", "black", "silver", "charcoal", "slate", "ash", "pewter", "gunmetal", "ivory", "cream", "eggshell", "bone", "off-white", "warm gray", "cool gray", "neutral gray", "graphite"],
2068
+ "green_spectrum": ["green", "emerald", "forest green", "olive", "sage", "mint", "lime", "chartreuse", "kelly green", "hunter green", "moss", "pine", "jade", "seafoam", "pistachio", "avocado", "fern", "shamrock", "teal green", "viridian"],
2069
+ "red_spectrum": ["red", "crimson", "scarlet", "burgundy", "maroon", "wine", "cherry", "ruby", "blood red", "brick red", "cardinal", "raspberry", "cranberry", "vermillion", "carmine", "venetian red"],
2070
+ "orange_spectrum": ["orange", "tangerine", "peach", "coral", "apricot", "rust", "burnt orange", "terracotta", "pumpkin", "persimmon", "copper", "bronze", "sienna"],
2071
+ "yellow_spectrum": ["yellow", "gold", "mustard", "lemon", "canary", "saffron", "amber", "honey", "butter", "cream", "ochre", "flaxen", "champagne", "maize"],
2072
+ "blue_spectrum": ["blue", "navy", "cobalt", "azure", "cerulean", "sapphire", "indigo", "royal blue", "prussian blue", "ultramarine", "steel blue", "slate blue", "powder blue", "baby blue", "sky blue", "ice blue"],
2073
+ "purple_spectrum": ["purple", "violet", "lavender", "lilac", "plum", "mauve", "orchid", "amethyst", "grape", "eggplant", "magenta", "fuchsia", "mulberry", "periwinkle", "heather"],
2074
+ "brown_spectrum": ["brown", "tan", "beige", "khaki", "camel", "coffee", "chocolate", "espresso", "mocha", "walnut", "chestnut", "mahogany", "umber", "sepia", "taupe", "fawn"],
2075
+ "skin_related": ["skin", "flesh", "face", "skin tones", "complexion", "flesh tones", "portrait tones", "face tones", "caucasian skin", "dark skin", "olive skin", "tan skin", "pale skin", "african skin", "asian skin", "latino skin", "mediterranean skin", "nordic skin", "warm skin", "cool skin", "ruddy skin", "sallow skin"],
2076
+ "nature_colors": ["sky", "grass", "foliage", "water", "sunset", "sunrise", "ocean", "sea", "forest", "desert", "sand", "earth", "soil", "rock", "stone", "snow", "ice", "clouds", "fire", "flame", "leaves", "bark", "flowers", "petals"],
2077
+ "time_of_day_colors": ["golden hour gold", "magic hour pink", "blue hour blue", "twilight purple", "dawn pink", "dusk orange", "noon harsh", "overcast gray", "moonlight blue", "candlelight amber", "firelight orange"],
2078
+ "film_stock_colors": ["kodak warm", "fuji cool", "vision3 neutral", "portra skin tones", "ektar vivid", "velvia saturated", "provia natural", "cinestill halation", "kodachrome rich"],
2079
+ "cinematic_palettes": ["teal and orange", "cyan and red", "blue and yellow", "green and magenta", "complementary split", "triadic harmony", "analogous warm", "analogous cool", "monochromatic warm", "monochromatic cool"],
2080
+ "emotion_colors": ["warm romantic", "cool clinical", "desaturated somber", "saturated joyful", "high contrast dramatic", "low contrast peaceful", "dark moody", "bright optimistic"],
2081
+ "lighting_colors": ["tungsten orange", "daylight blue", "fluorescent green", "led mixed", "sodium vapor orange", "mercury vapor green", "neon pink", "neon blue", "practical warm", "bounce neutral", "diffused soft"]
2082
+ },
2083
+
2084
+ "problem_patterns": {
2085
+ "too_warm": {
2086
+ "indicators": ["orange", "yellow", "warm cast", "too warm", "orangey", "yellowy", "tungsten look", "incandescent", "amber cast", "golden cast"],
2087
+ "common_causes": ["wrong white balance", "tungsten lighting", "sunset spill", "practicals in shot"],
2088
+ "fix": { "parameter": "primaries.temp", "operation": "decrease", "typical_amount": 500 },
2089
+ "severity_indicators": { "slight": 200, "moderate": 500, "severe": 1000 }
2090
+ },
2091
+ "too_cool": {
2092
+ "indicators": ["blue", "cold", "cool cast", "too cool", "bluish", "icy", "sterile", "clinical blue"],
2093
+ "common_causes": ["wrong white balance", "daylight in tungsten scene", "shade/overcast", "blue bounce"],
2094
+ "fix": { "parameter": "primaries.temp", "operation": "increase", "typical_amount": 500 },
2095
+ "severity_indicators": { "slight": 200, "moderate": 500, "severe": 1000 }
2096
+ },
2097
+ "green_cast": {
2098
+ "indicators": ["green", "greenish", "fluorescent", "sickly green", "green tint", "office lighting", "industrial green"],
2099
+ "common_causes": ["fluorescent lights", "LED panels", "green screen spill", "foliage reflection", "mixed lighting"],
2100
+ "fix": { "parameter": "primaries.tint", "operation": "increase", "typical_amount": 20 },
2101
+ "severity_indicators": { "slight": 10, "moderate": 20, "severe": 40 }
2102
+ },
2103
+ "magenta_cast": {
2104
+ "indicators": ["magenta", "pink", "pinkish", "purple tint", "too magenta", "rosy"],
2105
+ "common_causes": ["certain LED panels", "sunset reflection", "overcorrected green", "certain camera sensors"],
2106
+ "fix": { "parameter": "primaries.tint", "operation": "decrease", "typical_amount": 20 },
2107
+ "severity_indicators": { "slight": 10, "moderate": 20, "severe": 40 }
2108
+ },
2109
+ "overexposed": {
2110
+ "indicators": ["blown out", "too bright", "hot", "clipped whites", "washed out", "overlit", "nuclear bright", "no highlight detail"],
2111
+ "common_causes": ["too much light", "wrong exposure", "reflections", "window blow out", "sky too bright"],
2112
+ "fix": { "parameter": "primaries.gain.y", "operation": "decrease", "typical_amount": 0.1 },
2113
+ "alternative_fixes": [
2114
+ { "parameter": "primaries.offset.y", "operation": "decrease", "description": "overall brightness" },
2115
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 900, "description": "soft clip highlights" }
2116
+ ]
2117
+ },
2118
+ "underexposed": {
2119
+ "indicators": ["too dark", "muddy", "crushed blacks", "underlit", "can't see detail", "murky", "lost in shadows"],
2120
+ "common_causes": ["not enough light", "wrong exposure", "backlit subject", "silhouette"],
2121
+ "fix": { "parameter": "primaries.lift.y", "operation": "increase", "typical_amount": 0.05 },
2122
+ "alternative_fixes": [
2123
+ { "parameter": "primaries.offset.y", "operation": "increase", "description": "overall brightness" },
2124
+ { "parameter": "primaries.gamma.y", "operation": "increase", "description": "midtone lift" }
2125
+ ]
2126
+ },
2127
+ "crushed_blacks": {
2128
+ "indicators": ["no shadow detail", "blacks are clipped", "shadows gone", "too crushed", "lost detail in darks"],
2129
+ "common_causes": ["too much contrast", "lift too low", "wrong LUT", "viewing on bright display"],
2130
+ "fix": { "parameter": "primaries.lift.y", "operation": "increase", "typical_amount": 0.04 }
2131
+ },
2132
+ "blown_highlights": {
2133
+ "indicators": ["highlights clipped", "whites blown", "no highlight info", "sun too hot", "windows blown"],
2134
+ "common_causes": ["overexposure", "too much gain", "wrong LUT", "HDR content on SDR"],
2135
+ "fix": { "parameter": "primaries.gain.y", "operation": "decrease", "typical_amount": 0.08 },
2136
+ "alternative_fixes": [
2137
+ { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 850, "description": "soft clip" }
2138
+ ]
2139
+ },
2140
+ "flat_image": {
2141
+ "indicators": ["no contrast", "flat", "dull", "lifeless", "log looking", "washed", "no punch", "milky"],
2142
+ "common_causes": ["missing LUT", "wrong color space", "fog/haze", "low contrast lens", "wrong output settings"],
2143
+ "fix": { "parameter": "primaries.contrast", "operation": "increase", "typical_amount": 25 },
2144
+ "alternative_fixes": [
2145
+ { "method": "lift_gain_spread", "description": "lower lift, raise gain for natural contrast" }
2146
+ ]
2147
+ },
2148
+ "too_contrasty": {
2149
+ "indicators": ["too punchy", "harsh contrast", "crushed and blown", "lost detail both ends", "clipping"],
2150
+ "common_causes": ["too much contrast", "wrong LUT", "s-curve too aggressive"],
2151
+ "fix": { "parameter": "primaries.contrast", "operation": "decrease", "typical_amount": 20 }
2152
+ },
2153
+ "oversaturated": {
2154
+ "indicators": ["too colorful", "garish", "clown colors", "cartoonish", "colors clipping", "skin too red", "over-vivid"],
2155
+ "common_causes": ["too much saturation", "color boost too high", "certain camera profiles", "HDR to SDR conversion"],
2156
+ "fix": { "parameter": "primaries.saturation", "operation": "decrease", "typical_amount": 15 },
2157
+ "check_areas": ["skin tones", "reds", "oranges"]
2158
+ },
2159
+ "undersaturated": {
2160
+ "indicators": ["washed out colors", "no color", "desaturated", "gray looking", "dull colors", "anemic"],
2161
+ "common_causes": ["saturation too low", "wrong color space", "faded film look gone wrong"],
2162
+ "fix": { "parameter": "primaries.saturation", "operation": "increase", "typical_amount": 12 }
2163
+ },
2164
+ "bad_skin_tones": {
2165
+ "indicators": ["skin looks wrong", "orange skin", "green skin", "pale skin", "red skin", "blotchy", "unhealthy looking"],
2166
+ "common_causes": ["wrong white balance", "saturation issues", "color cast", "mixed lighting on talent"],
2167
+ "fix": { "workflow": "isolate skin with qualifier, adjust hue/saturation/temperature" },
2168
+ "typical_corrections": [
2169
+ { "issue": "orange_skin", "fix": "reduce temp or desaturate oranges" },
2170
+ { "issue": "green_skin", "fix": "add magenta tint or shift hue" },
2171
+ { "issue": "red_skin", "fix": "desaturate reds or shift toward orange" },
2172
+ { "issue": "pale_skin", "fix": "add warmth and slight saturation" }
2173
+ ]
2174
+ },
2175
+ "bad_sky": {
2176
+ "indicators": ["sky too bright", "sky too blue", "sky too flat", "sky clipped", "banding in sky"],
2177
+ "common_causes": ["overexposure", "wrong white balance", "compression artifacts", "too much processing"],
2178
+ "fix": { "workflow": "isolate sky with qualifier/gradient, adjust exposure and saturation" }
2179
+ },
2180
+ "noise_grain": {
2181
+ "indicators": ["noisy", "grainy", "digital noise", "too much grain", "speckled", "sensor noise"],
2182
+ "common_causes": ["high ISO", "underexposed and lifted", "small sensor", "aggressive noise reduction artifacts"],
2183
+ "fix": { "workflow": "apply noise reduction or denoise in Resolve" }
2184
+ },
2185
+ "soft_image": {
2186
+ "indicators": ["soft", "blurry", "not sharp", "mushy", "out of focus looking", "no detail"],
2187
+ "common_causes": ["focus miss", "camera shake", "diffusion filter", "compression", "low resolution upscale"],
2188
+ "fix": { "parameter": "primaries.md", "operation": "increase", "typical_amount": 30 },
2189
+ "caution": "sharpening cannot fix true focus issues"
2190
+ },
2191
+ "harsh_image": {
2192
+ "indicators": ["too sharp", "crunchy", "over-sharpened", "halos", "artificial looking", "too crispy"],
2193
+ "common_causes": ["too much sharpening", "too much clarity", "aggressive in-camera processing"],
2194
+ "fix": { "parameter": "primaries.md", "operation": "decrease", "typical_amount": 25 }
2195
+ },
2196
+ "mixed_lighting": {
2197
+ "indicators": ["different color temps in shot", "half warm half cool", "windows daylight interior tungsten", "practicals different colors"],
2198
+ "common_causes": ["mixed practical lights", "daylight through windows", "production lighting mix"],
2199
+ "fix": { "workflow": "use power windows or qualifiers to treat different areas separately" }
2200
+ },
2201
+ "highlight_rolloff": {
2202
+ "indicators": ["harsh highlight transition", "digital looking highlights", "no shoulder", "clipping abruptly"],
2203
+ "common_causes": ["linear encoding", "missing film emulation", "wrong tone mapping"],
2204
+ "fix": { "parameter": "curves.soft_clip.high_soft", "operation": "set", "value": 900 }
2205
+ },
2206
+ "shadow_rolloff": {
2207
+ "indicators": ["harsh shadow transition", "digital blacks", "no toe", "shadows clip abruptly"],
2208
+ "common_causes": ["linear encoding", "missing film emulation", "wrong tone mapping"],
2209
+ "fix": { "parameter": "curves.soft_clip.low_soft", "operation": "set", "value": 50 }
2210
+ },
2211
+ "color_fringing": {
2212
+ "indicators": ["purple fringing", "chromatic aberration", "color edges", "rainbow edges"],
2213
+ "common_causes": ["lens chromatic aberration", "cheap lens", "high contrast edges"],
2214
+ "fix": { "workflow": "use CA correction in Resolve or lens correction" }
2215
+ },
2216
+ "banding": {
2217
+ "indicators": ["banding", "posterization", "stepping in gradients", "sky banding", "smooth areas stepping"],
2218
+ "common_causes": ["8-bit source", "too much processing", "compression", "gradient stretching"],
2219
+ "fix": { "workflow": "add subtle grain/dither, reduce processing, work in higher bit depth" }
2220
+ },
2221
+ "luminance_imbalance": {
2222
+ "indicators": ["background brighter than subject", "subject too dark", "wrong brightness hierarchy"],
2223
+ "common_causes": ["backlit scene", "window behind subject", "production lighting issue"],
2224
+ "fix": { "workflow": "use power windows to balance subject and background separately" }
2225
+ },
2226
+ "color_crossover": {
2227
+ "indicators": ["colors bleeding", "hue shift in tones", "shadows different color than highlights"],
2228
+ "common_causes": ["certain film stocks", "cross-processing", "color matrix issues"],
2229
+ "fix": { "workflow": "use lift/gamma/gain color wheels to neutralize each tonal range" }
2230
+ }
2231
+ }
2232
+ }