Custom Chord Symbol Suffix Library

I’ve been successful in editing chord symbol suffixes but I can’t get them to act right.
The biggest issue is, how can I create my custom chord symbol suffix/quality library that is global and can be exported and imported into new Dorico files?
…And, how do I create chord symbol suffixes that will work with any root note without having to recreate a given suffix for all possible roots?

I suggest you review this other recent thread:

Edits you make in Library > Chord Symbols can be saved as defaults for all future projects by selecting the chord symbol appearance you want to save, then clicking the star button in the action bar at the bottom of that list on the left.

You cannot currently create an overall chord symbol appearance that will automatically be applied to all roots. There is some more detailed discussion of what is possible in the thread I’ve linked to above.

Some basic suffixes are:
ma, mi, au, di, ma7, mi7, 7#5, 7(9,#11,13), 4\4, #4\4, 1+3, M10, m10, M9, mi7n5, ma7s2, s2, s4, etc…
I need the root font to be Arial 14, the suffixes to be Arial 10 (I need to check that) and the suffixes to be raised a few points so that they are in line with the middle of the root symbol.
Also, I need any polychord combination using any triads or 7th chords and Naus’s superstructures…

Set the Chord symbol font font style in Library > Font Styles to be Arial and 14pt. For smaller suffixes, in the Design section of the Chord Symbols page of Engraving Options, set Scale factor for subscript and superscript components to 71%, which will make those components effectively 10pt. You can also adjust the baseline position for those components with the option immediately above.

Work your way down the whole page and you should find that you can achieve your desired appearances almost entirely using the provided options, without needing to do any customisation of individual chord symbols.

1 Like

After 2 weeks of fumbling around and learning a bunch of keyboard commands, I’ve come to my conclusions and devised a strategy as to how I’m going to use Finale, Dorico, Cubase and Neck Diagrams 2.
However, If there is a way to recreate my custom chord suffix library now and have it work correctly, I’d like to learn it.
Honestly, I can’t afford any more trial and error time, I have way too much work to do. I really need a solid, fool-proof procedure to follow. I’ve tried contacting tech support, but they just point me to the manual and say good luck! The online tutorials don’t address this specifically either.

You can make global changes to the suffixes to get these pretty easily. I’m swamped the next couple of days, but can post a doricolib file to have these automated in a few days. Some of the others you want aren’t really supported without intensive manual overrides.

1 Like

Thank you!
Let me know when you’re ready to work on this and I’ll send my specs.

Here’s a doricolib file to fix the above qualities. It just globally redefines those suffixes, but you’ll still need to select the appropriate settings in Engraving Options / Chord Symbols. There’s no ma for major 7th in Dorico. This honestly seems like an oversight/omission/bug, but it’s easy enough to redefine maj to be ma. You’ll need to select maj in Engraving Options though. Lower case mi already exists. Select dim and aug in Engraving Options as well, as the file simply redefines them to be the suffixes you want. Select sus4 and sus2 as sus is redefined as well.

David Chords doricolib code
<?xml version="1.0" encoding="utf-8"?>
<kScoreLibrary>
	<textDefinitions>
		<entities array="true">
			<TextPrimitiveEntityDefinition>
				<name>au.font.chordsymbols</name>
				<entityID>text.user.au.font.chordsymbols</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<fontStyle>font.chordsymbols</fontStyle>
				<text>au</text>
			</TextPrimitiveEntityDefinition>
			<TextPrimitiveEntityDefinition>
				<name>di.font.chordsymbols</name>
				<entityID>text.user.di.font.chordsymbols</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<fontStyle>font.chordsymbols</fontStyle>
				<text>di</text>
			</TextPrimitiveEntityDefinition>
			<TextPrimitiveEntityDefinition>
				<name>ma</name>
				<entityID>text.csac.quality.major.kLowerCaseMa</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<fontStyle>font.chordsymbols</fontStyle>
				<text>ma</text>
			</TextPrimitiveEntityDefinition>
			<TextPrimitiveEntityDefinition>
				<name>s</name>
				<entityID>text.csac.accidental.kFlat.s</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<fontStyle>font.chordsymbols</fontStyle>
				<text>s</text>
			</TextPrimitiveEntityDefinition>
		</entities>
	</textDefinitions>
	<compositeDefinitions>
		<entities array="true">
			<CompositeDefinition>
				<name>aug</name>
				<entityID>comp.csac.quality.augmented.kAug.kLowerCase</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.user.au.font.chordsymbols</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>0</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
			<CompositeDefinition>
				<name>dim</name>
				<entityID>comp.csac.quality.dim.kLowerCaseDim</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.user.di.font.chordsymbols</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>0</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
			<CompositeDefinition>
				<name>dim</name>
				<entityID>comp.csac.quality.dim7.kLowerCaseDimWithout7</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.user.di.font.chordsymbols</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>0</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
			<CompositeDefinition>
				<name>maj</name>
				<entityID>comp.csac.interval.kMaj7.kLowerCaseMaj7</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.csac.quality.major.kLowerCaseMa</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>1</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
			<CompositeDefinition>
				<name>maj</name>
				<entityID>comp.csac.quality.major.kLowerCaseMaj</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.csac.quality.major.kLowerCaseMa</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>0</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
			<CompositeDefinition>
				<name>sus</name>
				<entityID>comp.csac.alteration.sus.kLowerCase</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<category>kChordSymbols</category>
				<components array="true">
					<component>
						<componentId>text.csac.accidental.kFlat.s</componentId>
						<componentType>kText</componentType>
						<xOffset>0</xOffset>
						<yOffset>0</yOffset>
						<xScale>100.000000</xScale>
						<yScale>100.000000</yScale>
						<zOrder>1</zOrder>
						<maxOpticalScale>100</maxOpticalScale>
						<componentInstance>0</componentInstance>
						<colour>kDefault</colour>
					</component>
				</components>
				<relativeAttachments array="true"/>
				<scalingRules array="true"/>
			</CompositeDefinition>
		</entities>
	</compositeDefinitions>
	<chordSymbolAppearanceComponentCollectionDefinitions>
		<entities array="true">
			<ChordSymbolAppearanceComponent>
				<name>aug</name>
				<entityID>csac.quality.augmented.kAug.kLowerCase</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.quality.augmented.kAug.kLowerCase</compositeId>
				<role>kQuality</role>
				<value>aug</value>
				<letterCase>kLowerCase</letterCase>
				<quality>kAugmented</quality>
				<augmentedQualityAppearance>kAug</augmentedQualityAppearance>
			</ChordSymbolAppearanceComponent>
			<ChordSymbolAppearanceComponent>
				<name>dim</name>
				<entityID>csac.quality.dim.kLowerCaseDim</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.quality.dim.kLowerCaseDim</compositeId>
				<role>kQuality</role>
				<value>dim</value>
				<quality>kDiminished</quality>
				<diminishedTriadQualityAppearance>kLowerCaseDim</diminishedTriadQualityAppearance>
			</ChordSymbolAppearanceComponent>
			<ChordSymbolAppearanceComponent>
				<name>dim</name>
				<entityID>csac.quality.dim7.kLowerCaseDimWithout7</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.quality.dim7.kLowerCaseDimWithout7</compositeId>
				<role>kQuality</role>
				<value>dim</value>
				<quality>kDiminished</quality>
				<diminishedSeventhQualityAppearance>kLowerCaseDimWithout7</diminishedSeventhQualityAppearance>
			</ChordSymbolAppearanceComponent>
			<ChordSymbolAppearanceComponent>
				<name>maj</name>
				<entityID>csac.interval.kMaj7.kLowerCaseMaj7</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.interval.kMaj7.kLowerCaseMaj7</compositeId>
				<role>kInterval</role>
				<value>maj</value>
				<interval>kMaj7</interval>
				<majorSeventhIntervalAppearance>kLowerCaseMaj7</majorSeventhIntervalAppearance>
			</ChordSymbolAppearanceComponent>
			<ChordSymbolAppearanceComponent>
				<name>maj</name>
				<entityID>csac.quality.major.kLowerCaseMaj</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.quality.major.kLowerCaseMaj</compositeId>
				<role>kQuality</role>
				<value>maj</value>
				<quality>kMajor</quality>
				<majorQualityAppearance>kLowerCaseMaj</majorQualityAppearance>
			</ChordSymbolAppearanceComponent>
			<ChordSymbolAppearanceComponent>
				<name>sus</name>
				<entityID>csac.alteration.sus.kLowerCase</entityID>
				<parentEntityID/>
				<inheritanceMask>0</inheritanceMask>
				<compositeId>comp.csac.alteration.sus.kLowerCase</compositeId>
				<role>kAlterations</role>
				<value>sus</value>
				<letterCase>kLowerCase</letterCase>
				<alterationType>kSuspended</alterationType>
			</ChordSymbolAppearanceComponent>
		</entities>
	</chordSymbolAppearanceComponentCollectionDefinitions>
</kScoreLibrary>

David Chords.zip (1.1 KB)

Unzip the above file and add the doricolib file to your DefaultLibraryAdditions folder. Close and restart Dorico if open. Now any files created from File/New will automatically have those chord definitions. You can bring them into any existing file with the Library Manager.

3 Likes

Thank you!
Once I load this into Dorico, will it be easy to create more chord suffixes with the same parameters?

1 Like

You just have to copy the doricolib file to your DefaultLibraryAdditions folder. As long as it’s there, it will redefine those suffixes to appear the way you posted that you want them to appear. These settings will be embedded into the file at the time of file creation (File / New) or can be brought into an existing file using the Library Manager. You don’t “load” it into Dorico in any way though.

You don’t have to do anything else, other than make sure the Engraving Options are set correctly as I mentioned, and those suffixes will always be used going forward. You can obviously just remove the doricolib file from that folder if you decide you don’t want those edits. Those were the edits that I saw I could quickly do in 10 minutes. The other edits have to be done manually and are much more of a time demand, so you’re on your own with those! :wink:

1 Like

I can’t find this folder.

Are you in Mac OS or Windows?

Windows:
Users\yournamehere\AppData\Roaming\Steinberg\Dorico 5\DefaultLibraryAdditions

Mac:
Library/ApplicationSupport/Steinberg/Dorico 5/DefaultLibraryAdditions

If it doesn’t exist you can go ahead and create it.

1 Like

Technical clarification for Mac:

/Library/ is at the root level of your hard drive. It houses settings for all users.

~/Library/ is inside your user folder, and is hidden by default. Hold down Option and select Go > Library to get to it. It is for settings for just your user account. I prefer to put customizations there and leave guest and other accounts unaltered.

There’s no practical difference if you have the only user account, but unix is a multi-user system, so I wanted to clarify.

2 Likes

Windows

Thanks! I’m going to work on this this weekend.

1 Like