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
Otros idiomas: English, français, italiano, 日本語, nederlands.
Acerca de la selección automática del idioma.