| 
					
				 | 
			
			
				@@ -109,7 +109,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               parentStaffEntry: SourceStaffEntry, parentMeasure: SourceMeasure, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               measureStartAbsoluteTimestamp: Fraction, maxTieNoteFraction: Fraction, chord: boolean, guitarPro: boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               printObject: boolean, isCueNote: boolean, stemDirectionXml: StemDirectionType, tremoloStrokes: number, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              stemColorXml: string, noteheadColorXml: string): Note { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              stemColorXml: string, noteheadColorXml: string, vibratoStrokes: boolean): Note { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.currentStaffEntry = parentStaffEntry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.currentMeasure = parentMeasure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //log.debug("read called:", restNote); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,7 +117,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.currentNote = restNote 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ? this.addRestNote(noteDuration, noteTypeXml, printObject, isCueNote, noteheadColorXml) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         : this.addSingleNote(noteNode, noteDuration, noteTypeXml, typeDuration, normalNotes, chord, guitarPro, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             printObject, isCueNote, stemDirectionXml, tremoloStrokes, stemColorXml, noteheadColorXml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             printObject, isCueNote, stemDirectionXml, tremoloStrokes, stemColorXml, noteheadColorXml, vibratoStrokes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // read lyrics 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const lyricElements: IXmlElement[] = noteNode.elements("lyric"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (this.lyricsReader !== undefined && lyricElements) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -346,7 +346,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   private addSingleNote(node: IXmlElement, noteDuration: Fraction, noteTypeXml: NoteType, typeDuration: Fraction, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         normalNotes: number, chord: boolean, guitarPro: boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         printObject: boolean, isCueNote: boolean, stemDirectionXml: StemDirectionType, tremoloStrokes: number, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        stemColorXml: string, noteheadColorXml: string): Note { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        stemColorXml: string, noteheadColorXml: string, vibratoStrokes: boolean): Note { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //log.debug("addSingleNote called"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let noteAlter: number = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let noteAccidental: AccidentalEnum = AccidentalEnum.NONE; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -440,6 +440,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let note: Note = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let stringNumber: number = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let fretNumber: number = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const bends: {bendalter: number, direction: string}[] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // check for guitar tabs: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const notationNode: IXmlElement = node.element("notations"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (notationNode) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -453,6 +454,16 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (fretNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           fretNumber = parseInt(fretNode.value, 10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const bendElementsArr: IXmlElement[] = technicalNode.elements("bend"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bendElementsArr.forEach(function (bend: IXmlElement): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const bendalterNote: IXmlElement = bend.element("bend-alter"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const releaseNode: IXmlElement = bend.element("release"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (releaseNode !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              bends.push({bendalter: parseInt (bendalterNote.value, 10), direction: "down"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              bends.push({bendalter: parseInt (bendalterNote.value, 10), direction: "up"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -461,7 +472,7 @@ export class VoiceGenerator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       note = new Note(this.currentVoiceEntry, this.currentStaffEntry, noteLength, pitch); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // create TabNote 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      note = new TabNote(this.currentVoiceEntry, this.currentStaffEntry, noteLength, pitch, stringNumber, fretNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      note = new TabNote(this.currentVoiceEntry, this.currentStaffEntry, noteLength, pitch, stringNumber, fretNumber, bends, vibratoStrokes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     note.TypeLength = typeDuration; 
			 |