 	# parses marktab chords into tabMap
 	# example: parseChord("(6:8 5:6)") => { 5:[6], 6:[8] }
 	parseChord: (chord) ->
-		console.log(chord)
 		result = {}
 		notesLine = chord.substr(1, chord.length-2)# remove parenthesis
 		notes = notesLine.split(" ")

		while i < input.length
			part = input.substr(i, input.length-i)# get rest of line
			tabMapPart = {}
			if part.search(chordPattern) is 0
				# chord
				i += part.match(chordPattern).length
				tabMapPart = this.parseChord(part)
			else if part.search(notePattern) is 0
				# note
				i += part.match(notePattern).length
				tabMapPart = this.parseNotes(part)
				lastString = parseInt(_.keys(tabMapPart), 10)
			else if part.search(restPattern) is 0
				# rest
				i += part.match(restPattern).length
				tabMapPart = {1: [undefined]}
			else if part.search(hammerPattern) is 0
				# hammer-on
				if !lastString
					throw "invalid hammer-on"
				i += part.match(hammerPattern).length
				tabMapPart[lastString] = []
				tabMapPart[lastString][i] = "h"
			else if part.search(pullOffPattern) is 0
				# pull-off
				if !lastString
					throw "invalid pull-off"
				i += part.match(pullOffPattern).length
				tabMapPart[lastString] = []
				tabMapPart[lastString][i] = "p"
			else if part.search(slideUpPattern) is 0
				# slide-up
				if !lastString
					throw "invalid slide-up"
				i += part.match(sliceUpPattern).length
				tabMapPart[lastString] = []
				tabMapPart[lastString][i] = "/"
			else if part.search(slideDownPattern) is 0
				# slide-down
				if !lastString
					throw "invalid slide-down"
				i += part.match(slideDownPattern).length
				tabMapPart[lastString] = []
				tabMapPart[lastString][i] = "\\"
			else if part.search(singleNotePattern) is 0
				# single note
				if !lastString
					throw "invalid single note"
				i += part.match(singleNotePattern).length
				tabMapPart[lastString] = []
				tabMapPart[lastString][i] = parseInt(part, 10)
			else if part.search(riffPattern) is 0
				# riff
				i += part.match(riffPattern).length
				tabMapPart = this.parseRiff(part)
				# this.mergeTabMaps(tabMap, tabMapPart)
				# continue

	slideDownPattern = /\\/
	chordPattern = /\([0-9\s:]+\)/
	riffPattern = /\[.*\]/
	ignorePattern = /[\s\n]/
	
	constructor: (@lines = [], @stringNames = stringNameDefaults) ->
		# @lines contains an array of parsed lines, ready to be output
