GSoC

¿Qué es el Google Summer of Code (Verano del Código de Google)?

Citando la página web del GSoC, “El Verano del Código de Google es un programa global que ofrece a estudiantes una ayuda para que escriban código con destino a proyectos de fuentes abiertas. Google ha trabajado con la comunidad de Fuentes Abiertas para identificar proyectos interesantes y financiarlos para el verano próximo.”

El equipo de LilyPond decidión que ésta era una excelente oportunidad para encontrar colaboradores nuevos, animar a los estudiantes que ya participan en el desarrollo de LilyPond a que se impliquen aún más, y por último (pero no por ello menos importante): ¡escribir buen código para beneficio de todos!

Participamos en el GSoC como parte del proyecto GNU. Consulte GNU GSoC webpage para ver más información acerca de la amnera de participar.

Nuestra lista de ideas

Más abajo aparece una lista de lo proyectos que se han sugerido para los estudiantes del GSoC. Si no encuentra un proyecto que le venga bien, ¡con toda libertad sugiera el suyo! También es posible reducir el tamaño de un proyecto que le parezca demasiado grande.

Requerimos que todos los estudiantes tengan un conocimiento básico de git, y recomendamos que todos los que soliciten participar en algún proyecto, excepto el último de la lista, tengan conocimientos básicos de notación musical.

Notas de adorno

Arreglar problemas con la sincronización de las notas de adorno, junto a toda la arquitectura subyacente (véase el problema número 34 de nuestro sistema de seguimiento). Las notas de adorno confunden al sistema de cuenta de tiempo de LilyPond porque son como ir hacia atrás en el tiempo. Esto causa efectos extraños, en especial cuando un pentagrama tiene una nota de adorno que otro no tiene.

Dificultad: media

Requisitos: C++, MIDI

Recomendado: familiaridad con el funcionamiento interno de LilyPond

Mentor(es): Mike Solomon, Carl Sorensen

MusicXML

Añadir exportación completa de MusicXML y mejora de la importación, junto a las pruebas de comprobación de que funciona. Dependiendo del tiempo disponible, implementar algunos o todos los siguientes:

  • Manejo de la exportación del contenido musical básico como la exportación MIDI (es decir, uso de clases exportadoras dedicadas, derivadas de la clase translator)
  • Construir el árbol XML del contenido musical básico, y una conexión desde el evento musical a la etiqueta XML
  • Hacer que todos los grabadores de LilyPond hagan su trabajo
  • Añadir la posibilidad de enlazar cada objeto de presentación (básicamente cada sello o grupo de sellos) a la causa musical (así como a la etiqueta XML dentro del árbol XML)
  • Añadir un ‘back-end’ de salida XML, que puede después añadir la información de disposición para cada uno de los objetos de salida a las etiquetas del XML

El objetivo se considerará conseguido cuando una partitura (previamente seleccionada) pueda importarse desde el MusicXML y exportada de nuevo sin ninguna pérdida de datos no intencionada.

Dificultad: media

Requisitos: MusicXML, Python, conocimiento básico de LilyPond

Mentor(es): Reinhold Kainhofer, Mike Solomon

Sería un buen tanto a su favor la familiaridad con otros editores de partituras para poder hacer pruebas cruzadas.

Mejora de las ligaduras de unión y de expresión

A menudo la forma predeterminada de las curvas de ligadura no es satisfactoria. No están contempladas las ligaduras de unión entre notas enarmónicas { dos'~ reb' }, las ligaduras "rotas" por una clave o un cambio de pauta no están bien contempladas. El proyecto incluye la recolección y ordenación de ejemmplos de salida defectuosa, decidir sobre la salida que se desea tener y escribir el código correspondiente.

Dificultad: alta

Requisitos: C++, experiencia con heurística de la escritura

Conocimientos recomendados: LilyPond, sentido estético

Mentor(es): Mike Solomon

Añadir una variante especial de los glifos de fuente tipográfica

Añadir variantes para algunos glifos, como los signos de alteración, para líneas sobre la pauta, entre pautas, acortadas y estrechadas, así como una infraestructura genérica para incorporarlos. Un ejemplo es la cabeza de la breve de na notación antigua, que viene en dos variantes, con el orificio pequeño y grande.

Dificultad: fácil

Requisitos: MetaFont, C++, buen ojo para los detalles

Conocimientos recomendados: conocimientos básicos de LilyPond

Mentor(es): Werner Lemberg

Mejora del barrado

Debería mejorarse el posicionamiento predeterminado de las barras de corchea (y figuras menores) normales, de pentagrama cruzado, interrumpidas y en ángulo. El barrado debería depender del contexto y de las notas vecinas (véase la sección 2.2). Si es posible, reducir el tiempo de cálculo del barrado.

Dificultad: media

Requisitos: C++, experiencia con heurística de la escritura

Conocimientos recomendados: sentido estético

Mentor(es): Mike Solomon, Carl Sorensen

Mejor soporte para la tablatura

  • Afinación no monótona de las cuerdas, como en el ukelele
  • Crear un modo de entrada de tablatura (actualmente la información musical se introduce en términos de notación occidental convencional, es decir “un Fa sostenido negra” y después se convierte a tablatura) para la transcripción de tablatura medieval para laúd
  • Implementación de funcionalidades de la tablatura moderna, como curvaturas de tono, pull-offs y hammer-on
  • Si está definida la forma de un diagrama de posición para un acorde dado, usar esta información cuando se imprime el acorde sobre la pauta (y no sólo imprimir la forma predeterminada del acorde)

Dificultad: fácil

Requisitos: C++

Conocimientos recomendados: familiaridad con la notación de tablatura

Mentor(es): Carl Sorensen

Limpieza de diversas advertencias de compliación

Limpieza de las advertencias de compilación, análisis estático del código, y advertencias de valgrind. Las herramientoas de análisis automático del código (advertencias de g++ y clang) y herramientas de análisis como la detección de filtraciones de memoria de los perfiladores de código valgrind y callgrind aportan valiosa información sobre posibles problemas en el código de C++. La limpieza de estas advertencias nos permitiría rechazar automáticamente cualquier parche que introdujese más advertencias de las que hay actualmente.

Dificultad: media

Requisitos: C++

Mentor(es): Joe Neeman, Reinhold Kainhofer