public class FrameBodySYLT extends AbstractID3v2FrameBody implements ID3v24FrameBody, ID3v23FrameBody
<Header for 'Synchronised lyrics/text', ID: "SYLT"> | |
Text encoding | $xx |
Language | $xx xx xx |
Time stamp format | $xx |
Content type | $xx |
Content descriptor | <text string according to encoding> $00 (00) |
Encoding: | $00 | ISO-8859-1 character set is used => $00 is sync identifier. |
$01 | Unicode character set is used => $00 00 is sync identifier. |
Content type: | $00 | is other |
$01 | is lyrics | |
$02 | is text transcription | |
$03 | is movement/part name (e.g. "Adagio") | |
$04 | is events (e.g. "Don Quijote enters the stage") | |
$05 | is chord (e.g. "Bb F Fsus") | |
$06 | is trivia/'pop up' information |
$01 Absolute time, 32 bit sized, using MPEG frames as unit
$02 Absolute time, 32 bit sized, using milliseconds as unit
Abolute time means that every stamp contains the time from the beginning of the file.
The text that follows the frame header differs from that of the unsynchronised lyrics/text transcription in one major way. Each syllable (or whatever size of text is considered to be convenient by the encoder) is a null terminated string followed by a time stamp denoting where in the sound file it belongs. Each sync thus has the following structure:
Terminated text to be synced (typically a syllable) | |
Sync identifier (terminator to above string) | $00 (00) |
Time stamp | $xx (xx ...) |
Newline ($0A) characters are allowed in all "SYLT" frames and should be used after every entry (name, event etc.) in a frame with the content type $03 - $04.
A few considerations regarding whitespace characters: Whitespace separating words should mark the beginning of a new word, thus occurring in front of the first syllable of a new word. This is also valid for new line characters. A syllable followed by a comma should not be broken apart with a sync (both the syllable and the comma should be before the sync).
An example: The "USLT" passage
"Strangers in the night" $0A "Exchanging glances"
would be "SYLT" encoded as:
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx xx "glan" $00 xx xx "ces" $00 xx xx
There may be more than one "SYLT" frame in each tag, but only one with the same language and content descriptor.
For more details, please refer to the ID3 specifications:
TYPE_BODY
objectList
logger
Constructor and Description |
---|
FrameBodySYLT()
Creates a new FrameBodySYLT datatype.
|
FrameBodySYLT(ByteBuffer byteBuffer,
int frameSize)
Creates a new FrameBodySYLT datatype.
|
FrameBodySYLT(FrameBodySYLT body)
Copy Constructor
|
FrameBodySYLT(int textEncoding,
String language,
int timeStampFormat,
int contentType,
String description,
byte[] lyrics)
Creates a new FrameBodySYLT datatype.
|
Modifier and Type | Method and Description |
---|---|
int |
getContentType() |
String |
getDescription() |
String |
getIdentifier()
Return the ID3v2 Frame Identifier, must be implemented by concrete subclasses
|
String |
getLanguage() |
byte[] |
getLyrics()
Get lyrics
TODO:better format
|
int |
getTimeStampFormat() |
void |
setLyrics(byte[] data)
Set lyrics
TODO:provide a more user friendly way of adding lyrics
|
protected void |
setupObjectList()
Setup Object List
|
createStructure, equals, getSize, read, setSize, setSize, write
getBriefDescription, getHeader, getLongDescription, getObject, getObjectValue, getTextEncoding, getUserFriendlyValue, isSubsetOf, iterator, setHeader, setObjectValue, setTextEncoding, toString
public FrameBodySYLT()
public FrameBodySYLT(FrameBodySYLT body)
body
- public FrameBodySYLT(int textEncoding, String language, int timeStampFormat, int contentType, String description, byte[] lyrics)
textEncoding
- language
- timeStampFormat
- contentType
- description
- lyrics
- public FrameBodySYLT(ByteBuffer byteBuffer, int frameSize) throws InvalidTagException
byteBuffer
- frameSize
- InvalidTagException
- if unable to create framebody from bufferpublic String getLanguage()
public int getTimeStampFormat()
public int getContentType()
public String getDescription()
public String getIdentifier()
AbstractID3v2FrameBody
getIdentifier
in class AbstractID3v2FrameBody
public void setLyrics(byte[] data)
data
- public byte[] getLyrics()
protected void setupObjectList()
setupObjectList
in class AbstractTagFrameBody
Copyright © 2005–2020 jthink.net. All rights reserved.