Créer bibliothèque de musique en C
Résolu
matthoffman
Messages postés
405
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je développe actuellement un logiciel de mix (Tracktor like) et je suis confronté à un problème, je ne trouve aucun tuto pour créer une liste de musique (ou on pourrait charger la musique sélectionnée) à la manière de iTunes.
(Je développe ce logiciel en C avec SDL.)
Merci de votre aide.
Je développe actuellement un logiciel de mix (Tracktor like) et je suis confronté à un problème, je ne trouve aucun tuto pour créer une liste de musique (ou on pourrait charger la musique sélectionnée) à la manière de iTunes.
(Je développe ce logiciel en C avec SDL.)
Merci de votre aide.
A voir également:
- Créer bibliothèque de musique en C
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Télécharger musique gratuitement sur pc - Télécharger - Conversion & Extraction
- Créer un lien pour partager des photos - Guide
- Musique audio - Télécharger - Lecture & Playlists
11 réponses
Il faut bien se dire qu'en C tout est faisable. Après, c'est plus ou moins difficile.
Une liste de lecture, c'est juste une file (FIFO ou FILO) avec des chemins de fichier. Il suffit juste de gérer cette file.
Une liste de lecture, c'est juste une file (FIFO ou FILO) avec des chemins de fichier. Il suffit juste de gérer cette file.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci de ta réponse Char Snipeur, mais je ne parlais pas de l'implémentation d'un playlist à lecture automatique, mais de l'affichage d'une liste (au sein de mon programme) de musiques situées dans certain dossier (e.g itunes).
Désolé, je me suis mal exprimé. :s
Désolé, je me suis mal exprimé. :s
ba c'est pareil. Je ne voi pas ce qui te bloque. Une liste c'est une liste. Je me suis peut être un peu tromper en parlant de file, mais une liste c'est ce qu'il te faut, il y a un ordre mais tu n'est pas obligé de le respecté. Je ne comprends pas trop ce que tu cherches à faire ? Le problème c'est de générer cette liste ?
En fait le problème, c'est que j'ai une interface qui pour le moment est vide, je voudrais afficher à l'écran le nom de tous les fichiers .mp3 contenus dans un certain dossier.
En fait quand je parle de liste, c'est une vulgarisation : les noms des fichiers doivent être affichés les uns en dessous des autres dans ma fenetre.
Mon problème est en fait plus: "comment afficher tous les fichiers d'un répertoire dans ma fenetre SDL" qu'autre chose.
En fait quand je parle de liste, c'est une vulgarisation : les noms des fichiers doivent être affichés les uns en dessous des autres dans ma fenetre.
Mon problème est en fait plus: "comment afficher tous les fichiers d'un répertoire dans ma fenetre SDL" qu'autre chose.
ba voilà, là c'est clair ! Et ben, je sais pas... je ne connais pas SDL.
Je ne suis pas sur que SDL soit la bibliothèque la mieux adapter à ce que tu veux faire, Qt ou GTK me semblent plus ad hoc.
Je pense qu'il faut que tu lise la documentation de SDL pour trouver une fonction qui permet de lire le contenu d'un répertoire.
Ensuite, il faut que tu trouve un objet ou une fonction pour afficher la liste. Désolé de ne pas pouvoir plus t'aider...
Je ne suis pas sur que SDL soit la bibliothèque la mieux adapter à ce que tu veux faire, Qt ou GTK me semblent plus ad hoc.
Je pense qu'il faut que tu lise la documentation de SDL pour trouver une fonction qui permet de lire le contenu d'un répertoire.
Ensuite, il faut que tu trouve un objet ou une fonction pour afficher la liste. Désolé de ne pas pouvoir plus t'aider...
Bon, en effet GTK est dix fois plus adapté pour faire ceci.
Le problème est qu'il est trop tard pour prendre connaissance de la librairie GTK entièrement et de traduire tout mon programme de SDL -> GTK.
Donc si quelqu'un a déjà essayé d'intégrer une surface GTK dans une fenêtre SDL (si cela est possible), son aide serait plus que la bienvenue.
Sinon ... ba je sais pas quoi faire :'(
Le problème est qu'il est trop tard pour prendre connaissance de la librairie GTK entièrement et de traduire tout mon programme de SDL -> GTK.
Donc si quelqu'un a déjà essayé d'intégrer une surface GTK dans une fenêtre SDL (si cela est possible), son aide serait plus que la bienvenue.
Sinon ... ba je sais pas quoi faire :'(
Bon et bien c'est parfait j'ai trouvé une solution un peu folle mais ca fonctionne a merveille :D !!
Il y a dans GTK une fonctione permettant d'ouvrir un repertoire et de lister le nom de chaque fichier s'y trouvant.
Chaque nom de fichier est enregistré dans une chaine de caractère.
Il ne me reste plus alors qu'a afficher cette chaine de caractère grace aux fonctions de SDL :) !!!
En gros, j'utilise GTK et SDL mais GTK ne me sers que pour cette fonction donc aucun soucis !!!
(seul inconveniant inclure les 2 packages lors de la compilation ;)).
Voici mon fichier :
C'est magique. Et merci pour ton aide Char Snipeur
Il y a dans GTK une fonctione permettant d'ouvrir un repertoire et de lister le nom de chaque fichier s'y trouvant.
Chaque nom de fichier est enregistré dans une chaine de caractère.
Il ne me reste plus alors qu'a afficher cette chaine de caractère grace aux fonctions de SDL :) !!!
En gros, j'utilise GTK et SDL mais GTK ne me sers que pour cette fonction donc aucun soucis !!!
(seul inconveniant inclure les 2 packages lors de la compilation ;)).
Voici mon fichier :
#include <SDL/SDL.h> #include <SDL/SDL_ttf.h> #include <gtk/gtk.h> #include <stdlib.h> #include <stdio.h> #include "struct.h" void Load_Directory(TTF_Font *font, SDL_Surface *Screen, tab_file *tab_fn) { GDir *dir = g_dir_open ("Data/Music", 0, NULL); SDL_Color color = {0, 255, 0}; int i; if (dir) { const gchar *filename = NULL; i = 0; while (filename = g_dir_read_name (dir)) { tab_fn->tab[i].rect.x = 220; tab_fn->tab[i].rect.y = 502 + (21 * i); tab_fn->tab[i].str = filename; tab_fn->tab[i].sur = TTF_RenderText_Solid(font, filename, color); i = i + 1; tab_fn->nb = i; } g_dir_close (dir), dir = NULL; } }
C'est magique. Et merci pour ton aide Char Snipeur