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


Altre lingue: English, deutsch, español, français, 日本語, nederlands, 中文.
About automatic language selection.

Validation

Thanks to webdev.nl for hosting lilypond.org. Valid HTML 4.01 Transitional