Entering lyrics in one go

At the moment, lyrics have to be typed into Dorico one syllable at a time. This is often OK but sometimes I miss Finale’s ability to take an existing text in its entirety (which has been syllabified) and ‘pour’ it under the notes of a voice all in one go. Finale automatically takes ties into account and I only occasionally need to shift syllables for melismas. I set a lot of operas and having to type over the lyrics takes a lot of extra time and also increases the risk of error. Would there be any possibility of Dorico adopting a feature like this in the future?

And if we’re going to go down this route, can we also have Sibelius’s capability of splitting the words of an imported TXT file into syllables, generally correctly, in quite a few languages? Preferably with the possibility of correcting its mistakes within Dorico itself…

  • 1

Allow me to add my support for both these requests.

+1 for hoping this feature is on the list of todos. I loved the Sibelius feature of pasting in lyrics quickly, although S occasionally split the syllables incorrectly. For anyone who’s tired of looking up individual words for where to put the hyphen, here is a great resource I stumbled across. Paste in your entire text, one click and your text is properly hyphenated.

http://juiciobrennan.com/hyphenator/

+1

I can confirm that both of these are on our backlog for future versions, but I can’t say when we’ll get to them. They would be helpful to me personally too, that’s for sure.

Great news !

Hi… Nearly all of my work is lyric based. I don’t want to type it in, it takes forever. I’m afraid I will be sticking with Finale until this issue can be addressed.

For now have a look here:

https://www.steinberg.net/forums/viewtopic.php?f=246&t=137828&p=742268&hilit=Ahk+lyrics#p742268

I’ve just typed in the lyrics of two complete mass settings for five voices, and each one probably took under an hour. Given all the other time savings I’m making over Finale, I’m still ahead.

I’ve always found that preparing the text for Click Assignment (typing, repetition, hyphenation, accounting for melismas) takes just as much time as typing into score.



David, Ben is right. Of course you will find we are all Dorico enthusiasts here, but not blind ones! :slight_smile: The bottom line is that Dorico’s strengths more than make up for its weaknesses. Every with things like lyric entry (which I also would like to see improved), the time required to prepare my scores has plummeted.

I encourage you to give it a go. You will very likely come to the same conclusion!

I set aside a day to try it, to copy something I already had, my posts from yesterday just reflect my frustrations at having to start from scratch… and failing to complete my task in one sitting! I’ll have another look if my month hasn’t run out by then :wink:

Having to enter lyrics for a cantata, I would love to see this feature. I see it is not on the top of the priorities, but I’ll just add my vote to keep this alive.

Paolo

A lot has happened in the two years since this thread last surfaced. You do now have the ability to paste lyrics in bulk (albeit a syllable at a time), and the Edit Line of Lyrics dialog now sometimes makes subsequent editing speedier.

Of course, you don’t have to type it in: you can have the hyphenated lyrics in a text editor and select an entire staff’s lyrics and then press Command V repeatedly.

Don’t forget that you can Filter Lyrics and Duplicate them to the staff above/below, if the rhythms match. I have key commands for all that. If the rhythms aren’t immediately adjacent, you can alt-click.

Or, it is possible with Dorico’s Lua scripting to produce a script that takes a string of syllabified text and inserts it into the score in one go. I have a trial version, though it requires that each syllable is a separate string (and I still have to work out how to handle melismas).

I still reckon I’d win in a “Lyrics-off” typing and copying, versus: sourcing a clean copy of the text, hyphenating it, preparing repetitions, adding spaces/hyphens for melismas, and then using Finale’s Click Assignment (or similar) to roll it all in.

Can only add an emphatic plus one to the request. Being able to source a text, appropriately syllabify it, and then paste it in as Lyrics would be an extremely useful capability.

But I also realize that it’s on a long, prioritized list. And I confess I’ve plus-one’d my share of items on that list that would compete for priority over this one.

Lua does splits pretty easy. Here’s a function you can add to your script that will take one big string (like from a text file) and split each syllable into separate strings like your trial script does. If your trial already works with Dorico to insert the lyrics where you want - it wouldn’t be a big deal to modify to use two delimiters. I assume you are using spaces and hypens? Or spaces, hyphens, and new lines"? The only difference with Melisma is that you are keeping the delimiter I think - that you want to enter “-” into Dorico? Does Dorico interpret that or does it need a tab or left arrow or something?

function split(s, delimiter)
result = {};
for match in (s…delimiter):gmatch("(.-)"…delimiter) do
table.insert(result, match);
end
return result;
end

If your script does the insert into lyrics where you want and you’re willing to share, I wouldn’t mine finishing it out to read from a text file or clipboard.

Alexander Plötz was the brains behind the script, in fairness:

local app=DoApp.DoApp()

local function f(word,o_isLast)
	local tSyllables={}
	for syllable,hyphen in string.gmatch(word,"(%a+)([%-]?)") do
		tSyllables[#tSyllables+1]={syllable,hyphen=="-"}
	end
	
	for i,tSyllable in ipairs(tSyllables) do
		local sylType,str,hasHyphen=nil,table.unpack(tSyllable)
		
		if o_isLast and i==#tSyllables then
			sylType=[[kEndInput]]
		elseif hasHyphen then
			sylType=[[kHyphenateCurrentWord]]
		else
			sylType=[[kEndOrExtendCurrentWord]]
		end
	
		app:doCommand([[NoteInput.AdvanceLyricInput]])
		app:doCommand([[NoteInput.AcceptCurrentLyricInput?LyricText=]]..str..[[&LyricsEntryAdvanceType=]]..sylType)
	end
end

----------------------------------------------------

local tLyrics={"I","am","the","ve-ry","mo-del","of","a","mo-dern","Ma-jor","Ge-ne-ral"}

app:doCommand([[NoteInput.StartLyricInput]])
for i,word in ipairs(tLyrics) do
	f(word,i==#tLyrics)
end

Thanks Ben for sharing

(Rename the attached script back to import_lyrics.lua)

The attached script will import text from the file named at the very top of the script.
(Which you would need to change, note the use of \ if you are using the windows O/S)

Or you can first set an environment variable named LYRICS_IMPORT to the name of the file you want to import - whichever. The environment variable (if set) takes preference.

At this stage It will only insert text into the first verse - if someone is able to share the command to invoke lyrics 2 and beyond, I’d be happy to make it read multiple verses or a mixture. (pondering) Otherwise I think I could make it add a second verse+ if it required you to first open the lyrics popover for the verse you wanted to add.

How bad do you want a GUI to enter the file name? Pretty quick to add that (I think) as well as taking text from the clipboard BUT only if I include an O/S specific library for Windows /Mac that would have to go in your scripts directory. At least with what I know of the API at the moment.

All this is MOST temporary until LUI scripting is officially ready from Steinberg. Do what you will with the script. :slight_smile:
import_lyrics.zip (1.61 KB)