LibMusicXML  3.18
lpsr2LilypondTranslator.h
1 /*
2  MusicXML Library
3  Copyright (C) Grame 2006-2013
4 
5  This Source Code Form is subject to the terms of the Mozilla Public
6  License, v. 2.0. If a copy of the MPL was not distributed with this
7  file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10  research@grame.fr
11 */
12 
13 #ifndef ___lpsr2LilypondTranslator___
14 #define ___lpsr2LilypondTranslator___
15 
16 #include "msrOah.h"
17 #include "lpsrOah.h"
18 
19 #include "lpsr.h"
20 
21 
22 namespace MusicXML2
23 {
24 
25 //________________________________________________________________________
26 struct lpsrRepeatDescr : public smartable
27 {
28 /*
29  * positions represent the order in which the parts appear in <part-list />
30 */
31 
32  public:
33 
34  // creation
35  // ------------------------------------------------------
36 
37  static SMARTP<lpsrRepeatDescr> create (
38  int repeatEndingsNumber);
39 
40  protected:
41 
42  // constructors/destructor
43  // ------------------------------------------------------
44 
46  int repeatEndingsNumber);
47 
48  virtual ~lpsrRepeatDescr ();
49 
50  public:
51 
52  // set and get
53  // ------------------------------------------------------
54 
55  int getRepeatEndingsNumber () const
56  { return fRepeatEndingsNumber; }
57 
58  void incrementRepeatEndingsCounter ()
59  { fRepeatEndingsCounter ++; }
60 
61  int getRepeatEndingsCounter () const
62  { return fRepeatEndingsCounter; }
63 
64  void setEndOfRepeatHasBeenGenerated ()
65  { fEndOfRepeatHasBeenGenerated = true; }
66 
67  bool getEndOfRepeatHasBeenGenerated () const
68  { return fEndOfRepeatHasBeenGenerated; }
69 
70  // services
71  // ------------------------------------------------------
72 
73  string repeatDescrAsString () const;
74 
75  // print
76  // ------------------------------------------------------
77 
78  virtual void print (ostream& os) const;
79 
80  private:
81 
82  // fields
83  // ------------------------------------------------------
84 
85  int fRepeatEndingsNumber;
86  int fRepeatEndingsCounter;
87 
88  bool fEndOfRepeatHasBeenGenerated;
89 };
91 EXP ostream& operator<< (ostream& os, const S_lpsrRepeatDescr& elt);
92 
93 //________________________________________________________________________
95 
96  // LPSR
97 
98  public visitor<S_lpsrScore>,
99 
100  // variable-value associations
101 
102  public visitor<S_lpsrVarValAssoc>,
103  public visitor<S_lpsrVarValsListAssoc>,
104  public visitor<S_lpsrSchemeVariable>,
105 
106  // MSR scaling
107 
108  public visitor<S_msrScaling>,
109 
110  // header
111 
112  public visitor<S_lpsrHeader>,
113 
114  // paper
115 
116  public visitor<S_lpsrPaper>,
117 
118  // layout
119 
120  public visitor<S_lpsrLayout>,
121 
122  // score blocks
123 
124  public visitor<S_lpsrParallelMusicBLock>,
125 
126  public visitor<S_lpsrBookBlock>,
127  public visitor<S_lpsrScoreBlock>,
128  public visitor<S_lpsrBookPartBlock>,
129 
130  public visitor<S_lpsrPartGroupBlock>,
131  public visitor<S_lpsrPartBlock>,
132  public visitor<S_lpsrStaffBlock>,
133 
134  public visitor<S_lpsrUseVoiceCommand>,
135  public visitor<S_lpsrNewLyricsBlock>,
136  public visitor<S_lpsrVariableUseCommand>,
137 
138 // public visitor<S_lpsrContext>, JMI
139  public visitor<S_lpsrChordNamesContext>,
140  public visitor<S_lpsrFiguredBassContext>,
141 
142  public visitor<S_lpsrBarCommand>,
143 
144  // JMI public visitor<S_lpsrMelismaCommand>,
145 
146  public visitor<S_lpsrComment>,
147 
148  public visitor<S_lpsrSchemeFunction>,
149 
150  // MSR score
151 
152  public visitor<S_msrScore>,
153 
154  // MSR page layout
155 
156  public visitor<S_msrPageLayout>,
157 
158  // rights
159 
160  public visitor<S_msrCredit>,
161  public visitor<S_msrCreditWords>,
162 
163  // parts & part groups
164 
165  public visitor<S_msrPartGroup>,
166 
167  public visitor<S_msrPart>,
168 
169  // staff details
170 
171  public visitor<S_msrStaffTuning>,
172  public visitor<S_msrStaffDetails>,
173 
174  // staves and voices
175 
176  public visitor<S_msrStaff>,
177 
178  public visitor<S_msrVoice>,
179 
180  public visitor<S_msrVoiceStaffChange>,
181 
182  // harmonies
183 
184  public visitor<S_msrHarmony>,
185 
186  // frames
187 
188  public visitor<S_msrFrame>,
189 
190  // figured bass
191 
192  public visitor<S_msrFiguredBass>,
193  public visitor<S_msrFigure>,
194 
195  public visitor<S_msrSegment>,
196  public visitor<S_msrMeasure>,
197 
198  public visitor<S_msrStanza>,
199  public visitor<S_msrSyllable>,
200 
201  // clefs
202 
203  public visitor<S_msrClef>,
204 
205  // keys
206 
207  public visitor<S_msrKey>,
208 
209  // times
210 
211  public visitor<S_msrTime>,
212 
213  // transpose
214 
215  public visitor<S_msrTranspose>,
216 
217  // print
218 
219  public visitor<S_msrPartNameDisplay>,
220  public visitor<S_msrPartAbbreviationDisplay>,
221 
222  // words
223 
224  public visitor<S_msrWords>,
225 
226  // tempo
227 
228  public visitor<S_msrTempo>,
229  public visitor<S_msrTempoRelationshipElements>,
230  public visitor<S_msrTempoNote>,
231  public visitor<S_msrTempoTuplet>,
232 
233  // articulations
234 
235  public visitor<S_msrArticulation>,
236 
237  public visitor<S_msrFermata>,
238 
239  public visitor<S_msrArpeggiato>,
240  public visitor<S_msrNonArpeggiato>,
241 
242  // technicals
243 
244  public visitor<S_msrTechnical>,
245  public visitor<S_msrTechnicalWithInteger>,
246  public visitor<S_msrTechnicalWithFloat>,
247  public visitor<S_msrTechnicalWithString>,
248 
249  // ornaments
250 
251  public visitor<S_msrOrnament>,
252 
253  // glissandos
254 
255  public visitor<S_msrGlissando>,
256 
257  // slides
258 
259  public visitor<S_msrSlide>,
260 
261  // tremolos
262 
263  public visitor<S_msrSingleTremolo>,
264 
265  public visitor<S_msrDoubleTremolo>,
266 
267  // dynamics
268 
269  public visitor<S_msrDynamics>,
270 
271  public visitor<S_msrOtherDynamics>,
272 
273  public visitor<S_msrWedge>,
274 
275  // grace notes
276 
277  public visitor<S_msrGraceNotesGroup>,
278 
279  public visitor<S_msrAfterGraceNotesGroup>,
280  public visitor<S_msrAfterGraceNotesGroupContents>,
281 
282  // notes
283 
284  public visitor<S_msrNote>,
285  public visitor<S_msrOctaveShift>,
286 
287  // accordion registration
288 
289  public visitor<S_msrAccordionRegistration>,
290 
291  // harp pedals tuning
292 
293  public visitor<S_msrHarpPedalsTuning>,
294 
295  public visitor<S_msrStem>,
296  public visitor<S_msrBeam>,
297 
298  // chords
299 
300  public visitor<S_msrChord>,
301 
302  public visitor<S_msrTuplet>,
303 
304  public visitor<S_msrTie>,
305 
306  public visitor<S_msrSlur>,
307 
308  public visitor<S_msrLigature>,
309 
310  // ?
311 
312  public visitor<S_msrBarline>,
313 
314  public visitor<S_msrSegno>,
315  public visitor<S_msrCoda>,
316 
317  public visitor<S_msrEyeGlasses>,
318  public visitor<S_msrPedal>,
319  public visitor<S_msrDamp>,
320  public visitor<S_msrDampAll>,
321  public visitor<S_msrScordatura>,
322 
323  public visitor<S_msrBarCheck>,
324 
325  public visitor<S_msrBarNumberCheck>,
326 
327  public visitor<S_msrLineBreak>,
328 
329  public visitor<S_msrPageBreak>,
330 
331  // repeats
332 
333  public visitor<S_msrRepeat>,
334  public visitor<S_msrRepeatCommonPart>,
335  public visitor<S_msrRepeatEnding>,
336 
337  public visitor<S_msrMeasuresRepeat>,
338  public visitor<S_msrMeasuresRepeatPattern>,
339  public visitor<S_msrMeasuresRepeatReplicas>,
340 
341  public visitor<S_msrRestMeasures>,
342  public visitor<S_msrRestMeasuresContents>,
343 
344  // rehearsal
345 
346  public visitor<S_msrRehearsal>,
347 
348  // midi
349 
350  public visitor<S_msrMidiTempo>
351 
352 {
353  public:
354 
357  S_msrOah& msrOpts,
358  S_lpsrOah& lpsrOpts,
359  indentedOstream& logOstream,
360  indentedOstream& lilypondCodeOstream);
361 
362  virtual ~lpsr2LilypondTranslator ();
363 
364  void generateLilypondCodeFromLpsrScore ();
365 
366  protected:
367 
368  // LPSR
369 
370  virtual void visitStart (S_lpsrScore& elt);
371  virtual void visitEnd (S_lpsrScore& elt);
372 
373  virtual void visitStart (S_lpsrVarValAssoc& elt);
374  virtual void visitEnd (S_lpsrVarValAssoc& elt);
375 
376  virtual void visitStart (S_lpsrVarValsListAssoc& elt);
377  virtual void visitEnd (S_lpsrVarValsListAssoc& elt);
378 
379  virtual void visitStart (S_lpsrSchemeVariable& elt);
380  virtual void visitEnd (S_lpsrSchemeVariable& elt);
381 
382  virtual void visitStart (S_lpsrHeader& elt);
383  virtual void visitEnd (S_lpsrHeader& elt);
384 
385  virtual void visitStart (S_lpsrPaper& elt);
386  virtual void visitEnd (S_lpsrPaper& elt);
387 
388  virtual void visitStart (S_lpsrLayout& elt);
389  virtual void visitEnd (S_lpsrLayout& elt);
390 
391  virtual void visitStart (S_lpsrBookBlock& elt);
392  virtual void visitEnd (S_lpsrBookBlock& elt);
393  virtual void visitStart (S_lpsrScoreBlock& elt);
394  virtual void visitEnd (S_lpsrScoreBlock& elt);
395  virtual void visitStart (S_lpsrBookPartBlock& elt);
396  virtual void visitEnd (S_lpsrBookPartBlock& elt);
397 
398  virtual void visitStart (S_lpsrParallelMusicBLock& elt);
399  virtual void visitEnd (S_lpsrParallelMusicBLock& elt);
400 
401  virtual void visitStart (S_lpsrPartGroupBlock& elt);
402  virtual void visitEnd (S_lpsrPartGroupBlock& elt);
403 
404  virtual void visitStart (S_lpsrPartBlock& elt);
405  virtual void visitEnd (S_lpsrPartBlock& elt);
406 
407  virtual void visitStart (S_lpsrStaffBlock& elt);
408  virtual void visitEnd (S_lpsrStaffBlock& elt);
409 
410  virtual void visitStart (S_lpsrUseVoiceCommand& elt);
411  virtual void visitEnd (S_lpsrUseVoiceCommand& elt);
412 
413  virtual void visitStart (S_lpsrNewLyricsBlock& elt);
414  virtual void visitEnd (S_lpsrNewLyricsBlock& elt);
415 
416  virtual void visitStart (S_lpsrVariableUseCommand& elt);
417  virtual void visitEnd (S_lpsrVariableUseCommand& elt);
418 
419  // virtual void visitStart (S_lpsrContext& elt); JMI
420 // virtual void visitEnd (S_lpsrContext& elt);
421  virtual void visitStart (S_lpsrChordNamesContext& elt);
422  virtual void visitEnd (S_lpsrChordNamesContext& elt);
423  virtual void visitStart (S_lpsrFiguredBassContext& elt);
424  virtual void visitEnd (S_lpsrFiguredBassContext& elt);
425 
426  virtual void visitStart (S_lpsrBarCommand& elt);
427  virtual void visitEnd (S_lpsrBarCommand& elt);
428 
429 // JMI virtual void visitStart (S_lpsrMelismaCommand& elt);
430  // virtual void visitEnd (S_lpsrMelismaCommand& elt);
431 
432  virtual void visitStart (S_lpsrComment& elt);
433  virtual void visitEnd (S_lpsrComment& elt);
434 
435  virtual void visitStart (S_lpsrSchemeFunction& elt);
436  virtual void visitEnd (S_lpsrSchemeFunction& elt);
437 
438  // MSR score
439 
440  virtual void visitStart (S_msrScore& elt);
441  virtual void visitEnd (S_msrScore& elt);
442 
443  // MSR scaling
444 
445  virtual void visitStart (S_msrScaling& elt);
446  virtual void visitEnd (S_msrScaling& elt);
447 
448  // MSR page layout
449 
450  virtual void visitStart (S_msrPageLayout& elt);
451  virtual void visitEnd (S_msrPageLayout& elt);
452 
453  virtual void visitStart (S_msrCredit& elt);
454  virtual void visitEnd (S_msrCredit& elt);
455  virtual void visitStart (S_msrCreditWords& elt);
456  virtual void visitEnd (S_msrCreditWords& elt);
457 
458  virtual void visitStart (S_msrPartGroup& elt);
459  virtual void visitEnd (S_msrPartGroup& elt);
460 
461  virtual void visitStart (S_msrPart& elt);
462  virtual void visitEnd (S_msrPart& elt);
463 
464  virtual void visitStart (S_msrStaffTuning& elt);
465  virtual void visitStart (S_msrStaffDetails& elt);
466 
467  virtual void visitStart (S_msrStaff& elt);
468  virtual void visitEnd (S_msrStaff& elt);
469 
470  virtual void visitStart (S_msrVoice& elt);
471  virtual void visitEnd (S_msrVoice& elt);
472 
473  virtual void visitStart (S_msrVoiceStaffChange& elt);
474 
475  virtual void visitStart (S_msrHarmony& elt);
476 
477  virtual void visitStart (S_msrFrame& elt);
478 
479  virtual void visitStart (S_msrFiguredBass& elt);
480  virtual void visitEnd (S_msrFiguredBass& elt);
481  virtual void visitStart (S_msrFigure& elt);
482 
483  virtual void visitStart (S_msrSegment& elt);
484  virtual void visitEnd (S_msrSegment& elt);
485 
486  virtual void visitStart (S_msrMeasure& elt);
487  virtual void visitEnd (S_msrMeasure& elt);
488 
489  virtual void visitStart (S_msrStanza& elt);
490  virtual void visitEnd (S_msrStanza& elt);
491 
492  virtual void visitStart (S_msrSyllable& elt);
493  virtual void visitEnd (S_msrSyllable& elt);
494 
495  virtual void visitStart (S_msrClef& elt);
496  virtual void visitEnd (S_msrClef& elt);
497 
498  virtual void visitStart (S_msrKey& elt);
499  virtual void visitEnd (S_msrKey& elt);
500 
501  virtual void visitStart (S_msrTime& elt);
502  virtual void visitEnd (S_msrTime& elt);
503 
504  virtual void visitStart (S_msrTranspose& elt);
505  virtual void visitEnd (S_msrTranspose& elt);
506 
507  virtual void visitStart (S_msrPartNameDisplay& elt);
508  virtual void visitStart (S_msrPartAbbreviationDisplay& elt);
509 
510  virtual void visitStart (S_msrWords& elt);
511  virtual void visitEnd (S_msrWords& elt);
512 
513  virtual void visitStart (S_msrTempo& elt);
514  virtual void visitEnd (S_msrTempo& elt);
515  virtual void visitStart (S_msrTempoRelationshipElements& elt);
516  virtual void visitEnd (S_msrTempoRelationshipElements& elt);
517  virtual void visitStart (S_msrTempoNote& elt);
518  virtual void visitStart (S_msrTempoTuplet& elt);
519  virtual void visitEnd (S_msrTempoTuplet& elt);
520 
521  virtual void visitStart (S_msrArticulation& elt);
522  virtual void visitEnd (S_msrArticulation& elt);
523 
524  virtual void visitStart (S_msrFermata& elt);
525  virtual void visitEnd (S_msrFermata& elt);
526 
527  virtual void visitStart (S_msrArpeggiato& elt);
528  virtual void visitEnd (S_msrArpeggiato& elt);
529  virtual void visitStart (S_msrNonArpeggiato& elt);
530  virtual void visitEnd (S_msrNonArpeggiato& elt);
531 
532  virtual void visitStart (S_msrTechnical& elt);
533  virtual void visitEnd (S_msrTechnical& elt);
534 
535  virtual void visitStart (S_msrTechnicalWithInteger& elt);
536  virtual void visitEnd (S_msrTechnicalWithInteger& elt);
537 
538  virtual void visitStart (S_msrTechnicalWithFloat& elt);
539  virtual void visitEnd (S_msrTechnicalWithFloat& elt);
540 
541  virtual void visitStart (S_msrTechnicalWithString& elt);
542  virtual void visitEnd (S_msrTechnicalWithString& elt);
543 
544  virtual void visitStart (S_msrOrnament& elt);
545  virtual void visitEnd (S_msrOrnament& elt);
546 
547  virtual void visitStart (S_msrGlissando& elt);
548  virtual void visitEnd (S_msrGlissando& elt);
549 
550  virtual void visitStart (S_msrSlide& elt);
551  virtual void visitEnd (S_msrSlide& elt);
552 
553  virtual void visitStart (S_msrSingleTremolo& elt);
554  virtual void visitEnd (S_msrSingleTremolo& elt);
555 
556  virtual void visitStart (S_msrDoubleTremolo& elt);
557  virtual void visitEnd (S_msrDoubleTremolo& elt);
558 
559  virtual void visitStart (S_msrDynamics& elt);
560  virtual void visitEnd (S_msrDynamics& elt);
561 
562  virtual void visitStart (S_msrOtherDynamics& elt);
563  virtual void visitEnd (S_msrOtherDynamics& elt);
564 
565  virtual void visitStart (S_msrWedge& elt);
566  virtual void visitEnd (S_msrWedge& elt);
567 
568  virtual void visitStart (S_msrGraceNotesGroup& elt);
569  virtual void visitEnd (S_msrGraceNotesGroup& elt);
570 
571  virtual void visitStart (S_msrAfterGraceNotesGroup& elt);
572  virtual void visitEnd (S_msrAfterGraceNotesGroup& elt);
573  virtual void visitStart (S_msrAfterGraceNotesGroupContents& elt);
574  virtual void visitEnd (S_msrAfterGraceNotesGroupContents& elt);
575 
576  virtual void visitStart (S_msrNote& elt);
577  virtual void visitEnd (S_msrNote& elt);
578 
579  virtual void visitStart (S_msrOctaveShift& elt);
580  virtual void visitEnd (S_msrOctaveShift& elt);
581 
582  virtual void visitStart (S_msrAccordionRegistration& elt);
583 
584  virtual void visitStart (S_msrHarpPedalsTuning& elt);
585 
586  virtual void visitStart (S_msrStem& elt);
587  virtual void visitEnd (S_msrStem& elt);
588 
589  virtual void visitStart (S_msrBeam& elt);
590  virtual void visitEnd (S_msrBeam& elt);
591 
592  virtual void visitStart (S_msrChord& elt);
593  virtual void visitEnd (S_msrChord& elt);
594 
595  virtual void visitStart (S_msrTuplet& elt);
596  virtual void visitEnd (S_msrTuplet& elt);
597 
598  virtual void visitStart (S_msrTie& elt);
599  virtual void visitEnd (S_msrTie& elt);
600 
601  virtual void visitStart (S_msrSlur& elt);
602  virtual void visitEnd (S_msrSlur& elt);
603 
604  virtual void visitStart (S_msrLigature& elt);
605  virtual void visitEnd (S_msrLigature& elt);
606 
607  virtual void visitStart (S_msrBarline& elt);
608  virtual void visitEnd (S_msrBarline& elt);
609 
610  virtual void visitStart (S_msrSegno& elt);
611  virtual void visitStart (S_msrCoda& elt);
612 
613  virtual void visitStart (S_msrEyeGlasses& elt);
614  virtual void visitStart (S_msrPedal& elt);
615  virtual void visitStart (S_msrDamp& elt);
616  virtual void visitStart (S_msrDampAll& elt);
617  virtual void visitStart (S_msrScordatura& elt);
618 
619  virtual void visitStart (S_msrBarCheck& elt);
620  virtual void visitEnd (S_msrBarCheck& elt);
621 
622  virtual void visitStart (S_msrBarNumberCheck& elt);
623  virtual void visitEnd (S_msrBarNumberCheck& elt);
624 
625  virtual void visitStart (S_msrLineBreak& elt);
626  virtual void visitEnd (S_msrLineBreak& elt);
627 
628  virtual void visitStart (S_msrPageBreak& elt);
629  virtual void visitEnd (S_msrPageBreak& elt);
630 
631  virtual void visitStart (S_msrRepeat& elt);
632  virtual void visitEnd (S_msrRepeat& elt);
633  virtual void visitStart (S_msrRepeatCommonPart& elt);
634  virtual void visitEnd (S_msrRepeatCommonPart& elt);
635  virtual void visitStart (S_msrRepeatEnding& elt);
636  virtual void visitEnd (S_msrRepeatEnding& elt);
637 
638  virtual void visitStart (S_msrMeasuresRepeat& elt);
639  virtual void visitEnd (S_msrMeasuresRepeat& elt);
640  virtual void visitStart (S_msrMeasuresRepeatPattern& elt);
641  virtual void visitEnd (S_msrMeasuresRepeatPattern& elt);
642  virtual void visitStart (S_msrMeasuresRepeatReplicas& elt);
643  virtual void visitEnd (S_msrMeasuresRepeatReplicas& elt);
644 
645  virtual void visitStart (S_msrRestMeasures& elt);
646  virtual void visitEnd (S_msrRestMeasures& elt);
647  virtual void visitStart (S_msrRestMeasuresContents& elt);
648  virtual void visitEnd (S_msrRestMeasuresContents& elt);
649 
650  virtual void visitStart (S_msrRehearsal& elt);
651  virtual void visitEnd (S_msrRehearsal& elt);
652 
653  virtual void visitStart (S_msrMidiTempo& elt);
654  virtual void visitEnd (S_msrMidiTempo& elt);
655 
656  // names
657 
658  string nameAsLilypondString (
659  string name);
660 
661  // variable-value associations
662 
663  string lpsrVarValAssocKindAsLilypondString (
664  lpsrVarValAssoc::lpsrVarValAssocKind
665  lilyPondVarValAssocKind);
666 
667  string lpsrVarValsListAssocKindAsLilypondString (
668  lpsrVarValsListAssoc::lpsrVarValsListAssocKind
669  lilyPondVarValsListAssocKind);
670 
671  void generateLpsrVarValsListAssocValues (
672  S_lpsrVarValsListAssoc varValsListAssoc);
673 
674  string lpsrVarValAssocAsLilypondString (
676  int fieldNameWidth);
677 
678  // lengths
679  string lengthUnitAsLilypondString (
680  msrLengthUnitKind lengthUnitKind);
681 
682  // whole notes
683  // JMI
684 
685  // comments
686  void generateInputLineNumberAndOrPositionInMeasureAsAComment (
687  S_msrMeasureElement measureElement);
688 
689  // markups
690  enum markupColumnKind {
691  markupColumnKindLeftAligned,
692  markupColumnKindLeftACentered };
693 
694  string generateAColumnForMarkup (
695  string theString,
696  markupColumnKind columnKind);
697  string generateMultilineMarkup (
698  string theString,
699  markupColumnKind columnKind);
700 
701  // octaves
702 
703  string absoluteOctaveAsLilypondString (
704  int absoluteOctave);
705 
706  // alterations
707 
708  string alterationKindAsLilypondString (
709  msrAlterationKind alterationKind);
710 
711  // durations
712 
713  rational fLastMetWholeNotes;
714 
715  string durationAsLilypondString (
716  int inputLineNumber,
717  rational wholeNotes);
718 
719  /* JMI
720  string durationAsExplicitLilypondString ( // JMI
721  int inputLineNumber,
722  rational wholeNotes);
723 */
724 
725  // notes
726 
727  msrPrintObjectKind fCurrentNotePrinObjectKind;
728 
729  string lilypondOctaveInRelativeEntryMode (
730  S_msrNote note);
731 
732  string lilypondOctaveInFixedEntryMode (
733  S_msrNote note);
734 
735  string notePitchAsLilypondString (S_msrNote note);
736 
737  string pitchedRestAsLilypondString (S_msrNote note);
738 
739  void generateNoteBeams (S_msrNote note);
740  void generateNoteSlurs (S_msrNote note);
741 
742  void generateNoteHeadColor (S_msrNote note);
743  void generateNoteLigatures (S_msrNote note);
744  void generateNoteStem (S_msrNote note);
745  void generateNoteHead (S_msrNote note);
746 
747  void generateCodeBeforeNote (S_msrNote note);
748  void generateCodeForNote (S_msrNote note);
749  void generateCodeAfterNote (S_msrNote note);
750 
751  // articulations
752 
753  msrDirectionKind fCurrentArpeggioDirectionKind;
754 
755  void generateNoteArticulation (
756  S_msrArticulation articulation);
757 
758  void generateChordArticulation (
759  S_msrArticulation articulation);
760 
761  // technicals
762 
763  string technicalAsLilypondString (
764  S_msrTechnical technical);
765 
766  string technicalWithIntegerAsLilypondString (
767  S_msrTechnicalWithInteger technicalWithInteger);
768 
769  string technicalWithFloatAsLilypondString (
770  S_msrTechnicalWithFloat technicalWithFloat);
771 
772  string technicalWithStringAsLilypondString (
773  S_msrTechnicalWithString technicalWithString);
774 
775  // ornaments
776 
777  void generateOrnament (
778  S_msrOrnament ornament);
779 
780  // trills
781 
782  bool fOnGoingTrillSpanner; // JMI
783 
784  // spanners
785 
786  msrPlacementKind fCurrentSpannerPlacementKind;
787 
788  void generateCodeForSpannerBeforeNote (
789  S_msrSpanner spanner);
790 
791  void generateCodeForSpannerAfterNote (
792  S_msrSpanner spanner);
793 
794  // grace notes
795 
796  bool fOnGoingGraceNotesGroup;
797 
798  void generateGraceNotesGroup (
799  S_msrGraceNotesGroup graceNotesGroup);
800 
801  // tremolos
802 
803  string singleTremoloDurationAsLilypondString (
804  S_msrSingleTremolo singleTremolo);
805 
806  // dynamics
807 
808  string dynamicsAsLilypondString (
809  S_msrDynamics dynamics);
810 
811  // string tuning
812  string stringTuningAsLilypondString (
813  int inputLineNumber,
814  S_msrStringTuning stringTuning);
815 
816  // harp pedals tuning
817 
818  string harpPedalTuningAsLilypondString (
819  msrAlterationKind alterationKind);
820 
821  // transpose
822 
823  void transposeDiatonicError (
824  int inputLineNumber,
825  int transposeDiatonic,
826  int transposeChromatic);
827 
828  // harmonies
829 
830  bool fPowerChordHaveAlreadyBeenGenerated;
831  // to generate it only once
832 
833  string harmonyAsLilypondString (
834  S_msrHarmony harmony);
835 
836  string harmonyDegreeAlterationKindAsLilypondString (
837  msrAlterationKind harmonyDegreeAlterationKind);
838 
839  // frames
840 
841  string frameAsLilypondString (
842  S_msrFrame frame);
843 
844  // figured bass
845 
846  string figureAsLilypondString (
847  S_msrFigure figure);
848  string figuredBassAsLilypondString (
849  S_msrFiguredBass figuredBass);
850 
851  S_msrFiguredBass fCurrentFiguredBass;
852  unsigned int fCurrentFiguredBassFiguresCounter;
853 
854  private:
855 
856  S_msrOah fMsrOah;
857  S_lpsrOah fLpsrOah;
858 
859  indentedOstream& fLogOutputStream;
860  indentedOstream& fLilypondCodeOstream;
861 
862  // the LPSR score we're visiting
863  // ------------------------------------------------------
864  S_lpsrScore fVisitedLpsrScore;
865 
866  // header handling
867  // ------------------------------------------------------
868  bool fOnGoingHeader;
869 
870  // score
871  // ------------------------------------------------------
872  S_msrScore fCurrentMsrScoreClone;
873 
874  // part groups
875  // ------------------------------------------------------
876  // JMI S_msrPartGroup fCurrentMsrPartGroupClone;
877 
878  // parts
879  // ------------------------------------------------------
880  S_msrPart fCurrentPart; // JMI jamais visitee
881 
882  // clefs
883  // ------------------------------------------------------
884  S_msrClef fCurrentVoiceClef;
885 
886  // time
887  // ------------------------------------------------------
888  bool fVoiceIsCurrentlySenzaMisura; // JMI
889  bool fOnGoingVoiceCadenza;
890 
891  // staves
892  // ------------------------------------------------------
893  // prevent clef, key and time from being handled twice
894  bool fOnGoingStaff;
895 
896  // voices
897  // ------------------------------------------------------
898  bool fOnGoingVoice;
899  S_msrVoice fCurrentVoice;
900 
901  bool fOnGoingHarmonyVoice;
902  bool fOnGoingFiguredBassVoice;
903 
904  // octaves entry
905  // ------------------------------------------------------
906  /* this reference is:
907  mobile in relative mode
908  unused in absolute mode
909  fixed in fixed mode
910  */
911  S_msrNote fCurrentOctaveEntryReference;
912  void setCurrentOctaveEntryReferenceFromTheLilypondOah ();
913 
914  // repeats
915  // ------------------------------------------------------
916  list<S_lpsrRepeatDescr>
917  fRepeatDescrsStack;
918 
919  // rest measures
920  // ------------------------------------------------------
921  int fRemainingRestMeasuresNumber;
922  bool fOnGoingRestMeasures;
923 
924  // segments
925  // ------------------------------------------------------
926 
927  // measures
928  // ------------------------------------------------------
929  // we need to count the measures
930  // for option fSeparatorLineEveryNMeasures and bar number checks,
931  // since measure numbers can actually be any strings
932  int fCurrentVoiceMeasuresCounter;
933 
934  // notes
935  // ------------------------------------------------------
936  bool fOnGoingNote;
937 
938  // stems
939  msrStem::msrStemKind fCurrentStemKind;
940 
941  // double tremolos
942  // ------------------------------------------------------
943 
944  // octave shifts
945  // ------------------------------------------------------
946  void generateCodeForOctaveShift (
947  S_msrOctaveShift octaveShift);
948 
949  // chords
950  // ------------------------------------------------------
951  list<int> fPendingChordMemberNotesStringNumbers;
952  bool fOnGoingChord;
953 
954  void generateCodeBeforeChordContents (S_msrChord chord);
955  void generateCodeForChordContents (S_msrChord chord);
956  void generateCodeAfterChordContents (S_msrChord chord);
957 
958  void generateChordInGraceNotesGroup (S_msrChord chord);
959 
960 
961  // tuplets
962  // ------------------------------------------------------
963 // JMI S_msrTuplet fCurrentMsrTupletClone;
964  stack<S_msrTuplet> fTupletsStack;
965 
966  // stanzas
967  // ------------------------------------------------------
968  S_msrStanza fCurrentStanzaClone;
969  bool fGenerateCodeForOngoingNonEmptyStanza;
970 
971 
972  // syllables
973  // ------------------------------------------------------
974  S_msrSyllable fCurrentMsrSyllableClone;
975 
976 
977  // score blocks
978  // ------------------------------------------------------
979  bool fOnGoingScoreBlock; // JMI
980 
981 
982  // parallel music
983  // ------------------------------------------------------
985  fCurrentParallelMusicBLock;
986 
987 
988  // part group blocks
989  // ------------------------------------------------------
990  int fNumberOfPartGroupBlocks;
991  int fPartGroupBlocksCounter;
992 
993 
994  // part blocks
995  // ------------------------------------------------------
996  int fNumberOfPartGroupBlockElements;
997  int fPartGroupBlockElementsCounter;
998 
999 
1000  // staff blocks
1001  // ------------------------------------------------------
1002  int fNumberOfStaffBlocksElements;
1003  int fStaffBlocksCounter;
1004 
1005 
1006  // current ongoing values display
1007  // ------------------------------------------------------
1008  void displayCurrentOnGoingValues ();
1009 };
1010 
1011 
1012 }
1013 
1014 
1015 #endif
MusicXML2::lpsrScore
Definition: lpsrScores.h:58
MusicXML2::lpsr2LilypondTranslator
Definition: lpsr2LilypondTranslator.h:352
MusicXML2::lpsrRepeatDescr
Definition: lpsr2LilypondTranslator.h:27
MusicXML2::smartable
the base class for smart pointers implementation
Definition: smartpointer.h:29
MusicXML2::SMARTP
the smart pointer implementation
Definition: smartpointer.h:58
MusicXML2::visitor
Definition: visitor.h:27
MusicXML2::lpsrVarValAssoc
Definition: lpsrVarValAssocs.h:32
rational
Rational number representation.
Definition: rational.h:25
MusicXML2::indentedOstream
Definition: utilities.h:213