An AV programmer asked Claude Code to check a DSP design for ship-readiness and turn its touch panel into a demo. The page covers how that went, including Claude's mistakes, and how Microsoft Copilot handled the same request afterward.
The Tesira file in this space accounts for control of audio and projectors (both the projectors and screens) with a Biamp Apprimo TEC-X 2000 through the TesiraForte X 400 via some tricky use of network command strings, logic blocks, and logic IOs. I want to verify that everything is okay to ship, and if possible I would really love to get the TEC-X 2000 UI pulled out and set up to demo. The programmer's first message
Tesira Designer was not installed, so Claude Code decoded the design file itself. Its first report said the design was not ready to ship: 10 of the 13 touch-panel pages could not be reached, two Volume Down buttons ramped the level up, one video mute could never engage, and the projectors were missing Epson's network handshake.
From there the programmer fixed things in Tesira while Claude decoded and compared each save. Claude also patched the binary file directly when asked, built an interactive TEC-X demo and an audio flow overview, filled out the job README from the project documents, and versioned the program files. After the Copilot test it added a control flow page that follows every button through the logic to the device it drives, and a page that puts audio and control together. By the end, every finding was fixed or handed over as a site check. All eleven commits are pushed.
Microsoft Copilot was then given the same requests as one prompt, against the same starting file. It retrieved the design file but could not decode it, so its review, demo and file edits had no design data to work from. Of the ten requests in its prompt, it marked none as done and two as partly done, and it made no changes to the repository.
Copilot started from the same design file on its own branch of the repository. Everything it built came from a PDF export of the design found through enterprise search, the project drawings, and a screenshot of the panel's home page that the programmer supplied.
Partway through, Copilot told the programmer there was no reliable way to get the panel out of the file without reverse-engineering Biamp's unpublished format. Claude had already done that reverse-engineering before its first report.
The ten requests both assistants received.
| Measure | Claude Code | Copilot |
|---|---|---|
| Read the design file | Decoded it during the session with Python | Retrieved it; could not decode it |
| Could change files in the repository | Yes, through a local git checkout | No; its repository connector was read-only |
| Panel pages taken from the file | 13 of 13, with all 47 buttons and their actions | None. Drew 3 pages: 1 traced from a screenshot, 2 invented |
| Design issues found | 20: 15 fixed, 4 open, 1 withdrawn | None |
| Programmer's saves compared | 10 | 0 |
| Edits written into the .tmf | 2, both verified byte for byte | 0 |
| Projector commands checked against Epson's docs | Every code, plus two timing risks | Docs acknowledged; no comparison |
| Audio flow overview | Built from all 52 audio links | Not made |
| README | Filled from the job documents | Left as the template |
| Commits pushed | 7 for the shared requests, 11 in all | 0; not asked to commit |
| Model | Claude Opus 5.5 | GPT-5.6, as Copilot reported it |
Copilot's column uses the status Copilot gave itself in its own writeup. Requests 11 and 12 were left out of Copilot's prompt, and 13 and 14 came after the test.
| # | Request | Claude Code | Copilot |
|---|---|---|---|
| 1 | Verify the design is okay to ship | Done 11 findings in the first report, 10 correct | Not done Design file never read; limitations listed |
| 2 | Use the Epson ESC/VP21 docs for the L260F | Done Every code checked; HDMI timing and power-off risks found | Partly Docs acknowledged; no command-by-command check |
| 3 | Make the changes in a copy of the .tmf | Done Binary patch, verified, later compiled in Tesira | Not done No file produced |
| 4 | TEC-X demo with ULXD4D buttons, theme switch, correct icons and fonts, bezel | Done Simulator built from the file; icon artwork drawn as stand-ins | Partly Two mockups, later withdrawn; Unicode icons |
| 5 | Is the polling sequence working correctly? | Done One query every 3.5 s, 17.5 s per cycle, three caveats | Not done General concerns only |
| 6 | Export an overview of the audio flow | Done Page built from the file | Not done Never attempted. Asked the programmer to export the design as a PDF and screenshot the audio layout instead |
| 7 | Fill out the README from the job documents | Done Three document mismatches flagged | Not done Documents found and read |
| 8 | Rename files to match the change log | Done True original restored from git | Not done Naming convention identified |
| 9 | Apply the new IP scheme and credentials | Done README updated and the design's stale address patched | Not done |
| 10 | Humanizer passes on the README | Done | Not done |
| 11 | Commit and push | Done 11 commits pushed | Not in its prompt |
| 12 | Full summary of what was done | Done This page | Not in its prompt Writeup produced when asked separately |
| 13 | Control flow diagram explaining the button mappings and the logic trees | Done Ten logic lanes, all 47 buttons, command and logic block tables | After the test |
| 14 | Combined logic and audio flow page | Done Both flows, plus every point where logic acts on audio | After the test |
The programmer sent Copilot 19 messages. Three went to setup, five to getting the design file to it in some readable form, ten to the demo, and the last asked for the writeup. Eight of the ten demo messages were corrections.
| # | Phase | Programmer | Copilot |
|---|---|---|---|
| 1 | Setup | Sends the prompt, with its attachment placeholders unfilled | Asks for the repository link and the Epson documents. Quotes the drawings' screen logic allocation. Says it won't put the shared password in tracked files |
| 2 | Setup | Sends the repository link | Reads the repository and its conventions, finds a PDF export of the design and a change order, asks again for the Epson documents |
| 3 | Setup | Attaches the Epson documents | Summarizes the protocol rules it will check against |
| 4 | File access | Asks it to proceed | Provisional review: not ready to call shippable. Says the .tmf can't be validated through its connector, the connector can't write files, and it won't edit the binary. Asks for compile results, property screenshots and page captures |
| 5 | File access | Reports that uploading the .tmf fails as an unsupported file type | Suggests committing each save, exporting PDFs and screenshots, or uploading a ZIP |
| 6 | File access | Reports that ZIP uploads fail too, and asks for something interactive | Calls the file a compressed BSF container with no reliable route in without reverse-engineering. Proposes a hand-built JSON description of the design |
| 7 | File access | Asks for a walkthrough, or whether a GitHub copy would help | Says GitHub won't help. Gives step-by-step instructions for the programmer to transcribe pages, bindings, command strings and timing into JSON |
| 8 | File access | Points out that Tesira has no "Validation mode" | Agrees it meant a web feature. Drops the JSON plan as too much work and asks for property values pasted into chat |
| 9 | Demo | Asks it to recreate the TEC-X itself | Builds a first interactive page from inferred functions |
| 10 | Demo | Says it looks nothing like the panel and Reset crashes the page | Fixes Reset and asks for a screenshot |
| 11 | Demo | Sends a screenshot of the home page | Rebuilds the home page from it; other pages still inferred |
| 12 | Demo | Says the orientation is wrong | Says it had turned the enclosure landscape and fixes that |
| 13 | Demo | Says it's still wrong | Finds a 3356 px width typo |
| 14 | Demo | Says it still doesn't understand the problem | Re-lays out the projector page |
| 15 | Demo | Says it's still badly broken | Re-lays out the projector page again |
| 16 | Demo | Says the whole display needs to move up | Says it moved the display up 46 px |
| 17 | Demo | Says the change didn't happen | Admits it didn't apply and rebuilds the page from scratch |
| 18 | Demo | Says the projector page is still wrong and it's more effort than it's worth | Stops work on the demo and withdraws the inferred pages |
| 19 | Writeup | Asks for the writeup | Produces it |
Several of Copilot's requests sent the programmer looking for Tesira features that aren't there. Claude went back and checked every Tesira instruction and claim in Copilot's chat against the full Tesira Software Help, all 273 pages. Ten are not in the software or not documented anywhere in it. Most became tasks for the programmer: the plan Copilot gave in turn 7 asked for fonts, disabled colors, timeouts, retry counts and advance conditions to be read from dialogs that don't have them. Turn numbers match the table above.
| # | What Copilot asked for or claimed | Turn | What the Tesira help says | Source |
|---|---|---|---|---|
| 1 | A "Validation mode", described as part of its browser demo but under advice to "use Tesira Designer as the extractor" | 6 | No such mode anywhere in the help. Compile "analyses and validates the layout", and Tesira's built-in way to test logic offline is Logic Simulation, which Copilot never mentioned. | Logic Simulation, Compilation |
| 2 | A script run against the open design's "exported reports", with a "printable system report/PDF" as the machine-readable handoff | 6 | File > Export offers a DXF/EMF layout drawing, a Project Designer file, an Object ID CSV, an AV bandwidth XML and an Equipment Table XML. Print outputs the layout drawing. None of them hold TEC-X pages, button actions, command strings or timing. | File menu |
| 3 | File > Properties, to read the Tesira version and a "Program version" | 4 | The File menu has no Properties item and the help has no program-version field. Properties is a docking pane for whatever object is selected. | File menu, Properties |
| 4 | The Tesira version under Help > About | 5 | The documented Help menu has Tesira Help, Check for Updates and Software Attributions, and no About item. | File menu |
| 5 | Font name and size for each TEC-X control | 4, 5, 7, 8 | TEC-X buttons have Text Size and Text Alignment only. The help's font options apply to labels and text objects on the design canvas. | TEC-X, Format tab |
| 6 | Pressed, selected and disabled colors for each control | 7 | A TEC-X button has one look for all states, or separate Off State and On State looks. | TEC-X |
| 7 | Custom image assets exported from Tesira for the TEC-X | 5 | Button icons are selected from a fixed list. The help documents no image import or export. | TEC-X |
| 8 | A command timeout and retry count on the Command String blocks | 6, 7, 8 | The block has neither and "waits indefinitely" for input. Auto Connect retries the network connection every 3 seconds, which is a different setting. | Command String |
| 9 | Polling that waits for a response or a timeout before it advances | 4, 7 | The Logic Sequence block is purely timed: on and off times, a count, and an indefinite-repeat option. | Logic Sequence |
| 10 | The .cdi file holds the TEC-X control layout, so the programmer would not need to work out panel coordinates | 4 to 8 | The help never mentions .cdi files. Its entries are DSP control windows (Level1 to 4, SourceSelector95 and 96, AudioMeter1 and 2), and during Claude's session a save that only moved control windows changed only the .cdi. | Not in the help; see note |
Checked against tesira-software-help.biamp.com. Item 4 is based on the documented menu; the help can lag the software.
Claude's demo is embedded under Deliverables below. Copilot's two attempts are here as it left them: the first mockup, and a rebuild after the programmer pointed out layout problems. In its writeup Copilot withdrew both as not faithful to the panel.
| Panel | Actual design, decoded by Claude | Copilot's mockups |
|---|---|---|
| Pages | 13, including a start screen, a power-off confirmation and the selection pages | 3: Home, Projector Controls, Audio Controls |
| Projector controls | Projector Controls leads to a page per projector with Back, Power, Screen Up, Screen Down, Freeze and Video Mute | One page with two Power buttons, four screen buttons and HDMI 1 / HDMI 2. The design has no input buttons; HDMI 1 is selected automatically at power-up |
| Audio controls | Microphone and level pages leading to Wireless 1, Wireless 2, Mic Mix and USB Audio, each with hold-to-ramp Volume Up and Down plus Mute | Four dB sliders. The panel has no sliders |
| Room power | "Press to Start" runs the room-on sequence; Power Room Off asks for confirmation, then runs the room-off sequence | One On/Off toggle |
| Icons and colors | Tesira's icon list and the colors stored in the file | Unicode glyphs; colors approximated from the screenshot |
| ULXD4D switching | Simulated receiver replies select the matching EQ preset per mic | A button that cycles a text label |
| Theme switch | Auto, Light and Dark | First mockup switches only the page background; the rebuild drops it |
Unedited, as Copilot produced it. Scroll inside the frame.
Its writeup is candid and follows the requested structure. It marks every request as done, partly done, not done or unverified, lists nine of its own mistakes, and concludes that its "repeated unverified visual edits increased user effort." It also found the right repository and baseline commit and summarized the repository conventions correctly.
Two of its choices were deliberately cautious. It said at the start that it would not write the shared device password into tracked files, and it declined to edit the binary design, saying Tesira files should only be changed in Tesira Designer.
Some of its Tesira guidance was accurate too. System > Compile is the Compile button on the System ribbon tab, and compile errors appear in the Output Window. The Equipment Table and Print both exist, though printing to a PDF printer gives a PDF of the layout drawing only. It also said, correctly, that the file starts with a BSF signature, then withdrew the claim as unverified.
Setup differences: Claude Code ran on the programmer's machine with a shell and Python, which is what made decoding the file possible. Copilot worked through a repository connector and enterprise search. The connector could read but not write, and the programmer's attempts to upload the .tmf, then a ZIP of it, were rejected as unsupported file types. The prompt went out with its attachment placeholders unfilled, so Copilot's first three turns went to getting the repository link and the Epson documents. Copilot also had inputs Claude did not: a PDF export of the design, the proposal and change-order documents, and a screenshot of the home page. Tesira was not installed when Claude started, and Copilot never had access to it.
The TEC-X 2000 talks to the TesiraFORTÉ X 400, and the DSP's own logic drives everything else, with no separate control processor: TCP command strings to two Epson L260F projectors and the Shure ULXD4D receiver, contact closures to two projection screens, and the audio path to the amplifier and a laptop over USB.
Tesira Designer was not on the machine at the start; it was installed partway through the session. The .tmf is binary: a short header followed by an LZMA-compressed stream of serialized objects with no published format. Claude decoded it and wrote small Python parsers during the session for each part it needed to check.
The work ran as a loop: Claude reported what to change, the programmer changed it in Tesira and saved, and Claude decoded the new save and compared it with the last one. The chart shows the phases in order, with each save and commit inside the phase where it happened. Hover or tab to any mark for details.
The review raised twenty issues across the panel, the projector control, the logic and the job documents. Fifteen are fixed in the design or the repo, four need someone on site, and one was Claude's own mistake and was withdrawn.
| # | Finding | Outcome |
|---|---|---|
| 1 | Home page buttons had no page links, so 10 of 13 pages were unreachable | Fixed in v1_0_1 |
| 2 | Level Controls button had no link, hiding Microphone Mix and USB Audio | Fixed in v1_0_1 |
| 3 | Wireless 2 Volume Down started the up ramp and never stopped it, a feedback risk | Fixed in v1_0_1, exact action given |
| 4 | USB Audio Volume Down latched the level upward on hold | Fixed in v1_0_1 |
| 5 | Projector 2 Video Mute sent "on" for both states, so it could never mute | Fixed in v1_0_1 |
| 6 | Neither projector sent Epson's ESC/VP.net handshake on port 3629 | Fixed in Claude's patch; bench test still to do |
| 7 | No IP address saved on any of the three command-string blocks | Fixed in v1_0_2 |
| 8 | Both Power buttons sent a command to a block that no longer existed | Fixed in Claude's patch |
| 9 | Back buttons on two pages went to the wrong page | Fixed in v1_0_1 |
| 10 | "Wirelesss 1" typo on the panel | Fixed in v1_0_1 |
| 11 | Leftover buttons drawn over two pages | Withdrawn Claude's error; the panel never draws them |
| 12 | HDMI select fired right as the L260F's 30 s warm-up ends, so it could be dropped | Fixed moved to 32.5 s in v1_0_2 |
| 13 | The L260F ignores PWR OFF during warm-up, so a quick off left projectors on with screens up | Fixed retry wired by the programmer in v1_0_2 |
| 14 | Projector 2 answered every reply with a power query, a possible endless loop | Fixed in Claude's patch |
| 15 | In standby, mute, freeze and source status go stale, and latch buttons don't follow the projector | Open check on a real panel |
| 16 | Screen up/down channel order in the design is the reverse of the pinout on the drawings | Open verify before terminating |
| 17 | The TEC-X 2000 is on the drawings but not on the signed-off equipment list | Open confirm it's ordered |
| 18 | Design uses Dante for the mics; the drawings also show an analog mic run | Open confirm which is installed |
| 19 | The archived "original" design turned out to be a later save; the true original was only in git history | Fixed restored as v1_0_0 |
| 20 | Under the new IP scheme, the mic receiver's old address became the DSP's Dante address | Fixed patched as v1_0_3 |
Versions refer to the program files in the change log. Findings 12 and 13 came from checking the design against the Epson ESC/VP21 command list (114 model sheets) and command guide the programmer supplied; finding 14 turned up while reading Biamp's help to write the patch. Findings 16 to 18 came from the drawings and the signed-off scope while filling out the README.
For the volume buttons, Claude mapped all eight buttons' actions into one table and named the exact two actions to change, down to the state number. For the power-off retry it listed every block and wire. The programmer applied both in a single pass.
Each save was decoded and compared with the previous one, so the report always said what changed, what didn't, and what was still open. When a fix didn't land, the comparison showed it.
When the programmer asked whether Claude could make the changes itself and save them under a new name, Claude edited the compressed binary directly. Wiring changes, which mean adding blocks, were left to the programmer.
| File | What changed | How it was checked | Result |
|---|---|---|---|
v1_0_1 L260F fixes | HDMI select wait from 30 s to 40 s; removed the stray Power action; Epson handshake sent when each projector connects | Decoded again: 6 byte regions differ, all intended; logic graph identical | The programmer built the next version on this copy |
v1_0_3 | Mic receiver's server address changed to its new control IP | Decoded again: exactly 1 byte differs | Opened, compiled and saved in Tesira by the programmer; Claude checked the saved file |
Claude wrote it from the signed-off scope, schedule, labor and equipment list, the AV drawings, the network template and the notice to proceed, plus what the design file confirms. It covers system overview, change log, kickoff notes, special notes, IP addresses, credentials and job history, and it flags the three document mismatches above. It got a final pass to remove AI writing patterns.
Claude renamed the files to the company's name vX_Y_Z [tool version] convention, reading the tool versions from the installed software. It also found that the archived "original" turned out to be a later save and restored the true original from git history, so the change log matches the files.
| Commit | Summary |
|---|---|
98ce7c9 | docs: add TEC-X 2000 UI demo and extracted UI spec |
245f4db | fix: TEC-X nav and volume-ramp fixes in Tesira design, add L260F fixes copy, archive MLC226 files, refresh TEC-X demo |
0c69b9b | feat: rename Tesira design (PWR OFF retry, compiled), archive old TMFs, add audio flow overview, update TEC-X demo |
2b6cb61 | feat: add device IPs to Tesira design, finalize TEC-X demo and audio flow for sharing |
11ba88f | chore: version program files to match change log, restore v1_0_0 Tesira design, fill out README |
42d7436 | fix: point ULXD4D command string at its new address in v1_0_3, archive v1_0_2, update README IP scheme and credentials |
555ad6c | docs: humanizer and structural-humanizer pass on README |
86d2d43 | docs: add Claude and Copilot comparison writeups and Copilot TEC-X mockups |
f8079b4 | docs: add control flow overview of TEC-X buttons and Tesira logic |
254a45d | docs: add combined audio and control flow page, fix control flow diagram labels |
96d8c3f | docs: final writing pass on flow pages, case study and TEC-X demo, fix audio flow matrix labels |
Summaries follow the commit messages, without the job-number scope. Program files were committed only when the programmer asked, as the repo's own instructions require, and only after Tesira had released its lock on the file.
Claude made eight mistakes, and none of them reached the shipped design. The programmer caught three and Claude caught the other five.
| Mistake | Cause | Caught by | Fix |
|---|---|---|---|
| Demo colors had red and blue swapped | Tesira stores colors blue-green-red | Programmer | Parser fixed; colors then matched the Office 2010 palette |
| Called a connection field a "response delimiter" | Guessed its purpose from the bytes | Claude | Corrected after reading Biamp's help while patching |
| Reported the power-off retry wiring as broken | Parser stopped at the TEC-X block and missed blocks stored after it | Programmer, with a screenshot | Parser fixed; wiring confirmed correct |
| Flagged leftover buttons as visible | Ignored each page's layout button count | Programmer | Parser fixed; finding withdrawn |
| First README change log called a later save the original | Took the archived file's name at face value | Claude | Checked git history and restored the real original |
| Copilot test setup pointed at the wrong starting file | Assumed the committed file was the one first reviewed | Claude | Rebuilt the exact starting design from the session's first decode |
| Control flow diagram labels sat on boxes and on each other | Labels placed at a fixed offset from where each line ends | Claude | Wider lanes, labels centered on their lines; the programmer then asked for the same fix on the audio flow page |
| Republished the audio flow page to a new link instead of the shared one | Lost track of the original link when the session's history was summarized to save space | Claude | Republished to the shared link; the extra copy has to be deleted by hand |
Claude could not do these from the desk: it never ran Tesira's compiler itself, never touched hardware, and could not extract the TEC-X icon artwork from the installed software, so the demo draws its own versions of the icons Tesira names.
Copilot got one prompt built only from what the programmer told Claude during this session, in the order it was asked. The programmer left out the last two requests, commit and push and a full summary, before sending it. It contained none of Claude's findings, none of the programmer's answers to Claude's questions, and none of the corrections the programmer made to Claude's mistakes. Copilot started from the same design file Claude first reviewed, rebuilt byte for byte from the session's first decode, on a separate branch of the same repository. Afterward it was asked for a writeup in the same structure as this one, without being shown any of Claude's results. The prompt points to CLAUDE.md because Claude Code loads that file automatically and Copilot does not, so both started with the same repository conventions.
As sent, with the job number, the SharePoint link, the standard password and the IP addresses redacted.
I'm working in a Git repository for a CTI AV job, [job number]. The repo's conventions are documented in CLAUDE.md at the root; follow them. The Tesira file in this space accounts for control of audio and projectors (both the projectors and screens) with a Biamp Apprimo TEC-X 2000 through the TesiraFORTÉ X 400 via some tricky use of network command strings, logic blocks, and logic I/Os. I want to verify that everything is okay to ship, and if possible I would really love to get the TEC-X 2000 UI pulled out and set up to demo. I'll be making changes to the design in Tesira Designer myself as we go. When I tell you I've saved, check the file again and diff it against the previous version. Here's everything I need: 1. Verify the Tesira design is okay to ship. 2. For the projectors, these are the docs I had to go off of: [ESC/VP21 command list and command guide]. The model I'm working with is the Epson L260F. 3. If changes are needed, would it be possible for you to make the changes to the .tmf and save it as an alternate filename? 4. Pull the TEC-X 2000 UI out and set it up to demo. The demo should just show the reality of what the file does. Also: - Add buttons to the demo to show the automatic switching for the ULXD4D. - Add a light/dark/auto toggle to the web page. - Verify that ALL icons are the correct ones from the Biamp program, and that fonts are also correctly showing on the TEC-X. I'd be willing to bet that if you poke around in the Tesira files you can find the icons, bezels and fonts. - Show the bezel of the TEC-X if possible. 5. Is the polling sequence working correctly? 6. Export an overview of the audio flow layout of the Tesira. I need the demo and the audio flow files done today so I can share them. 7. Fill out the README in the root of the repo using the job documents in [project documents folder]. The Yoda link for the job history is: [SharePoint link] 8. Rename files appropriately to match the change log. 9. IP scheme: the DSP will have [IP] for control and [IP] for Dante. The ULXD4D will get [IP] for control and [IP] for Dante. The LEA gets [IP], and the TEC-X gets [IP] if I can actually IP the thing. All passwords will be admin / [standard password] per our standards. The Epsons will not have a password set if I can avoid it. 10. Do a humanizer pass and a structural humanizer pass on the README to remove signs of AI-generated writing, both in the wording and in the structure.