help using find/xargs to apply mp3gain to files

I need to apply mp3gain (album mode) to all mp3 files in a given directory. Each album is in its own directory under /media/data/music/albums for example:

/media/data/music/albums/foo
/media/data/music/albums/bar
/media/data/music/albums/more

What needs to happen is:

cd /media/data/music/albums/foo && mp3gain -a -k -p *.mp3
cd /media/data/music/albums/bar && mp3gain -a -k -p *.mp3
cd /media/data/music/albums/more && mp3gain -a -k -p *.mp3

I want to use find and xargs to do this but am unsure how to craft the right syntax. I have used the this construct to accomplish tasks like this before, but this won't do both the cd into the dir and then run the mp3gain command.

find /media/data/music/album -type d -print0 | xargs -0 cd {} && mp3gain -a -k -p *.mp3

Thanks!

Why not just pipe it into a while:

find /path -type d | while read dir
do
    cd $dir &&  command *.mp3
done

To ensure mp3gain process .mp3 files only in those directories that contain mp3 files, the first while loop + sort -u will single out the these directories. The second while loop will then cd into each of the directory to run mp3gain. I use sub-shell to cd to the directory so that I do not have to 'cd ..' back.

find /media/data/music -type f -name "*.mp3" | 
while read f
do
  echo ${f%/*}
done | sort -u | while read d
do 
  (cd $d && mp3gain -a -k -p *.mp3)
done

Similarly, but assuming no knowledge of subdirectories and paranoia about empty directories or filenames containing spaces:

ls -1d /media/data/music/albums/* 2>/dev/null | while read dir
do
        if [ -d "${dir}" ]
        then
               cd "${dir}"
               ls -1d *.mp3 2>/dev/null | while read filename
               do
                           if [ -f "${filename}" ]
                           then
                                 mp3gain -a -k -p "${filename}"
                           fi
               done
        fi
done

Nice, thanks for the suggestions!