Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
FCTransposer Class Reference

This is a utility class to facilitate transposition. It supports: More...

#include <ff_celldetails.h>

+ Inheritance diagram for FCTransposer:

Public Member Functions

 FCTransposer (eHarmLev displacement, eHarmAlt raiselower, const FCKeySignature *key)
 The constructor.
 
eHarmLev GetDisplacement () const
 Gets the current displacement value. Before transposition, it is the value passed in on the constructor. After transposition it is the transposed value.
 
eHarmLev GetRaiseLower () const
 Gets the current chromatic alteration value. Before transposition, it is the value passed in on the constructor. After transposition it is the transposed value.
 
void DiatonicTranspose (eHarmLev interval)
 Transpose the target diatonically by the given interval displacement.
 
void OctaveTranspose (twobyte numberofoctaves)
 Transpose the target by the given number of octaves.
 
bool EnharmonicTranspose (twobyte direction)
 Transpose the target enharmonically in the given direction.
 
bool DefaultEnharmonicTranspose ()
 Transpose the target enharmonically in Finale's default direction.
 
bool SimplifySpelling ()
 Simplifies the note spelling the most it can using enharmonic transposition.
 
bool ChromaticTranspose (eHarmLev interval, eHarmAlt alteration, bool simplify=false)
 Transposes the target chromatically by the input chromatic interval.
 
bool EDOStepTranspose (twobyte numberofsteps)
 Transposes the target by the input number of EDO steps and simplifies the spelling.
 
- Public Member Functions inherited from __FCBase
virtual const PDKFRAMEWORK_CLASSID GetClassID () const
 Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has problems to resolve the true classes of inherited objects.
 
virtual const char * ClassName () const =0
 Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child class.
 
virtual ~__FCBase ()
 Virtual destructor, so all inherited classes get the virtual destructor.
 
void DebugMsgInt (const char *pszPrefixText, int i)
 Creates a simple Message Box for debug purposes. The text appears with the extra digit (in decimal presentation) appearing afterwards.
 
void DebugMsgHex (const char *pszPrefixText, int i)
 Creates a simple Message Box for debug purposes. The text appears with the extra digit (as a hexadecimal number) appearing afterwards.
 
void DebugMsgString (const char *pszPrefixText, const char *thestring)
 Creates a simple Message Box for debug purposes. The text appears with the extra string appearing afterwards.
 
void DebugMsg (const char *pszMsg)
 Creates a simple Message Box for debug purposes with just one text string.
 
void DebugOutMenuInfo (FCUI *pUI, int menuixd_horiz, int menuixd_vert) const
 Outputs the menu command info for debugging purposes.
 
int DebugOutFormat (const char *fmt,...)
 Outputs debug text using C style "printf" syntax.
 
virtual void DebugDump ()
 Outputs the class data/information for debugging purposes.
 
virtual void DebugDataDump ()
 Outputs a memory dump of the data block in the object for debugging purposes.
 
virtual void DebugDataByteArrayDump ()
 Outputs a memory dump of the data block in the object for debugging purposes, as a C++ byte array.
 
void Set16BitFlag (FLAG_16 *flag, FLAG_16 flagbits, bool state)
 Sets a 16 bit flag.
 
void Set32BitFlag (FLAG_32 *flag, FLAG_32 flagbits, bool state)
 Sets/resets a 32 bit flag, by using a bit mask.
 
bool GetBitFlag (FLAG_32 flag, FLAG_32 flagbits) const
 Gets a state from flag bits. Returns true if any bit in the mask is set.
 
int GetBitCount (FLAG_32 flag)
 Returns the total number of set bits in a 32-bit unsigned int.
 
void SetSpecific32Bit (FLAG_32 *flag, int bitnumber, bool state)
 Sets/resets a single bit in a 32 bit flag, by specifying one specific bit.
 
void SetUserData (void *pData)
 Sets the user data attached to the instance of an object.
 
void SetUserData2 (void *pData)
 Sets the additional user data attached to the instance of an object.
 
void * GetUserData () const
 Gets the user data attached to the instance of an object.
 
void * GetUserData2 () const
 Gets the additional user data attached to the instance of an object.
 
virtual bool IsIdentical (const __FCBase *pCompareObject) const
 Returns true if the data in the passed object is considered to be identical to the current object, otherwise false.
 
void StoreXML_String (tinyxml2::XMLElement *pParentNode, const char *pszElementName, FCString *pStringValue)
 Helper function to store FCString objects in the XML file.
 
void StoreXML_Integer (tinyxml2::XMLElement *pParentNode, const char *pszElementName, int value)
 Helper function to store integer objects in the XML file.
 
void StoreXML_Bool (tinyxml2::XMLElement *pParentNode, const char *pszElementName, bool value)
 Helper function to store boolean objects in the XML file.
 
void StoreXML_StringAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, FCString *pStringValue)
 Helper function to store FCString objects in the XML file, as an attribute to a node.
 
void StoreXML_IntegerAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, int value)
 Helper function to store integer objects in the XML file, as an attribute to a node.
 
void StoreXML_BoolAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, bool value)
 Helper function to store boolean objects in the XML file, as an attribute to a node.
 
void StoreXML_FloatAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, float value)
 Helper function to store floating point objects in the XML file, as an attribute to a node.
 
virtual void StoreToXML (tinyxml2::XMLElement *pParentNode)
 Virtual method that is used to store an object's data.
 
bool ReadXML_String (tinyxml2::XMLElement *pParentNode, const char *pszElementName, FCString *pStringValue)
 Helper method to read FCString objects from the XML file.
 
bool ReadXML_Integer (tinyxml2::XMLElement *pParentNode, const char *pszElementName, int *pValue)
 Helper method to read integer objects from the XML file.
 
bool ReadXML_Bool (tinyxml2::XMLElement *pParentNode, const char *pszElementName, bool *pValue)
 Helper method to read boolean objects from the XML file.
 
bool ReadXML_StringAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, FCString *pStringValue)
 Helper method to read FCString objects from the XML file, as an attribute to a node.
 
bool ReadXML_IntegerAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, int *pValue)
 Helper method to read integer objects from the XML file, as an attribute to a node.
 
bool ReadXML_BoolAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, bool *pValue)
 Helper method to read boolean objects from the XML file, as an attribute to a node.
 
bool ReadXML_FloatAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, float *pValue)
 Helper method to read floating point objects from the XML file, as an attribute to a node.
 
virtual bool ReadFromXML (tinyxml2::XMLElement *pParentNode)
 Virtual method that is used to read object data.
 

Additional Inherited Members

- Public Types inherited from __FCBase
enum  PDKFRAMEWORK_CLASSID {
  FCID_UNKNOWN = 0 , FCID_ACCIDENTALMOD , FCID_ACTIVELYRIC , FCID_ALLOTMENT ,
  FCID_ARTICULATION , FCID_ARTICULATIONDEF , FCID_BACKWARDREPEAT , FCID_BASELINE ,
  FCID_BEAMMOD , FCID_BEATCHARTELEMENT , FCID_BOOKMARK , FCID_BROKENBEAMMOD ,
  FCID_CATEGORYDEF , FCID_CELLCLEFCHANGE , FCID_CELLFRAMEHOLD , FCID_CELLGRAPHIC ,
  FCID_CELLTEXT , FCID_CENTERSMARTSHAPE , FCID_CHORD , FCID_CHORDPREFS ,
  FCID_CHORDSUFFIXELEMENT , FCID_CHORUSSYLLABLE , FCID_CLEFDEF , FCID_COMPOSITETIMESIGBOTTOMELEMENT ,
  FCID_COMPOSITETIMESIGTOPELEMENT , FCID_CROSSSTAFFMOD , FCID_CUSTOMSMARTLINEDEF , FCID_CUSTOMSTEMMOD ,
  FCID_DISTANCEPREFS , FCID_DOTMOD , FCID_ENCLOSURE , FCID_ENDINGREPEAT ,
  FCID_ENIGMATEXTSTYLE , FCID_ENTRYALTERMOD , FCID_EXECUTABLESHAPEDEF , FCID_EXPRESSION ,
  FCID_FONTINFO , FCID_FONTPREFS , FCID_FREEZESYSTEM , FCID_FRETBOARDSTYLEDEF ,
  FCID_FRETBOARDSTYLEDEFS , FCID_FRETBOARDGROUPDEF , FCID_FRETBOARDGROUPDEFS , FCID_FRETINSTRUMENTDEF ,
  FCID_GENERALPREFS , FCID_GRIDSGUIDESPREFS , FCID_GROUP , FCID_GROUPNAMEPOSITIONPREFS ,
  FCID_HUMANPLAYBACKPREFS , FCID_INDEPENDENTCELLDETAIL , FCID_INSTRUMENTDEF , FCID_INSTRUMENTPLAYBACKDATA ,
  FCID_KEYMODEDEF , FCID_KEYSIGNATURE , FCID_LAYERPREFS , FCID_LYRICSBASELINE ,
  FCID_LYRICSPREFS , FCID_MEASURE , FCID_MEASURENUMBERREGION , FCID_METATOOLASSIGNMENT ,
  FCID_MIDIEXPRESSION , FCID_MISCDOCPREFS , FCID_MULTIMEASUREREST , FCID_MULTIMEASURERESTPREFS ,
  FCID_MULTISTAFFINSTRUMENT , FCID_MULTISTAFFINSTRUMENTS , FCID_MUSICCHARACTERPREFS , FCID_MUSICSPACINGPREFS ,
  FCID_NUMBER , FCID_NOTEHEADMOD , FCID_OTHERINCI , FCID_PERCUSSIONLAYOUTNOTE ,
  FCID_PERCUSSIONSTAFF , FCID_PERFORMANCEMOD , FCID_PAGE , FCID_PAGEFORMATPREFS ,
  FCID_PAGEGRAPHIC , FCID_PAGETEXT , FCID_PART , FCID_PARTEXTRACTPREFS ,
  FCID_PARTSCOPEPREFS , FCID_PARTSTAFFVOICING , FCID_PERCUSSIONNOTEMOD , FCID_PIANOBRACEPREFS ,
  FCID_PLAYBACKPREFS , FCID_RAWTEXT , FCID_REPEATPREFS , FCID_SECONDARYBEAMBREAKMOD ,
  FCID_BEAMEXTENSIONMOD , FCID_SECTIONSYLLABLE , FCID_SEPARATEMEASURENUMBER , FCID_SEPARATEPLACEMENT ,
  FCID_SHAPEDEF , FCID_SHAPEEXPRESSIONDEF , FCID_SLURCONTOURPREFS , FCID_SIZEPREFS ,
  FCID_SMARTSHAPE , FCID_SMARTSHAPEENTRYMARK , FCID_SMARTSHAPEMEASUREMARK , FCID_SMARTSHAPEPREFS ,
  FCID_STAFF , FCID_STAFFLIST , FCID_STAFFNAMEPOSITION , FCID_STAFFNAMEPOSITIONPREFS ,
  FCID_STAFFSTYLEASSIGN , FCID_STAFFSTYLEDEF , FCID_STAFFSYSTEM , FCID_STEMCONNECTIONTABLE ,
  FCID_STEMMOD , FCID_STRING , FCID_SYLLABLEENTRYMOD , FCID_SYSTEMSTAFF ,
  FCID_TABLATURENOTEMOD , FCID_TEMPOELEMENT , FCID_TEXTBLOCK , FCID_TEXTEXPRESSIONDEF ,
  FCID_TEXTREPEAT , FCID_TEXTREPEATDEF , FCID_TIEMOD , FCID_TIEPREFS ,
  FCID_TIECONTOURPREFS , FCID_TIEPLACEMENTPREFS , FCID_TIMESIGNATURE , FCID_TUPLET ,
  FCID_TUPLETPREFS , FCID_VERSESYLLABLE
}
 Constants for the GetClassID method. More...
 
enum  MEASUREMENTUNITS {
  MEASUREMENTUNIT_DEFAULT = UNIT_DEFAULT , MEASUREMENTUNIT_EVPUS = UNIT_EVPUS , MEASUREMENTUNIT_INCHES = UNIT_INCHES , MEASUREMENTUNIT_CENTIMETERS = UNIT_CENTS ,
  MEASUREMENTUNIT_POINTS = UNIT_POINTS , MEASUREMENTUNIT_PICAS = UNIT_PICAS , MEASUREMENTUNIT_SPACES = UNIT_SPACES , MEASUREMENTUNIT_MILLIMETERS = 100
}
 Constants for Finale's standard measurement units. More...
 
- Static Public Member Functions inherited from __FCBase
static void DebugOutPtr (const char *pszPrefixText, void *ptr)
 Static method that outputs a line for debugging purposes. The prefix text appears with the extra ptr (in hexadeximal representation) appearing afterwards.
 
static void DebugOutInt (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in decimal presentation) appearing afterwards.
 
static void DebugOutFloat (const char *pszPrefixText, double f)
 Static method that outputs a line for debugging purposes. The text appears with the extra float value appearing afterwards.
 
static void DebugOutTag (const char *pszPrefixText, EXTAG extag)
 Static method that outputs a line for debugging purposes. The text appears with the EXTAG (in text) appearing afterwards.
 
static void DebugOutHex (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in hexadecimal presentation) appearing afterwards.
 
static void DebugOutBin (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in binary presentation) appearing afterwards.
 
static void DebugOutString (const char *pszPrefixText, const char *thestring)
 Static method that outputs a line for debugging purposes (C string version). The text appears with the extra string appearing afterwards.
 
static void DebugOutString (const char *pszPrefixText, FCString *pString)
 Static method that outputs a line for debugging purposes (FCString version). The text appears with the extra string appearing afterwards.
 
static void DebugOutBool (const char *pszPrefixText, bool state)
 Static method that outputs a line for debugging purposes. The boolean state appears afterwards as either "TRUE" or "FALSE".
 
static void DebugOutBlock (const void *pBuffer, int startoffset, int size)
 Static method that outputs a memory block for debugging purposes. Eight bytes per line will appear (as hex digits) until the whole memory block is dumped.
 
static void DebugOutByteArrayBlock (const void *pBuffer, int startoffset, int size)
 Static method that outputs a memory block for debugging purposes. Eight bytes per line will appear (as hex digits) as a C++ onebyte array, until the whole memory block is dumped.
 
static void DebugOut (const char *pszLine)
 Static method to output a line of text for debugging purposes.
 
- Protected Member Functions inherited from __FCBase
 __FCBase ()
 The constructor.
 

Detailed Description

This is a utility class to facilitate transposition. It supports:

  • Correct chromatic interval transposition, including microtonal and irregular custom key signatures.
  • Transposition by EDO steps. EDO stands for Equal Division of the Octave, typically 12 per octave (12-EDO). But microtonal scales can be many more than that. Common values are 24-EDO (quarter tones), 19-EDO, 31-EDO, 48-EDO, and even 96-EDO.
  • Simplification of note spelling.

The most common ways to get an instance of FCTransposer are with FCNote::GetTransposer or FCChord::GetTransposer. Transposers returned by these classes automatically update the class when you call the transposition functions. You can call the transposition functions as often as you need to, and the target entity continues to be updated. However, do not reuse a transposer created by one instance with another instance that did not create it. Instead, create a new instance for the new target. Also, like any object obtained with a Get verb, you must not use it after the object that created it goes out of scope.

Warning
Finale does not support microtonal chords. FCChord transposition only works correctly with 12-EDO key signatures. (All standard key signatures are 12-EDO, as are many custom key signatures such as klezmer modes, which FCTransposer also handles correctly.)

You can also directly create an instance of FCTransposer by passing displacement and raise/lower values to the constructor. You can then retrieve the result of the transposition with the GetDisplacement and GetRaiseLower methods.

Lua-supported (0.67).

Constructor & Destructor Documentation

◆ FCTransposer()

FCTransposer::FCTransposer ( eHarmLev displacement,
eHarmAlt raiselower,
const FCKeySignature * key )
inline

The constructor.

Lua-supported (0.67).

Parameters
displacementThe scale displacement value.
raiselowerThe chromatic alteration value.
keyThe key signature to use for transposition.

Member Function Documentation

◆ ChromaticTranspose()

bool FCTransposer::ChromaticTranspose ( eHarmLev interval,
eHarmAlt alteration,
bool simplify = false )
inline

Transposes the target chromatically by the input chromatic interval.

In Finale, chromatic intervals are defined by a diatonic displacement (0 = unison, 1 = second, 2 = third, etc.) and a chromatic alteration. Major and perfect intervals have a chromatic alteration of 0. So for example, {2, -1} is up a minor third, {3, 0} is up a perfect fourth, {5, 1} is up an augmented sixth, etc. Reversing the signs of both values in the pair allows for downwards transposition.

Lua-supported (0.67).

Parameters
intervalthe diatonic displacement of the transposition interval.
alterationthe chromatic alteration for the interval.
simplifyif true, simplify the spelling. This parameter is optional and defaults to false.
Returns
success or failure (if the resultant magnitude of RaiseLower would exceed 7)

◆ DefaultEnharmonicTranspose()

bool FCTransposer::DefaultEnharmonicTranspose ( )
inline

Transpose the target enharmonically in Finale's default direction.

This function is useful when performing an unlinked enharmonic flip in a part. Only a default enharmonic flip unlinks. Any other enharmonic flip appears in the score as well. This code is based on observed behavior in Finale 27.

Lua-supported (0.67).

Returns
success or failure (if the resultant magnitude of RaiseLower would exceed 7)

◆ DiatonicTranspose()

void FCTransposer::DiatonicTranspose ( eHarmLev interval)
inline

Transpose the target diatonically by the given interval displacement.

Lua-supported (0.67).

Parameters
interval0 = unison, 1 = up a diatonic second, -2 = down a diatonic third, etc.

◆ EDOStepTranspose()

bool FCTransposer::EDOStepTranspose ( twobyte numberofsteps)
inline

Transposes the target by the input number of EDO steps and simplifies the spelling.

Warning
The hard-coded Finale limit for RaiseLower values of +/-7 means that it is not possible to represent certain notes in EDO systems with extremely small microtonal increments. The most common of these is 96-EDO. With 8 EDO steps per half-step, Finale cannot reach the middle note of a diatonic whole step. Composers who use Finale for 96-EDO (or higher) use visual workarounds for these situations. This function never fails for standard scales and key signatures.

Lua-supported (0.67).

Parameters
numberofstepspositive = up, negative = down.
Returns
success or failure (if no representation exists that would not exceed magnitude 7 for RaiseLower.)

◆ EnharmonicTranspose()

bool FCTransposer::EnharmonicTranspose ( twobyte direction)
inline

Transpose the target enharmonically in the given direction.

In some microtone systems this yields a different result than transposing by a diminished 2nd. Failure occurs if the target's RaiseLower value exceeds a magnitude of 7. This is a hard-coded limit in Finale.

Lua-supported (0.67).

Parameters
directionpositive = up, negative = down (normally 1 or -1, but any positive or negative numbers work the same as 1 or -1.)
Returns
success or failure (if the resultant magnitude of RaiseLower would exceed 7)

◆ GetDisplacement()

eHarmLev FCTransposer::GetDisplacement ( ) const
inline

Gets the current displacement value. Before transposition, it is the value passed in on the constructor. After transposition it is the transposed value.

On Lua, this function throws a runtime error if the FCTransposer instance was not explictly constructed with displacement and RaiseLower values. Other clients receive 0.

Lua-supported (also as read-only property) (0.67).

◆ GetRaiseLower()

eHarmLev FCTransposer::GetRaiseLower ( ) const
inline

Gets the current chromatic alteration value. Before transposition, it is the value passed in on the constructor. After transposition it is the transposed value.

On Lua, this function throws a runtime error if the FCTransposer instance was not explictly constructed with displacement and RaiseLower values. Other clients receive 0.

Lua-supported (also as read-only property) (0.67).

◆ OctaveTranspose()

void FCTransposer::OctaveTranspose ( twobyte numberofoctaves)
inline

Transpose the target by the given number of octaves.

Lua-supported (0.67).

Parameters
numberofoctaves0 = no change, 1 = up an octave, -2 = down 2 octaves, etc.

◆ SimplifySpelling()

bool FCTransposer::SimplifySpelling ( )
inline

Simplifies the note spelling the most it can using enharmonic transposition.

See EDOStepTranspose for an explananation of why this function can fail. However, if the target is already representable in Finale, this function cannot fail. It can only fail if the target currently is not representable (i.e, its RaiseLower value has magnitude greater than 7.) In that case, this function transforms it to a representable spelling with RaiseLower less than or equal to 7, or it fails if that is not possible.

Returns
success or failure (if the target cannot be represented in Finale.)