Comunidad Gambas-es
MetaEdit: Un editor de Metadatos de archivos de Sonido. - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: MetaEdit: Un editor de Metadatos de archivos de Sonido. (/thread-1082.html)



MetaEdit: Un editor de Metadatos de archivos de Sonido. - Shordi - 29-10-2022

En el desarrollo de gbAmp, me surgió el tema de la edición de los metadatos de los archivos de sonido. Normalmente no de los que descargas que con mayor o menor fortuna ya llevan sus metadatos perfectamente grabados, si no de los archivos que genera el propio gbAmp al descargar el sonido de vídeos de youtube.
Para no engorrinar el programa con pruebas y errores, tengo costumbre de hacer un pequeño proyecto borrador para perfeccionar estas cosas y luego añadirlo al programa "gordo". Así ha surgido el programita que os presento hoy: MetaEdit.
Su aspecto es este:
[Imagen: Qbb80La.png]
Lo que podéis hacer con él es:
-Editar los metadatos que contenga y añadir las etiquetas que deseéis.
-Ver información sobre el archivo de sonido y los canales que contiene
-Extraer la imagen incrustada que pueda llevar y guardarla en un archivo.
-Eliminar la imagen incrustada (si no es adecuada o para ahorrar espacio)
-Incrustar una nueva imagen en el archivo

Para todo eso he tenido que estudiar varios programas que los repositorios de Linux ofrecen como ideales para esto, pero no soy partidario de que un programa contenga muchas dependencias y al final he descartado todos salvo el único imprescindible: ffmpeg.

ffmpeg es un software impresionante y esto de manipular metadatos es sólo una ínfima parte de lo que puede hacer y ahora que lo conozco un poquito quizá emprenda la tarea de eliminar de gbAmp todas las dependencias salvo ffmpeg. No lo prometo que "si funciona no lo toques", pero quizá, quizá...

Decir que no me ha sido fácil. En el mundillo de los metadatos es complejo y mi ignorancia enorme. Hay varias versiones de los mismos que pueden convivir, y de hecho lo hacen, en un mismo fichero. Hice pruebas con la versión (id3v1, id3v1.1, id3v2, id3v2.2 , 3, 4 ...) Unos van en la cabecera del fichero, otros van al final del mismo, unos son más restringidos en cuanto tamaños y posibilidades, otros más amplios y complejos, etc. etc. Los probé todos, hasta donde pude con mi cerebro caducado, y al final he decidido... dejar que ffmpeg elija. Quiero decir que el etiquetado que yo necesito y que el 99% de mis archivos de sonido llevan, se puede ver y manipular sin ningún problema con los defaults de ffmpeg, por lo que eliminé (casi) todo el rollo de los tags del id3v2 y las manipulaciones que había incorporado al código (convertir los id3v1 a id3v2, eliminar los id3v1, traducir los tags de v1 a v2, etc. etc.) y dejar que lo haga él sin preguntar mucho (sospecho que usa los id3v1.1, pero no lo juro).

En fin, no os aburro más con mis penas. Aquí (y en la granja) tenéis el programa y si lo destripáis despiadadamente y me mandáis muchos feedbacks os estaré eternamente agradecido.

Saludos.


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - tincho - 01-01-2023

Antes de nada, Feliz año !!
Este año voy a intentar ordenar la música, como tantos otros años Big Grin así que instale el programa EasyTAG pero, par ami sorpresa no funciona con los archivos ogg vorbis cuando debería hacerlo, así que antes de inventar la rueda hice un intento con MetaEdit pero me tira un error en el módulo ShowTags()
Te paso algo de feedback por si te resulta útil.
Código:
Private Sub ShowTags()
  Dim n As Integer
  Dim aline As String[]
  Dim ar As String[]
  ar = $Track["Metadata"]
  For n = 0 To ar.max
    aline = Split(ar[n], ":")
    If aline[1] > "" Then
      showTag(aline)
    Endif
  Next
End

El problema se presenta cuando en el bucle se intenta separar con Split en el carácter ":" pero este no existe EL texto es el siguiente "[0m" y lo corregí así:
Código:
Private Sub ShowTags()
  Dim n As Integer
  Dim aline As String[]
  Dim ar As String[]
  ar = $Track["Metadata"]
  For n = 0 To ar.max
    If InStr(ar[n], ":") Then
      aline = Split(ar[n], ":")
      If aline[1] > "" Then
        showTag(aline)
      Endif
    Endif
  Next
End

El botón tbSavePicture intenta poner la imagen incrustada en un archivo que se llama como el archivo de música, cuando creo que lo que debe suceder es que sa algo como "cover.jpg"
Nuevamente gracias por compartir el programa.


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - Shordi - 03-01-2023

Gracias Tincho. Ese problema lo detecté en el gbAmp (MetaEdit es un extracto de gbAmp, como bien sabes) y no recuerdo cómo lo terminé corrigiendo, si he de ser sincero. En cuanto termine las dos cositas que estoy haciendo actualizaré ambas aplicaciones.

Nuevamente Gracias


Saludos


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - Shordi - 05-01-2023

Me he metido otra vez con el tema y creo que le voy a dar la vuelta al enfoque que he hecho hasta ahora. Me explico:
El tema de los metadatos, como ya he contado en alguna ocasión, es un carajal impresionante. Hasta ahora he intentado mostrar (y editar, claro) todo aquello que el archivo de sonido lleva adjunto como metadato... y me he encontrado con que es una guerra perdida porque desde los que no llevan ningun dato adjunto hasta los que llevan más datos de los que ocupa la pista de audio en sí mismo, hay de todo. Imposible estandarizar e imposible (al menos para mí) de prever toda la casuística posible.
Por tanto aunque he intentado en lo posible por caminos propios y no copiar la solución de audacious, creo que voy a optar por ella. Lo que ellos hacen es contemplar un set de metadatos fijos, e ignorar todo lo que no esté en él. Mucho más rígido, simple y claro que lo que yo he intentado.
Como ejemplo os pongo las pantallas de ambos programas ante un fichero que no tiene metadatos:
La de audacious:
[Imagen: xPbs1iN.png]

La de MetaEdit:
[Imagen: OwwKdVf.png]

y si bien al desplegar el combobox de Añadir Etiqueta nos aparecen un montón más que la docena que Audacious ofrece, no parece que yo ni ninguno de los usuarios del programa (o sea, yo mismo también) vayamos nunca a seleccionar ninguna de ellas. Por tanto, agacho las orejas, me rindo a la lógica de Audacious y haré lo mismo que ellos.

Saludos


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - tincho - 09-01-2023

(05-01-2023, 14:09)Shordi escribió: Por tanto ... voy a optar por ... un set de metadatos fijos, e ignorar todo lo que no esté en él.

Me parece una buena decisión.
Supongo que ya habrás leído esta documentación, o alguna equivalente:
https://en.wikipedia.org/wiki/ID3
En mi opinión, con los campos: Title, Track, Artist, Album, Year, Comment y Genre ya es suficiente para gestionar una colección.


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - Shordi - 21-01-2023

Acabo de subir al gitlab y a la granja de gambas la última versión. En ella simplifico el tema de la cantidad de datos a supervisar ignorando aquellos que pueda llevar el fichero de origen. Me ha dolido un poco hacerlo así porque se llega a perder información (algunos ficheros descargados de youtube llevan la biografía del cantante, la letra de la canción y no sé cuántas cosas más) pero es información que yo, personalmente no accedo nunca y cuyo control ha demostrado ser tan complejo para mí que lo he dado por imposible.

El aspecto actual es éste:
[Imagen: R5dIp17.png]

Este programa es un extracto de mi reproductor de sonido gbAmp, donde he añadido la posibilidad de cambiar el nombre del archivo (para numerar las pistas y cosas así si es que las descargas le asignan nombres extraños). En él el aspecto es este:

[Imagen: dL7X35M.png]

Saludos


RE: MetaEdit: Un editor de Metadatos de archivos de Sonido. - tincho - 21-01-2023

(21-01-2023, 12:34)Shordi escribió: Este programa es un extracto de mi reproductor de sonido gbAmp, donde he añadido la posibilidad de cambiar el nombre del archivo (para numerar las pistas y cosas así si es que las descargas le asignan nombres extraños). En él el aspecto es este:

ok, le echare un vistazo, gracias por compartir el programa.