term_link filter gives less atributes

You need to add the the fourth parameter, $accepted_args, to add_filter() to access the second and third parameters in your callback function. Only the first parameter ($url) is passed by default.

add_filter( 'term_link', 'authorsongsurl', 10, 3 );

The 3 in the end tells the filter to provide all the three parameters to your function.