A high-performance, lightweight web application designed to listen to the DTMF 'dialer' tones from Casio Databank DBA-800/DBA-80 watches. Decodes in real-time using a C# backend and provides a click-to-dial interface for modern smartphones.
- Open the website on your phone (or any device with a microphone)
- Hold your DBA-800/DBA-80 close to the microphone
- Press on the 'Start Listening' button on the interface
- Play a saved contact number from the watch's phone dialer
- The web app decodes the tones and displays the number
- Tap the 'Dial Number' text to dial
This project uses a low-latency audio pipeline to ensure hardware dial tones are captured and processed accurately:
- Frontend: TypeScript with AudioWorklet for thread-isolated sampling.
- Transport: SignalR streaming 16-bit PCM data from the browser to the server.
- Backend: ASP.NET Core (C#) implementing the Goertzel Algorithm for DTMF frequency detection.
| Layer | Technology | Role |
|---|---|---|
| Audio capture | TypeScript + AudioWorklet | Thread-isolated PCM sampling |
| Transport | ASP.NET Core SignalR | Low-latency 16-bit PCM streaming |
| DTMF decoding | C# (Goertzel algorithm) | Frequency detection on the server |
| Server | .NET 10 | ASP.NET Core host |
Casio-Databank-Dialer/
├── src/
│ ├── Scripts/
│ │ ├── app.ts # UI & SignalR client
│ │ └── audio-processor.ts # AudioWorklet (DSP thread)
│ ├── wwwroot/
│ │ ├── fonts/
│ │ ├── images/
│ │ ├── js/ # Compiled JS (git-ignored)
│ │ ├── index.html # Main UI
│ │ ├── robots.txt
│ │ └── sitemap.xml
│ ├── AudioHub.cs # SignalR hub
│ ├── Goertzel.cs # DTMF frequency detection
│ ├── Program.cs # ASP.NET Core entry point
│ └── src.csproj # .NET project file
├── tests/
├── Casio-Databank-Dialer.sln
└── LICENSE
# Install .NET packages
dotnet restore
# Install TypeScript & SignalR
npm install
Run in two separate terminal windows to handle the build process:
dotnet watch
# Watch and compile TS to wwwroot/js/
npx tsc -w
