Get foreach for meta_query value

Don’t implode $artistNames. The value meta_query argument will take an array if you use any of several compare arguments. You need IN, I believe.

value (string|array) – Custom field value. It can be an array only
when compare is ‘IN’, ‘NOT IN’, ‘BETWEEN’, or ‘NOT BETWEEN’….

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

Assuming that $artistNames is an array of ids you can use it directly.

$args = array(
    'post_type' => array ( 'songs', 'videos' ),
    'meta_query' => array(
        array(
            'key' => 'artist_name',
            'value' => $artistNames,
            'compare' => 'IN'
        )
    )
);

And in fact, it looks like you can skip that first foreach that generates $artistNames and just use $my_id.

$args = array(
    'post_type' => array ( 'songs', 'videos' ),
    'meta_query' => array(
        array(
            'key' => 'artist_name',
            'value' => $my_id,
            'compare' => 'IN'
        )
    )
);