|
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>

Private Attributes | |
| QTextStream * | _out |
| CAVoice * | _curVoice |
| CASheet * | _curSheet |
| CAContext * | _curContext |
| int | _curContextIndex |
| int | _curIndentLevel |
| CADiatonicPitch | _lastNotePitch |
| CAPlayableLength | _lastPlayableLength |
| int | _curStreamTime |
Additional Inherited Members | |
Signals inherited from CAExport | |
| void | documentExported (CADocument *) |
| void | sheetExported (CASheet *) |
| void | staffExported (CAStaff *) |
| void | voiceExported (CAVoice *) |
| void | lyricsContextExported (CALyricsContext *) |
| void | functionMarkContextExported (CAFunctionMarkContext *) |
| void | exportDone (int status) |
Protected Member Functions inherited from CAExport | |
| virtual void | exportStaffImpl (CAStaff *) |
| virtual void | exportFunctionMarkContextImpl (CAFunctionMarkContext *) |
| QTextStream & | out () |
| void | run () |
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.
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().

|
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().

|
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().

|
inline |
References _curContext.
Referenced by exportScoreBlock().

|
inline |
References _curContextIndex.
Referenced by exportStaffVoices().

|
inline |
|
inline |
|
inline |
References _curVoice.
Referenced by doAnacrusisCheck(), exportStaffVoices(), and writeRelativeIntro().

|
private |
Returns the key signature gender major/minor in LilyPond syntax.
References CADiatonicKey::Major, and CADiatonicKey::Minor.
Referenced by exportVoiceImpl().

|
private |
Converts the note pitch to LilyPond syntax.
References CADiatonicPitch::accs(), and CADiatonicPitch::noteName().
Referenced by exportVoiceImpl(), and relativePitchToString().


|
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().


|
private |
Replaces characters like backslashes and double brackets with their escaped variant.
Referenced by markupString().

|
privatevirtual |
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().

|
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().


|
privatevirtual |
Exports the syllables only without the SopranoLyircsOne = {} frame.
Reimplemented from CAExport.
References CAExport::out(), CALyricsContext::syllableAt(), CALyricsContext::syllableCount(), and syllableToLilyPond().
Referenced by exportLyricsContextBlock().


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


|
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().


|
private |
Exports the block for LilyPond from the current sheet. Looks like this:
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().


|
privatevirtual |
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().


|
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().


|
privatevirtual |
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().


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


|
inlineprivate |
References _curIndentLevel.
Referenced by exportLyricsContextBlock(), exportScoreBlock(), exportVoiceImpl(), and writeDocumentHeader().

|
inlineprivate |
References _curIndentLevel.
Referenced by exportLyricsContextBlock(), exportScoreBlock(), exportVoiceImpl(), and writeDocumentHeader().

|
private |
Encapsulates the given string into {}.
References escapeWeirdChars().
Referenced by writeDocumentHeader().


|
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().


|
inlineprivate |
References CANote::diatonicPitch().
Referenced by exportPlayable(), and writeRelativeIntro().


|
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().

|
private |
Converts the rest type to LilyPond syntax.
References CARest::Hidden, and CARest::Normal.
Referenced by exportPlayable().

|
inlineprivate |
References _curContext.
Referenced by exportScoreBlock().

|
inlineprivate |
References _curContextIndex.
Referenced by exportSheetImpl().

|
inlineprivate |
|
inlineprivate |
References _curVoice.
Referenced by exportStaffVoices(), and exportVoiceImpl().

|
inlineprivate |
References _curIndentLevel.
Referenced by CALilyPondExport().

|
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().

|
private |
References CASyllable::hyphenStart(), CASyllable::melismaStart(), and CASyllable::text().
Referenced by exportLyricsContextImpl().


|
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().


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


|
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().


|
private |
Referenced by curContext(), and setCurContext().
|
private |
Referenced by curContextIndex(), and setCurContextIndex().
|
private |
Referenced by curIndentLevel(), indentLess(), indentMore(), and setIndentLevel().
|
private |
Referenced by curSheet(), and setCurSheet().
|
private |
Referenced by exportPlayable(), and exportVoiceImpl().
|
private |
Referenced by curVoice(), and setCurVoice().
|
private |
Referenced by exportPlayable(), and exportVoiceImpl().
|
private |
Referenced by exportPlayable(), and exportVoiceImpl().
|
private |
1.8.3