filter get_children to return all mime types EXCEPT ‘x’

Looks like this is two questions: how to get all the children that are audio, and how to get all the children that aren’t audio.

1) The post_mime_type parameter of get_children can actually take a wildcard, so you could use:

$children = get_children(array(
     'post_parent' => $post->ID,
     'post_status' => 'inherit',
     'post_type' => 'attachment',
     'post_mime_type => 'audio/%'
));

2) You can’t do a mime-type exclusion using get_children, so you’re better off just filtering the whole list to exclude them that way. I think you’ve got the right idea, just use something like this to exclude all the different kinds of audio:

if ( ! strstr($mime, 'audio/') ) {  // ...etc