Sunday, March 18, 2007

Adding Ringtones to a Treo 600 Mobile Phone

I love my Treo 600. I've had it for over two years, and I've resisted the urge to shell out $500 for the latest and greatest. However, there are a few things that bug me about it. One is that you can't forward individual text messages (it saves all the messages from the same person as a chat thread, and you have to copy the one you want out of the thread.) Another annoyance is that the camera resolution is lousy. A third issue is that its selection of ringtones stinks and there doesn't seem to be any good way to add more.

I decided to investigate and find out if there was a way to install ringtones. I wasn't able to figure out how to install MP3s as ringtones, but I did figure out how to install MIDI files. If you know how to install MP3s, please let me know.

Below is how the process works for MIDI files (on Windows XP with Palm Desktop Software 4.1 and of course a Treo 600). There is probably an easier way to do all this if you're subscribed to the Internet data service for the phone (which I'm not). Feel free to comment if you know of any shortcuts.

Step 1: Find or create a MIDI file.

There are a number of applications out that that convert MP3s to MIDIs. I tried a few of them, and the MIDIs sounded like junk. Fortunately there are other people out there who know how to create MIDIs, and they have made a lot of them available on the net. You can try a google search, or start here: http://rock.mididb.com/

Find a song that you like and download it to your computer.

Step 2: Grab the section of the MIDI file that you want.

When you download the MIDI file, it will typically be 3 to 5 minutes in length. That's OK, but it's a waste of space -- for a ringtone, all you really want is 30 seconds or so. And you may not want the ringtone to start with the beginning of the song. To carve out the segment of the song that you want to use for the ringtone, you can use this free software: Anvil Studio. You can find instructions for using it here.

Step 3: Install the MIDI file in your Palm Desktop.

To get the ringtone to show up on the phone, you have to add it to the list of ringtones that the phone knows about. There is a file that stores the list of ringtones, and you can access it through the Palm Desktop. To do that, I used another free application called the Palm MIDI Desktop. (Java required)

You are going to use the Palm MIDI Desktop to mess with the ringtone configuration file that your phone uses to know which ringtones to display in the drop down lists, so first make a backup copy of the configuration file on your computer. In my case, the Palm user is called "Nate", so the file to back up is C:\Palm\Nate\Backup\MIDI Ring Tones.pdb

Once you have the file backed up:
  • Download Palm MIDI Desktop from here.
  • Unzip and extract the Palm MIDI Desktop files
  • Run the Palm MIDI Desktop (you can also take a peek at the instructions in PalmMidiDesktop.html, which is part of the zip file)
  • Open a command prompt: Start Menu -> Run -> type in cmd
  • In the command prompt window, go to the directory where you unzipped the Palm MIDI Desktop files to. In my case I typed in cd C:\Documents and Settings\Owner\My Documents\My Music\midi_stuff\pmidi01
  • Run the Palm MIDI Desktop. Type in jview -cp:a PalmMidiDesktop.jar PalmMidiDesktop
  • The Palm MIDI Desktop should pop open
  • Using the Palm MIDI Desktop File->Open menu option, open MIDI Ring Tones.pdb, e.g. C:\Palm\Nate\Backup\MIDI Ring Tones.pdb
  • Using the Palm MIDI Desktop File->Import menu option, import the midi file(s) that you created
  • Using the Palm MIDI Desktop File->Save menu option, save the new MIDI Ring Tones.pdb
  • Exit the Palm MIDI Desktop
  • In Palm Desktop, click "Install" button (or View->Install)
  • Add MIDI Ring Tones.pdb
  • Click Done

Step 4: Sync the Treo with the Desktop.


If you don't know how to do this I don't know what you're doing with a Palm device.

Step 5: Select your new ringtone(s).

Go to Prefs->Sound->Tones: In the dropdown menus next to each option (e.g. "Known Caller Tones") your new file should show up! Select it and you're good to go! If it doesn't show up, sorry, you're hosed.

Bonus: Setting ringtones for an individual caller.

If you want a special ringtone to be associated with a specific caller, there is a way to do that. The caller has to be in your favorites (speed dial) list. (Which is a totally lame design. I'm hoping it's fixed in the later versions.)
  • Go to favorites, scroll to the person you want to associate with the new ringtone.
  • Go to Edit (using the dropdown menu or Menu->E)
  • Select "More"
  • Select the ringtone you want from the dropdown list

Enjoy!