Link

Getting Started with solmisasi-lily

Before we start this section, please keep in mind that solmisasi-lily is just an ‘extension’ or library to Lilypond. So, everything that solmisasi-lily deals with is fully based on the core Lilypond. However, this documentation doesn’t cover the details of the core Lilypond, so deep knowledge of using Lilypond in engraving scores/sheet music IS A MUST.

Table of Contents

  1. Obtaining solmisasi-lily Library
  2. Creating and Compiling Our First Solmisasi Score
  3. Time and Key Signatures in Solmisasi System

Obtaining solmisasi-lily Library

This library could be obtained by downloading this archive: , or by cloning the repo to your machine. If you choose to download the archive, please extract it to your project folder. Let’s say, the project folder where this library extracted is X:\solmisasi-lily (so the solmisasi-lily library exists in X:\solmisasi-lily\lib).

Notes:
Please keep in mind that Lilypond is a cross-platform software. Therefore, the usage of this library is not OS-specific. However, I will use MS Windows approach, even though I also extensively run Lilypond with this library in my Linux station as well. Should you face any problems in running Lilypond on your machine’s OS, please consult the Lilypond manuals.


Creating and Compiling Our First Solmisasi Score

Let’s write a new simple Lilypond snippet like this:

\version "2.20.0"

music = {
  \key c \major
  \relative c' {
    c4 d e f g a b c
  }
}

\new Staff {
  \new Voice {
    \music
  }
}

Save it to getting-started-example-01.ly, and compile it using simple Lilypond compilation command. The result is:

To ‘convert’ that standard notation to solmisasi, we need:

  1. this solmisasi-lily library, to be included at the top of the snippet,
  2. a music function, named \solmisasiMusic,
  3. a custom Staff context, named SolmisasiStaff, and
  4. a custom Voice context, named SolmisasiVoice.

So, let’s modify the snippet with this one:

\version "2.20.0"
\include "solmisasi.ily"

music = {
  \key c \major
  \relative c' {
    c4 d e f g a b c
  }
}

\new SolmisasiStaff {
  \new SolmisasiVoice {
    \solmisasiMusic \music
  }
}

From now on, we can’t use the same simple Lilypond compilation command, if the directory/folder of this Lilypond snippet file is different with the one where solmisasi-lily is located. Use this pattern in command prompt / shell:

<path-to-lilypond> --include="<path-to-solmisasi-lily-lib>" <snippet-filename>

Assuming that you already have Lilypond in your searchable path environment variable, the command would be:

lilypond --include="X:\solmisasi-lily\lib" getting-started-example-01.ly

And the result is:

TIPS

Using a helper software like Frescobaldi to develop our Lilypond scores is highly recommended. In this software, there are some configuration options for defining Lilypond search path, both as a global option, and as a particular session option. With these options defined, the hassle of invoking Lilypond compilation command could be avoided.

Time and Key Signatures in Solmisasi System

Let’s continue…
You could clearly see that there were some standard notation objects missing in the compilation result of the solmisasi notation, e.g. time signature. Actually, the SolmisasiStaff context still contains the Lilypond’s original TimeSignature object, but it is omitted. We can bring it back into the staff either by reverting the value of TimeSignature’s stencil, or by undo-ing the omit. So, let’s modify our snippet to this one:

...
\new SolmisasiStaff \with {
  \revert TimeSignature.stencil
} {
  \new SolmisasiVoice {
    \solmisasiMusic \music
  }
}

And the compiled result is:

But, wait a sec… How do we know which key signature those solmisasi notes are in?
If we are using standard notation, without a key signature being written at the beginning of the score, we all know that the music passage is written in C Major or A Minor key. Meanwhile, solmisasi needs the key signature to be explicitly written out in its commonly-acceptable form. (See Scales and Key Signatures)

This feature is implemented in a new custom context called SolmisasiTimeAndKeySignature. This context is based on the Lilypond’s original staff context. So, if we want to use this context, it should be simultaneously defined with the SolmisasiStaff context.

Let’s modify our snippet to include this new context.

...
<<
  \new SolmisasiTimeAndKeySignature {
    \solmisasiMusic \music
  }
  \new SolmisasiStaff \with {
    \revert TimeSignature.stencil
  } {
    \new SolmisasiVoice {
      \solmisasiMusic \music
    }
  }
>>

DRAWBACKS

Lilypond would run two iterations, conducted by two calls of \solmisasiMusic music function.

The compiled result would be just like this:

We should somehow delete one of those time signatures. We can do either

  1. omit the TimeSignature object inside SolmisasiTimeAndKeySignature context, OR
  2. omit Lilypond’s original TimeSignature object inside SolmisasiStaff context.

Let’s do the first option by modifying our snippet to this.

...
<<
  \new SolmisasiTimeAndKeySignature \with {
    \omit TimeSignature
  } {
    \solmisasiMusic \music
  }
  \new SolmisasiStaff \with {
    \revert TimeSignature.stencil
  } {
    \new SolmisasiVoice {
      \solmisasiMusic \music
    }
  }
>>

The compiled result would be:

To implement the second option, please remember that the SolmisasiStaff naturally has the TimeSignature object omitted. So, the modified snippet will be like this.

...
<<
  \new SolmisasiTimeAndKeySignature {
    \solmisasiMusic \music
  }
  \new SolmisasiStaff {
    \new SolmisasiVoice {
      \solmisasiMusic \music
    }
  }
>>

The compiled result would be just like this:


Now that we already understand the basic usage of solmisasi-lily library, let’s do more music in solmisasi system. Head over to Examples of Usage section.