asciify-engine 4.18.0 → 4.19.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.
@@ -1,10 +1,10 @@
1
1
  # Asciify looks
2
2
 
3
- Finished artwork looks for a person's own photo, video or GIF: wallpapers, posters, album and cover art, hero artwork, prints and social images. Each look has the prompt a person gives you and the exact `/studio` settings that reproduce it. Every look is shown live at https://asciify.org/looks on the site's sample images, and opens in the editor at https://asciify.org/editor with the same settings.
3
+ Finished artwork looks for a person's own photo, video or GIF: wallpapers, posters, album and cover art, hero artwork, prints and social images. Each look has the prompt a person gives you and the exact `/studio` settings that reproduce it. Every look is shown live at https://asciify.org/looks on a source image made for it, and opens in the editor at https://asciify.org/editor with the same settings. Every Studio render style has at least one look.
4
4
 
5
5
  These are artworks, not interface components. For a loading state, a background behind text or another UI piece, use [components.md](components.md) and the kit instead.
6
6
 
7
- Twelve looks are the engine's curated presets: apply them with `studioLook(id)` and enumerate `STUDIO_LOOKS` rather than copying their values. The others are written out in full settings for render styles the presets do not cover. All of them use the `asciify-engine/studio` entry ([studio-workspace.md](studio-workspace.md), [print-styles.md](print-styles.md)); nothing is uploaded, and the person's media stays in the browser.
7
+ Twelve looks are the engine's curated presets: apply them with `studioLook(id)` and enumerate `STUDIO_LOOKS` rather than copying their values. The others are written out in full settings: render styles the presets do not cover, Composed looks that use the backdrop (blur, the photo itself, gradients, transparency) and masks, and Finished looks that turn on the optical finish (vignette, grain, bloom, scanlines, fringe, blur). All of them use the `asciify-engine/studio` entry ([studio-workspace.md](studio-workspace.md), [print-styles.md](print-styles.md)); nothing is uploaded, and the person's media stays in the browser.
8
8
 
9
9
  ## Reproduce a look
10
10
 
@@ -58,12 +58,417 @@ Common sizes: desktop 3840×2160 (`referenceWidth: 960`), phone 1290×2796 (`430
58
58
 
59
59
  ## How to choose
60
60
 
61
- - The person names a look, or describes one ("newsprint", "riso", "phosphor", "Lego", "engraving"): use the entry, then adjust only what they asked for.
62
- - Dark, contrasty sources (a subject on black, night scenes) suit character looks and source-color tiles. Bright, high-key sources (white architecture, paper, daylight) suit the paper-ground looks: Newsprint, Two inks, Banknote, Four-color press.
63
- - Subjects with strong local color (fruit, fish, birds, a painting) suit source-color looks: Mosaic study, Brickwork, Pixel, Honeycomb, Pointillist.
61
+ - The person names a look, or describes one ("newsprint", "riso", "phosphor", "Lego", "engraving", "film still"): use the entry, then adjust only what they asked for.
62
+ - Dark, contrasty sources (a subject on black, night scenes) suit character looks and source-color tiles. Bright, high-key sources (white architecture, paper, daylight) suit the paper-ground looks: Newsprint, Two inks, Banknote, Four-color press, Riso duotone, Woodcut, Overprint.
63
+ - Subjects with strong local color (fruit, fish, birds, a painting) suit source-color looks: Mosaic study, Brickwork, Pixel, Honeycomb, Pointillist, ANSI blocks, Jewel box.
64
+ - The artwork goes over something else (video, a gradient, a brand color, a product page): use a transparent look (Cutout, Halo overlay) and export PNG, which keeps the alpha.
65
+ - The person wants the photo itself to stay present: Frosted glass and Bokeh draw over its blur, Overprint over the sharp original.
66
+ - The person asks for a grade, film, broadcast or vintage feel: use a Finished look. Finish effects need WebGL; check `art.capabilities.gpuFinish` and say so when it is unavailable.
64
67
  - Keep artwork with motion off for video sources unless asked; the footage already moves.
65
68
  - Say in one line which look you chose and offer one alternative from this file.
66
69
 
70
+ ## frost: Frosted glass
71
+ Category: Composed
72
+ Use it for: sunsets, skylines and silhouettes as white frost characters over a soft, full-color blur of the photo; premium wallpapers and covers.
73
+ Settings: ASCII, 5px cells, ink `#121110` with the tone curve inverted so shadows carry the characters, over the source blurred 24px at full opacity.
74
+
75
+ Prompt:
76
+ “Frost [my photo] like glass with asciify-engine: fine white characters where the photo is bright, over a soft, full-color blur of the same photo, so dark shapes stay clean silhouettes. Export a 3840×2160 PNG wallpaper and a 1290×2796 phone version.”
77
+
78
+ ```ts
79
+ import { mountStudio } from 'asciify-engine/studio';
80
+
81
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
82
+ settings: {
83
+ style: 'ascii', cellSize: 4, ink: '#fff7ef',
84
+ backdrop: { mode: 'blurred', blur: 10, opacity: 1 },
85
+ color: { contrast: 1.2, brightness: .05 },
86
+ },
87
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
88
+ });
89
+ // The blur is the untouched photo; color adjustments only change the characters.
90
+ ```
91
+
92
+ ## bokeh: Bokeh
93
+ Category: Composed
94
+ Use it for: flowers, gardens and lights as glowing color dots over their own soft focus; spring campaigns, calm wallpapers, music covers.
95
+ Settings: dots, 6px cells, source color at saturation 1.3, brightness .12, over the source blurred 32px, character glow .25.
96
+
97
+ Prompt:
98
+ “Turn [my photo] into a bokeh artwork with asciify-engine: halftone dots in the photo's own colors, slightly brighter, floating over a deep blur of the same photo with a soft glow. Export a 2160×2700 PNG.”
99
+
100
+ ```ts
101
+ import { mountStudio } from 'asciify-engine/studio';
102
+
103
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
104
+ settings: {
105
+ style: 'dots', cellSize: 6, colorMode: 'source',
106
+ backdrop: { mode: 'blurred', blur: 32, opacity: 1 },
107
+ color: { saturation: 1.3, brightness: .12, contrast: 1.1 },
108
+ effects: { characterBloom: .25 },
109
+ },
110
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
111
+ });
112
+ ```
113
+
114
+ ## cutout: Cutout
115
+ Category: Composed
116
+ Use it for: a subject on a dark or plain background as a sticker with a transparent ground; overlays on any color, product cut-outs, layered heroes.
117
+ Settings: mixed type, 4px cells, source color at saturation 1.4, brightness .15, transparent backdrop.
118
+
119
+ Prompt:
120
+ “Cut [my subject on a dark background] out as an ASCII sticker with asciify-engine: fine mixed type in the photo's colors on a transparent ground, so only the subject remains. Place it over [our brand color] in the hero and export a transparent 2160×2160 PNG.”
121
+
122
+ ```ts
123
+ import { mountStudio } from 'asciify-engine/studio';
124
+
125
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
126
+ settings: {
127
+ style: 'mixed', cellSize: 4, colorMode: 'source',
128
+ backdrop: { mode: 'transparent' },
129
+ color: { saturation: 1.4, contrast: 1.2, brightness: .15 },
130
+ },
131
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
132
+ });
133
+ // Export as PNG to keep the transparency; JPEG and MP4 fill it with black.
134
+ ```
135
+
136
+ ## halo: Halo overlay
137
+ Category: Composed
138
+ Use it for: a glowing white dot artwork with a transparent ground, to lay over video, gradients or brand color; launch heroes and title cards.
139
+ Settings: dots, 5px cells, `#f4f1ea` ink, transparent backdrop, character glow .4.
140
+
141
+ Prompt:
142
+ “Make [my photo] a glowing dot overlay with asciify-engine: white halftone dots with a soft halo on a transparent ground, so it sits over [our hero gradient]. Keep the canvas pointer-events free and export a transparent 3840×2160 PNG.”
143
+
144
+ ```ts
145
+ import { mountStudio } from 'asciify-engine/studio';
146
+
147
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
148
+ settings: {
149
+ style: 'dots', cellSize: 5, ink: '#f4f1ea',
150
+ backdrop: { mode: 'transparent' },
151
+ color: { contrast: 1.2 },
152
+ effects: { characterBloom: .4 },
153
+ },
154
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
155
+ });
156
+ // canvas { position: absolute; inset: 0; pointer-events: none } over the layer it decorates.
157
+ ```
158
+
159
+ ## afterglow: Afterglow
160
+ Category: Composed
161
+ Use it for: a bright figure or object on black, redrawn in warm light characters over a dusk gradient; event posters, music and campaign heroes.
162
+ Settings: ASCII, 4px cells, black point .25, `#fff0dc` ink over a gradient from `#1c1433` to `#b4492f`, character glow .3.
163
+
164
+ Prompt:
165
+ “Draw [my photo] in warm light characters over a dusk gradient with asciify-engine: violet into ember, the characters glowing softly. Export a 2160×2700 PNG poster and let me swap the two gradient colors for [our palette].”
166
+
167
+ ```ts
168
+ import { mountStudio } from 'asciify-engine/studio';
169
+
170
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
171
+ settings: {
172
+ style: 'ascii', cellSize: 4, ink: '#fff0dc',
173
+ backdrop: { mode: 'gradient', color: '#1c1433', color2: '#b4492f' },
174
+ color: { contrast: 1.2, blackPoint: .25 },
175
+ effects: { characterBloom: .3 },
176
+ },
177
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
178
+ });
179
+ art.update({ backdrop: { color: '#0e2a3a', color2: '#d98f3c' } }); // the gradient runs top left to bottom right
180
+ ```
181
+
182
+ ## neon: Neon
183
+ Category: Composed
184
+ Use it for: night photos with bright, saturated lights, redrawn as glowing colored characters; nightlife, festival and music artwork.
185
+ Settings: ASCII, 4px cells, source color at saturation 1.3 on `#07070a`, character glow .6.
186
+
187
+ Prompt:
188
+ “Light [my night photo] up as neon with asciify-engine: fine characters in the photo's own saturated colors, each glowing like a lit tube, on black. Play it live in [the hero] and export a 2160×2700 PNG.”
189
+
190
+ ```ts
191
+ import { mountStudio } from 'asciify-engine/studio';
192
+
193
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
194
+ settings: {
195
+ style: 'ascii', cellSize: 4, colorMode: 'source',
196
+ backdrop: { mode: 'solid', color: '#07070a' },
197
+ color: { saturation: 1.3 },
198
+ effects: { characterBloom: .6 },
199
+ },
200
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
201
+ });
202
+ ```
203
+
204
+ ## cobalt: Cobalt
205
+ Category: Composed
206
+ Use it for: a pale sculpture, portrait or product on a dark ground, set in cream characters on saturated ultramarine; gallery posters and confident brand heroes.
207
+ Settings: ASCII, 3px cells, `#f2ede2` ink on solid `#1f3ea8`, contrast 1.3, black point .15.
208
+
209
+ Prompt:
210
+ “Set [my photo] in cream characters on deep cobalt blue with asciify-engine, like a gallery poster. Export a 2480×3508 PNG, and let me swap the blue for [our brand color] without changing the ink.”
211
+
212
+ ```ts
213
+ import { mountStudio } from 'asciify-engine/studio';
214
+
215
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
216
+ settings: {
217
+ style: 'ascii', cellSize: 3, ink: '#f2ede2',
218
+ backdrop: { mode: 'solid', color: '#1f3ea8' },
219
+ color: { contrast: 1.3, blackPoint: .15 },
220
+ },
221
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
222
+ });
223
+ art.update({ backdrop: { color: '#0f5c4a' } });
224
+ ```
225
+
226
+ ## cameo: Cameo
227
+ Category: Composed
228
+ Use it for: a portrait engraved inside an oval on warm paper, like a stamp or banknote vignette; invitations, about pages, memorial and heritage artwork.
229
+ Settings: engraving, 4px cells, `#2a2620` on `#ece6d8`, `print.invert: true`, angle −30, inside an ellipse mask.
230
+
231
+ Prompt:
232
+ “Engrave [my portrait] inside an oval cameo with asciify-engine: fine parallel cuts in dark ink on warm paper, only within a centered oval, the paper plain around it. Export a 2480×3508 PNG for an invitation.”
233
+
234
+ ```ts
235
+ import { mountStudio } from 'asciify-engine/studio';
236
+
237
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
238
+ settings: {
239
+ style: 'engraving', cellSize: 4, ink: '#2a2620',
240
+ backdrop: { mode: 'solid', color: '#ece6d8' },
241
+ print: { invert: true, angle: -30, weight: 1.05 },
242
+ mask: { enabled: true, shapes: [{ kind: 'ellipse', x: .31, y: .1, width: .38, height: .8 }] },
243
+ },
244
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
245
+ });
246
+ // Mask shapes are 0–1 of the frame (left, top, width, height); move the oval to frame the face.
247
+ ```
248
+
249
+ ## gilded: Gilded
250
+ Category: Composed
251
+ Use it for: jewelry, watches, metalwork and ornament as gold engraving on black; luxury product pages, labels and premium dark heroes.
252
+ Settings: engraving, 4px cells, gold `#d9b26a` on `#0b0a08`, angle −35, weight 1.1, contrast 1.35, character glow .2.
253
+
254
+ Prompt:
255
+ “Engrave [my product photo] in gold on black with asciify-engine: fine parallel cuts in warm gold whose weight follows the light, with a faint glow. Export a 2160×2160 PNG and a 3840×2160 wallpaper.”
256
+
257
+ ```ts
258
+ import { mountStudio } from 'asciify-engine/studio';
259
+
260
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
261
+ settings: {
262
+ style: 'engraving', cellSize: 4, ink: '#d9b26a',
263
+ backdrop: { mode: 'solid', color: '#0b0a08' },
264
+ print: { angle: -35, weight: 1.1 },
265
+ color: { contrast: 1.35, brightness: .05 },
266
+ effects: { characterBloom: .2 },
267
+ },
268
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
269
+ });
270
+ ```
271
+
272
+ ## overprint: Overprint
273
+ Category: Composed
274
+ Use it for: bright, airy photos with dark characters printed straight over the sharp original; travel, editorial and summer campaign artwork.
275
+ Settings: ASCII, 5px cells, deep teal `#0f2a33` ink, contrast 1.2, over the source photo at full opacity.
276
+
277
+ Prompt:
278
+ “Overprint [my bright photo] with asciify-engine: keep the photo sharp underneath and print deep teal characters over its light areas, like a type screen inked onto the print. Export a 2160×2700 PNG.”
279
+
280
+ ```ts
281
+ import { mountStudio } from 'asciify-engine/studio';
282
+
283
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
284
+ settings: {
285
+ style: 'ascii', cellSize: 5, ink: '#0f2a33',
286
+ backdrop: { mode: 'source', opacity: 1 },
287
+ color: { contrast: 1.2 },
288
+ },
289
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
290
+ });
291
+ ```
292
+
293
+ ## cinema: Cinema
294
+ Category: Finished
295
+ Use it for: landscapes, roads and wide scenes as a film still: warm-white characters over the photo's own soft color, with a vignette, film grain and a little bloom; trailers, story heroes and posters.
296
+ Settings: ASCII, 4px cells, warm-white `#fff1de` ink over the source blurred 14px, contrast 1.15, vignette .45, grain .22, bloom .15.
297
+
298
+ Prompt:
299
+ “Grade [my photo] like a film still with asciify-engine: fine warm-white characters over a soft blur of the photo's own colors, finished with a vignette, a little bloom and film grain. Export a 3840×1646 PNG in 21:9 and keep it live in [the hero].”
300
+
301
+ ```ts
302
+ import { mountStudio } from 'asciify-engine/studio';
303
+
304
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
305
+ settings: {
306
+ style: 'ascii', cellSize: 4, ink: '#fff1de',
307
+ backdrop: { mode: 'blurred', blur: 14, opacity: 1 },
308
+ color: { contrast: 1.15 },
309
+ effects: { vignette: .45, grain: .22, bloom: .15 },
310
+ },
311
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
312
+ });
313
+ // Finish effects need WebGL: check art.capabilities.gpuFinish before saying they were applied.
314
+ ```
315
+
316
+ ## darkroom: Darkroom
317
+ Category: Finished
318
+ Use it for: still lifes, portraits and low-key photos as a print glowing out of the dark; book covers, gallery walls and quiet dark heroes.
319
+ Settings: ASCII, 5px cells, `#efe6d6` on `#080706`, contrast 1.2, brightness .3, midtones 1.7, vignette .55, bloom .35, grain .12.
320
+
321
+ Prompt:
322
+ “Print [my photo] like it is coming up in a darkroom with asciify-engine: warm paper-white characters on black, a heavy vignette, a soft glow on the highlights and a little grain. Export a 2480×3508 PNG.”
323
+
324
+ ```ts
325
+ import { mountStudio } from 'asciify-engine/studio';
326
+
327
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
328
+ settings: {
329
+ style: 'ascii', cellSize: 5, ink: '#efe6d6',
330
+ backdrop: { mode: 'solid', color: '#080706' },
331
+ color: { contrast: 1.2, brightness: .3, gamma: 1.7 },
332
+ effects: { vignette: .55, bloom: .35, grain: .12 },
333
+ },
334
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
335
+ });
336
+ ```
337
+
338
+ ## broadcast: Broadcast
339
+ Category: Finished
340
+ Use it for: space, sport and news-like photos as a live transmission: a fine pixel picture with scanlines, a chromatic fringe, RGB split and a slight tube curve; launch and live-event artwork.
341
+ Settings: pixel, 3px cells, source color at saturation 1.15, scanlines .35, prism .3, RGB split .25, CRT .15, vignette .25.
342
+
343
+ Prompt:
344
+ “Make [my photo] look like a live broadcast with asciify-engine: a fine pixel picture in the photo's colors on a screen with scanlines, a chromatic fringe, a little RGB split and a slight tube curve. Show it live in [the hero] and export a 1920×1080 PNG.”
345
+
346
+ ```ts
347
+ import { mountStudio } from 'asciify-engine/studio';
348
+
349
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
350
+ settings: {
351
+ style: 'pixel', cellSize: 3, colorMode: 'source',
352
+ backdrop: { mode: 'solid', color: '#06080b' },
353
+ color: { saturation: 1.15, contrast: 1.05 },
354
+ effects: { scanlines: .35, prism: .3, rgbSplit: .25, crt: .15, vignette: .25 },
355
+ },
356
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
357
+ });
358
+ ```
359
+
360
+ ## tape: Tape
361
+ Category: Finished
362
+ Use it for: action, skate and music photos as a worn tape frame: halftone dots in source color with glitch bands, color split, scanlines and grain; merch, flyers and social cuts.
363
+ Settings: dots, 4px cells, source color at saturation 1.3, brightness .15, glitch .15, RGB split .35, scanlines .2, grain .25.
364
+
365
+ Prompt:
366
+ “Run [my photo] through an old tape with asciify-engine: halftone dots in the photo's colors with glitch bands, an RGB split, faint scanlines and grain. Export a 1080×1350 PNG and a 6-second 1080×1350 MP4 loop.”
367
+
368
+ ```ts
369
+ import { mountStudio } from 'asciify-engine/studio';
370
+
371
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
372
+ settings: {
373
+ style: 'dots', cellSize: 4, colorMode: 'source',
374
+ backdrop: { mode: 'solid', color: '#0b0a0c' },
375
+ color: { saturation: 1.3, contrast: 1.1, brightness: .15 },
376
+ effects: { glitch: .15, rgbSplit: .35, scanlines: .2, grain: .25 },
377
+ },
378
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
379
+ });
380
+ // Glitch bands move over time; mountStudio holds still under prefers-reduced-motion.
381
+ ```
382
+
383
+ ## miniature: Miniature
384
+ Category: Finished
385
+ Use it for: aerial views of towns, harbors and crowds as a tilt-shift model, sharp in a band and softly blurred above and below; travel and city artwork.
386
+ Settings: pixel, 4px cells, source color at saturation 1.35, progressive blur 6 focused at .55, sharpen .3.
387
+
388
+ Prompt:
389
+ “Turn [my aerial photo] into a tilt-shift miniature with asciify-engine: small square pixels in boosted source colors, sharp through the middle band and blurring toward the top and bottom. Export a 3840×2160 PNG wallpaper.”
390
+
391
+ ```ts
392
+ import { mountStudio } from 'asciify-engine/studio';
393
+
394
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
395
+ settings: {
396
+ style: 'pixel', cellSize: 4, colorMode: 'source',
397
+ backdrop: { mode: 'solid', color: '#0b0b0a' },
398
+ color: { saturation: 1.35, contrast: 1.1 },
399
+ effects: { blur: 6, blurType: 'progressive', focus: .55, sharpen: .3 },
400
+ },
401
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
402
+ });
403
+ art.update({ effects: { focus: .4 } }); // moves the sharp band
404
+ ```
405
+
406
+ ## archive: Archive
407
+ Category: Finished
408
+ Use it for: historic, travel and heritage photos as an aged print, with sepia ink, dust, grain and a vignette; anniversaries, museums and about pages.
409
+ Settings: ASCII, 4px cells, sepia ink `#e9d8b4` on `#17130e`, contrast 1.4, dust .45, grain .3, vignette .4.
410
+
411
+ Prompt:
412
+ “Age [my photo] into an archive print with asciify-engine: warm sepia characters on dark brown with dust, film grain and a vignette, like a print found in a drawer. Export a 2480×3508 PNG.”
413
+
414
+ ```ts
415
+ import { mountStudio } from 'asciify-engine/studio';
416
+
417
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
418
+ settings: {
419
+ style: 'ascii', cellSize: 4, ink: '#e9d8b4',
420
+ backdrop: { mode: 'solid', color: '#17130e' },
421
+ color: { contrast: 1.4 },
422
+ effects: { dust: .45, grain: .3, vignette: .4 },
423
+ },
424
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
425
+ });
426
+ ```
427
+
428
+ ## velocity: Velocity
429
+ Category: Finished
430
+ Use it for: headlights, tunnels and anything rushing toward the camera, with a radial speed blur and glowing highlights; automotive, sport and launch heroes.
431
+ Settings: ASCII, 4px cells, source color at saturation 1.25 lifted (brightness .2, midtones 1.3), radial blur 4 around the center, bloom .3, vignette .25.
432
+
433
+ Prompt:
434
+ “Give [my photo] speed with asciify-engine: characters in the photo's colors streaking out from the center with a radial blur, glowing highlights and a vignette. Export a 1920×1080 PNG and keep it live in [the hero].”
435
+
436
+ ```ts
437
+ import { mountStudio } from 'asciify-engine/studio';
438
+
439
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
440
+ settings: {
441
+ style: 'ascii', cellSize: 4, colorMode: 'source',
442
+ backdrop: { mode: 'solid', color: '#08080a' },
443
+ color: { saturation: 1.25, brightness: .2, gamma: 1.3 },
444
+ effects: { blur: 4, blurType: 'radial', focus: .5, bloom: .3, vignette: .25 },
445
+ },
446
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
447
+ });
448
+ ```
449
+
450
+ ## poppress: Pop press
451
+ Category: Finished
452
+ Use it for: bold, saturated product and car photos as a comic-print page, with a halftone screen over shaded blocks in source color; packaging, merch and pop posters.
453
+ Settings: blocks, 4px cells, source color at saturation 1.4 lifted (brightness .2, midtones 1.3), halftone screen .35, sharpen .4.
454
+
455
+ Prompt:
456
+ “Print [my photo] as a pop comic page with asciify-engine: shaded blocks in the photo's saturated colors under a halftone screen, sharpened. Export a 2480×3508 PNG poster.”
457
+
458
+ ```ts
459
+ import { mountStudio } from 'asciify-engine/studio';
460
+
461
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
462
+ settings: {
463
+ style: 'blocks', cellSize: 4, colorMode: 'source',
464
+ backdrop: { mode: 'solid', color: '#0b0b0a' },
465
+ color: { saturation: 1.4, contrast: 1.15, brightness: .2, gamma: 1.3 },
466
+ effects: { halftone: .35, sharpen: .4 },
467
+ },
468
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
469
+ });
470
+ ```
471
+
67
472
  ## ascii: Signature ASCII
68
473
  Category: Characters
69
474
  Use it for: the house look; a portrait, sculpture or product as a dark wallpaper, a hero artwork or a cover.
@@ -177,6 +582,112 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
177
582
  });
178
583
  ```
179
584
 
585
+ ## blocks: ANSI blocks
586
+ Category: Characters
587
+ Use it for: bold, colorful subjects as shaded block characters, like ANSI art from a BBS; retro, game and music artwork.
588
+ Settings: blocks style (` ░▒▓█`), 5px cells, source color at saturation 1.15, contrast 1.1 on `#0b0b0a`.
589
+
590
+ Prompt:
591
+ “Draw [my photo] in ANSI blocks with asciify-engine: shaded block characters in the photo's own colors on black, like a BBS splash screen. Export a 2160×2160 PNG and a 3840×2160 wallpaper.”
592
+
593
+ ```ts
594
+ import { mountStudio } from 'asciify-engine/studio';
595
+
596
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
597
+ settings: {
598
+ style: 'blocks', cellSize: 5, colorMode: 'source',
599
+ backdrop: { mode: 'solid', color: '#0b0b0a' },
600
+ color: { saturation: 1.15, contrast: 1.1 },
601
+ },
602
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
603
+ });
604
+ ```
605
+
606
+ ## braille: Braille
607
+ Category: Characters
608
+ Use it for: fine, graphic subjects on black (leaves, feathers, line-like forms) drawn in tiny braille dots; delicate dark wallpapers and editorial openers.
609
+ Settings: braille style (` ⠁⠃⠇⡇⣇⣧⣷⣿`), 3px cells, source color at saturation 1.3 on `#0b0b0a`, contrast 1.4, brightness .15, midtones 1.3.
610
+
611
+ Prompt:
612
+ “Draw [my photo] in braille dots with asciify-engine: fine braille characters in the photo's own colors on black, so the light shapes read as clusters of dots. Export a 3840×2160 PNG wallpaper.”
613
+
614
+ ```ts
615
+ import { mountStudio } from 'asciify-engine/studio';
616
+
617
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
618
+ settings: {
619
+ style: 'braille', cellSize: 3, colorMode: 'source',
620
+ backdrop: { mode: 'solid', color: '#0b0b0a' },
621
+ color: { contrast: 1.4, brightness: .15, saturation: 1.3, gamma: 1.3 },
622
+ },
623
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
624
+ });
625
+ ```
626
+
627
+ ## cross: Cross-stitch
628
+ Category: Characters
629
+ Use it for: birds, flowers and folk subjects as colored stitches on dark cloth; craft, seasonal and gift artwork.
630
+ Settings: cross style (` ·+xX#`), 4px cells, source color at saturation 1.5, brightness .2, contrast 1.2 on indigo cloth `#191d26`.
631
+
632
+ Prompt:
633
+ “Stitch [my photo] in cross-stitch with asciify-engine: small crosses in the photo's colors on dark indigo cloth, like an embroidered sampler. Export a 2160×2160 PNG for a card.”
634
+
635
+ ```ts
636
+ import { mountStudio } from 'asciify-engine/studio';
637
+
638
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
639
+ settings: {
640
+ style: 'cross', cellSize: 4, colorMode: 'source',
641
+ backdrop: { mode: 'solid', color: '#191d26' },
642
+ color: { saturation: 1.5, brightness: .2, contrast: 1.2 },
643
+ },
644
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
645
+ });
646
+ ```
647
+
648
+ ## diagonal: Storm
649
+ Category: Characters
650
+ Use it for: rain, wind and streaks of light drawn in slanted strokes; moody posters, weather stories and dark section artwork.
651
+ Settings: diagonal style (` /╱╳`), 4px cells, `#dfe7ea` on `#0c1013`, contrast 1.3, midtones 1.3.
652
+
653
+ Prompt:
654
+ “Draw [my photo] in slanted strokes with asciify-engine: diagonal line characters in cool grey on blue-black, like rain across the image. Export a 2160×2700 PNG.”
655
+
656
+ ```ts
657
+ import { mountStudio } from 'asciify-engine/studio';
658
+
659
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
660
+ settings: {
661
+ style: 'diagonal', cellSize: 4, ink: '#dfe7ea',
662
+ backdrop: { mode: 'solid', color: '#0c1013' },
663
+ color: { contrast: 1.3, gamma: 1.3 },
664
+ },
665
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
666
+ });
667
+ ```
668
+
669
+ ## diamond: Jewel box
670
+ Category: Characters
671
+ Use it for: iridescent, richly colored subjects (feathers, gems, beetles, fabric) set in diamond characters; fashion, beauty and jewelry artwork.
672
+ Settings: diamond style (` ·◇◈◆`), 7px cells, source color at saturation 1.5, brightness .35, midtones 1.5 on `#0b0b0a`, character glow .3.
673
+
674
+ Prompt:
675
+ “Set [my photo] in diamond characters with asciify-engine: diamonds in the photo's jewel colors on black with a soft sparkle, solid where it is bright and outlined where it is dim. Export a 2160×2700 PNG.”
676
+
677
+ ```ts
678
+ import { mountStudio } from 'asciify-engine/studio';
679
+
680
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
681
+ settings: {
682
+ style: 'diamond', cellSize: 7, colorMode: 'source',
683
+ backdrop: { mode: 'solid', color: '#0b0b0a' },
684
+ color: { saturation: 1.5, brightness: .35, gamma: 1.5 },
685
+ effects: { characterBloom: .3 },
686
+ },
687
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
688
+ });
689
+ ```
690
+
180
691
  ## print: Newsprint
181
692
  Category: Dither
182
693
  Use it for: bright, high-key photos as an editorial print; zines, press pages, quiet light-theme heroes.
@@ -233,7 +744,7 @@ art.update({ ink: '#1f3b73', dither: { colors: ['#f0ece3', '#e0674a', '#1f3b73']
233
744
  ## dots: Halftone
234
745
  Category: Print
235
746
  Use it for: a bold, graphic portrait; band posters, covers and dark heroes that read from far away.
236
- Settings: dots style, 6px cells, `#e6e3da` on `#0b0b0a`, contrast 1.15, brightness .05.
747
+ Settings: dots style, 5px cells, `#e6e3da` on `#0b0b0a`, contrast 1.3, brightness .15.
237
748
 
238
749
  Prompt:
239
750
  “Make [my photo] a halftone artwork with asciify-engine: round dots in paper white on near black whose size carries the image. Export a 2160×2700 PNG and a 3840×2160 wallpaper at the same dot size.”
@@ -243,9 +754,9 @@ import { mountStudio } from 'asciify-engine/studio';
243
754
 
244
755
  const art = await mountStudio(canvas, '/your-photo.jpg', {
245
756
  settings: {
246
- style: 'dots', cellSize: 6, ink: '#e6e3da',
757
+ style: 'dots', cellSize: 5, ink: '#e6e3da',
247
758
  backdrop: { mode: 'solid', color: '#0b0b0a' },
248
- color: { contrast: 1.15, brightness: .05 },
759
+ color: { contrast: 1.3, brightness: .15 },
249
760
  },
250
761
  width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
251
762
  });
@@ -271,7 +782,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
271
782
  ## stipple: Stipple
272
783
  Category: Print
273
784
  Use it for: a quiet, drawn portrait in fine dots; book covers, editorial portraits, dark wallpapers.
274
- Settings: stipple style, 4px cells, `#e6e3da` on `#0b0b0a`, contrast 1.25, brightness .08.
785
+ Settings: stipple style, 4px cells, `#e6e3da` on `#0b0b0a`, contrast 1.35, brightness .2, midtones 1.3.
275
786
 
276
787
  Prompt:
277
788
  “Draw [my portrait] in stipple with asciify-engine: thousands of fine paper-white dots on near black, scattered so the light shapes the face. Export a 2480×3508 PNG for a book cover.”
@@ -283,7 +794,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
283
794
  settings: {
284
795
  style: 'stipple', cellSize: 4, ink: '#e6e3da',
285
796
  backdrop: { mode: 'solid', color: '#0b0b0a' },
286
- color: { contrast: 1.25, brightness: .08 },
797
+ color: { contrast: 1.35, brightness: .2, gamma: 1.3 },
287
798
  },
288
799
  width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
289
800
  });
@@ -292,7 +803,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
292
803
  ## engraving: Banknote
293
804
  Category: Print
294
805
  Use it for: architecture, portraits and objects as a steel engraving; certificates, invitations, premium light-theme heroes.
295
- Settings: engraving style, 5px cells, dark ink `#22201c` on paper `#ece8de`, `print.invert: true`, angle −35, weight 1.1.
806
+ Settings: engraving style, 5px cells, dark ink `#22201c` on paper `#ece8de`, `print.invert: true`, angle −35, weight 1.1, contrast 1.25.
296
807
 
297
808
  Prompt:
298
809
  “Engrave [my photo] like a banknote with asciify-engine: parallel cuts in dark ink on warm paper whose weight follows the shadows. Export a 2480×3508 PNG, and keep the line angle adjustable.”
@@ -305,6 +816,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
305
816
  style: 'engraving', cellSize: 5, ink: '#22201c',
306
817
  backdrop: { mode: 'solid', color: '#ece8de' },
307
818
  print: { invert: true, angle: -35, weight: 1.1 },
819
+ color: { contrast: 1.25 },
308
820
  },
309
821
  width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
310
822
  });
@@ -335,7 +847,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
335
847
  ## pointillism: Pointillist
336
848
  Category: Print
337
849
  Use it for: still lifes, fruit, flowers and landscapes as a painted canvas; gallery-style wallpapers.
338
- Settings: pointillism style, 3px cells, source color, brightness .1, saturation 1.1 on `#0b0b0a`.
850
+ Settings: pointillism style, 3px cells, source color, brightness .25, saturation 1.3 on `#0b0b0a`.
339
851
 
340
852
  Prompt:
341
853
  “Paint [my photo] in pointillist strokes with asciify-engine: small dabs of the photo's own colors on black, like a Seurat up close. Export a 3840×2160 PNG wallpaper.”
@@ -347,10 +859,55 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
347
859
  settings: {
348
860
  style: 'pointillism', cellSize: 3, colorMode: 'source', print: { weight: 1.6, density: 1.3 },
349
861
  backdrop: { mode: 'solid', color: '#0b0b0a' },
350
- color: { brightness: .1, saturation: 1.1 },
862
+ color: { brightness: .25, saturation: 1.3 },
863
+ },
864
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
865
+ });
866
+ ```
867
+
868
+ ## woodblock: Woodcut
869
+ Category: Print
870
+ Use it for: landscapes and silhouettes with big tonal masses as a carved woodblock print on paper; book covers, labels and outdoor brand artwork.
871
+ Settings: woodblock style, 8px cells, `#1d1a16` on `#ebe3d2`, `print.invert: true`, level bands (angle 0), roughness .3, weight .9, contrast 1.2, white point .7 so the sky stays bare paper, midtones 1.6 and shadows .3 so each ridge keeps its own band.
872
+
873
+ Prompt:
874
+ “Carve [my landscape photo] as a woodcut with asciify-engine: broad, rough-edged bands in dark ink on warm paper, stepping through a few tones. Export a 2480×3508 PNG print.”
875
+
876
+ ```ts
877
+ import { mountStudio } from 'asciify-engine/studio';
878
+
879
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
880
+ settings: {
881
+ style: 'woodblock', cellSize: 8, ink: '#1d1a16',
882
+ backdrop: { mode: 'solid', color: '#ebe3d2' },
883
+ print: { invert: true, angle: 0, roughness: .3, weight: .9 },
884
+ color: { contrast: 1.2, whitePoint: .7, gamma: 1.6, shadows: .3 },
885
+ },
886
+ width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
887
+ });
888
+ ```
889
+
890
+ ## risograph: Riso duotone
891
+ Category: Print
892
+ Use it for: bright, saturated photos (pools, sport, summer) as a two-screen riso print with offset registration; zines, gig posters and summer campaigns.
893
+ Settings: risograph style, 5px cells, source color for the first screen, a coral `#f2594b` second screen overprinted on warm areas, on `#f4ebd0`, density 1.2, registration .35.
894
+
895
+ Prompt:
896
+ “Print [my photo] as a riso duotone with asciify-engine: a dot screen in the photo's own colors with a coral second screen overprinted slightly out of register on the warm areas, on cream paper. Export a 2480×3508 PNG poster.”
897
+
898
+ ```ts
899
+ import { mountStudio } from 'asciify-engine/studio';
900
+
901
+ const art = await mountStudio(canvas, '/your-photo.jpg', {
902
+ settings: {
903
+ style: 'risograph', cellSize: 5, colorMode: 'source', ink: '#2853a5',
904
+ backdrop: { mode: 'solid', color: '#f4ebd0' },
905
+ print: { secondaryInk: '#f2594b', registration: .35, density: 1.2 },
351
906
  },
352
907
  width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
353
908
  });
909
+ // With colorMode 'accent' both screens use ink and secondaryInk; print.invert puts the ink in the shadows.
910
+ art.update({ print: { registration: .1 } }); // tighter registration
354
911
  ```
355
912
 
356
913
  ## mosaic: Mosaic study
@@ -467,7 +1024,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
467
1024
  ## led: Scoreboard
468
1025
  Category: Tiles
469
1026
  Use it for: cities, stages and night photos as a wall of round emitters; event, sport and music artwork.
470
- Settings: LED style, 6px cells, source color at saturation .7, contrast 1.1 on `#0b0b0a`.
1027
+ Settings: LED style, 5px cells, source color at saturation 1.2, contrast 1.1, brightness .2 on `#0b0b0a`.
471
1028
 
472
1029
  Prompt:
473
1030
  “Show [my photo] on an LED wall with asciify-engine: round emitters in the photo's colors on black, like a stadium scoreboard. Play [my video] through it live in [the hero], and export a 1920×1080 MP4.”
@@ -477,9 +1034,9 @@ import { mountStudio } from 'asciify-engine/studio';
477
1034
 
478
1035
  const art = await mountStudio(canvas, '/your-video.mp4', {
479
1036
  settings: {
480
- style: 'led', cellSize: 6, colorMode: 'source',
1037
+ style: 'led', cellSize: 5, colorMode: 'source',
481
1038
  backdrop: { mode: 'solid', color: '#0b0b0a' },
482
- color: { saturation: .7, contrast: 1.1 },
1039
+ color: { saturation: 1.2, contrast: 1.1, brightness: .2 },
483
1040
  },
484
1041
  width: frame.clientWidth, height: frame.clientHeight, maxCells: 32768,
485
1042
  });