| 
					
				 | 
			
			
				@@ -613,14 +613,18 @@ export class VexFlowMusicSheetCalculator extends MusicSheetCalculator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   protected createMetronomeMark(metronomeExpression: InstantaneousTempoExpression): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const vfStave: Vex.Flow.Stave = (this.graphicalMusicSheet.MeasureList[0][0] as VexFlowMeasure).getVFStave(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // note: sometimes MeasureNumber is 0 here, e.g. in Christbaum, maybe because of pickup measure (auftakt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const measureNumber: number = Math.max(metronomeExpression.ParentMultiTempoExpression.SourceMeasureParent.MeasureNumber - 1, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const staffNumber: number = Math.max(metronomeExpression.StaffNumber - 1, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const firstMetronomeMark: boolean = measureNumber === 0 && staffNumber === 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const vfStave: Vex.Flow.Stave = (this.graphicalMusicSheet.MeasureList[measureNumber][staffNumber] as VexFlowMeasure).getVFStave(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //vfStave.addModifier(new Vex.Flow.StaveTempo( // needs Vexflow PR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let vexflowDuration: string = "q"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (metronomeExpression.beatUnit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const duration: Fraction = NoteTypeHandler.getNoteDurationFromType(metronomeExpression.beatUnit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       vexflowDuration = VexFlowConverter.duration(duration, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // const noteType: NoteType = NoteTypeHandler.StringToNoteType(metronomeExpression.beatUnit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vfStave.setTempo( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           bpm: metronomeExpression.TempoInBpm, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -630,9 +634,9 @@ export class VexFlowMusicSheetCalculator extends MusicSheetCalculator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.rules.MetronomeMarkYShift * unitInPixels); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // -50, -30), 0); //needs Vexflow PR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //.setShiftX(-50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const xShift: number = firstMetronomeMark ? this.rules.MetronomeMarkXShift * unitInPixels : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (<any>vfStave.getModifiers()[vfStave.getModifiers().length - 1]).setShiftX( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.rules.MetronomeMarkXShift * unitInPixels 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      xShift 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // TODO calculate bounding box of metronome mark instead of hacking skyline to fix lyricist collision 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const skyline: number[] = this.graphicalMusicSheet.MeasureList[0][0].ParentStaffLine.SkyLine; 
			 |