anchor.diff:  		else if(href_list["stop"])
   			playing = 0
   
  -		else if(href_list["help"])
  -			help = text2num(href_list["help"]) - 1
  -
  -		else if(href_list["edit"])
  -			edit = text2num(href_list["edit"]) - 1
  -
  -		else if(href_list["import"])
  -			var/t = ""
  -			do
  -				t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t)  as message)
  -				if(!in_range(src, usr))
  -					return
  -
  -				if(lentext(t) >= 3072)
  -					var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
  -					if(cont == "no")
  -						break
  -			while(lentext(t) > 3072)
  -
  -			//split into lines
  -			spawn()
  -				var/list/lines = text2list(t, "\n")
  -				var/tempo = 5
  -				if(copytext(lines[1],1,6) == "BPM: ")
  -					tempo = 600 / text2num(copytext(lines[1],6))
  -					lines.Cut(1,2)
  -				if(lines.len > 50)
  -					usr << "Too many lines!"
  -					lines.Cut(51)
  -				var/linenum = 1
  -				for(var/l in lines)
  -					if(lentext(l) > 50)
  -						usr << "Line [linenum] too long!"
  -						lines.Remove(l)
  -					else
  -						linenum++
  -				song = new()
  -				song.lines = lines
  -				song.tempo = tempo
  -
  -	add_fingerprint(usr)
  -	for(var/mob/M in viewers(1, loc))
  -		if((M.client && M.machine == src))
  -			attack_self(M)
  -	return+	interact(usr)
  +	return
  
positive.code: 	item_state = "violin"
  	force = 10
  	var/datum/song/song
  	var/playing = 0
  	var/help = 0
  	var/edit = 1
  	var/repeat = 0
  
  /obj/item/device/violin/proc/playnote(var/note as text)
  	//world << "Note: [note]"
  
negative.code: 					A pause may be denoted by an empty chord: <i>C,E,,C,G</i><br>
  					To make a chord be a different time, end it with /x, where the chord length will be length<br>
  					defined by tempo / x: <i>C,G/2,E/4</i><br>
  					Combined, an example is: <i>E-E4/4,F#/2,G#/8,B/8,E3-E4/4</i>
  					<br>
  					Lines may be up to 50 characters.<br>
  					A song may only contain up to 50 lines.<br>
  					"}
  		else
  			dat += "<B><A href='?src=\ref[src];help=2'>Show Help</A></B><BR>"
  
  	var/datum/browser/popup = new(user, "apc", name)
  	popup.set_content(dat)
  	popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
  	popup.open()
  	return
  
  /obj/item/device/violin/Topic(href, href_list)
  	if(!in_range(src, usr) || issilicon(usr) || !isliving(usr) || !usr.canmove || usr.restrained())
  		usr << browse(null, "window=violin")
  		usr.unset_machine()
  		return
  
  	add_fingerprint(usr)
  
  	if(href_list["newsong"])
  		song = new()
  
  	else if(href_list["import"])
  		var/t = ""
  		do
  			t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t)  as message)
  			if(!in_range(src, usr))
  				return
  
  			if(lentext(t) >= 3072)
  				var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
  				if(cont == "no")
  					break
  		while(lentext(t) > 3072)
  
  		//split into lines
  		spawn()
  			var/list/lines = text2list(t, "\n")
  			var/tempo = 5
  			if(copytext(lines[1],1,6) == "BPM: ")
  				tempo = 600 / text2num(copytext(lines[1],6))
  				lines.Cut(1,2)
  			if(lines.len > 50)
  				usr << "Too many lines!"
  				lines.Cut(51)
  			var/linenum = 1
  			for(var/l in lines)
  				if(lentext(l) > 50)
  					usr << "Line [linenum] too long!"
  					lines.Remove(l)
  				else
  					linenum++
  			song = new()
  			song.lines = lines
  			song.tempo = tempo
  			interact(usr)		// make sure updates when complete
  
  	else if(href_list["help"])
  		help = text2num(href_list["help"]) - 1
  
  	else if(href_list["edit"])
  		edit = text2num(href_list["edit"]) - 1
  
  	else if(song)
  		if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops.
  			if(playing)
  				return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing.
  			repeat += round(text2num(href_list["repeat"]))
  			if(repeat < 0)
  				repeat = 0
  			if(repeat > max_repeats)
  				repeat = max_repeats
  
  		else if(href_list["tempo"])
  			song.tempo += text2num(href_list["tempo"])
  			if(song.tempo < 1)
  				song.tempo = 1
  			if(song.tempo > 600)
  				song.tempo = 600
  
  		else if(href_list["play"])
  			if(song)
  				playing = 1
  				spawn()
  					playsong(usr)
  
  		else if(href_list["newline"])
  			var/newline = html_encode(input("Enter your line: ", "violin") as text|null)
  