|
Canorus
0.7
|
LilyPond export filter This class is used to export the document or parts of the document to LilyPond syntax. The most common use is to simply call one of the constructors. More...
#include <lilypondexport.h>

LilyPond export filter This class is used to export the document or parts of the document to LilyPond syntax. The most common use is to simply call one of the constructors.
Copyright (c) 2007, Matevž Jekovec, Canorus development team All Rights Reserved. See AUTHORS for a complete list of authors.
Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE.GPL for details.
Copyright (c) 2007, Matevž Jekovec, Canorus development team All Rights Reserved. See AUTHORS for a complete list of authors. Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE.GPL for details.
CALilyPondExport( myDocument, &textStream );
textStream is usually the file stream or the content of the score source view widget.
| CALilyPondExport::CALilyPondExport | ( | QTextStream * | out = 0 | ) |
Constructor for the lilypond export. Called when viewing a single voice source in Lily syntax or exporting the whole document to a file.
Uses out for the output.
References setIndentLevel().

| const QString CALilyPondExport::barlineTypeToLilyPond | ( | CABarline::CABarlineType | type | ) | [private] |
Converts the barline type to LilyPond syntax.
References CABarline::Dotted, CABarline::Double, CABarline::End, CABarline::RepeatClose, CABarline::RepeatCloseOpen, CABarline::RepeatOpen, and CABarline::Single.
Referenced by exportVoiceImpl().

| const QString CALilyPondExport::clefTypeToLilyPond | ( | CAClef::CAClefType | clefType, |
| int | c1orig, | ||
| int | offset | ||
| ) | [private] |
Converts the given clefType to LilyPond syntax.
References CAClef::C, CAClef::F, CAClef::G, CAClef::PercussionHigh, CAClef::PercussionLow, and CAClef::Tab.
Referenced by exportVoiceImpl().

| CAContext* CALilyPondExport::curContext | ( | ) | [inline] |
References _curContext.
Referenced by exportScoreBlock().

| int CALilyPondExport::curContextIndex | ( | ) | [inline] |
References _curContextIndex.
Referenced by exportStaffVoices().

| int CALilyPondExport::curIndentLevel | ( | ) | [inline] |
| CASheet* CALilyPondExport::curSheet | ( | ) | [inline] |
| CAVoice* CALilyPondExport::curVoice | ( | ) | [inline] |
References _curVoice.
Referenced by doAnacrusisCheck(), exportStaffVoices(), and writeRelativeIntro().

| const QString CALilyPondExport::diatonicKeyGenderToLilyPond | ( | CADiatonicKey::CAGender | gender | ) | [private] |
Returns the key signature gender major/minor in LilyPond syntax.
References CADiatonicKey::Major, and CADiatonicKey::Minor.
Referenced by exportVoiceImpl().

| const QString CALilyPondExport::diatonicPitchToLilyPond | ( | CADiatonicPitch | pitch | ) | [private] |
Converts the note pitch to LilyPond syntax.
References CADiatonicPitch::accs(), and CADiatonicPitch::noteName().
Referenced by exportVoiceImpl(), and relativePitchToString().


| void CALilyPondExport::doAnacrusisCheck | ( | CATimeSignature * | time | ) | [private] |
Writes the partial command before the first note if there is an upbeat.
References CAMusElement::Barline, CATimeSignature::beat(), CATimeSignature::beats(), curVoice(), CAPlayableLength::HundredTwentyEighth, CAMusElement::isPlayable(), CAVoice::musElementAt(), CAVoice::musElementCount(), CAPlayableLength::musicLength(), CAExport::out(), CAPlayableLength::playableLengthToTimeLength(), CAPlayableLength::Quarter, and CAMusElement::timeLength().
Referenced by exportVoiceImpl().


| QString CALilyPondExport::escapeWeirdChars | ( | QString | in | ) | [private] |
Replaces characters like backslashes and double brackets with their escaped variant.
Referenced by markupString().

| void CALilyPondExport::exportDocumentImpl | ( | CADocument * | doc | ) | [private, virtual] |
Exports the current document to Lilypond syntax as a complete .ly file.
Reimplemented from CAExport.
References exportSheetImpl(), CAExport::out(), CADocument::sheetAt(), CADocument::sheetCount(), and writeDocumentHeader().

| void CALilyPondExport::exportLyricsContextBlock | ( | CALyricsContext * | lc | ) | [private] |
Exports the lyrics in form: SopranoLyricsOne = { My bu -- ny is o -- ver the o -- cean __ My bu -- ny. }
References exportLyricsContextImpl(), indent(), indentLess(), indentMore(), CAContext::name(), CAExport::out(), and spellNumbers().
Referenced by exportSheetImpl().


| void CALilyPondExport::exportLyricsContextImpl | ( | CALyricsContext * | lc | ) | [private, virtual] |
Exports the syllables only without the SopranoLyircsOne = {} frame.
Reimplemented from CAExport.
References CAExport::out(), CALyricsContext::syllableAt(), CALyricsContext::syllableCount(), and syllableToLilyPond().
Referenced by exportLyricsContextBlock().


| void CALilyPondExport::exportMarks | ( | CAMusElement * | elt | ) | [private] |
Exports the music element's elt marks.
References CAMusElement::markList(), CAMark::markType(), CAExport::out(), CAMark::RehersalMark, and CAMark::Text.
Referenced by exportVoiceImpl().


| void CALilyPondExport::exportPlayable | ( | CAPlayable * | elt | ) | [private] |
References _curStreamTime, _lastNotePitch, _lastPlayableLength, CATuplet::actualNumber(), CANote::diatonicPitch(), CANote::getChord(), CANote::isFirstInChord(), CAPlayable::isFirstInTuplet(), CANote::isLastInChord(), CAPlayable::isLastInTuplet(), CANote::isPartOfChord(), CAMusElement::musElementType(), CAMusElement::Note, CATuplet::number(), CAExport::out(), CANote::phrasingSlurEnd(), CANote::phrasingSlurStart(), CAPlayable::playableLength(), playableLengthToLilyPond(), relativePitchToString(), CAMusElement::Rest, CARest::restType(), restTypeToLilyPond(), CANote::slurEnd(), CANote::slurStart(), CANote::tieStart(), CAMusElement::timeLength(), CAMusElement::timeStart(), and CAPlayable::tuplet().
Referenced by exportVoiceImpl().


| void CALilyPondExport::exportScoreBlock | ( | CASheet * | sheet | ) | [private] |
Exports the \score block for LilyPond from the current sheet. Looks like this:
\score {
<<
\new Staff {
<<
\new Voice { \voiceOne \StaffOneVoiceOne }
\new Voice { \voiceTwo \StaffOneVoiceTwo }
>>
}
\new Staff {
<<
\new Voice { \voiceOne \StaffTwoVoiceOne }
\new Voice { \voiceTwo \StaffTwoVoiceTwo }
>>
}
...
>>
}
References CALyricsContext::associatedVoice(), CASheet::contextAt(), CASheet::contextCount(), CAContext::contextType(), curContext(), curSheet(), indent(), indentLess(), indentMore(), CAContext::LyricsContext, CAContext::name(), CAVoice::name(), CAExport::out(), setCurContext(), spellNumbers(), CAContext::Staff, CAVoice::staff(), CAStaff::voiceAt(), CAStaff::voiceCount(), CAStaff::voiceList(), and voiceVariableName().
Referenced by exportSheetImpl().


| void CALilyPondExport::exportSheetImpl | ( | CASheet * | sheet | ) | [private, virtual] |
Exports the current sheet to Lilypond syntax.
Reimplemented from CAExport.
References CASheet::contextAt(), CASheet::contextCount(), CAContext::contextType(), exportLyricsContextBlock(), exportScoreBlock(), exportStaffVoices(), CAContext::LyricsContext, setCurContextIndex(), setCurSheet(), and CAContext::Staff.
Referenced by exportDocumentImpl().


| void CALilyPondExport::exportStaffVoices | ( | CAStaff * | staff | ) | [private] |
Exports all the voices in the staff to Lilypond. Each voice in the staff is stored as a Lilypond variable:
StaffOneVoiceOne = c { ... }
References curContextIndex(), curVoice(), exportVoiceImpl(), indent(), CAVoice::name(), CAExport::out(), setCurVoice(), CAStaff::voiceAt(), CAStaff::voiceCount(), and voiceVariableName().
Referenced by exportSheetImpl().


| void CALilyPondExport::exportVoiceImpl | ( | CAVoice * | v | ) | [private, virtual] |
Exports the given voice music elements to LilyPond syntax.
Reimplemented from CAExport.
References _curStreamTime, _lastNotePitch, _lastPlayableLength, CAMusElement::Barline, CABarline::barlineType(), barlineTypeToLilyPond(), CATimeSignature::beat(), CATimeSignature::beats(), CAClef::c1(), CAMusElement::Clef, CAClef::clefType(), clefTypeToLilyPond(), CAKeySignature::diatonicKey(), diatonicKeyGenderToLilyPond(), CADiatonicKey::diatonicPitch(), diatonicPitchToLilyPond(), doAnacrusisCheck(), exportMarks(), exportPlayable(), CADiatonicKey::gender(), indent(), indentLess(), indentMore(), CAMusElement::isPlayable(), CAMusElement::KeySignature, CAVoice::musElementAt(), CAVoice::musElementCount(), CAMusElement::musElementType(), CAClef::offset(), CAExport::out(), setCurVoice(), CABarline::Single, CAMusElement::TimeSignature, CAMusElement::timeStart(), CAPlayableLength::Undefined, and writeRelativeIntro().
Referenced by exportStaffVoices().


| void CALilyPondExport::indent | ( | ) | [private] |
Output tabs according to _indentLevel.
References curIndentLevel(), and CAExport::out().
Referenced by exportLyricsContextBlock(), exportScoreBlock(), exportStaffVoices(), exportVoiceImpl(), and writeDocumentHeader().


| void CALilyPondExport::indentLess | ( | ) | [inline, private] |
References _curIndentLevel.
Referenced by exportLyricsContextBlock(), exportScoreBlock(), exportVoiceImpl(), and writeDocumentHeader().

| void CALilyPondExport::indentMore | ( | ) | [inline, private] |
References _curIndentLevel.
Referenced by exportLyricsContextBlock(), exportScoreBlock(), exportVoiceImpl(), and writeDocumentHeader().

| QString CALilyPondExport::markupString | ( | QString | in | ) | [private] |
Encapsulates the given string into {}.
References escapeWeirdChars().
Referenced by writeDocumentHeader().


| const QString CALilyPondExport::playableLengthToLilyPond | ( | CAPlayableLength | playableLength | ) | [private] |
Converts the note length to LilyPond syntax.
References CAPlayableLength::Breve, CAPlayableLength::dotted(), CAPlayableLength::Eighth, CAPlayableLength::Half, CAPlayableLength::HundredTwentyEighth, CAPlayableLength::musicLength(), CAPlayableLength::Quarter, CAPlayableLength::Sixteenth, CAPlayableLength::SixtyFourth, CAPlayableLength::ThirtySecond, and CAPlayableLength::Whole.
Referenced by exportPlayable().


| const QString CALilyPondExport::relativePitchToString | ( | CANote * | note, |
| CADiatonicPitch | prevPitch | ||
| ) | [inline, private] |
References CANote::diatonicPitch().
Referenced by exportPlayable(), and writeRelativeIntro().


| const QString CALilyPondExport::relativePitchToString | ( | CADiatonicPitch | p, |
| CADiatonicPitch | prevPitch | ||
| ) | [private] |
This function returns the relative note pitch in LilyPond syntax on the given Canorus pitch and previous note pitch.
eg. pitch=10, accs=1, prevPitch=5 => returns "f'"
References diatonicPitchToLilyPond(), and CADiatonicPitch::noteName().

| const QString CALilyPondExport::restTypeToLilyPond | ( | CARest::CARestType | type | ) | [private] |
Converts the rest type to LilyPond syntax.
References CARest::Hidden, and CARest::Normal.
Referenced by exportPlayable().

| void CALilyPondExport::setCurContext | ( | CAContext * | context | ) | [inline, private] |
References _curContext.
Referenced by exportScoreBlock().

| void CALilyPondExport::setCurContextIndex | ( | int | c | ) | [inline, private] |
References _curContextIndex.
Referenced by exportSheetImpl().

| void CALilyPondExport::setCurSheet | ( | CASheet * | sheet | ) | [inline, private] |
| void CALilyPondExport::setCurVoice | ( | CAVoice * | voice | ) | [inline, private] |
References _curVoice.
Referenced by exportStaffVoices(), and exportVoiceImpl().

| void CALilyPondExport::setIndentLevel | ( | int | level | ) | [inline, private] |
References _curIndentLevel.
Referenced by CALilyPondExport().

| void CALilyPondExport::spellNumbers | ( | QString & | s | ) | [private] |
Spell out numbers in a QString: "Staff1Voice2" -> "StaffOneVoiceTwo" This is necessary because Lilypond variable names can only contain letters.
Referenced by exportLyricsContextBlock(), exportScoreBlock(), and voiceVariableName().

| const QString CALilyPondExport::syllableToLilyPond | ( | CASyllable * | s | ) | [private] |
References CASyllable::hyphenStart(), CASyllable::melismaStart(), and CASyllable::text().
Referenced by exportLyricsContextImpl().


| void CALilyPondExport::voiceVariableName | ( | QString & | name, |
| int | staffNum, | ||
| int | voiceNum | ||
| ) | [private] |
Modify name to contain a string "StaffXVoiceY" where X and Y are spelled-out versions of staffNum and voiceNum, respectively. This is for generating names of Lilypond variables from Canorus staff and voices indices, since Lilypond variable names must contain only alphabetical characters.
Example: voiceVariableName( name, 1, 2 ); --> name is "StaffOneVoiceTwo"
References spellNumbers().
Referenced by exportScoreBlock(), and exportStaffVoices().


| void CALilyPondExport::writeDocumentHeader | ( | ) | [private] |
Export document title, subtitle, composer, copyright etc.
References CAExport::exportedDocument(), indent(), indentLess(), indentMore(), markupString(), and CAExport::out().
Referenced by exportDocumentImpl().


| CADiatonicPitch CALilyPondExport::writeRelativeIntro | ( | ) | [private] |
Writes the voice's note intro and returns the note pitch for the current voice. This function is usually used for writing the beginning of the voice.
References curVoice(), CAVoice::musElementAt(), CAVoice::musElementCount(), CAMusElement::musElementType(), CAMusElement::Note, CADiatonicPitch::noteName(), CAExport::out(), relativePitchToString(), and CADiatonicPitch::setNoteName().
Referenced by exportVoiceImpl().


CAContext* CALilyPondExport::_curContext [private] |
Referenced by curContext(), and setCurContext().
int CALilyPondExport::_curContextIndex [private] |
Referenced by curContextIndex(), and setCurContextIndex().
int CALilyPondExport::_curIndentLevel [private] |
Referenced by curIndentLevel(), indentLess(), indentMore(), and setIndentLevel().
CASheet* CALilyPondExport::_curSheet [private] |
Referenced by curSheet(), and setCurSheet().
int CALilyPondExport::_curStreamTime [private] |
Referenced by exportPlayable(), and exportVoiceImpl().
CAVoice* CALilyPondExport::_curVoice [private] |
Referenced by curVoice(), and setCurVoice().
Referenced by exportPlayable(), and exportVoiceImpl().
Referenced by exportPlayable(), and exportVoiceImpl().
QTextStream* CALilyPondExport::_out [private] |
1.8.0