IVca. Custom Ringtones
First and foremost, for this to even be possible you have to 'hack' your file system using 'IVc. Filesystem Access'. This tutorial assumes you have already completed that other tutorial.
Ok, if you have filesystem access, ringtones are almost a breeze. Let's go over the types of ringtones that we can have (Italizized members are not confirmed yet):
Audio
--------
*.mp3
*.midi
*.ogg
Video
--------
*.3gp
*.3g2
Since I have currently only experimented with *.mp3 myself (and because it is the most common one) we will do that.
What you will need:
--------
-Your phone
-USB Cable (should have been supplied with phone)
-Filesystem Access (see 'IVc. Filesystem Access')
-Bitpim (see 'IVc. Filesystem Access')
-A text editor (Notepad will serve)
-Your source audio file
-
Audacity (If your *.mp3 is not properly formated)
-
Lame MP3 Encoder For exporting from Audacity to *.mp3
Ok, first off, we need to make sure our file is the correct format. I am assuming that the length limit for a ringtone is 30 seconds (though this is not confirmed.) What you need to do is open your desired sound file into Audacity, and crop it to 30 seconds or less. The easiest way to do this is to either select regions you don't want and delete them, or select the region you do want, Trim it (Ctrl+T), and then go Track -> Align Tracks -> Align with zero.
Now you need to save your file. So go to File -> Export...A save file dialog should popup, make sure you save as an mp3 and it is _very important_ that you click the options box before you save. In here make sure that the Bit Rate Mode is set to Constant, the Quality is 64kbps, and Channel Mode is Stereo. (I will be looking into other options in the future, but this is the most compatible one.) Now you may save your file.
If anything was unclear up to this point, you should be able to find some Audacity tutorials floating around, or are free to use another program. The bottom line is you need an mp3 file 30 seconds in length at 64kbps constant bitrate. Also make sure you name it something simple like 'MyRingtone.mp3' no fancy characters, spaces, and long file names.
That was the easy part, now you need to get the files into the phone.
For an audio ringtone there are 3 files we are interested in:
1. The ringtone itself
2. The indexing file
3. The xml indexing file
For #2 we have to construct a file which will tell the phone where our ringtone is, how big it is, etc. This file we will make/copy in the following directory (browse to it in Bitpim) '/brew/mod/obione/jas/index' In this folder you should see a few text files. Any content on your phone such as ringtones (or say java aps) are each indexed here as a separate text file saved incrementally. So if you have downloaded anything in the past, you should see some files: 1.txt, 2.txt, 3.txt,... and you can copy one of those (that was previously another ringtone, to do this, right click on the file and save it to your computer, open it up and see if it has FDMN set to Ringtones and Type set to audio/mp3 like the below) and work off that, or you will copy my example below and save it as 1.txt. So the important thing to note here is you will want to incrementally save your ringtones, and as such it is best you do them
one at a time lest we make any crucial mistakes. To reilliterate, if you already have files up to say, 12.txt, you will want your custom ringtone to be saved as 13.txt. Easy enough? I thought so. Let's look at the file we have to save:
CONF: 1
COSH: 1
TYPE: audio/mp3
SIZE: 129076
FEXT:
ENCO:
TPID: 1
OWNR: 1
VRNG: 0
PATH: mmc1/jas/content/1.gc
FDNM: Ringtones
SUBD:
DOMA: 0
SGLE: 0
ROLE: 0
MMSK: 0000000064
CATE: 1
STAT: 2
COID:
DURL:
NAME: YourRingtoneName
VEND: YourVendorName
TIME: 1231595721
ICON:
ISIZ: 0
FLCK: 1
If you are starting with a new ringtone and don't have a downloaded one to work off of, copy everything in italics above to a new text file the CONF: 10 line should be on the very first line of the text file, and
you will have to add a manual 'hard return' after FLCK: 1 so that there is a single blank space on the last line of your file. I am not sure if this is neccisary, but it's better safe than sorry.
The things we are concerned about changing here are the PATH to match the same number that you will be saving your index file to (so if you are saving to 13.txt, this will need to be changed to 'mmc1/jas/content/13.gc')
CONF and COSH should also be set to the number you use above.
SIZE Does not seem to matter, though it is the kb size of your ringtone (leave this as is)
NAME: You may change to a simple name that will show up as your ringtone name, keep it simple!
VEND: This name will show up as the vendor name, again keep it simple!
I will be exploring other parts of this file structure in the future so stay tuned! But for now, once you have made your changes, save the file to 1.txt (or your equivalent). Now we will put our index file on the phone.
Right click on the file listing area in bitpim and select from the popup menu 'new file' Browse to your index text file (ie: '1.txt') and 'open' it. Your file should be added to the list. Now we are getting somewhere!
Now we have to take care of #3 and #1, they both reside in the same directory, which is the one you specified for the PATH. So navigate to '/mmc1/jas/content/' and again, if you have already downloaded things you should see a list of files. Each file will have a pair, Java aps have *.jar and *.jad, ringtones will have *.gc and *.dd.
So now we will need to create #3, which is much easier than #2 thankfully.
<media xmlns="http://www.openmobilealliance.org/xmlns/dd">
<objectURI>http://www.google.ca/Whatever.dm</objectURI>
<size>128603</size>
<type>audio/mp3</type>
<type>application/vnd.oma.drm.message</type>
<vendor>YourVendorName</vendor>
<name>YourRingtoneName</name>
<installNotifyURI>http://www.google.ca/DummyUrl</installNotifyURI>
<NextURL>http://www.google.ca/next</NextURL>
</media>
Again, copy this to a new text file. The media line should be on the first line of the text file and once again, there should be a hard return after </media> meaning there is a blank space. All you have to change here is YourVendorName and YourRingtoneName to match what you put in #2 (the index file we made above.) Once that is done save this file as 1.dd (or the numerical equivalent you are working with.) You will then want to put this file as well as the ringtone (that will need to be renamed to 1.gc (or again, numerical equivalent) into this folder. (an interesting side note here is that QPST cannot seem to access this directory even with the MSL code.)
At this point, close Bitpim, unplug your USB cable, and reboot your phone (hold the end call button to turn it off, then turn it back on) If all went well, you should see your new ringtone listed under 'My Content' when you go to assign a ringtone (they will also show up on the 'Ringtones' section of 'My Files'.
If you had any problems up to this point, feel free to post, I certainly didn't get it working the first time around myself obviously, it took me a few weeks to get this far, but now that I have a method down, I can create new ones in a few minutes.
Credits go to some of the other Samsung phone threads out there and all the information contained within that gave me a basis for this information and a starting point as to where I could go to figuring all of this out.
Bookmarks