Comunidad Gambas-es

Versión completa: Un nuevo control spPlayer: Reproductor de música con Espectrómetro incorporado
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Aquí os dejo un nuevo control que he desarrollado. Es un reproductor de mp3, wav y ogg con un espectrómetro incorporado, al estilo de Audacious. El control se basa en la clase SpectrumPlayer del proyecto AudioSpectrum que podéis encontrar aquí: https://github.com/prokopyl/AudioSpectrum Lo que yo he aportado a ésto ha sido la conversión de las clases estáticas y módulos de AudioSpectrum en un control de gambas.
No podía utilizar el mismo nombre y lo he abreviado a SpPlayer.

Como propiedades expuestas al IDE tenéis el FileName, el color de Fondo, el número de barras y el fondo animado (el fondo cambia de color según la intensidad de la música)

En el proyecto gbAmp, que tenéis aquí: https://gitlab.com/shordi/gbamp tenéis un ejemplo completo de uso del control.

[Imagen: V3HRLit.png]

Os dejo aquí el fuente de un pequeño proyecto en forma de componente que lo incluye y del que podéis crear el paquete de instalación e instalarlo en vuestras máquinas. A partir de entonces dispondrés del control como un componente más de Gambas.

Espero que os sea útil.

Saludos.
Shordi, me sabrás perdonar, pero como porsaquero oficial de Gambas3 —POG en adelante—  Cool  debo preguntarte:
¿Se pueden seleccionar las frecuencias específicas de las barras y la leyenda de éstas?
Sí se puede, claro, pero si no me dices el objetivo... pues no sé exactamente de qué hablas.

Saludos
Pues que me gustaría que las barras tuviesen las frecuencias de las teclas del piano. Es algo que hice hace miles de años en MATLAB con fft2, pero lo perdí y me hace ilusión ahora que he visto esto.
«Ná», una chorrada de las mías.
He afinado un poco más el control, actualizado el archivo adjunto y subido el control a la granja, por si le interesa a alguien.


Saludos
Vale, Shordi, encontré el cómo a lo de las frecuencias:

GAMBAS
  1. Private Sub GenerateBandList()
  2.   
  3.   Dim i, x As Float
  4.   Dim band As Float
  5.   
  6.   For i = 0 To $aBandList.Max
  7.     x = i / $aBandList.Max
  8.     'band = Exp((Log(TOP_FREQUENCY) - Log(BOTTOM_FREQUENCY)) * x + Log(BOTTOM_FREQUENCY))
  9.     band = 10 ^ ((Log10(TOP_FREQUENCY) - Log10(BOTTOM_FREQUENCY)) * x + Log10(BOTTOM_FREQUENCY))
  10.     $aBandList[i] = band
  11.   Next
  12.   


Sólo tengo que modificar la matriz $aBandList.