I dont think it is relevant with a no sound port, as there will always be given a string as targetSound. I would say to trigger the same out port in all cases.
We do ofcause need the type 'sound'. I will add it to the list of dynamic types. You should then change this one into the type 'sound' instead of string
table.insert(GHI_ProvidedDynamicActions,{local targetSound = dyn.GetInput("sound")dyn.TriggerOutPort("playsound")dyn.TriggerOutPort("nosound")ports = {playsound = {nosound = {inputs = {sound = {outputs = {placeholder = {table.insert(GHI_ProvidedDynamicActions,{local targetSound = dyn.GetInput("sound")local range = dyn.GetInput("range")ports = {playsound = {nosound = {inputs = {sound = {range ={outputs = {placeholder = {