GSoC 2012
Che cos’è il Google Summer of Code?
È un programma internazionale organizzato da Google che offre agli studenti degli stipendi per lavorare a progetti di software libero durante le vacanze estive.
Il team di LilyPond ha deciso che si tratta di un’ottima opportunità per trovare nuovi collaboratori e stimolare gli studenti che già partecipano allo sviluppo di LilyPond ad essere più coinvolti. Uno dei nostri sviluppatori è stato accettato per l’edizione 2012 sotto l’egida del progetto GNU; speriamo di partecipare anche a future edizioni.
La nostra lista delle idee per il 2012
Ecco una lista di progetti che suggeriamo per gli studenti del GSoC 2012. Sebbene il periodo delle domande sia finito, abbiamo deciso di tenere questa pagina online come fonte di ispirazione per chiunque sia interessato a contribuire allo sviluppo di LilyPond. Alcuni membri del team di sviluppo sono disponibili a aiutare chi volesse affrontare questi progetti.
Ci sono certamente molte altre cose da migliorare in LilyPond, inclusi progetti molto piccoli. Una lista completa di tutti i problemi si trova qui.
Abbellimenti
Correggere i problemi di sincronizzazione degli abbellimenti, insieme a tutta l’architettura sottostante (si veda il numero 34 del nostro tracker). Gli abbellimenti confondono il tempo di LilyPond perché è come se portassero indietro il tempo. Questo causa strani effetti, specialmente quando un rigo ha un abbellimento e l’altro non ce l’ha.
Difficoltà: media
Requisiti: C++, MIDI
Consigliato: familiarità col funzionamento interno di LilyPond
Mentore/i: Mike Solomon, Carl Sorensen
MusicXML
Aggiungere un’esportazione a MusicXML completa e migliorare l’importazione, insieme a dei test che verifichino il funzionamento. A seconda del tempo a disposizione, implementare alcune o tutte le seguenti funzionalità:
- Gestire l’esportazione del contenuto musicale principale come l’esportazione MIDI (ovvero usando classi dedicate dell’esportatore, derivate dalla classe del traduttore)
- Costruire l’albero XML del contenuto musicale di base, aggiungere un collegamento dall’evento musicale al tag XML
- Far sì che tutti gli incisori di LilyPond facciano il loro lavoro
- Aggiungere la capacità di collegare ogni oggetto dell’output (in pratica ogni stampo (stencil) / gruppo di stampi) alla sua causa musicale (e quindi al tag XML nell’albero XML)
- Aggiungere un backend di outoput XML, che possa aggiungere le informazioni di formattazione per ogni oggetto di output ai tag XML
L’obiettivo sarà considerato raggiunto quando una partitura (scelta precedentemente) può essere importata da MusicXML e riesportata senza una perdita di dati indesiderata.
Difficoltà: media
Requisiti: MusicXML, Python, conoscenza di base di LilyPond
Mentore/i: Reinhold Kainhofer, Mike Solomon
è auspicabile una certa familiarità con altri software di notazione musicale (a fine comparativo).
Migliorare le legature di portamento e di valore
La forma predefinita delle curve delle legature di portamento e di valore è spesso
non soddisfacente. Non sono supportate né le legature di valore su note
enarmoniche { cis'~ des' }
né le legature di valore "spezzate" da
una chiave o da un cambio di rigo. Il progetto include la raccolta e la classificazione
di esempi di output scadente, la decisione sull’output desiderato e la scrittura
del codice vero e proprio.
Difficoltà: difficile
Requisiti: C++, esperienza con la scrittura di euristica
Conoscenze consigliate: conoscenza di LilyPond, senso estetico
Mentore/i: Mike Solomon
Aggiungere una variante speciale dei glifi dei tipi di carattere
Aggiungere varianti sulla linea del rigo, tra le linee dei righi, più corte e più strette di alcuni glifi, come ad esempio le alterazioni, insieme a un’infrastruttura generica per supportarle. Un esempio è la testa della nota breve nella notazione antica che ha due varianti, con un buco più piccolo e più grande.
Difficoltà: facile
Requisiti: MetaFont, C++, buon occhio per il dettaglio
Conoscenze consigliate: conoscenza di base di LilyPond
Mentore/i: Werner Lemberg
Migliorare la disposizione delle travature
Il posizionamento predefinito delle travature normali, tra i righi, spezzate e angolari deve essere migliorato. La disposizione delle travature deve dipendere dal contesto e dalle note vicine (si veda la sezione 2.2 qui). Se possibile, ridurre il tempo di elaborazione della disposizione delle travature.
Difficoltà: media
Requisiti: C++, esperienza con la scrittura di euristiche
Conoscenze consigliate: senso estetico
Mentore/i: Mike Solomon, Carl Sorensen
Semplificare vari avvisi durante la compilazione
Semplificare gli avvisi del compilatore e di valgrind e l’analisi del codice statico.
Strumenti di analisi automatica del codice (avvisi in g++
e clang
)
e strumenti di analisi come il rilevamento di perdite di memoria di valgrind e
i profilatori di codice di callgrind forniscono informazioni utili per individuare
possibili errori nel codice C++.
Pulire questi avvisi ci permetterebbe di rifiutare automaticamente qualsiasi
patch che introduca avvisi ulteriori.
Difficoltà: media
Requisiti: C++
Mentore/i: Joe Neeman, Reinhold Kainhofer
Other languages: English, deutsch, español, français, 日本語, nederlands, 中文.
About automatic language selection.