anchor.diff:  	item_state = "violin"
   	force = 10
   	var/datum/song/song
  -	var/playing = 0
  -	var/help = 0
  -	var/edit = 1
  -	var/repeat = 0
  +	var/playing = 0			// if we're playing
  +	var/help = 0			// if help is open
  +	var/edit = 1			// if we're in editing mode
  +	var/repeat = 0			// number of times remaining to repeat
  +	var/max_repeats = 10	// maximum times we can repeat
   
   /obj/item/device/violin/proc/playnote(var/note as text)
   	//world << "Note: [note]"
  
positive.code: 					sleep(song.tempo / text2num(notes[2]))
  				else
  					sleep(song.tempo)
  		if(repeat > 0)
  			repeat-- //Infinite loops are baaaad.
  	while(repeat > 0)
  	playing = 0
  
  /obj/item/device/violin/attack_self(mob/user as mob)
  	if(!isliving(user) || user.stat || user.restrained() || user.lying)	return
  	user.set_machine(src)
  
  	var/dat = "<HEAD><TITLE>Violin</TITLE></HEAD><BODY>"
  
  	if(song)
  		if(song.lines.len > 0 && !(playing))
  			dat += "<A href='?src=\ref[src];play=1'>Play Song</A><BR><BR>"
  			dat += "<A href='?src=\ref[src];repeat=1'>Repeat Song: [repeat] times.</A><BR><BR>"
  		if(playing)
  			dat += "<A href='?src=\ref[src];stop=1'>Stop Playing</A><BR>"
  			dat += "Repeats left: [repeat].<BR><BR>"
  	if(!edit)
  		dat += "<A href='?src=\ref[src];edit=2'>Show Editor</A><BR><BR>"
  	else
  		dat += "<A href='?src=\ref[src];edit=1'>Hide Editor</A><BR>"
  		dat += "<A href='?src=\ref[src];newsong=1'>Start a New Song</A><BR>"
  		dat += "<A href='?src=\ref[src];import=1'>Import a Song</A><BR><BR>"
  		if(song)
  			var/calctempo = (10/song.tempo)*60
  			dat += "Tempo : <A href='?src=\ref[src];tempo=10'>-</A><A href='?src=\ref[src];tempo=1'>-</A> [calctempo] BPM <A href='?src=\ref[src];tempo=-1'>+</A><A href='?src=\ref[src];tempo=-10'>+</A><BR><BR>"
  			var/linecount = 0
  			for(var/line in song.lines)
  				linecount += 1
  				dat += "Line [linecount]: [line] <A href='?src=\ref[src];deleteline=[linecount]'>Delete Line</A> <A href='?src=\ref[src];modifyline=[linecount]'>Modify Line</A><BR>"
  			dat += "<A href='?src=\ref[src];newline=1'>Add Line</A><BR><BR>"
  		if(help)
  			dat += "<A href='?src=\ref[src];help=1'>Hide Help</A><BR>"
  			dat += {"
  					Lines are a series of chords, separated by commas (,), each with notes seperated by hyphens (-).<br>
  					Every note in a chord will play together, with chord timed by the tempo.<br>
  
negative.code: 
  	hearers(15, get_turf(src)) << sound(soundfile)
  
  /obj/item/device/violin/proc/playsong(mob/user as mob)
  	while(repeat >= 0)
  		var/cur_oct[7]
  		var/cur_acc[7]
  		for(var/i = 1 to 7)
  