A beautiful, lightweight, and blazingly fast web application to test your microphone quality before jumping into your next online meeting. Built with a premium deep space aesthetic—complete with a mesmerizing Milky Way pinwheel galaxy logo—L-Mic provides real-time audio visualization and one-click recording and playback capabilities.
Live demo: https://lmic.tech
- Real-time Audio Visualizer: A smooth canvas-driven visualizer powered by the Web Audio API. It renders microphone energy in real time so you can see how active your input is while you talk.
- Microphone Device Picker: Choose from available microphone devices, refresh the device list, and keep the selected mic saved between sessions.
- Live Input Meter: See whether your input is silent, low, healthy, loud, or clipping, with clear on-screen recommendations to improve quality.
- One-Click Recording: Start and stop recording with the native
MediaRecorderAPI, with browser compatibility checks and safer lifecycle handling. - Playback & Download: Review your recording in the browser and download it as a
.webmfile when you want to keep a copy. - Accessibility First: Status updates, error messages, and input quality are announced clearly for assistive technologies.
- Premium Aesthetics: A glassmorphism UI layered over a deep space backdrop with polished motion, reflections, and high contrast controls.
- Production site: https://lmic.tech
- Source repository: https://github.com/devleo10/L-Mic
Ensure you have Node.js installed, then:
-
Clone the repository (if applicable) or navigate to the project directory:
cd L-Mic -
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open in Browser: Navigate to http://localhost:3000 to see L-Mic running.
If you just want to try the app, open the live site at https://lmic.tech.
The audio visualization is handled by a custom React Hook (useAudioAnalyzer) which:
- Connects the user's
MediaStreamto anAudioContext. - Passes it through an
AnalyserNodetailored with a refinedfftSizeand softsmoothingTimeConstantfor visual stability. - Extracts both frequency and time-domain data so the app can render the visualizer and calculate live input levels.
- Paints rounded bars onto a ref-bound
<canvas>usingrequestAnimationFrame. - Persists microphone selection and gives feedback when input is too quiet or clipping.
Built by DevLeo