Here is a very simple tune with 2 voices:
Download the Noteworthy file by clicking on the image, then export it as an NWCTXT file.
The two voices are created by forcing up-stems for the upper part, and down-stems for the lower part, and entering the notes as chords. Running NWCTXT2Ly against the exported file, and then double clicking the simplevoice.ly file as before, again gives a PDF file which looks like this:
So that worked without any special work either. If you want to view the PDF you can (as with all these examples) click the image above.
Mostly, Noteworthy uses layering to create multiple voice scores as above, so let's look at this.
I've done a short extract from a Christmas carol in Noteworthy - the file is here and it looks like this:
As ever, download it by clicking the image. If we export this and simply run the NWCTXT2Ly program, then convert the output to LilyPond, the results look horrible with overlapping stems, and warnings in the LilyPond logfile saying "warning: ignoring too many clashing note columns". However, clicking the option to "assign voice names" means that my program assigns the top staves of the layers the voice name "voiceOne" and the lower staves "voiceTwo". LilyPond then knows that voice one has its stems up, and voice two the stems down, and therefore produces a PDF file looking like this:
This approach will generally work well with hymns. However, we often don't want to force the upper voice to use all upward stems, as in the snippet below:
Here we have most of the notes of voice one stem up (owing to their position on the stave) then a second voice being added in bar 2 - these are stem down and voice 1 stem up (which they would be, no matter where they are on the stave). This is more difficult to arrange into LilyPond, and the way I've done it is to explicitly tell LilyPond which notes belong to which voice. If I remove the layering, you can see how it's done.
Where there are no notes in voice 2, we use muted notes with visibility set to never. When the section with 2 voices starts, we add hidden text beginning "##" to describe the voices - I have written my program to recognise that hidden text beginning ## is a special instruction to send the text direct to the LilyPond file. So we mark the start of voice one with \voiceOne (note the capitalisation) and the end with \oneVoice. The second voice is marked \voiceTwo as its start. It's important to put these flags in the correct place to get the optimum stem placement. Marking the voices like this, and then turning layering back on, gives the following LilyPond output (once we've remembered to uncheck the "assign voice names" option):
Which is again what was wanted.
As far as I'm aware, this ability to layer in Noteworthy and flag voice names to LilyPond makes it possible to export Noteworthy files, convert them to LilyPond and create a LilyPond score in all cases.
Next - lets go back and look again at how we can assign staff types.