Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como usar el Winamp

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como usar el Winamp Responder citando

Deseo hacer una aplicación que maneje la lista de reproducción del winamp, las opciones de Shuffle y Repeat

y como puedo hacer para editar el Tag de los mp3, ponerlo en por ejemplo en un Edit, o como sacar la información del Tag de los MP3

desde ya cha gracias

Majaco

Volver arriba
Mensaje    Asunto: Como usar el Winamp Responder citando

Hola, aquí tienes una pequeña clase para leer la información, salvarla o añadirla. Usa el formato ID3 versión 1, existen otras versiones pero son mas complejas y no las soportan todos los programas:

code:

// Añadimos: #include <fstream>
class TId3v1
{
private:
char buffer[128];

public:
String titulo, artista, album, comentario, anyo;
short genero;

void leer(String nombreFichero)
{
std::ifstream in(nombreFichero.c_str(),
std::ios::in | std::ios::binary);
if (!in)
throw Exception("No se pudo abrir el fichero.");

in.seekg(-128, std::ios::end);
in.read(buffer, 128);
if (memcmp(buffer, "TAG", 3))
throw Exception("Este fichero no contiene información.");

char szTemp[31];
titulo = lstrcpyn(szTemp, &buffer[3], 31);
artista = lstrcpyn(szTemp, &buffer[33], 31);
album = lstrcpyn(szTemp, &buffer[63], 31);
anyo = lstrcpyn(szTemp, &buffer[93], 5);
comentario = lstrcpyn(szTemp, &buffer[97], 31);
genero = buffer[127];
}

void guardar(String nombreFichero)
{
std::fstream fichero(nombreFichero.c_str(),
std::ios::in | std::ios::out
| std::ios::binary | std::ios::nocreate);
if (!fichero)
throw Exception("No se pudo abrir el fichero.");

fichero.seekp(-128, std::ios::end);
fichero.read(buffer, 128);
if (!memcmp(buffer, "TAG", 3))
fichero.seekp(-128, std::ios::end);

memset(buffer, 0, sizeof(buffer));
memcpy(buffer, "TAG", 3);
lstrcpyn(&buffer[3], titulo.c_str(), 31);
lstrcpyn(&buffer[33], artista.c_str(), 31);
lstrcpyn(&buffer[63], album.c_str(), 31);
lstrcpyn(&buffer[93], anyo.c_str(), 5);
lstrcpyn(&buffer[97], comentario.c_str(), 31);
buffer[127] = genero;

fichero.write(buffer, 128);
}
};


Y para utilizarla, por ejemplo, para leer la información:


  TId3v1 id3;
  if (OpenDialog1->Execute())
  {
      id3.leer(OpenDialog1->FileName);
      Edit1->Text = id3.titulo;
      Edit2->Text = id3.artista;
      Edit3->Text = id3.album;
      Edit4->Text = id3.anyo;
      Edit5->Text = id3.comentario;
      Edit6->Text = id3.genero;
  }

y para salvarla:

  TId3v1 id3;
  if (OpenDialog1->Execute())
  {
      id3.titulo = Edit1->Text;
      id3.artista = Edit2->Text;
      id3.album = Edit3->Text;
      id3.anyo = Edit4->Text;
      id3.comentario = Edit5->Text;
      id3.genero = Edit6->Text.ToIntDef(255);
      id3.guardar(OpenDialog1->FileName);
}

---
Tienes más información en:
ID3v1: http://www.id3.org/id3v1.html
ID3v2: http://www.id3.org/

Saludos:
_Leo


Aquí tienes una lista de códigos de genero:

code:

0=Blues 1=Classic Rock 2=Country
3=Dance 4=Disco 5=Funk
6=Grunge 7=Hip-Hop 8=Jazz
9=Metal 10=New Age 11=Oldies
12=Other 13=Pop 14=R&B
15=Rap 16=Reggae 17=Rock
18=Techno 19=Industrial 20=Alternative
21=Ska 22=Death Metal 23=Pranks
24=Soundtrack 25=Euro-Techno 26=Ambient
27=Trip-Hop 28=Vocal 29=Jazz+Funk
30=Fusion 31=Trance 32=Classical
33=Instrumental 34=Acid 35=House
36=Game 37=Sound Clip 38=Gospel
39=Noise 40=AlternRock 41=Bass
42=Soul 43=Punk 44=Space
45=Meditative 46=Instrumental Pop 47=Instrumental Rock
48=Ethnic 49=Gothic 50=Darkwave
51=Techno-Industrial 52=Electronic 53=Pop-Folk
54=Eurodance 55=Dream 56=Southern Rock
57=Comedy 58=Cult 59=Gangsta
60=Top 40 61=Christian Rap 62=Pop/Funk
63=Jungle 64=Native American 65=Cabaret
66=New Wave 67=Psychadelic 68=Rave
69=Showtunes 70=Trailer 71=Lo-Fi
72=Tribal 73=Acid Punk 74=Acid Jazz
75=Polka 76=Retro 77=Musical
78=Rock & Roll 79=Hard Rock 80=Folk
81=Folk-Rock 82=National Folk 83=Swing
84=Fast Fusion 85=Bebob 86=Latin
87=Revival 88=Celtic 89=Bluegrass
90=Avantgarde 91=Gothic Rock 92=Progessive Rock
93=Psychedelic Rock 94=Symphonic Rock 95=Slow Rock
96=Big Band 97=Chorus 98=Easy Listening
99=Acoustic 100=Humour 101=Speech
102=Chanson 103=Opera 104=Chamber Music
105=Sonata 106=Symphony 107=Booty Bass
108=Primus 109=Porn Groove 110=Satire
111=Slow Jam 112=Club 113=Tango
114=Samba 115=Folklore 116=Ballad
117=Power Ballad 118=Rhythmic Soul 119=Freestyle
120=Duet 121=Punk Rock 122=Drum Solo
123=A capella 124=Euro-House 125=Dance Hall
126=Goa 127=Drum & Bass 128=Club-House
129=Hardcore 130=Terror 131=Indie
132=BritPop 133=Negerpunk 134=Polsk Punk
135=Beat 136=Christian Gangsta Rap 137=Heavy Metal
138=Black Metal 139=Crossover 140=Contemporary Christian
141=Christian Rock 142=Merengue 143=Salsa
144=Trash Metal 145=Anime 146=JPop
147=Synthpop

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.