- #discord
- #desktop
- #automation
- #music
- #open-source
- #freeware
FLStudio RPC
Una piccola app per Windows che mostra nello stato di Discord il progetto FL Studio su cui stai lavorando, e da quanto. Python, monitoraggio dei processi e Discord Rich Presence.
- Ruolo
- Sviluppatore unico, open source.
- Risultato
- Pubblicata su GitHub con un avvio in un clic. Lo stato segue il cambio di progetto entro 5 secondi e si cancella da solo quando FL Studio si chiude.
- Anno
- 2024
- Stato
- completato
- Stack
- Python
- pypresence
- pygetwindow
- psutil
- PyInstaller
L'inizio
Discord non sapeva che stavo facendo musica
Produco musica in FL Studio e passo gran parte della giornata su Discord. Discord sa mostrare a che gioco stai giocando, ma non aveva idea che fossi in una DAW, figuriamoci su quale traccia. Amici e collaboratori mi chiedevano continuamente a cosa stessi lavorando, e io continuavo a scrivere la stessa risposta.
L'obiettivo
Uno stato che si aggiorna da solo
Mettere la risposta dove le persone guardano già: il mio stato su Discord. Quando FL Studio è aperto, mostrare il progetto su cui sto lavorando e da quanto tempo. Quando cambio progetto, seguirlo. Quando chiudo FL Studio, fare pulizia. Il tutto senza che io debba toccare niente.
L'avventura
Leggere una DAW dall'esterno
FL Studio non ha un'API per questo, quindi l'app lo osserva dall'esterno. Un piccolo processo Python controlla se
FL64.exeè in esecuzione, legge il nome del progetto dal titolo della finestra e lo manda alla Rich Presence di Discord con un timer della sessione. L'ho impacchettata con PyInstaller e ho aggiunto un avvio batch che apre FL Studio e lo stato insieme, e la prima volta crea un collegamento sul desktop.Lo stato come lo vedono i tuoi amici. Le difficoltà
Invisibile, precisa e resistente
Un'app in background deve stare al suo posto, quindi i controlli sui processi dovevano essere abbastanza leggeri da non comparire mai nel Task Manager. Il titolo della finestra di FL Studio cambia con lo stato del progetto e può contenere caratteri speciali, e un progetto non salvato non ha proprio un nome. Inoltre Discord può riavviarsi in qualsiasi momento, e questo non deve far crollare l'app.
La fine
Un clic, poi non ci pensi più
È pubblicata su GitHub con un avvio in un clic. Lo stato dice "Working on" seguito dal nome del progetto, segue il cambio di progetto entro 5 secondi e si cancella da solo quando FL Studio si chiude. È uno strumento piccolo, ma mi ha insegnato molto sulla programmazione a livello di sistema: monitorare processi, leggere le finestre di altre app e costruire qualcosa che lavora in silenzio in background.
Rilevamento automatico
Si accorge di quando parte FL Studio e attiva la Rich Presence da solo.
Il progetto nel tuo stato
Mostra il progetto che hai aperto, così amici e collaboratori vedono a cosa stai lavorando.
Timer della sessione
Un timer in tempo reale conta da quanto stai lavorando al progetto corrente.
Rilevamento della finestra
Trova la finestra di FL Studio e legge le informazioni sul progetto dal titolo.
Segue i tuoi progetti
Apri un altro progetto e lo stato si aggiorna da solo, entro 5 secondi.
Fa pulizia da sola
Chiudi FL Studio e lo stato sparisce, così non mostra mai informazioni vecchie.
Su Discord
L'app usa la Rich Presence di Discord, quindi lo stato si vede come quello di qualsiasi gioco: sul profilo, nella lista dei membri e nelle attività dei tuoi amici.
Installazione
Scarica
Prendi l'ultima release dalla pagina GitHub del progetto.Estrai
Decomprimila dove preferisci.Avvia
LanciaFLStudioRPC.bat: apre FL Studio e lo stato insieme.Fatto
La prima volta crea un collegamento sul desktop, quindi da lì in poi basta un clic.
Una volta avviata non c'è niente da fare. Finché FL Studio è aperto il tuo stato dice "Working on" seguito dal nome del progetto, con il timer della sessione. Chiudi FL Studio e lo stato si cancella e l'app si ferma.
Il ciclo
Un processo Python gira in background e ripete gli stessi quattro passaggi ogni pochi secondi.
Controllo del processo
psutilcercaFL64.exe, una ricerca leggera invece di scorrere tutte le finestre.Titolo della finestra
pygetwindowlegge il titolo della finestra di FL Studio, che contiene il nome del progetto.Presence
pypresencemanda a Discord il nome del progetto e un timer della sessione.Pulizia
Quando FL Studio si chiude, lo stato viene cancellato e l'app termina.
Architettura
Monitor dei processi
psutil
Scorre i processi in modo efficiente per individuare FL Studio, con un intervallo di controllo che rende trascurabile il consumo di CPU.
Rilevamento della finestra
pygetwindow
Identifica la finestra di FL Studio ed estrae il nome del progetto dal titolo, sia per i progetti salvati sia per quelli senza nome.
Integrazione con Discord
pypresence
Tiene aperta una connessione Rich Presence e invia aggiornamenti solo quando qualcosa cambia, per usare poco l'API.
Gestione della sessione
Stato
Fa ripartire il timer quando cambia il progetto e cancella i dati della presence quando FL Studio si chiude.
Sfide
Problema
Rilevamento del processo
Sapere con certezza quando FL Studio è in esecuzione, senza che i controlli consumino risorse.
Soluzione
Una ricerca leggera tra i processi e un intervallo calibrato: qualche secondo tra un controllo e l'altro rende l'app invisibile nel Task Manager.
Problema
Lettura del titolo
Il titolo di FL Studio cambia con lo stato del progetto e può contenere caratteri speciali; i progetti non salvati non hanno nome.
Soluzione
Un parser che gestisce ogni formato di titolo e mostra un progetto non salvato come sessione senza titolo, invece di uno spazio vuoto.
Problema
Connessione a Discord
Discord può riavviarsi o far cadere la connessione Rich Presence in qualsiasi momento.
Soluzione
Gestione della connessione con riconnessione automatica e gestione degli errori, così l'app si riprende invece di crollare.
Competenze acquisite
Programmazione di sistema in Python
psutil
Monitoraggio dei processi e servizi in background che girano di continuo senza dare fastidio.
Discord Rich Presence
pypresence
Integrazione e gestione dello stato tramite l'API Rich Presence di Discord.
Rilevamento delle finestre
pygetwindow
Trovare la finestra di un'altra applicazione e trasformarne il titolo in informazioni utili.
Pacchetti e distribuzione
PyInstaller e batch
Un eseguibile pronto all'uso, più gli script batch per l'avvio e il collegamento automatico sul desktop.
Cosa mostra il mio stato su Discord?
"Working on" seguito dal nome del progetto aperto in FL Studio, con un timer della sessione corrente.
E se il progetto non è ancora salvato?
Viene mostrato come sessione senza titolo invece di uno stato vuoto. Appena lo salvi, compare il nome.
Quanto ci mette ad accorgersi che ho cambiato progetto?
Al massimo 5 secondi dall'apertura di un altro progetto.
Devo avviarla ogni volta?
L'avvio apre FL Studio e lo stato insieme, e il collegamento sul desktop che crea lo rende un clic. Quando chiudi FL Studio, l'app si ferma da sola.
Dove posso scaricarla?
Dalle release su GitHub, dove c'è anche il codice sorgente.
Release
Le ultime release, direttamente da GitHub.
- 1.0.0GitHub
FLStudioRPC_v1.0.0
First functional release
Ti serve qualcosa di simile?
Dimmi cosa deve fare, dove gira e per quando ti serve.
Altri lavori

- #computer-vision
- #automation
- #roblox
Leaf's Grand Blue Autofish
Un'app gratuita per Windows che pesca per te in Grand Blue su Roblox e registra ogni pesce che legge.

- #discord
- #bots
- #api-integration
LegitBot
Un bot Discord che annunciava ogni donazione di diamanti al clan LEGIT, con la classifica aggiornata.

- #computer-vision
- #automation
- #roblox
Pet Sim 99 Autofish
Un aiuto che legge lo schermo e segue i vortici nel minigioco di pesca di Pet Simulator 99.