Programs don't look for user data files in the directory where the executable is located¹. They sometimes look for configuration files or static data files in the same directory (but it isn't very common). But user data and installed programs are hardly ever in the same directories — programs are usually in system directories where users aren't allowed to write, and users' files are usually under their home directories.
When you pass a file name to a program, it's interpreted as a file name in the current working directory. Every process has a current working directory, and it's part of the process's environment, not associated to a particular program. You normally start in your home directory, and you can use the shell command
cd to go to another directory. Any program started from the shell inherits the shell's current directory.
When you run
play applause.mp3, this looks for a file called
applause.mp3 in the current directory. The directory where the
play executable is located is irrelevant.
If you want to use a file name that works no matter what the current directory is, pass an absolute file name (beginning with a
/). In a shell script or on the command line, you can use the abbreviation
~ at the beginning to refer to your home directory. For example
play ~/music/applause.mp3 runs
play on the file called
applause.mp3 located in the subdirectory called
music of your home directory.
¹ They can, but they hardly ever do.