On this page
Overview
CasinoLove Voice Recorder is a simple recording tool project focused on practical microphone capture. It now exists in two usable forms: a Windows x64 terminal application written in C, and a browser app intended primarily for desktop Google Chrome and similar browsers.
Both versions record uncompressed WAV PCM audio, support microphone test workflows, expose level metering, show recent peak history, and allow optional live playback sound. The Windows build focuses on a tiny native executable with no browser limits, while the browser build focuses on immediate access and easier visual interaction.
This page documents the full Voice Recorder project. It explains the native Windows version, the browser version, the reasons both exist, and the trade-offs between them.
Project versions
| Version | Main purpose | Key characteristics |
|---|---|---|
| Windows native C version | Lightweight practical recorder for Windows x64 | Very small compiled binary, direct native audio APIs, no browser limits, WAV PCM, terminal UI, suitable for offline use |
| Browser version | Instant use without local installation | Single-page browser app, desktop Chrome focused, microphone permission on load, 16-bit PCM WAV export, adaptive action buttons, live monitoring, and browser-side storage behavior that depends on browser support |
Which version should you use
Use the Windows native version if you want the smallest, most direct tool and you do not want browser-related constraints. Use the browser version if you want instant access with a more visual interface and no separate executable download.
Who this project is for
Good fit
- content creators who want a very small and direct voice recording tool
- streamers, presenters, and voice-over users checking microphone gain before recording
- users who prefer either a tiny offline native tool or a no-install browser recorder depending on workflow
- developers or technical users who want open source code they can inspect and extend
- users who need device listing and simple WAV capture without a heavy editor suite
- people who want terminal visibility of peak levels and recent loudness history
Not the main target
- multi-track music production
- advanced DAW editing and effects work
- compressed formats like MP3, AAC, or Opus in the current build
- macOS or Linux users, because the current native build is for Windows x64
- users who need a polished desktop GUI instead of a terminal-driven workflow
Windows user guide
1. Get the app
Download the prebuilt Windows x64 binary or compile it from source using the repository. The current code repository is github.com/CasinoLove/voice-recorder-c.
2. Start the program
Open the executable from Windows Terminal, PowerShell, Command Prompt, or another compatible console. The app opens into its own internal menu system. You do not need to pass long command-line arguments to choose devices or formats.
3. Set the output filename
Choose the output filename item and enter the WAV filename you want. If the file already exists and you start recording, the program asks whether to overwrite it. This helps prevent accidental data loss.
4. Choose the input device
Open the input device menu and select the wanted microphone or other capture source. The app lists the default system input and any other devices the Windows waveform input API can see.
5. Optional live playback sound
You can enable live playback sound if you want to hear the incoming microphone signal through an output device. This is useful for quick setup tests, but the exact latency depends on the hardware and driver path.
6. Choose sample rate and channels
The current build supports common sample rates such as 44.1 kHz, 48 kHz, and 192 kHz, depending on device support. Mono and stereo are supported. The practical default is 48 kHz mono when the selected devices allow it.
7. Recording format
This version only supports 16-bit PCM recording. That is intentional in the current build because it is the safer and more reliable path for the native Windows implementation developed so far.
8. Use microphone test mode before recording
The microphone test function runs the same level display and optional live playback sound but does not write audio to a file. This is useful for setting gain, checking clipping, and seeing whether your voice is too quiet or too hot before the real take starts.
9. Start recording
Choose the recording action to start writing WAV data to disk. The current terminal screen then shows the active device, selected format, elapsed time, live peak reading, status text, recent history graph, and file size.
10. Stop recording
Press Enter or use Ctrl+C. The app finalizes the WAV header and closes the file. The current implementation also updates file data during recording instead of only at the very end, so the result is much safer if the session is interrupted unexpectedly.
Browser user guide
1. Open the app
Open the browser version at https://tech.casinolove.org/voice-recorder/app/. The app is designed primarily for desktop Google Chrome and similar Chromium-based desktop browsers.
2. Allow microphone access
The page requests microphone access automatically on load. If access is not granted, the main call-to-action area shows a Give microphone access button instead of the normal recording actions.
3. Start from the main action buttons
Once access is granted, the app shows two primary actions:
- Start Microphone Test for testing levels without creating a recording file
- Start Recording for actual WAV recording
These buttons adapt to the current state. During microphone test or recording, only the relevant stop action is shown.
4. Open settings when needed
Setup options live in the Settings overlay panel instead of always taking up space on the page. There you can change the filename, input device, playback output device, requested sample rate, requested channel count, update interval, and graph history window. The settings panel is locked while a session is active so the UI does not imply that these changes apply live.
5. Use live monitoring
The browser app has a Live playback sound option with the explanation hear the microphone while speaking. This helps with quick voice checks, though actual routing and latency still depend on browser and device support.
6. Watch the live monitoring panel
The browser app shows elapsed time, peak level, percentage, estimated file size, status text, and a rolling history graph. The status logic is intentionally simple:
- under 20%: volume is low
- 20% to 80%: volume level is good
- over 80%: volume is too high
7. Stop and save
When a browser recording stops, the app prepares the WAV output and automatically starts the download. It also keeps a Download last recording action available after a successful recording so the file can be saved again if needed.
8. Understand browser storage limits
The browser app tries to use safer browser-side storage behavior on supported Chrome-style browsers. Even so, browser-based recording still depends on browser storage support, browser quota rules, and the stability of the tab. For very long or mission-critical recording sessions, the native Windows version remains the safer choice.
Current features
Two usable versions
A lightweight Windows x64 native C build and a browser-based recorder app are both available from the same documentation page.
Device listing
Both versions expose microphone-related device selection. The Windows version also handles output device selection for live playback sound, and the browser version does so where browser support allows it.
WAV PCM recording
Both versions focus on 16-bit PCM WAV recording for broad compatibility and predictable behavior.
Microphone test mode
Both versions let the user test microphone levels without creating a saved recording file.
Live playback sound
Both versions can play back the incoming microphone signal while speaking, subject to device and browser limitations.
Peak meter
Both versions show peak level and percentage against full-scale 16-bit PCM so clipping risk is easy to spot.
Rolling history graph
The native version uses a terminal-friendly history display, while the browser version uses a visual rolling graph with low, good, and high zones.
Safer recording behavior
The native version writes continuously to disk during capture. The browser version uses the safest browser-side approach it can on supported browsers, but remains subject to browser storage and quota behavior.
Metering and status display
The meter is intended to answer a simple operational question: is the microphone level too low, healthy, or too close to clipping. The current display is built around raw 16-bit sample peak values from the actual recorded buffers.
Under 20%
The status text says the volume is low. This helps identify weak input gain or a speaker who is too far from the microphone.
20% to 80%
The status text says the volume level is good. This is the intended normal zone for practical speech recording.
Over 80%
The status text says the volume is too high. This warns the user that clipping or near-clipping is likely.
The graph is not meant to be a mathematically exact waveform display. It is a simple visual inspection tool for recent peak history. The top region effectively works like a warning zone, helping the user notice when recent peaks approach the clipping area.
Why a native C version exists
The native Windows C version exists because the project had specific goals that are easier to satisfy natively:
- a very small compiled x64 binary (less than 100 KBytes), with a target feel closer to a utility than a heavy application
- no browser-imposed runtime limitations or permission quirks for the core feature set
- direct access to the native Windows audio capture and playback path used by this implementation
- simple distribution to users who just want a tiny recorder that starts quickly
- predictable offline behavior without needing a browser tab, local storage, or browser audio APIs
Developer architecture
Technology stack
- Windows native version: C, WinMM waveform audio APIs, and standard C file I/O
- Browser version: single-page HTML app with vanilla JavaScript, browser media APIs, canvas rendering, and browser-managed storage where supported
- No external JavaScript libraries are required by either version
Native Windows app flow
startup
-> initialize settings
-> show menu
-> choose input and output devices
-> choose sample rate and channel count
-> microphone test or recording
-> open input device
-> optionally open output device for live playback sound
-> prepare capture buffers
-> capture audio callback
-> update peak meter and history
-> write WAV data continuously
-> stop
-> finalize header and close devices
Browser app flow
page load
-> request microphone permission
-> show adaptive action buttons
-> open settings overlay if needed
-> start microphone test or recording
-> capture microphone through browser audio APIs
-> update live meter and rolling graph
-> accumulate PCM data through browser-side logic
-> stop
-> finalize WAV output
-> trigger download automatically
Audio capture and playback flow
The Windows native build and the browser build use different audio stacks, but the user-facing logic is intentionally similar. Both can test the microphone, show peak levels, and then record WAV output.
Windows native flow
- Build a 16-bit PCM format structure from the selected sample rate and channels.
- Open the input device with that format.
- Allocate and prepare several input buffers.
- Start capture and process completed buffers in the callback.
- Compute peak level from the actual sample data.
- Write data to disk continuously if the session is a real recording.
- Optionally forward the same data to the selected output device for live playback sound.
Browser flow
- Request microphone access through browser media APIs.
- Open the selected microphone and requested settings as far as the browser allows.
- Read live audio frames in JavaScript.
- Compute peak levels for the meter and the rolling graph.
- Store PCM data using browser-side logic during recording.
- Finalize the WAV output when the recording stops.
Playback flow
Live playback sound exists in both versions, but routing and latency still depend on the underlying platform. The native app uses Windows audio device handling directly, while the browser app depends on browser support and the selected browser output path.
Recording file safety strategy
A common weakness in simple recorder utilities is that they only become usable if the session ends cleanly. That is risky. If the app crashes or the computer loses power, an otherwise successful take can be lost.
The native Windows build therefore writes audio data continuously during recording and refreshes the file state during the session instead of waiting only for the final stop event. The WAV header is still finalized properly at the end, but the file is kept in a much safer intermediate state while the recording is in progress.
The browser version cannot promise the same native-style write behavior because browser recording depends on browser storage models. On supported Chrome-style browsers it can use safer browser-side storage behavior during the session, but the final WAV still has to be assembled at the end. That is why the Windows version remains the better choice for long or especially important recording jobs.
The native build is the more resilient option when recording reliability matters most. The browser build is very convenient, but browser storage quotas, browser crashes, or tab closure can still be more risky than a small native recorder writing directly to disk.
Building from source
Target platform
The current native build is intended for Windows x64. That matches the original design goal of a tiny x64 binary that can be distributed as a lightweight utility.
Windows source repository
The Windows repository is https://github.com/CasinoLove/voice-recorder-c. It does not include the compiled executable. The C source file in that repository is named voice-recorder.c.
GCC / MinGW example
gcc -O2 -Wall -Wextra -o voice-recorder.exe voice-recorder.c -lwinmm
MSVC example
cl /W4 /O2 voice-recorder.c winmm.lib
Privacy and security model
Native version
- records locally to WAV files on the user's own machine
- does not need registration or user accounts
- does not upload audio to a remote server as part of normal operation
- does not depend on external libraries in the current implementation
Browser version
- runs fully in the browser without a server-side recording backend
- still depends on browser permission prompts and browser storage behavior
- does not require account creation or registration
- uses no external JavaScript libraries or CDN dependencies
Practical safety note
Live playback sound routes the incoming microphone signal to an output path. Users should still choose sensible monitoring practices to avoid unwanted feedback, especially when using speakers instead of headphones.