GSoC (Google Summer of Code) 2012
Was ist Google Summer of Code?
Google Summer of Code ist ein globales Programm, das Studenten Stipendien offeriert, um an Open-Source-Projekten während der Sommerferien zu arbeiten.
Das LilyPond-Team hat beschlossen, dass sich hier eine ausgezeichnete Möglichkeit bietet neue Mitarbeiter zu finden und Studenten, die sich schon an LilyPond beteiligen, weiter einzubinden. Einer unserer Mitarbeiter wurde für den Sommer 2012 als Teil des GNU-Projekts angenommen; wir hoffen, dass wir auch in kommenden Jahren an dem Programm teilnehmen können.
Unsere Ideenliste 2012
Unten befindet sich eine Liste mit empfohlenen Projekten für GSoC-Stundenten für den Sommer 2012. Wenn auch die Anmeldefrist vorbei ist, lassen wir die Informationen trotzdem online, weil sie als Anregung für alle LilyPond-Entwickler dienen können. Einige Mitglieder des Entwicklungsteams helfen gerne Freiwilligen, die sich an diese Projekte wagen wollen.
Es gibt natürlich viel mehr, was an LilyPond verbessert werden kann, darunter auch sehr kleine Projekte. Eine vollständige Liste aller bekannten Probleme findet sich hier.
Stichnoten
Lösen Sie Probleme mit der Synchronisation von Verzierungen (Vorschläge usw.), zusammen mit der darunter liegenden Architektur (siehe Nummer 34 in unserem Tracker). Verzierungen bringen das Zeitmaß von LilyPond durcheinander, weil sie sozusagen in der Zeit rückwärts gehen. Dadurch entstehen seltsame Effekte, besonders wenn in einem Notensystem eine Verzierung auftritt und im zweiten nicht.
Schwierigkeit: mittel
Erfordernisse: C++, MIDI
Empfohlen: Bekannt mit den Interna von LilyPond
Mentoren: Mike Solomon, Carl Sorensen
MusicXML
Hinzufügen von erweiterter Unterstützung für den Export von MusicXML und Verbesserung des Imports, zusätzlich Tests, die die Funktionen überprüfen. Abhängig von der zur Verfügung stehenden Zeit kann etwas oder alles der folgenden Punkte implementiert werden:
- Der Export soll grundlegende Funktionen wie den MIDI-Export können (d. h. die Benutzung von eigenen Exportklassen, abgeleitet von der Übersetzerklasse.)
- Der XML-Baum soll aus dem grundlegenden musikalischen Inhalt erstellt werden, hinzu kommt eine Verbindung von musikalischem Ereignis zu XML-Tag.
- Alle LilyPond-Engraver sollen ihre Arbeit verrichten.
- Alle Ausgabe-Objekte (also alle Stencils/Gruppen von Stencils) sollen der Musik zugeordnet werden (und damit auch dem XML-Tag im XML-Baum).
- Ein XML-Ausgabebackend soll hinzugefügt werden, welches die Layoutinformationen für jedes Ausgabe-Objekt den XML-Tags hinzufügen kann.
Das Ziel wird als erreicht angesehen, wenn eine (vorher festgelegte) Partitur von MusicXML importiert und dann wieder exportiert werden kann, ohne dass ungewollter Datenverlust eintritt.
Schwierigkeit: mittel
Erfordernisse: MusicXML, Python, grundlegene Kenntnis von LilyPond
Mentoren: Reinhold Kainhofer, Mike Solomon
Kenntnis anderer Notensatzprogramme (zum Testen) wäre ein netter Bonus.
Binde- und Legatobögen verbessern
Die Standardform von Binde- und Legatobögen ist oft nicht zufriedenstellend.
Überbindungen von enharmonischen Tönen (etwa { cis'~ des' }
) werden
nicht unterstützt, auch Überbindungen, die von Schlüssel- oder Systemwechsel
unterprochen werden, sind schlecht unterstützt. Das Projekt beinhaltet das
Sammeln und Sortieren von Beispielen schlechter Ausgabe, das feststellen der
richtigen Formatierung und das Schreiben das dazu notwendigen Codes.
Schwierigkeit: schwer
Erfordernisse: C++, Erfahrung mit Heuristiken
Empfohlene Kenntnisse: LilyPond-Kenntniss, Sinn für Ästhetik
Mentor: Mike Solomon
Eine besondere Variante bestimmter Glyphen hinzufügen
Zusätzliche Varianten von Glyphen schaffen für Situationen wie auf der Linie, zwischen den Linien, kürzere und schmalere Varianten für z. B. Versetzungszeichen, zusammen mit einer Infrastruktur, die das unterstützt. Ein Beispiel ist die Breve der Alten Notation, deren Notenkopf in zwei Varianten vorkommt, mit kleinerem und größerem Loch.
Schwierigkeit: leicht
Erfordernisse: MetaFont, C++, gutes Auge für Details
Empfohlene Kenntnisse: grundlegene LilyPond-Kenntnis
Mentor: Werner Lemberg
Bebalkung verbessern
Die Standardpositionen von normaler Bebalkung, Bebalkung über Systeme hinweg, unterbrochene und Knie-Bebaklung sollte verbessert werden. Balken sollten sich am Kontext und benachbarten Noten orientieren (siehe Abschnitt 2.2). Wenn möglich, sollte die Rechenzeit für die Bebalkung verkürzt werden.
Schwierigkeit: mittel
Erfordernisse: C++, Erfahrung mit Heuristiken
Empfohlene Kenntnisse: Sinn für Ästhetik
Mentoren: Mike Solomon, Carl Sorensen
Kompilationswarnungen aufräumen
Aufräumen von Kompilationswarnungen, statischer Codeanalyse und Valgrind-Warnungen.
Werkzeuge zur automatischen Analyse von Code (Warnungen in g++
und
clang
) und Analysewerkzeuge wie die Valgrind-memory-leak-detection und
callgrind code profiler stellen wertvolle Informationen über mögliche Probleme
im C++-Code zu Verfügung. Wenn man diese Warnungen aufräumt, könnte man auch
automatisch alle Patche zurückweisen, die neue Warnungen mit sich bringen würden.
Schwierigkeit: mittel
Erfordernisse: C++
Mentoren: Joe Neeman, Reinhold Kainhofer
Andere Sprachen: English, español, français, italiano, 日本語, nederlands, 中文.
About automatic language selection.