The pattern I have observed in CLIs that I use on a regular basis (Unix/Cygwin, perforce, ant, etc) is: "sub-commands" go first, required arguments go on the command line as-is; optional args go with option flags. For example:
cp file-1 file-2
Both files are required arguments.
There are no required args, but three options that themselves pass no values are specified for how the command operates.
rm -rf tmp
"tmp" is a required argument (the directory to remove); "r" and "f" are options to the "rm" command.
p4 integrate -i //some/place //some/other/place
p4 (perforce) is the command, integrate is the operation (sub-command), -i is an optional argument with no value, and //some/place and //some/other/place are required args.
ant -f my_build.xml compile
"ant" is the command, "compile" is the operation, and "-f my_build.xml" means override the default build file with this one. Note that the argument here (-f) takes a value so its syntax differs from the ones above that didn't.
One thing to be noted from all this is that you need to understand your default behavior. Is everything you've listed really required to be explicit, for example, or does your program default type or genre? Relatedly, are IDs unique and, if so, do you actually need to specify song vs. album? Can't you tell without the user saying it?
Another thing to be noted is that applications can have "sub-commands", e.g. perforce (p4) has several operations, like "edit", "integrate", and "delete", that come on the command line right after the application name. Do you have several "manage" operations, or is genre the only thing you can operate on?
Depending on the answers to these questions, the following command lines seem plausible:
manage add -genre "vocal" 12345 (add new song)
manage add 24680 (assign default genre)
manage change -genre "pop" 12345 (song is already in system)
manage add -group "top-40" 12345 (add this song to a collection, distinct from genre)
On Unix flags go after the command/sub-command and before positional arguments. You haven't said what systems your users are used to or what your application will be running on, but you should be consistent with whatever is normal in their environment.