Skip to content
All work
  • #discord
  • #desktop
  • #automation
  • #music
  • #open-source
  • #freeware

FLStudio RPC

A small Windows app that shows the FL Studio project you’re working on, and for how long, in your Discord status. Python, process monitoring and Discord Rich Presence.

Role
Solo developer, open source.
Outcome
Released on GitHub with a one-click launcher. The status follows a project switch within 5 seconds and clears itself when FL Studio closes.
Year
2024
Status
shipped
Stack
  • Python
  • pypresence
  • pygetwindow
  • psutil
  • PyInstaller
  1. The start

    Discord didn't know I was making music

    I produce music in FL Studio and spend most of my day on Discord. Discord can show which game you're playing, but it had no idea I was in a DAW, let alone which track. Friends and collaborators kept asking what I was working on, and I kept typing the same answer.

  2. The goal

    A status that keeps itself up to date

    Put the answer where people already look: my Discord status. When FL Studio is open, show the project I'm working on and how long I've been at it. When I switch projects, follow along. When I close FL Studio, clean up. All of it without me touching anything.

  3. The adventure

    Reading a DAW from the outside

    FL Studio has no API for this, so the app watches it from the outside. A small Python process checks whether FL64.exe is running, reads the project name from the window title, and sends it to Discord's Rich Presence with a session timer. I packaged it with PyInstaller and added a batch launcher that opens FL Studio and the status together, and creates a desktop shortcut the first time.

    The status as your friends see it.
  4. The difficulties

    Invisible, accurate and resilient

    A background app has to stay out of the way, so the process checks had to be cheap enough to never show up in Task Manager. FL Studio's window title changes with the state of the project and can carry special characters, and an unsaved project has no name at all. And Discord can restart at any time, which mustn't crash the app.

  5. The end

    One click, then nothing to think about

    It's released on GitHub with a one-click launcher. The status reads "Working on" plus the project name, follows a project switch within 5 seconds and clears itself when FL Studio closes. It's a small tool, but it taught me a lot about system-level programming: monitoring processes, reading other apps' windows, and building something that runs quietly in the background.

  • Automatic detection

    Notices when FL Studio starts and turns the Rich Presence on by itself.

  • Project name in your status

    Shows the project you have open, so friends and collaborators can see what you're working on.

  • Session timer

    A live timer counts how long you've been on the current project.

  • Window detection

    Finds FL Studio's window and reads the project information from its title.

  • Follows your projects

    Open another project and the status updates on its own, within 5 seconds.

  • Cleans up after itself

    Close FL Studio and the status disappears, so it never shows stale information.

In Discord

The app uses Discord's own Rich Presence, so the status looks like any game's: on your profile, in the member list and in your friends' activity feed.

The status as your friends see it.
A saved project shows its name and the session time.
An unsaved project still gets a clean status.

Setup

  1. Download

    Get the latest release from the project's GitHub page.
  2. Extract

    Unzip it wherever you like.
  3. Run

    Start FLStudioRPC.bat: it opens FL Studio and the status together.
  4. Done

    A desktop shortcut is created the first time, so from then on it's one click.

Once it's running there's nothing to do. While FL Studio is open your status reads "Working on" plus the project name, with the session timer. Close FL Studio and the status clears and the app stops.

The loop

A Python process runs in the background and repeats the same four steps every few seconds.

  1. Process check

    psutil looks for FL64.exe, a cheap lookup instead of walking every window.
  2. Window title

    pygetwindow reads FL Studio's window title, which carries the project name.
  3. Presence

    pypresence sends Discord the project name and a session timer.
  4. Cleanup

    When FL Studio closes, the status is cleared and the app exits.

Architecture

  • Process monitor

    psutil

    Enumerates processes efficiently to spot FL Studio, with a polling interval that keeps the CPU cost negligible.

  • Window detection

    pygetwindow

    Identifies FL Studio's window and extracts the project name from its title, for named and unnamed projects alike.

  • Discord integration

    pypresence

    Keeps a Rich Presence connection open and only sends updates when something changes, to keep API use low.

  • Session management

    State

    Restarts the timer when the project changes and clears the presence data when FL Studio closes.

Challenges

Problem

Process detection

Knowing reliably when FL Studio is running, without the checks eating system resources.

Solution

Lightweight process enumeration and a tuned polling interval: a few seconds between checks keeps the app invisible in Task Manager.

Problem

Window title parsing

FL Studio's title changes with the project state and can contain special characters; unsaved projects have no name.

Solution

A parser that handles every title format and shows an unsaved project as an untitled session rather than a blank.

Problem

Discord connection

Discord can restart or drop the Rich Presence connection at any moment.

Solution

Connection management with automatic reconnection and error handling, so the app recovers instead of crashing.

Skills I gained

  • System programming in Python

    psutil

    Process monitoring and background services that run continuously without getting in the way.

  • Discord Rich Presence

    pypresence

    Status integration and management through Discord's Rich Presence API.

  • Window detection

    pygetwindow

    Finding another application's window and parsing its title into usable information.

  • Packaging and distribution

    PyInstaller and batch

    A packaged executable, plus batch scripting for the launcher and the automatic desktop shortcut.

What does my Discord status show?

"Working on" plus the name of the project you have open in FL Studio, with a timer for the current session.

What if my project isn't saved yet?

It shows as an untitled session instead of a blank status. Once you save it, the name appears.

How fast does it notice a project switch?

Within 5 seconds of opening a different project.

Do I have to start it every time?

The launcher starts FL Studio and the status together, and the desktop shortcut it creates makes that one click. When you close FL Studio, the app stops on its own.

Where can I download it?

From the releases on GitHub, where the source code is too.

Releases

The latest releases, straight from GitHub.

  1. 1.0.0

    FLStudioRPC_v1.0.0

    First functional release

    GitHub

Need something like this?

Tell me what it should do, where it runs and when you need it.

Get in touch