A custom player for favorite music: what Myron 2402 created
The song is playing, but the lyrics are lagging. You want to sing along to the Japanese chorus, but it's hard to read. There is a translation, but the lines don't match the original. LRC Open Player combines solutions to these problems in one music player — and its author is a member of our community.

The author as told by their project
On Telegram, the author introduces themselves as Myron 2402 (@myron2402", but on GitHub works under the nickname Myron4iktop. They shared it LRC Open Player in our chat. The repository contains the code for the Windows player, the LRC Companion Android app, build instructions, and a list of used libraries.
This is a breakdown of a published project, not an interview. We do not know how long development took, what the author's previous experience was, or if a specific AI assistant helped them. Therefore, "how it's made" here refers to the architecture visible in the code. Attributing a "one evening with Claude" story to the author without their words would be incorrect.
Why another music player?
The most interesting thing here is the narrow focus. LRC Open Player works with your own audio files and puts the song lyrics at the center: finding, reading, synchronizing, and supplementing with translations. It is not a subscription to a music catalog.
LRC is text with timestamps. For example, a recording [00:42.50] means the 42.5-second mark. The player matches these timestamps with the playback position and highlights the required line. It produces a familiar karaoke effect, but over your local collection.
The project provides several text sources: a separate file .lrc next to the song, data embedded within the audio file, and search via LRCLIB. If there is no synchronization, you can create it: turn on the song and press Enter at the beginning of each line.
A special feature is Japanese lyrics. The program can display them in Latin characters, i.e., romaji, with a translation below. This helps track the sound; the transliteration itself is not a translation and does not guarantee perfect pronunciation.
How it works: two applications with different roles
Windows: listen and synchronize
Python and PyQt6 form the interface. Qt Multimedia handles playback, Mutagen handles metadata, and Cutlet and a Japanese dictionary handle romaji. Integration with Windows adds multimedia keys and lock screen controls.
Android: prepare the collection
Kotlin and Jetpack Compose are the foundation of LRC Companion. The app edits titles, artists, covers, and lyrics, searches for matches in LRCLIB, and saves LRC. Kuromoji is used for Japanese text.
The connection between these parts is simple: standard music files, their metadata, and LRC. The README makes no promise of automatic cloud synchronization between phone and PC. Moving files remains a separate user action.
The author did not write an audio decoder or a Japanese dictionary from scratch. He combined ready-made open libraries around a specific scenario. For one's own small product, this is a practical approach: the main attention can be paid to how a person uses the program.
AI performs a small but appropriate task here
Imagine: in the original, there are two short lines, but the translator combined them into one sentence. Simple 'first with first, second with second' matching no longer works.
An optional AI mode helps determine which translation lines correspond to the original lines. Based on the description and project logic, the model should match their numbers rather than invent a new translation. A person reviews the result before saving.
- Local option: a server compatible with the OpenAI API, such as LM Studio, Ollama, or llama.cpp. The model and server must be configured separately.
- Cloud option: OpenRouter with your own API key. Usage is paid according to the terms of the chosen service and model.
- Without AI: manual matching remains available; the AI function is not a requirement for listening to music.
This is a demonstrative example of the limited role of AI in a product: one task, clear input data, and human verification. Learn more about the difference between a local program and a local model in our FAQ about local AI.
What's more interesting in the code than the feature list
Editing via copy. The Windows feature for writing lyrics to metadata first creates a copy of the audio file, modifies it, and checks if the library can read the result. Only then does it replace the original. This reduces the risk of partial writing, although it does not replace a collection backup and does not check the sound of the entire track.
Background operation. The desktop code has separate tasks for network requests and long-running operations. It also includes a check for delayed lyric search responses: the result of an old song must not overwrite the text of a new track.
Access to the selected folder on Android. LRC Companion uses the system file and folder picker mechanism. This aligns with its purpose: working with a collection opened by the user.
Is it a virus? An honest answer after static analysis
A program cannot be called "definitely safe" based on a single code reading. We performed a static analysis of the open-source version d2f98b0: we reviewed the README, the main Python file, Android Manifest, Gradle configuration, and the list of dependencies. We did not run the ready-made EXE or APK, did not intercept network traffic, and did not audit all libraries or the build chain.
| What has been checked | What is visible in the code | Practical conclusion |
|---|---|---|
| Network | The Windows code connects to LRCLIB to search for lyrics. In AI mode, it can separately connect to a selected local OpenAI-compatible server or OpenRouter. In the main Python file, we did not find calls subprocess, os.system to eval. | The player is not fully offline when lyric search or cloud AI is enabled. This is not a confirmation of the actual network behavior of all dependencies. |
| Android Permissions | The Manifest declares only INTERNET. Camera, microphone, contacts, and broad storage access are not requested; the user selects the folder via the system mechanism. | The set of explicit permissions is narrow, but this in itself does not guarantee the absence of bugs or risks in the code. |
| API Key | On Windows, protection via DPAPI for the current user is provided. If encryption is unavailable, the code may save a compatible old value in plain text. | Start without a key; for OpenRouter, use a separate key with a minimal limit and do not share the settings file with others. |
| Dependencies and Build | Only PyQt6 has a minimum version; some Python packages are not precisely pinned. The Android release configuration is signed with a debug key. | Build reproducibility needs to be strengthened: pin versions and set up a separate release signature. |
| Ready-made files | At the time of checking, there were no published releases, EXE/APK hashes, or signed artifacts in GitHub Releases. | It is impossible to confirm the origin of a third-party installer. The most transparent way right now is to build from the pinned code itself. |
How to try it more safely and who might find it interesting
The project is worth your attention if you store music locally, love singing along to Japanese songs, or want to fix lyrics and timings yourself. If you only need a streaming service catalog, this solves a different problem.
According to the README, to run the desktop version, you need Windows and Python 3.11 or newer. After downloading the source code and entering the project folder:
cd desktop
pip install -r requirements.txt
python lrcplayer.py
- Download the pinned version. To repeat our check, use the commit
d2f98b0, rather than a random archive from a chat or a file sharing site. - Create a separate environment. Install Python dependencies in
venv; before installation, reviewrequirements.txt. - Take test copies. Verify the first metadata and LRC recording not on your entire music collection, but on copies of a few files.
- Start without an API key. Listening and manual synchronization do not require cloud AI. Only connect to OpenRouter after reviewing its terms and costs.
- Check the network and the artifact. If necessary, control the connection with a system firewall. If a ready release appears, verify the source, signature, and the hash published by the author.
The Android part is built in Android Studio; detailed steps are in the instructions for the verified commit. Since there is no separate signed release, building from source code is more transparent than an unknown APK.
The code is published under GPLv3. The author allows studying and modifying the program; distribution of derivative versions must comply with the license terms. For your own fork, the README requests using a different name and icon.
Why this project is relevant to our community
LRC Open Player has a specific scenario that is easy to explain without big promises: play your own song, see the lyrics, and fix the translation. From this scenario, one can trace the path to libraries, file formats, the interface, and a separate AI feature.
For those planning their first application, here is a useful principle: choose a small inconvenience and bring its solution to a clear result for the user. Open source allows you to see not just the idea, but how it is implemented.
Sources and authorship
The material was prepared by the Vibe Coding editorial team based on the open repository. The software project author is Myron 2402 (Myron4iktop on GitHub). Technical statements are tied to the reviewed version; the current code may change.
Another project from our community — Origami Notes by BaraniukConnection: an Android notepad with folders, lists, and widgets.
Creating something of your own? Show the community
Share your project, explain what problem it solves, and gather domain-specific feedback. Other participants' works can be found in the materials catalog.
To the Ukrainian chat →
Discussion
Share your opinion or ask about the material. Your nickname and comment text will be visible to everyone.
Log in via email
Get a one-time code. No password required.
The code is valid for 10 minutes. Logging in does not subscribe you to the newsletter. Data usage.
Or log in via ChatGPT ↗Loading comments...