Vibe ID is an iOS application designed to assist AI-based automated VJing systems. It identifies ambient music (via AudD, ACRCloud (default), or incoming OSC) and leverages LLMs (Large Language Models) to generate creative prompts for image generation. Track information and generated prompts are sent via OSC (Open Sound Control) to other software (TouchDesigner, Chataigne, MaxMSP, etc.) for automated VJing or other creative interactions.
Display of the identified track and carousel of generated AI prompts.
Configuration includes Music ID Provider (AudD/ACRCloud), API keys, OSC parameters, LLM selection.
- ACRCloud Integration: Added ACRCloud as an alternative music identification provider.
- Selectable in Settings ("Music Identification" section).
- Requires ACRCloud Host, Access Key, and Secret Key (obtained from ACRCloud dashboard).
- Credentials stored securely in Keychain.
- Refactored Recognition Layer: Introduced a protocol-based system (
MusicRecognizer) to easily swap between providers (AudD, ACRCloud).
- Advanced LLM Integration: Automatically generates 10 creative image prompts for each identified track.
- Multi-LLM Support: Choose your preferred LLM in settings from Deepseek, Groq, Gemini, and ChatGPT (via OpenAI API). (Note: Groq and DeepSeek are tested; Gemini and ChatGPT are implemented but not tested in this version).
- Dedicated Configuration: Enter your personal API keys for each LLM service in settings (secure storage).
- Customizable System Prompt: Guide the AI with your own "System Prompt" (modifiable in settings) to direct the style or content of generated prompts. The AI uses track information and potentially its own knowledge/web research to create prompts.
- Integrated Display: The 10 generated prompts are displayed at the bottom of the main screen in a navigable carousel.
- OSC Prompt Transmission: All 10 prompts are sent via OSC (
/vibeid/track/prompt1to/vibeid/track/prompt10).
- Alternative to AudD: Receive Title/Artist information directly from an external source (e.g., DJ software, Pro DJ Link to OSC adapter...).
- Configurable Address: Define in settings the exact OSC address that Vibe ID should listen to. Recommended format: Unique address with Artist (string) and Title (string) as arguments.
- LLM Triggering: Receiving information via OSC triggers prompt generation by the selected LLM.
- AudD Timer Reset: OSC reception resets the timer for the next automatic identification via AudD.
- Visual Indicator: The interface indicates when information comes from an OSC source.
- Activation/Deactivation: A button and a setting allow activating/deactivating OSC listening.
- Refined UI: Improved general design, optimized Dark Mode.
- Functional Prompt Carousel.
- Stability: Improved state management.
- Countdown: Indicates time until next AudD ID.
- Periodic audio identification via AudD or ACRCloud (default) (configurable).
- Title/Artist reception via OSC.
- Generation of 10 AI prompts via LLM of choice (Groq and DeepSeek tested; Gemini, ChatGPT implemented but not tested).
- Customizable LLM System Prompt.
- Sending of music data AND 10 AI prompts via OSC.
- Track info display (Cover art, Title, Artist, Source, Genre?, BPM?).
- Carousel display of 10 AI prompts.
- Data source indicator (AudD/ACRCloud/OSC).
- Simple interface, optimized Dark Mode.
- Configuration: Music ID Provider (AudD/ACRCloud), API Keys (AudD, ACRCloud, LLMs), OSC Send (IP/Port), OSC Receive (Port, Address), AudD ID Frequency, LLM Choice, LLM System Prompt.
- Manual prompt via OSC.
- iOS 17.0+
- Xcode 15.0+
- Music ID Provider API Key(s):
- At least one LLM API key (DeepSeek recommended initially) for prompt generation.
- OSC receiver on local network.
- (Optional) OSC transmitter for track info.
- Clone the GitHub repository: https://github.com/Studio-Carlos/VibeID
- Integrate ACRCloud SDK:
- Download the
ACRCloudiOSSDK.xcframeworkfrom the ACRCloud SDK releases or website. - Drag the
.xcframeworkinto your Xcode project (e.g., under aFrameworksgroup). - In Project Settings ->
Vibe IDTarget -> General -> Frameworks, Libraries, and Embedded Content:- Ensure
ACRCloudiOSSDK.xcframeworkis listed. - Set Embed to Embed & Sign.
- Ensure
- Download the
- Open
Vibe ID.xcodeprojin Xcode. - Resolve SPM dependencies if necessary (File > Packages > Resolve...).
- Compile and launch on iOS device.
- Permissions: Allow Microphone and Local Network access.
- Open Vibe ID > Settings (⚙️).
- Go to the Music Identification section:
- Select your desired Provider (AudD or ACRCloud).
- If AudD: Enter the AudD API key.
- If ACRCloud: Enter the ACRCloud Host, Access Key, and Secret Key.
- Go to the LLM Configuration section:
- Enter at least the DeepSeek API key (or other) and select the LLM.
- (Recommended) Customize the LLM System Prompt.
- Configure OSC Output Configuration (Target IP, Target Port).
- Adjust Identification Frequency.
- If using OSC reception: Enable OSC Input Configuration, configure Listen Port.
/vibeid/app/status(string): "listening_started", "listening_stopped"./vibeid/track/new(bang/trigger): New track signal./vibeid/track/title(string): Title./vibeid/track/artist(string): Artist./vibeid/track/album(string): Album (if available)./vibeid/track/genre(string): Genre(s) (if available)./vibeid/track/bpm(float): BPM (if available)./vibeid/track/artworkURL(string): Cover art URL (if available)./vibeid/track/source(string): "AudD" or "ACRCloud" or "OSC"./vibeid/track/prompt1.../vibeid/track/prompt10(string): AI Prompts./vibeid/status(string): Internal status (e.g., "identifying", "generating_prompts", "error"). (To be refined)/vibeid/prompt/manual(string): Manual prompt.
- Address: (Configurable, e.g.:
/external/track) - Arguments:
s(Artist),s(Title)
This project is licensed under the GNU GPL v3. See the LICENSE file.
- Audio identification: AudD, ACRCloud
- AI Prompt Generation: DeepSeek APIs (Tested), Groq (Tested, llama-3.1-8b-instant), Google Gemini, OpenAI (Implemented, Not tested).
- OSC: OSCKit.
- Keychain: KeychainAccess.
- Developed by Studio Carlos (Copyright 2025)
Vibe ID est une application iOS conçue pour assister les systèmes de VJing automatiques basés sur l'IA. Elle identifie la musique ambiante (via AudD, ACRCloud (par défaut), ou OSC entrant) et exploite des LLMs (Modèles de Langage Larges) pour générer des prompts créatifs destinés à la génération d'images. Les informations du morceau et les prompts générés sont envoyés via OSC (Open Sound Control) à d'autres logiciels (TouchDesigner, Chataigne, MaxMSP, etc.) pour le VJing automatique ou d'autres interactions créatives.
Application prête ou en écoute active de la musique.
Affichage du morceau identifié et du carrousel de prompts IA générés.
La configuration inclut le Fournisseur d'Identification Musicale (AudD/ACRCloud), clés API, paramètres OSC, choix LLM.
- Intégration ACRCloud : Ajout de ACRCloud comme fournisseur d'identification musicale alternatif.
- Sélectionnable dans les Réglages (section "Identification Musicale").
- Nécessite Hôte (Host), Clé d'Accès (Access Key), et Clé Secrète (Secret Key) ACRCloud (obtenus depuis le tableau de bord ACRCloud).
- Identifiants stockés de manière sécurisée dans le Trousseau (Keychain).
- Couche de Reconnaissance Refactorisée : Introduction d'un système basé sur un protocole (
MusicRecognizer) pour permuter facilement entre les fournisseurs (AudD, ACRCloud).
- Intégration avancée de LLM : Génère automatiquement 10 prompts d'images créatifs pour chaque morceau identifié.
- Support Multi-LLM : Choisissez votre LLM préféré dans les réglages parmi Deepseek, Groq (testé, fonctionne bien), Gemini, et ChatGPT (via OpenAI API). (Note : Groq et DeepSeek testés ; Gemini et ChatGPT implémentés mais non testés dans cette version).
- Configuration dédiée : Entrez vos clés API personnelles pour chaque service LLM dans les réglages (stockage sécurisé).
- Customizable System Prompt: Guide the AI with your own "System Prompt" (modifiable in settings) to direct the style or content of generated prompts. The AI uses track information and potentially its own knowledge/web research to create prompts.
- Integrated Display: The 10 generated prompts are displayed at the bottom of the main screen in a navigable carousel.
- OSC Prompt Transmission: All 10 prompts are sent via OSC (
/vibeid/track/prompt1to/vibeid/track/prompt10).
- Alternative to AudD: Receive Title/Artist information directly from an external source (e.g., DJ software, Pro DJ Link to OSC adapter...).
- Configurable Address: Define in settings the exact OSC address that Vibe ID should listen to. Recommended format: Unique address with Artist (string) and Title (string) as arguments.
- LLM Triggering: Receiving information via OSC triggers prompt generation by the selected LLM.
- AudD Timer Reset: OSC reception resets the timer for the next automatic identification via AudD.
- Visual Indicator: The interface indicates when information comes from an OSC source.
- Activation/Deactivation: A button and a setting allow activating/deactivating OSC listening.
- Refined UI: Improved general design, optimized Dark Mode.
- Functional Prompt Carousel.
- Stabilité : Améliorations de la gestion d'état.
- Compte à Rebours : Indique le temps avant la prochaine ID AudD.
- Identification audio périodique via AudD ou ACRCloud (par défaut) (configurable).
- Réception Titre/Artiste via OSC.
- Génération de 10 prompts IA via LLM au choix (Groq et DeepSeek testés ; Gemini, ChatGPT implémentés mais non testés).
- Prompt Système LLM personnalisable.
- Envoi des données musicales ET des 10 prompts IA via OSC.
- Affichage infos piste (Pochette, Titre, Artiste, Source, Genre?, BPM?).
- Affichage en carrousel des 10 prompts IA.
- Indicateur de source de données (AudD/ACRCloud/OSC).
- Interface simple, optimisée Dark Mode.
- Configuration : Fournisseur ID Musique (AudD/ACRCloud), Clés API (AudD, ACRCloud, LLMs), Envoi OSC (IP/Port), Réception OSC (Port), Fréquence ID, Choix LLM, Prompt Système LLM.
- Prompt manuel via OSC.
- iOS 17.0+
- Xcode 15.0+
- Clé(s) API Fournisseur ID Musique :
- Au moins une clé API LLM (DeepSeek recommandé initialement) pour la génération de prompts.
- Récepteur OSC sur le réseau local.
- (Optionnel) Emetteur OSC pour info piste.
- Cloner le dépôt GitHub : https://github.com/Studio-Carlos/VibeID
- Intégrer le SDK ACRCloud :
- Télécharger
ACRCloudiOSSDK.xcframeworkdepuis les releases du SDK ACRCloud ou leur site. - Glisser le
.xcframeworkdans votre projet Xcode (ex: sous un groupeFrameworks). - Dans Réglages Projet -> Cible
Vibe ID-> General -> Frameworks, Libraries, and Embedded Content :- Assurez-vous que
ACRCloudiOSSDK.xcframeworkest listé. - Réglez Embed sur Embed & Sign.
- Assurez-vous que
- Télécharger
- Ouvrir
Vibe ID.xcodeprojdans Xcode. - Résoudre les dépendances SPM si nécessaire (File > Packages > Resolve...).
- Compiler et lancer sur appareil iOS.
- Permissions : Autoriser l'accès Microphone et Réseau Local.
- Ouvrir Vibe ID > Réglages (⚙️).
- Aller à la section Identification Musicale :
- Sélectionner le Fournisseur désiré (AudD ou ACRCloud).
- Si AudD : Entrer la clé API AudD.
- Si ACRCloud : Entrer l'Hôte, la Clé d'Accès, et la Clé Secrète ACRCloud.
- Aller à la section Configuration LLM :
- Entrer au moins la clé API DeepSeek (ou autre) et sélectionner le LLM.
- (Recommandé) Personnaliser le Prompt Système LLM.
- Configurer la Configuration Sortie OSC (IP Cible, Port Cible).
- Ajuster la Fréquence d'identification.
- Si réception OSC : Activer Configuration Entrée OSC, configurer Port d'écoute.
/vibeid/app/status(string): "listening_started", "listening_stopped"./vibeid/track/new(bang/trigger): Signal nouveau morceau./vibeid/track/title(string): Titre./vibeid/track/artist(string): Artiste./vibeid/track/album(string): Album (si dispo)./vibeid/track/genre(string): Genre(s) (si dispo)./vibeid/track/bpm(float): BPM (si dispo)./vibeid/track/artworkURL(string): URL Pochette (si dispo)./vibeid/track/source(string): "AudD" ou "ACRCloud" ou "OSC"./vibeid/track/prompt1.../vibeid/track/prompt10(string): Prompts IA./vibeid/status(string): Statut interne (ex: "identifying", "generating_prompts", "error"). (À affiner)/vibeid/prompt/manual(string): Prompt manuel.
- Adresse : (Configurable, ex:
/external/track) - Arguments :
s(Artiste),s(Titre)
Ce projet est sous licence GNU GPL v3. Voir le fichier LICENSE.
- Identification audio : AudD, ACRCloud
- Génération Prompts IA : APIs DeepSeek (Testé), Groq (Testé, llama-3.1-8b-instant), Google Gemini, OpenAI (Implémentés, Non testés).
- OSC : OSCKit.
- Keychain : KeychainAccess.
- Développé par Studio Carlos (Copyright 2025)