org.jaudiotagger.tag.id3.framebody
Class FrameBodyETCO

java.lang.Object
  extended by org.jaudiotagger.tag.id3.AbstractTagItem
      extended by org.jaudiotagger.tag.id3.AbstractTagFrameBody
          extended by org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
              extended by org.jaudiotagger.tag.id3.framebody.FrameBodyETCO
All Implemented Interfaces:
ID3v23FrameBody, ID3v24FrameBody

public class FrameBodyETCO
extends AbstractID3v2FrameBody
implements ID3v24FrameBody, ID3v23FrameBody

Event timing codes frame.

This frame allows synchronisation with key events in a song or sound. The header is:

<Header for 'Event timing codes', ID: "ETCO">
Time stamp format$xx

Where time stamp format is:

$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.

Followed by a list of key events in the following format:

Type of event$xx
Time stamp$xx (xx ...)

The 'Time stamp' is set to zero if directly at the beginning of the sound or after the previous event. All events should be sorted in chronological order. The type of event is as follows:

$00 padding (has no meaning)
$01 end of initial silence
$02 intro start
$03 mainpart start
$04 outro start
$05 outro end
$06 verse start
$07 refrain start
$08 interlude start
$09 theme start
$0A variation start
$0B key change
$0C time change
$0D momentary unwanted noise (Snap, Crackle & Pop)
$0E sustained noise
$0F sustained noise end
$10 intro end
$11 mainpart end
$12 verse end
$13 refrain end
$14 theme end
$15-$DFreserved for future use
$E0-$EFnot predefined sync 0-F
$F0-$FCreserved for future use
$FD audio end (start of silence)
$FE audio file ends
$FFone more byte of events follows (all the following bytes with the value $FF have the same function)

Terminating the start events such as "intro start" is not required. The 'Not predefined sync's ($E0-EF) are for user events. You might want to synchronise your music to something, like setting of an explosion on-stage, turning on your screensaver etc.

There may only be one "ETCO" frame in each tag.

For more details, please refer to the ID3 specifications:

Version:
$Id: FrameBodyETCO.java,v 1.15 2009/11/12 13:25:21 paultaylor Exp $
Author:
: Paul Taylor, : Eric Farng

Field Summary
 
Fields inherited from class org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
TYPE_BODY
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagFrameBody
objectList
 
Fields inherited from class org.jaudiotagger.tag.id3.AbstractTagItem
logger
 
Constructor Summary
FrameBodyETCO()
          Creates a new FrameBodyETCO datatype.
FrameBodyETCO(java.nio.ByteBuffer byteBuffer, int frameSize)
          Creates a new FrameBodyETCO datatype.
FrameBodyETCO(FrameBodyETCO body)
           
 
Method Summary
 java.lang.String getIdentifier()
          Return the ID3v2 Frame Identifier, must be implemented by concrete subclasses
protected  void setupObjectList()
          Create the list of Datatypes that this body expects in the correct order This method needs to be implemented by concrete subclasses
 
Methods inherited from class org.jaudiotagger.tag.id3.framebody.AbstractID3v2FrameBody
createStructure, equals, getSize, read, setSize, setSize, write
 
Methods inherited from class org.jaudiotagger.tag.id3.AbstractTagFrameBody
getBriefDescription, getHeader, getLongDescription, getObject, getObjectValue, getTextEncoding, isSubsetOf, iterator, setHeader, setObjectValue, setTextEncoding, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FrameBodyETCO

public FrameBodyETCO()
Creates a new FrameBodyETCO datatype.


FrameBodyETCO

public FrameBodyETCO(FrameBodyETCO body)

FrameBodyETCO

public FrameBodyETCO(java.nio.ByteBuffer byteBuffer,
                     int frameSize)
              throws InvalidTagException
Creates a new FrameBodyETCO datatype.

Parameters:
byteBuffer -
frameSize -
Throws:
InvalidTagException - if unable to create framebody from buffer
Method Detail

getIdentifier

public java.lang.String getIdentifier()
Description copied from class: AbstractID3v2FrameBody
Return the ID3v2 Frame Identifier, must be implemented by concrete subclasses

Specified by:
getIdentifier in class AbstractID3v2FrameBody
Returns:

setupObjectList

protected void setupObjectList()
Description copied from class: AbstractTagFrameBody
Create the list of Datatypes that this body expects in the correct order This method needs to be implemented by concrete subclasses

Specified by:
setupObjectList in class AbstractTagFrameBody