CasinoLove logo

Free, Open-Source Voice Recorder for Windows and Web

CasinoLove Voice Recorder is a lightweight, open-source audio capture project offering both a tiny native Windows x64 terminal application (written in C) and a highly convenient browser-based app. Built for content creators, developers, and users who demand simplicity, both versions deliver reliable 16-bit PCM WAV recording, live microphone level metering, and a strict focus on privacy: completely free of ads and bloated features. The source code is avaialbe on GitHub: Windows version source code, Online version source code.

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:

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:

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:

Developer architecture

Technology stack

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

  1. Build a 16-bit PCM format structure from the selected sample rate and channels.
  2. Open the input device with that format.
  3. Allocate and prepare several input buffers.
  4. Start capture and process completed buffers in the callback.
  5. Compute peak level from the actual sample data.
  6. Write data to disk continuously if the session is a real recording.
  7. Optionally forward the same data to the selected output device for live playback sound.

Browser flow

  1. Request microphone access through browser media APIs.
  2. Open the selected microphone and requested settings as far as the browser allows.
  3. Read live audio frames in JavaScript.
  4. Compute peak levels for the meter and the rolling graph.
  5. Store PCM data using browser-side logic during recording.
  6. 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

Browser version

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.