Vai al contenuto
Tutti i lavori
  • #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
  1. 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.

  2. 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.

  3. 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.
  4. 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.

  5. 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.

Lo stato come lo vedono i tuoi amici.
Un progetto salvato mostra il nome e il tempo della sessione.
Anche un progetto non salvato ha uno stato pulito.

Installazione

  1. Scarica

    Prendi l'ultima release dalla pagina GitHub del progetto.
  2. Estrai

    Decomprimila dove preferisci.
  3. Avvia

    Lancia FLStudioRPC.bat: apre FL Studio e lo stato insieme.
  4. 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.

  1. Controllo del processo

    psutil cerca FL64.exe, una ricerca leggera invece di scorrere tutte le finestre.
  2. Titolo della finestra

    pygetwindow legge il titolo della finestra di FL Studio, che contiene il nome del progetto.
  3. Presence

    pypresence manda a Discord il nome del progetto e un timer della sessione.
  4. 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. 1.0.0

    FLStudioRPC_v1.0.0

    First functional release

    GitHub

Ti serve qualcosa di simile?

Dimmi cosa deve fare, dove gira e per quando ti serve.

Contattami