|
|
The Siemens Gigaset Polyphonic Ringtone PSF File Format
Way back in July, I wrote my
Siemens Gigasets & Inability To Create Ringtones post. I know I'm not the only
one still upset that it's so hard to convert ringtones into the mystery Siemens
format, because I can see from my query logs how people are coming to the page,
entering things like "psf ringtones siements." In a bit of good news, I heard from an anonymous reader who passed along the
specs. They want the info out in public in hopes that someone can use it to make
a converter. So here you go -- and if anyone does make a converter, please let
me know! Here's what he sent:
Notes
- This format was extracted from five known PSF files from Siemens and
tested on S44 model
- The MIDI families used is the device seem to be standard (for example: 0xA
- drums)
General Issues
- Any PSF file is a set of 16-bit words. These words must be written to the
file in reversed bytes order. For example, if one has 0xDCBA, then the file
contains 0xBADC. In the description I shall use notation 0xDCBA.
- I shall use the following notation for 16-bit fields FEDCBA9876543210
where 0 stands for less significant bit and F stands
for most significant bit.
- PSF file consists of the header and the body. The body follows the header
immediately.
Header Structure
- 0xF010: 1 word (signature)
- Tracks_number: 1 word. (not more then 512)
- Tempo: 1 word.
- Instruments used : Tracks_number words. Each
word has format 0x00YZ, where Y stands for a family, and Z stands for the
device inside the family. Thus, not more than 16 families each containing 16
devices can be used. Each family or device can be used several times in any
order.
- Tracks_offsets: Tracks_number words. Offsets must be calculated from the
end of the header. Thus, the first offset always equals 0x0000.
Body Stucture
- The body contains Tracks_number records, following each other immediately.
Zero word must be written after the last record, i.e. 0x0000 : word (End_Of_File).
Record Structure
- Start_record: 1 word. This is a bit field. Bits FEDCBA987 contain the
record subsequent number (from 0). Bits 3210 (i.e. the lowest tetrade) contain
track volume. Zero value corresponds to the highest volume. All other bits
must be zero.
- Sounds and pauses: arbitrary number of words. Each word is a bit field.
The sound word has the following structure. Bits 3210 (i.e. the lowest tetrade)
contain note. The following coding scheme is used:
C_PSF=0x0F, CIS_PSF=0x01, D_PSF=0x02, DIS_PSF=0x03, E_PSF=0x05, F_PSF=0x06,
FIS_PSF=0x07, G_PSF=0x09, GIS_PSF=0x0A, A_PSF=0x0B, AIS_PSF=0x0D, H_PSF=0x0E
- Bits 987654 contain sound duration. Thus, it is measured in 1/64
- Bits CBA contain octave number. The following coding scheme is used
BIG_OCTAVE=2, SMALL_OCTAVE=3, FIRST_OCTAVE=4, SECOND_OCTAVE=5, THIRD_OCTAVE=6,
FOURTH_OCTAVE=7
- Bits FED must be zero
- The pause word has the following structure
- Bits 3210 (i.e. the lowest tetrade) contain 0x0C.
- Bits 987654 contain pause duration
- All other bits must be zero
- 0x4000 : word (End_record).
Significant Note
- Each track has to start with some pause, at
least 1/64 (i.e. word 0x001C)
By Danny Sullivan on Mar. 31, 2006
| Permalink
See related posts in:
Gadgets
Next Post: SES & SEW "Feeding" Off JupiterResearch
Previous Post: Another Reason To Hate British Airways
All Posts: Daggle Archives
Posts By Category: Daggle Categories
Return To: Daggle Home Page
Comments
Want to comment? If you are signed into
TypeKey, you'll see a form below.
No form? Click on the sign-in link below, and you can sign-in or sign-up for a
free account. Sorry you have to use TypeKey, but I use it to avoid comment spam.
All comments currently appear automatically after posting.
|
Subscribe!










Search
|
Leave a comment