Páginas (2): 1 2   
tincho   17-08-2021, 18:06
#1
Hola amigos.
Hace unos meses intente reflotar un programa para escuchar musica llamado Vinilo que hice hace bastante tiempo, pero no logre hacerlo.
Por un lado me costaba seguir mi propio código y por otro estaban una serie de cambios de gambas, las librerías y los recursos externos que usaba.
Así que aproveche para reescribirlo desde cero
Este es el aspecto actual
[Imagen: evOeeYu.png]
[Imagen: oVMEH04.png][Imagen: ZQtk2BD.png]
Bueno este el el repo
https://gitlab.com/belmotek/vinilo
Revisiones:
* v.0.0.5 - Cambios en la apariencia, paneles "Álbumes", "Configuración" y "Acerca de" añadidos. Búsqueda de álbumes por artista, añadido el botón de informe de errores por correo electrónico. Gestión de archivos sin meta-datos (feedback de Shordi).
* v.0.0.4 - Cambio de apariencia añadido traducciones para DE, FR, IT, PT
* v.0.0.3 - Añadida la ventana de minimización y la traducción ES.
* v.0.0.2 - Agregado el modo de dependencias para cuando se corre desde el IDE, corrección al seleccionar archivos y directorios, etc.
* v.0.0.1 - Primer envío

Saludos
Última modificación: 06-09-2021, 00:11 por tincho.

1 Saludo.
Shordi   17-08-2021, 18:18
#2
Ta chulo. Entre el Vinilo el MelodyBox y el gbAmp (y seguro que hay más por aquí), podemos poner una tienda de reproductores de música... Big Grin Big Grin Big Grin

No podemos regresar
tincho   17-08-2021, 20:06
#3
(17-08-2021, 18:18)Shordi escribió: Ta chulo. Entre el Vinilo el MelodyBox y el gbAmp (y seguro que hay más por aquí), podemos poner una tienda de reproductores de música... Big Grin Big Grin Big Grin

Si, pero lo mas interesante de estos programas no es escuchar musica sino todo lo que esta detrás, como el código en si o la idea subyacente o los conceptos como usar el tryicon, escanear los metadatos, manejar la configuración y, por supuesto, la diversión.

Saludos.

1 Saludo.
Shordi   17-08-2021, 20:44
#4
Ahí le has dado. Oír música, ya oía.  Con mi app y habiendo disfrutado y aprendido como estoy disfrutando y aprendiendo primero, no.
Última modificación: 17-08-2021, 20:44 por Shordi.

No podemos regresar
tincho   20-08-2021, 03:23
#5
Bueno sigo con los experimentos Smile miren como queda esto.
[Imagen: Mao8wd4.png]
Mañana si todo va bien subo un video explicativo y el código
Saludos.

Por cierto logre hacer funcionar la función que usa el código de Vuott, el problema radicaba en que no instale la librería adecuada, libtag_c que en mi sistema se llama libtagc0, un error mio Angry así que ahora funciona a la perfección Big Grin
Les dejo el código, que es muy util para leer las bibliotecas enteras de archivos ya que es súper rápido, sorprendentemente rápido.
Por las pruebas que hice extrae bien los datos de largo den segundos de las canciones. Si alguno lo prueba por favor comente si todo va correcto.
Código:
Export
Library "libtag_c:0.0.0"

Public Struct TagLib_File
  dummy As Integer
End Struct

Public Struct TagLib_Tag
  dummy As Integer
End Struct

Public Struct TagLib_AudioProperties
  dummy As Integer
End Struct

' void taglib_set_strings_unicode(BOOL unicode)
' By default all strings coming into or out of TagLib's C API are in UTF8.
' However, it may be desirable For TagLib To operate On Latin1(ISO - 8859 - 1) strings In which Case this should be set To FALSE.
Private Extern taglib_set_strings_unicode(unicode As Boolean)

' TagLib_File *taglib_file_new_type(const char *filename)
' Creates a TagLib file based on \a filename.
Private Extern taglib_file_new(filename As String) As TagLib_File

' TagLib_Tag *taglib_file_tag(const TagLib_File *file)
' Returns a pointer to the tag associated with this file.
Private Extern taglib_file_tag(_file As TagLib_File) As TagLib_Tag

' char *taglib_tag_title(const TagLib_Tag *tag)
' Returns a string with this tag's title.
Private Extern taglib_tag_title(tag As TagLib_Tag) As String

' char *taglib_tag_artist(const TagLib_Tag *tag)
' Returns a string with this tag's artist.
Private Extern taglib_tag_artist(tag As TagLib_Tag) As String

' char *taglib_tag_album(const TagLib_Tag *tag)
' Returns a string with this tag's album name.
Private Extern taglib_tag_album(tag As TagLib_Tag) As String

' unsigned int taglib_tag_year(const TagLib_Tag *tag)
' Returns the tag's year or 0 if year is not set.
Private Extern taglib_tag_year(tag As TagLib_Tag) As Integer

' char *taglib_tag_comment(const TagLib_Tag *tag)
' Returns a string with this tag's comment.
Private Extern taglib_tag_comment(tag As TagLib_Tag) As String

' unsigned int taglib_tag_track(const TagLib_Tag *tag)
' Returns the tag's track number or 0 if track number is not set.
Private Extern taglib_tag_track(tag As TagLib_Tag) As Integer

'Private Extern taglib_tag_encoder(tag As TagLib_Tag) As String
'Private Extern taglib_tag_volume_number(tag As TagLib_Tag) As Integer

' char *taglib_tag_genre(const TagLib_Tag *tag)
' Returns a string with this tag's genre.
Private Extern taglib_tag_genre(tag As TagLib_Tag) As String

' const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file)
' Returns a pointer to the the audio properties associated with this file.
Private Extern taglib_file_audioproperties(_file As TagLib_File) As TagLib_AudioProperties

' int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties)
' Returns the length of the file in seconds.
Private Extern taglib_audioproperties_length(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties)
' Returns the bitrate of the file in kb/s.
Private Extern taglib_audioproperties_bitrate(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties)
' Returns the sample rate of the file in Hz.
Private Extern taglib_audioproperties_samplerate(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties)
' Returns the number of channels in the audio stream.
Private Extern taglib_audioproperties_channels(audioProperties As TagLib_AudioProperties) As Integer

' void taglib_tag_free_strings(void)
' Frees all of the strings that have been created by the tag.
Private Extern taglib_tag_free_strings()

' void taglib_file_free(TagLib_File *file)
' Frees and closes the file.
Private Extern taglib_file_free(_file As TagLib_File)

Public Function Info(fileaudio As String) As Collection
 
  Dim fl As TagLib_File
  Dim autag As TagLib_Tag
  Dim auprop As TagLib_AudioProperties
  '  Dim secondi, minuti As Integer
  '
  Dim inf As New Collection
 
  taglib_set_strings_unicode(False)
  taglib_set_strings_unicode(True)
 
  fl = taglib_file_new(fileaudio)
  If IsNull(fl) Then Error.Raise("Impossibile caricare il file audio: " & fileaudio)
 
  autag = taglib_file_tag(fl)
  If IsNull(autag) Then Error.Raise("Impossibile ottenere i tag dal file audio: " & fileaudio)
 
  inf.Add(taglib_tag_album(autag), "Album")
  inf.Add(taglib_tag_artist(autag), "Artist")
  inf.Add(taglib_tag_track(autag), "Track")
  inf.Add(taglib_tag_title(autag), "Title")
  inf.Add(taglib_tag_year(autag), "Year")
  inf.Add(taglib_tag_genre(autag), "Genre")
  inf.Add(taglib_tag_comment(autag), "Comment")
 
  ' Mostra le proprietà del file audio:
  auprop = taglib_file_audioproperties(fl)
 
  If IsNull(auprop) Then
    inf.Add(True, "AudioError")
  Else
    inf.Add(taglib_audioproperties_length(auprop), "Length")
    inf.Add(taglib_audioproperties_bitrate(auprop), "Bitrate")
    inf.Add(taglib_audioproperties_samplerate(auprop), "Frequency")
    inf.Add(taglib_audioproperties_channels(auprop), "Channels")
  Endif
 
  ' Va in chiusura:
  taglib_tag_free_strings()
  taglib_file_free(fl)
 
  Return inf
End
No recuerdo si funcionaba para ogg y flac pero para mp3 si.
Saludos.
Última modificación: 20-08-2021, 03:33 por tincho.

1 Saludo.
Shordi   20-08-2021, 08:13
#6
Chulo, chulo. Mola esa estética. Yo tengo un gusto execrable para la estética y sé lo que digo... Big Grin Big Grin Big Grin

Saludos

No podemos regresar
tincho   20-08-2021, 13:35
#7
(20-08-2021, 08:13)Shordi escribió: Chulo, chulo. Mola esa estética. Yo tengo un gusto execrable para la estética y sé lo que digo... Big Grin Big Grin Big Grin

No lo dirás por el fondo amarillo no? Big Grin porque es curradamente antiestético.

Saludos.

1 Saludo.
tincho   20-08-2021, 15:02
#8
Bien, tengo todo preparado para los "beta testers"
Ya me dicen algo.
https://gitlab.com/belmotek/vinilo
Saludos.

1 Saludo.
tercoide   20-08-2021, 15:34
#9
Voy con la primera review:
-luego de clonar hay que bajarse la libreria
   sudo apt install libtagc0

-en la consola corren numeros del 1 al 60 que no se que son pero te van a llenar algun stack en algun momento, mejor sacarlos
-no se ve bien en modo no dark, los controles estan muy oscuros
[Imagen: lPobf5O.png]

Edito para un feature request obligado: muy lindo el disco dando vueltas, pero un reproductor si o si debe poder minimizarse y mostrarse como controles solamente
Última modificación: 20-08-2021, 15:37 por tercoide.

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
Shordi   20-08-2021, 21:22
#10
Lo he bajado y probado y me ha hecho cosas raras. Primero en consola tiene un print incómodo en la línea 409 (creo recordar) de la función BackLP
Pero lo peor es a la hora de añadir canciones a la lista, si seleccionas varias y entre ellas hay una carpeta, entra en algún tipo de bucle de duración indeterminada, porque al cabo del rato (me fuí con una urgencia cangurera) cuando volví el Cinnamon había petado y se estaba ejecutando en modo a prueba de fallos (cosa curiosa porque ese modo parece un montón a Mate o a xface...) y gambas también había petado.

He vuelto a probar y al entrar otra vez en ese bucle he abortado.

Saludos.

No podemos regresar
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 6 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.