diff options
| -rw-r--r-- | docs/design/2026-07-12-control-grammars-reference.org | 152 | ||||
| -rw-r--r-- | todo.org | 43 | ||||
| -rw-r--r-- | working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-color.png | bin | 0 -> 415822 bytes | |||
| -rw-r--r-- | working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-fkeys.png | bin | 0 -> 530533 bytes | |||
| -rw-r--r-- | working/retro-stereo-widgets/references/2026-07-16-abc-keypad-stainless.png | bin | 0 -> 466591 bytes | |||
| -rw-r--r-- | working/retro-stereo-widgets/references/2026-07-16-letter-drum-bank.png | bin | 0 -> 130871 bytes |
6 files changed, 189 insertions, 6 deletions
diff --git a/docs/design/2026-07-12-control-grammars-reference.org b/docs/design/2026-07-12-control-grammars-reference.org index 4d5e028..c6509ac 100644 --- a/docs/design/2026-07-12-control-grammars-reference.org +++ b/docs/design/2026-07-12-control-grammars-reference.org @@ -30,7 +30,7 @@ No single canonical registry of control grammars exists. The concept is split ac * Proposed axes for the classification brainstorm -Starting point, to be argued in the brainstorm, not settled here: +Starting point, to be argued in the brainstorm, not settled here. Argued 2026-07-16 — see "The brainstorm, run" below, which adds an eighth axis and records what the cross found. 1. Elemental task (Foley) :: select / position / orient / path / quantify / text — plus the display-side tasks the gallery adds (indicate state, indicate quantity, indicate history, indicate spatial status). 2. Input model :: none (display) / click / click-step / drag-1D / drag-2D / held / composed. Already on every spec sheet; drives Emacs portability directly. @@ -42,7 +42,155 @@ Starting point, to be argued in the brainstorm, not settled here: The gap-finding move the brainstorm exists for: cross axes 1×4 and look for empty cells — a use-case with no component is a cell the catalogue cannot fill. +* The brainstorm, run (2026-07-16) + +The gap-finding cross, run against the 109-card kit. What follows is what it found, the axis it needed that the seven above don't carry, and the period models proposed for each empty cell. Build decisions live in todo.org; this section is the map they come from. + +** Axis 8 — set stability (new, and the one that finds the hole) + +*Fixed* (the option set is knowable when the panel is built) versus *dynamic* (the set is discovered at run time and changes without the panel changing). + +The seven axes above cannot find the kit's largest gap, because axis 4 lumps all one-of-N together: a chicken-head selector whose stops are cut in metal and a WiFi network list sit in the same cell, though nothing about the first tells you how to build the second. Crossing task x cardinality alone therefore reports the cell as densely covered. Only set stability separates them. + +The axis is invisible from inside hardware, which is why it was missing. *Every* one-of-N control in this kit has its positions engraved at manufacture — silkscreened legends, cut detents, printed scales. A faceplate physically cannot hold a set that changes, so a catalogue derived from period hardware inherits a blind spot exactly at dynamic sets. The kit's consumers are software panels (net, bt, audio, maint) whose central objects are dynamic sets: available networks, paired devices, running services. The blind spot lands precisely on what the consumers most need. + +** The cross, run — elemental task (Foley) x cardinality x set stability + +First pass, scoped to the Controls section (the input side, where the cross bites). Counts are card counts; =--= is an empty cell. Display-side tasks are summarized below rather than celled, since the gaps there are not where the interest is. + +| Elemental task | bin | 1-of-N fixed | 1-of-N dyn | m-of-N | m<->m | cont | 2-axis | compound | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| select | 10 | 13 | -- | 3 | 2 | -- | -- | -- | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| quantify | -- | -- | -- | -- | -- | 13 | -- | 2 | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| position | -- | -- | -- | -- | -- | -- | 2 | -- | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| orient | -- | -- | -- | -- | -- | -- | 2 | -- | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| path | -- | -- | -- | -- | -- | -- | 1 | -- | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| text (digits) | -- | -- | -- | -- | -- | -- | -- | 3 | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| +| text (alpha) | -- | -- | -- | -- | -- | -- | -- | -- | +|----------------+-----+--------------+------------+--------+-------+------+--------+----------| + +Cell contents, first pass: + +- select x binary :: 01, 07, 08, N01, R03, R24, R29, R38, R48, R50. +- select x 1-of-N fixed :: 02, 06, 24, N03, N06, R06, R20, R22, R27, R28, R33, R34, R42. +- select x 1-of-N dynamic :: *empty*. +- select x many-of-N :: N09, R51, R52. +- select x many-to-many :: N28, R37. +- quantify x continuous :: 03, 04, 05, N05, N07, N08, N10, R02, R04, R12, R14, R18, R23. +- quantify x compound :: N04, R49. +- position / orient / path :: R19, R26, R43, R44. +- text x digits :: R16, R39, R41. +- text x alphanumeric :: *empty*. + +Display side (Meters, Indicators — roughly 55 cards) covers indicate-state, indicate-quantity, indicate-history and indicate-spatial-status densely; no empty cell worth a card was found there. Left uncelled deliberately. + +** Findings — the two empty cells + +*Foley names six irreducible tasks. The kit serves five and a half.* + +1. *select x one-of-N, dynamic set.* The bt panel lists paired devices; the net panel lists available networks, each row carrying an SSID, a signal strength and a lock state. The catalogue meant to describe those panels has no widget for the thing those panels most obviously are. Nearest misses: N03 (a fixed, small preset bank) and R20 (a drum of values, not rich rows). Neither is it. +2. *text x alphanumeric.* The kit enters digits three ways and text zero ways. The net panel needs a WiFi password. + +Both are needed by live consumers today, which is what makes them the two that sting. + +** Why hardware had no dynamic-set control, and what it did instead + +The period answer to a set that changes was never a control. It was *a re-labelable slot*: hardware supplied a holder and let a human write the label. + +- Jukebox title-strip rack (Seeburg wallbox) :: printed strips slotted into a rack and replaced when the records change; a page-flip lever browses them; a letter-plus-number selector picks one. A scrollable list of rich rows with selection, built in 1950. +- Rolodex :: spin through rich cards; add and remove at will. +- Mixing-console scribble strip :: tape and grease pencil over each channel. +- Telephone switchboard subscriber strips :: relabeled as subscribers came and went. + +The shared grammar is worth naming, because it is the aesthetic-honest answer to every dynamic set: *the slot is manufactured, the label is not.* A device list rendered as a rack of slotted, hand-labeled strips is not a skeuomorphic joke — "somebody wrote these because the set changes" is exactly what a device list means. + +** Period models proposed per gap + +One row per candidate model, so each model keeps its own verdict. + +| Gap | Model to build from | Verdict | +|-------------------------+---------------------------------------------+----------------------------------------------| +| select x 1-of-N dynamic | Jukebox wallbox title-strip rack | First pick. Page-flip browse, rich strips, | +| | | select one. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| select x 1-of-N dynamic | Rolodex card spinner | Alternative. Better for long sets, weaker at | +| | | showing several rows at once. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Industrial ABC-order keypad | *First pick*, superseding the teletype — see | +| | | the survey below. A faceplate, not a | +| | | machine. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Index typewriter (stylus + print lever) | Strongest novel idiom found: select and | +| | | commit are two separate controls. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Chorded keyset (Microwriter / Brailler) | Six keys, no key per letter. The most | +| | | compact honest answer. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Letter-drum bank (combination lock) | Craig's reference. Fixed length, so wrong | +| | | for a password; right for a callsign. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Teletype (ASR-33) keyboard + line | Demoted. Honest but it is a machine, not a | +| | | faceplate, and QWERTY is the least | +| | | panel-native option. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| text x alphanumeric | Dymo embossing wheel | Charming and faceplate-native; painful past | +| | | about eight characters. A descendant of the | +| | | index typewriter, mechanism differs. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| swatch pick (chrome) | Signal-lamp lens turret, or the theatrical | A rotary whose detents are coloured lenses; | +| | gel wheel | the sample is the label. Joins the kit's | +| | | existing rotary family. | +|-------------------------+---------------------------------------------+----------------------------------------------| +| cycling state button | Legend switch (MIL-STD-1472) | Lit pushbutton whose cap legend and colour | +| | | ARE the state; press to step. The kit has | +| | | lit keys (02), not this. | +|-------------------------+---------------------------------------------+----------------------------------------------| + +** Survey: how period hardware entered letters (2026-07-16) + +Craig fed four reference photos (filed in =working/retro-stereo-widgets/references/= as =2026-07-16-abc-keypad-stainless.png=, =-abc-keypad-membrane-fkeys.png=, =-abc-keypad-membrane-color.png=, =-letter-drum-bank.png=) and asked for a wider search. Both moves changed the recommendation. + +*The references beat the teletype.* All three keypad photos are *ABC-order*, not QWERTY: A-Z laid out alphabetically with a separate 0-9 block, on stainless or membrane, with colour-coded function keys (yellow CANCEL, red CLEAR/NO, green ENTER/YES, blue HELP, F1-F4). That is the industrial convention wherever the operator cannot be assumed to touch-type — fleet, kiosk, access control. It is a faceplate rather than a machine, it panel-mounts, and its colour coding lands on the kit's palette without translation (terracotta for CLEAR/NO, run green for ENTER/YES, amber for CANCEL). The teletype is honest but it is furniture; the ABC keypad is the panel-native answer and supersedes it. + +*The survey found idioms genuinely unlike a keypad.* Ranked by distinctness: + +- Index typewriter :: Hall Type-Writer No. 1 (1881), AEG Mignon Model 4 (1924-30s). One hand walks a *stylus over a printed index plate*, the other pulls a *print lever* to commit. Select and commit are two separate physical controls — an idiom nothing in the kit has. Arbitrary length. Reads unmistakably as period hardware at small size. The Dymo wheel is a descendant, but stylus-on-index plus lever is a different mechanism from rotate-dial plus squeeze. *Strongest find.* +- Chorded keyset :: Microwriter (1978-80s, six keys — one per finger plus two thumb), Stenotype (patents 1911/1913), Perkins Brailler (1951, six keys as dots 1-2-3 / 4-5-6). No key per letter at all; a simultaneous *chord* is the character. Six keys plus a live chord readout is the most compact honest answer for a password field, and the kit already names the chorded grammar (R50 is its safety-hardware form) without holding a chorded *text* control. +- CDU / MCDU scratchpad + line-select keys :: Boeing/Airbus FMS, ~1980s-present. Text lands in a *scratchpad buffer* and stays uncommitted until a line-select key beside the target field both commits it and says where it goes. A different *flow*, not a different selector — its character source is an ABC keypad. The screen-flanking LSK bezel is iconic. +- Joystick scroll-and-fire :: Asteroids (1979); Defender/Stargate allowed more than three characters. Up/down steps the alphabet, fire commits and advances. The three-initial limit was an obscenity policy, not a technical one. Generalises to any shaft-encoder-scrolls-an-alphabet control. +- Multi-tap / T9 :: multi-tap early 1990s; T9 from Tegic, 1995, first shipped on the Benefon iO and Samsung Anycall. Twelve keys, letters cycled by repeat press with a timeout commit. The most *practical* small-panel password entry found, and the letter-cycling state animates well. +- Trackball gesture :: Atari Quantum (1982) — the player encircles letters, and top scorers draw their initials freehand. Genuinely unlike everything else; needs a drawing surface, so it is big. +- Keypunch + program drum :: IBM 029 (1964). A punched card on a *program drum* templates the fields — auto-duplicate, force numeric/alpha, skip. The column ruler plus field mask is a different framing; the machine is huge. +- Keyboard + lampboard :: Enigma (1920s-45). A keypress lights exactly one of 26 lamps and the operator hand-copies it. Judged a *feedback* idiom, not a selector — the 26-lamp alphabet grid is worth stealing as a readout for some other card, not as text entry. +- Keyboard perforator :: Teletype Model 15 (1930-63), Model 19 with integral perforator. Keying punches tape offline; compose and transmit are separated in time. The punched-tape strip is a fine visual but the keyboard is ASR-33-adjacent. + +*Two flags from the survey, carried rather than smoothed over:* + +- No true A-Z *thumbwheel switch* could be verified — Digitran and Grayhill mil-spec coded wheels are 0-9 or hex (0-9 A-F) only. Craig's letter-drum reference is a *combination lock*, not a thumbwheel switch. The drum bank is real, but its lineage is locks, and a card should say so rather than implying a switch that may not exist. +- The trackball-gesture and Quantum details are single-sourced. + +*Recommendation.* Build the ABC keypad first — it fills the empty cell, two live panels want it, and it is what the references show. Then the index typewriter as the second card, because it is the one genuinely new *grammar* (select on one control, commit on another) and it is small and beautiful. The chorded keyset is the third if a compact password field is wanted. Everything else is banked. + +** The gallery cannot build its own chrome from its own kit + +The last two rows are a finding in their own right. The gallery's own controls — the style-chip swatch rows, the screen-family chips, the validation lamps that cycle off/amber/green — are all bespoke HTML with no card behind them. The size toggle is a segmented control the kit already has (06) and does not use. + +That is the cheapest completeness test available: a catalogue that cannot build its own interface from itself has holes, and it names them for free. Worth re-running whenever the gallery's chrome grows. + +** Still open + +- The full seven-axis classification is not settled. Only axes 1 (elemental task) and 4 (cardinality), plus the new axis 8, were argued; grammar, state authority, persistence and era are untouched. +- The cell assignments above are a first pass from card names and spec sheets, not a card-by-card audit. Confidence of completeness needs the audit. +- The display side is uncelled. +- Whether the chrome gaps (swatch, legend switch) earn cards, or stay page furniture, is undecided. + * Related -- Gallery: [[file:../prototypes/panel-widget-gallery.html][docs/prototypes/panel-widget-gallery.html]] (100 cards, spec sheets carry input model + period). +- Gallery: [[file:../prototypes/panel-widget-gallery.html][docs/prototypes/panel-widget-gallery.html]] (109 cards, spec sheets carry input model + period). - Source survey: takuzu =working/research/ui-components/historical-panel-components.org= (processed 2026-07-12; build + banked + stale verdicts recorded in todo.org). @@ -112,10 +112,45 @@ Six period families defined (green = P1 phosphor built on =phos=, amber = P3 on Every card now carries a collapsible "spec sheet" (a details element under the note) with up to 8 fields: input (always present, names the model — click ports everywhere including Emacs click-regions, drag needs a click/key idiom there, display widgets take no real input), solves, use (common vs specialty + where it shines), limits, origin, difficulty, prefer-when, and period (present on 41 of 84 — only where the component is clearly not timeless, e.g. nixie 1955-75 sits with keypads/telegraphs and clashes with VFD and LED seven-seg). Content lives in one INFO object keyed by card number; card() renders it. CDP-verified: 84/84 sheets present (missing-key check), fields render, zero exceptions. *** 2026-07-14 Tue @ 02:00:49 -0500 Judged the two 2026-07-13 cross-needle references covered The weather-station comfort meter is R56's form exactly (crossing lands in a printed categorical verdict; five zones vs R56's three is content, not mechanism). The SWR cross-needle meter is N13's defining mechanism (the crossing derives a number off printed iso-curves — forward/reflected watts → SWR). No new cards; both references stay filed in working/retro-stereo-widgets/references/. -*** TODO Widget validation pass -Craig validates every control via the card lamps (his worklist, not agent-checkable): click cycles off → amber → green, state persists per card in localStorage (key =gv-<no>=). Gate change with the option-1 approval (2026-07-12): the lamps no longer gate the widgets.js extraction (lossless, proceeds now) — they gate per-widget Emacs ports and the final catalogue blessing. When the pass completes, bake the final statuses into the gallery source. -*** TODO Component classification taxonomy -Brainstorm WITH Craig (after the squash merge, not solo): break the components down by use — freeform output, binary selection, multi-selection, fine-tuning, etc. The taxonomy identifies use-cases with no appropriate component, which fills out the gallery with some confidence of completeness. +*** DOING Widget validation pass +Craig walks all 109 cards; the lamps are his (click cycles off → amber → green, per-card localStorage key =gv-<no>=). Gate change with the option-1 approval (2026-07-12): the lamps no longer gate the widgets.js extraction (lossless, done) — they gate per-widget Emacs ports and the final catalogue blessing. + +Runs as a *joint loop* (Craig, 2026-07-16): he walks a batch of 10-15 and reports card numbers + what's wrong; Claude fixes them in one pass, gates on the three probes, he reloads and re-walks. The lamps track progress only — they never recorded *what* was wrong with a card, so the defects live in this task body as they surface. + +Statuses bake into the gallery source (=VSTATUS=, top of the lamp section) *periodically*, not once at completion as originally planned — localStorage is per-profile and dies with a cache clear, so at 8 cards baking is free and at 60 it's the difference between a record and a bad afternoon. Craig clicks "copy for source" under the index tally; Claude reads it off the clipboard (=wl-paste=, or =wl-paste --primary= when the clipboard path is refused) and pastes it into =VSTATUS=. Precedence is localStorage → VSTATUS → off, so the live walk wins on the machine doing it and the baked record fills in on a fresh profile, after a clear, or on velox. Covered by =tests/gallery-probes/probe-vstatus.mjs=. + +Progress: 8 green + 2 amber (R07, R52) of 109, baked 2026-07-16. +*** 2026-07-16 Thu @ 08:11:18 -0500 Ran the classification brainstorm — two empty cells and a missing axis +Brainstormed with Craig and wrote the result into [[file:docs/design/2026-07-12-control-grammars-reference.org][the control-grammars reference]] ("The brainstorm, run"). Crossed Foley's six elemental tasks against cardinality over the 109 cards. + +Added *axis 8, set stability* (fixed at manufacture vs discovered at run time). The doc's original seven axes cannot find the kit's largest gap: axis 4 lumps all one-of-N together, so a chicken-head selector and a WiFi list share a cell that then reads as densely covered. The axis is invisible from inside hardware — every one-of-N in the kit has its positions engraved at manufacture — so a catalogue derived from period hardware inherits a blind spot exactly at dynamic sets, which is what its software consumers are made of. + +Two empty cells, both wanted by live panels today: *select x one-of-N dynamic* (the bt device list, the net network list) and *text x alphanumeric* (the WiFi password; the kit enters digits three ways and text zero ways). Foley names six irreducible tasks; the kit serves five and a half. + +Period models proposed rather than invented, per Craig's aesthetic gate: the answer to a changing set was never a control but a *re-labelable slot* — jukebox title-strip rack, Rolodex, scribble strip, switchboard strips. The slot is manufactured, the label is not. + +Also found: the gallery cannot build its own chrome from its own kit (swatch chips, validation lamps, size toggle are all bespoke HTML; the size toggle duplicates card 06). That is a free completeness test worth re-running as the chrome grows. + +Still open, recorded in the doc: the full seven-axis classification, the card-by-card audit behind the first-pass cell assignments, and the display side. + +*** TODO Build the four widgets the taxonomy found :feature:design: +From the [[file:docs/design/2026-07-12-control-grammars-reference.org][taxonomy brainstorm]] (2026-07-16). Craig's gate: stick to the aesthetic — model a period control, don't invent a software-native one. Reference photo first per the usual pipeline, then judge, then card. + +1. *Dynamic list* — model the jukebox wallbox title-strip rack (page-flip browse, rich slotted strips, select one). Fills the most damning cell; the bt and net panels both want it. Alternative model: Rolodex card spinner, better for long sets and weaker at showing several rows at once. +2. *Alphanumeric entry* — model the *industrial ABC-order keypad*. Craig's four references (=working/retro-stereo-widgets/references/2026-07-16-abc-keypad-*.png=, =-letter-drum-bank.png=) plus a survey superseded the teletype: the references are all ABC-order, not QWERTY, on stainless or membrane, with colour-coded function keys (yellow CANCEL, red CLEAR/NO, green ENTER/YES) that land on the kit's palette without translation. A faceplate, not furniture. +3. *Index typewriter* — stylus over a printed index plate, print lever commits (Hall 1881, AEG Mignon 1924). The survey's strongest find: select and commit on two separate controls is a grammar the kit has no exemplar of, and it is small and beautiful. Second card after the keypad. +4. *Chorded keyset* — six keys, no key per letter; the chord IS the character (Microwriter 1978, Perkins Brailler 1951). The most compact honest password field. The kit names the chorded grammar already (R50 is its safety form) but holds no chorded text control. Third, if a compact field is wanted. +5. *Swatch picker* — model the signal-lamp lens turret or theatrical gel wheel; a rotary whose detents are coloured lenses. Undecided whether it earns a card or stays page furniture. +6. *Legend switch* — the lit pushbutton whose cap legend and colour ARE the state, press to step (MIL-STD-1472 catalogs it; the doc already cites the standard). The validation lamps are one. + +Items 1 and 2 fill the two empty cells and are wanted by live panels today; 3 and 4 are the survey's genuinely-new grammars; 5 and 6 come from the gallery-can't-build-itself finding and are lower stakes. + +Banked from the survey, not cards yet: CDU/MCDU scratchpad + line-select keys (a staged-commit *flow*, not a new selector), joystick scroll-and-fire alphabet, multi-tap/T9 letter cycling (the most practical small-panel password entry), trackball gesture (Atari Quantum), keypunch program drum (IBM 029), Enigma lampboard (a *feedback* idiom — steal the 26-lamp grid as a readout, not as entry), Teletype Model 15 tape perforator. + +Two flags carried from the survey: no true A-Z *thumbwheel switch* could be verified (Digitran/Grayhill mil-spec wheels are 0-9 or hex only), so the letter-drum reference is a *combination lock* and a card must say so rather than imply a switch that may not exist; and the trackball-gesture details are single-sourced. + +*** TODO Taxonomy audit — verify the first-pass cell assignments :design: +The cross's cell assignments were read off card names and spec sheets, not audited card by card, so "confidence of completeness" isn't earned yet. Walk all 109 against elemental task x cardinality x set stability, cell the display side (left uncelled deliberately), and argue the four untouched axes (grammar, state authority, persistence, era). Would either confirm the two empty cells or find more. ** DOING [#B] Retro widget catalogue :feature:design: :PROPERTIES: :SPEC_ID: 3ac0d42c-db1a-4d21-bce4-e63785fef0ba diff --git a/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-color.png b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-color.png Binary files differnew file mode 100644 index 0000000..c7cf6c8 --- /dev/null +++ b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-color.png diff --git a/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-fkeys.png b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-fkeys.png Binary files differnew file mode 100644 index 0000000..95ea12f --- /dev/null +++ b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-membrane-fkeys.png diff --git a/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-stainless.png b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-stainless.png Binary files differnew file mode 100644 index 0000000..4e2df87 --- /dev/null +++ b/working/retro-stereo-widgets/references/2026-07-16-abc-keypad-stainless.png diff --git a/working/retro-stereo-widgets/references/2026-07-16-letter-drum-bank.png b/working/retro-stereo-widgets/references/2026-07-16-letter-drum-bank.png Binary files differnew file mode 100644 index 0000000..1a55298 --- /dev/null +++ b/working/retro-stereo-widgets/references/2026-07-16-letter-drum-bank.png |
