Het oplossen van problemen
Een van de belangrijkste zaken die je je moet realiseren bij het oplossen van problemen met Lilypond is dat de kans dat de oorzaak in je code zit zeer groot is. Zoek dus eerst de fout in je eigen code, bijvoorbeeld met behulp van de onderstaande aandachtsgebieden, stuur vervolgens mij een mail met je vraag. Mocht ik er niet uitkomen, is er altijd nog de Lilypond-mailinglijst http://lists.gnu.org/archive/html/lilypond-user/.
Hoofdoorzaak 1: Structuur
De meestvoorkomende problemen ontstaan door het niet correct toepassen van de structuur van de code en de elementen binnen die code. Zorg er dus voor dat als je een probleem tegenkomt, je de structuur zeer goed doorzocht hebt en op consistentie gecontroleerd. Een van de hoofdregels die je bij het doorzoeken van je code aan kunt houden is dat de manier van opbouw van onderdelen goed moet zijn. Dit wil zeggen dat je alleen elementen gebruikt binnen de context waar ze in thuis horen. Zo is het onverstandig om een \new Voice buiten of zonder een \new Staff te gebruiken. Een Voice heeft pas zin binnen een balk, en niet daarbuiten. Dit geldt ook voor \relative. \relative slaat op noten, dus \relative gebruiken buiten een Voice is niet handig.
Dit wil niet zeggen dat deze zaken niet niet kunnen. Bedenk daarbij ten alle tijden wel dat als je het niet zelf definieert, je dan Lilypond met het probleem opzadelt. Nu kan Lilypond dit voor kleine voorbeelden prima, maar zodra het wat ingewikkelder is, is een correcte oplossing niet gemakkelijk te vinden en levert dit dus problemen op.
Strategie: Doorloop elk onderdeel van je code, bedenk wat je met dit onderdeel wil bereiken en bedenk of dit op de goede plaats en in de goede omgeving staat. Hou strak de correcte hierarchie van de muziek aan: een score is het geheel van genoteerde muziek, daarbinnen kan een staff zitten, of een staffgroup van enigerlei slag met daarin staves en eventuele extra “balken” zoals akkoordenschema's, fretsymbolen en lyrics. In een staff zitten de voices met inhoud, bijvoorbeeld in een relative omvatting om de invoer gemakkelijker te maken.
Hieronder een voorbeeld uit de praktijk:
Hoofdoorzaak 2: Vergeten sluithaken
Het gebeurt ook regelmatig dat sluithaakjes of niet op de goede plaats staan, of volledig ontbreken. Het is daarom erg belangrijk je code in te laten springen met elk niveau, en de sluithaak op dat inspringniveau te zetten. Je kunt dan meteen zien waar blokken niet zijn afgesloten.