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
22namespace MusicXML2
23{
24
25//________________________________________________________________________
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};
91EXP 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
the smart pointer implementation
Definition: smartpointer.h:58
Definition: utilities.h:213
Definition: lpsr2LilypondTranslator.h:352
Definition: lpsrScores.h:58
Definition: lpsrVarValAssocs.h:32
the base class for smart pointers implementation
Definition: smartpointer.h:29
Definition: visitor.h:27
Rational number representation.
Definition: rational.h:25
Definition: lpsr2LilypondTranslator.h:27