Okay, as far as I can tell, the problem with the music going from level 1 to level 2 is the fault of timidity. Timidity is used by SDL_mixer to play the MIDI scores, but when timidity is converting the score, if it runs out of memory, it tries to exit the program instead of simply not playing the music. Go fig. Anywho, trying to exit on Duke3D blows up, which is why it hangs when it tries to convert the score for level 2. I haven't figured out a way to limit the memory or flush the memory in use (sound effects). So music is a no-go at the moment.
On the plus side, this test version has the speed bumped to 333MHz, which makes the sound effects conversion less noticeable, and the game a bit smoother. I also added TV support to SDL, so now you can play Duke3D on the TV on the Slim. When you start the app, hold down the TRIANGLE button. You'll get a set of message dialogs asking about what video settings you want SDL to use. If you don't have a Slim, don't have the dvemgr.prx, or don't have a cable, it only asks if you wish to make the display wide screen (480x272) or not (364x272) on the LCD. That's good if you want to play Duke3D in the original aspect ratio.
If you have a Slim, the dvemgr.prx, and a cable, then you get asked if you wish to use the TV output, if you wish to do interlaced output (if you have the component cable - composite is ALWAYS interlaced), if your TV is 16 : 9 (HDTV), and if you wish to make the display widescreen. Just try a few different settings to see how it works. It writes this data to a prefs file so that the next time you run the app, it'll use those same settings (unless you hold TRI again).
So here's test 4:
http://www.mediafire.com/download.php?mvzzye0amqi