FNote v1

My first major AI-powered project: a personalized Python music player built to be simple, robust, and uniquely functional.

Note: This was a huge learning experience. The UI is basic and the entire 2100+ lines of code are in a single file! It's a testament to how far my development practices have come.

The One-File Wonder

FNote v1 was my first dive into a large-scale application, I don't use it anymore though due to FNote v2 being objectively better. It's built entirely in Python, using the standard tkinter library for the GUI and python-vlc for its powerful audio playback capabilities. This choice, however, came with a catch: users must have VLC Media Player installed on their system for it to work.

Reflecting my novice understanding of software architecture at the time, the entire application—every function, class, and UI element—is contained within a single Python file that's over 2100 lines long. It's a bit of a monolith, but it works!

Try It Yourself

You can download the full project from the GitHub repository. The release includes a pre-packaged executable with VLC already bundled, so you don't need to install anything extra.

Download from GitHub
Screenshot of the FNote v1 user interface.
The simple, function-over-form UI of FNote v1.

Core Features

Despite its simple appearance, FNote v1 has a solid set of features that I wanted in a personal music player:

  • Standard music player controls (play, pause, skip).
  • Song importing and playlist management.
  • Loop and Shuffle modes.
  • Ability to run on startup, so music plays as soon as the PC boots.
  • And its most unique feature...

The Killer Feature: Auto-Pause

The standout feature of FNote v1 is its ability to auto-pause when external audio is detected. If I'm listening to music and a YouTube video starts playing, FNote automatically pauses. When the video's audio stops, FNote seamlessly resumes the music. This feature alone took a solid two weeks of the one-month development cycle.

It was a complex problem that required a multi-AI approach. I struggled with several models until Deepseek-R1 managed to create a working prototype script. I then took that proof-of-concept to Gemini, which successfully integrated the functionality into the main tkinter application.