anchor.diff:  					//to_chat(world, "note: [note]")
   					if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case
   						playing = FALSE
  -						hearers = null
  +						hearing_mobs = null
   						return
   					if(!lentext(note))
   						continue
  
positive.code: 	// and play
  	var/turf/source = get_turf(instrumentObj)
  	if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
  		hearers = list()
  		for(var/mob/M in get_hearers_in_view(15, source))
  			if(!M.client || !(M.client.prefs.toggles & SOUND_INSTRUMENTS))
  				continue
  			LAZYSET(hearers, M, TRUE)
  		last_hearcheck = world.time
  	if(LAZYLEN(hearers))
  		for(var/i in hearers)
  			var/mob/M = hearers[i]
  			M.playsound_local(source, soundfile, 100, falloff = 5)
  
  /datum/song/proc/updateDialog(mob/user)
  	instrumentObj.updateDialog()		// assumes it's an object in world, override if otherwise
  
negative.code: 	var/instrumentExt = "ogg"		// the file extension
  	var/obj/instrumentObj = null	// the associated obj playing the sound
  	var/last_hearcheck = 0
  	var/list/hearing_mobs
  
  /datum/song/New(dir, obj, ext = "ogg")
  	tempo = sanitize_tempo(tempo)
  