Compilar alfa desde fuente y propuesta de característica

Problemas y dudas sobre el mejor programa para cantar y en general sobre cualquier programa relacionado con el mismo
Reglas del Foro
Prohibido pedir canciones en el foro. Si quieres hacerlo que sea aquí
Dragón Groar
Desafinado
Mensajes: 3
Registrado: Domingo 4 de Julio de 2021 a las 20:47
2

Compilar alfa desde fuente y propuesta de característica

Mensaje por Dragón Groar »

Buenas.
En las últimas semanas he estado experimentando con el código fuente de UltraStar WorldParty, y hasta me he animado a intentar añadir (con más éxito del que me esperaba) una función que echaba en falta desde hacía mucho, pero he tenido un pequeño problema por el camino:

(Parte de compilar alfa desde fuente)
Al intentar compilar el código fuente de la versión alfa del juego tal y como está en el repositorio de GitHub, recibo una excepción en la línea 101 de "src\base\UAvatars.pas":

Código: Seleccionar todo

UAvatars.pas(101,28) Error: Ordinal expression expected
Parece que a mi ordenador no le gusta el bucle "for" que hay en esa línea...

Código: Seleccionar todo

for Extension in ['jpg', 'png'] do    // esta línea da el error
  begin
    Iterator := UFilesystem.FileSystem.FileFind(UPathUtils.AvatarsPath.Append('*.' + Extension), 0);
    while Iterator.HasNext() do
    begin
      FileInfo := Iterator.Next();
      Avatar := TAvatar.Create();
      Avatar.Id := I;
      Path := UPathUtils.AvatarsPath.Append(FileInfo.Name);
      Avatar.MD5 := MD5Print(MD5File(Path.ToNative()));
      Avatar.Texture := UTexture.Texture.LoadTexture(Path);
      Self.Avatars.Add(Avatar);
      Inc(I);
    end;
  end;
La compilación la estoy haciendo en una máquina windows con FreePascal, ejecutando primero el script "rccompile-fpc.bat" de la carpeta "res" y luego ejecutando "dists\atom\windows\compile.bat . compile[-debug]".
Yo lo he solucionado por mi cuenta en mi copia local deshaciendo el bucle así:

Código: Seleccionar todo

Extension := 'jpg';
{el código interior del bucle}
Extension := 'png';
{el código interior del bucle de nuevo}
para poder compilarlo y probar la alfa, pero está claro que eso así no está bien, así que no sé si vosotros tenéis alguna idea de por qué a mi ordenador no le hace gracia ese bucle, si hay alguna configuración de FreePascal que tenga que cambiar o algo, o si es que funciona bien en algunas versiones de FreePascal y en otras no, porque doy por bueno que a vosotros os compila bien...

(Parte de propuesta de característica)
Dicho esto, una vez "trucado" ese bucle para que me compilase, me he animado a añadir una función, porque siempre me ha fastidiado que podemos pulsar F7 para activar el filtro que intenta quitar la voz de la canción, pero con algunas canciones no lo consigue y con otras silencia la canción entera en lugar de sólo la voz (aunque, todo sea dicho, con algunas el resultado es sorprendentemente bueno).
Por eso, pensé que por qué no permitir poner con la canción un segundo archivo de audio que fuera el instrumental, y he conseguido añadir un nuevo parámetro a los txt de las canciones (lo he llamado "#INSTRUM") al que le puedes poner ese archivo de audio, y si este parámetro existe y se encuentra el archivo al que señala, al pulsar F7 en lugar de aplicar el filtro sobre el audio principal, se reproduce el instrumental sin filtro.
Lo he encontrado bastante útil para las canciones de las que sí existe un instrumental oficial, como muchas de las que vienen de películas, por ejemplo, y que, con asegurarse de que el instrumental empieza a la vez que el mp3 principal, se gana bastante calidad respecto al filtro.
Lo he probado bastante, y si una canción con este parámetro se mete en una versión que no lo entienda (como la 21.02), simplemente se ignora el parámetro (la canción funciona), y si una canción no lo tiene en una versión nueva no cambia nada respecto a cómo funcionaba el juego antes (F7 activa el filtro y como si este parámetro no existiese en el juego).

Como digo, lo tengo programado, probado y funcionando sin problemas sobre la última commit que hay en la alfa de GitHub ahora mismo, así que me encantaría compartíroslo para que pudieseis incorporarlo al juego, porque creo que es una función muy útil para los que nos gusta el reto de cantar sin la letra de fondo, y para quien no la vaya a usar, no le rompe nada ni le molesta en absoluto. Sólo es un pequeño plus para quien la quiera usar.
¿Cómo lo hacéis cuando alguien quiere contribuir con una característica? ¿Mediante una Pull Request de GitHub directamente?

Muchas gracias por todo, y un saludo.
Dragón Groar
Avatar de Usuario
daniel20
Colaborador
Colaborador
Mensajes: 7361
Registrado: Viernes 27 de Febrero de 2009 a las 20:50
15

Mensaje por daniel20 »

si te animas a cambiar el código, sí a traves de un pull request en github, pero, lo que comentas del instrumental, lo hemos hablado varias veces, y lo tenemos totalmente descartado, no va a haber pistas instrumentales con las canciones, ni tampoco se va a añadir parámetros nuevos al txt respecto a este tema. Básicamente por complejidad en no poder homogeneizar en todas las canciones actuales y antiguas, aplicar código en la web, en el juego, en las canciones, y obligar a los creadores a subir un nuevo fichero, que puede llegar a ser complicado de generar o encontrar, es por ello que quien quiera instrumental que se busque él mismo la pista y lo cambie en su equipo.

Respecto al código, nosotros no tenemos problemas, no utilizamos el free pascal a pelo para compilar, usamos atom (no sé si estarán las librerias para pascal operativas) o vsc
¿no sabes cómo configurar tus micros? ¿no sabes descargar? ¿problemas? Quizás tu duda ya ha sido resuelta en la sección de Ayuda (arriba en la web)