SShortSingh.
Back to feed

Developer Rebuilds 1990s Panasonic Video Mixer as a Browser App Using WebGPU

0
·1 views

A software developer has recreated the Panasonic WJ-MX50, a desktop digital A/V mixer from the early 1990s, as a browser-based application called web-mx-50. The original hardware was designed for wedding videographers and cable-access studios, but the author used it extensively as a live VJ instrument in techno clubs through the 2000s. The browser recreation was built using vanilla TypeScript, WebGPU for video processing, and Web Audio, totalling around 5,700 lines of code with no external frameworks. The project used the original 40-page Panasonic operating manual as a formal specification, with the developer's own muscle memory acting as an acceptance test for behavioral accuracy. The key engineering challenge was faithfully replicating the mixer's fixed signal processing chain and precise state-transition logic, not merely its visual appearance.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

BlocSignal lets Flutter Hooks consume BLoC state natively via signals_hooks

A new approach called BlocSignal integrates Flutter's BLoC state management with flutter_hooks by replacing asynchronous stream pipelines with synchronous signal primitives from Rody Davis's signals.dart library. Unlike classic BLoC, where state updates travel through microtask event queues, BlocSignal exposes bloc.state as a native ReadonlySignal, enabling direct consumption inside HookWidgets. Developers can use standard signals_hooks utilities such as useSignalValue, useSignalEffect, and useComputed to read state, trigger side effects, and derive computed values without any custom glue-code packages. This eliminates the need for nested widget wrappers like BlocBuilder and BlocListener, or third-party adapters like flutter_hooks_bloc, reducing boilerplate significantly. The integration is available out-of-the-box through the official signals_hooks package, requiring no additional dependencies beyond BlocSignal itself.

0
ProgrammingDEV Community ·

Engineer Catches Hidden RTL Bug in AXI Spec Two Weeks Before Chip Tapeout

A hardware verification engineer discovered a critical latent bug in an AXI interconnect project just two weeks before tapeout, despite the design having passed over 500,000 simulation cycles and achieving more than 98% code coverage. The issue surfaced when a senior architect questioned what would happen if the AWLEN parameter wrapped around 256 during an INCR burst — a scenario the protocol spec left as undefined behavior. Because the testbench had been configured to skip undefined sequences, a state machine hang in the RTL had gone undetected throughout the verification process. The incident highlighted that verification must go beyond confirming the RTL matches the spec, and should also validate that the spec itself is complete and correct. The engineer concluded that the most critical skill in chip verification is not tool expertise, but knowing which edge-case questions the specification authors may have overlooked.

0
ProgrammingDEV Community ·

Most UVM testbenches fail coverage closure for one reason nobody talks about — and it's not your constraints.

After reviewing 20+ verification projects, I see the same pattern: 5 well-written sequences The fix is boring but it works: Before you write a single line of driver code, define your sequence taxonomy: baseline_seq — protocol-compliant, valid stimulus This one habit saves 3–4 weeks of closure pain at tape-out. Hashtags: #SystemVerilog #UVM #HardwareVerification #ASIC #ChipDesign #EDA

0
ProgrammingDEV Community ·

Silent Go bug blocked dead push subscription cleanup, causing endless wasted requests

A developer working on agentrq, a Go backend for an AI agent task manager, discovered a logic bug in the web push notification path that had never triggered any error or alert. The flaw stemmed from a misunderstanding of Go's net/http contract: a 410 Gone response is treated as a successful request, so the error-handling branch meant to delete expired subscriptions was never reached. Because the cleanup code was unreachable from the start, stale push subscription records accumulated in the database without any upper bound. Every subsequent notification event continued attempting delivery to already-dead endpoints, adding a small but permanent overhead per dead subscription per event. The bug caused no crash or visible failure, making it invisible to standard monitoring while silently degrading system efficiency over time.

Developer Rebuilds 1990s Panasonic Video Mixer as a Browser App Using WebGPU · ShortSingh