| 1 | package org.farng.mp3.id3; |
| 2 | |
| 3 | /** |
| 4 | * <p> For a more accurate description of the tempo of a musical piece, this<br> frame might be |
| 5 | * used. After the header follows one byte describing<br> which time stamp format should be used. Then |
| 6 | * follows one or more<br> |
| 7 | * <p/> |
| 8 | * tempo codes. Each tempo code consists of one tempo part and one time<br> part. The tempo is |
| 9 | * in BPM described with one or two bytes. If the<br> first byte has the value $FF, one more byte follows, |
| 10 | * which is added<br> to the first giving a range from 2 - 510 BPM, since $00 and $01 is<br> |
| 11 | * reserved. $00 is used to describe a beat-free time period, which is<br> |
| 12 | * <p/> |
| 13 | * not the same as a music-free time period. $01 is used to indicate one<br> single |
| 14 | * beat-stroke followed by a beat-free period.</p> |
| 15 | * <p/> |
| 16 | * <p> The tempo descriptor is followed by a time stamp. Every time the<br> tempo in the music |
| 17 | * changes, a tempo descriptor may indicate this for<br> the player. All tempo descriptors MUST be sorted |
| 18 | * in chronological<br> |
| 19 | * <p/> |
| 20 | * order. The first beat-stroke in a time-period is at the same time as<br> the beat |
| 21 | * description occurs. There may only be one "SYTC" frame in<br> each tag.</p> |
| 22 | * <p/> |
| 23 | * <p> <Header for 'Synchronised tempo codes', ID: "SYTC"><br> |
| 24 | * Time stamp format $xx<br> Tempo |
| 25 | * data <binary data></p> |
| 26 | * <p/> |
| 27 | * <p> Where time stamp format is:</p> |
| 28 | * <p/> |
| 29 | * <p> $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit<br> |
| 30 | * $02 Absolute time, 32 bit sized, using milliseconds as unit</p> |
| 31 | * <p/> |
| 32 | * <p> Absolute time means that every stamp contains the time from the<br> |
| 33 | * <p/> |
| 34 | * beginning of the file.<br> </p> |
| 35 | * |
| 36 | * @author Eric Farng |
| 37 | * @version $Revision: 1.3 $ |
| 38 | */ |
| 39 | public class FrameBodySYTC extends AbstractID3v2FrameBody { |
| 40 | |
| 41 | /** |
| 42 | * Creates a new FrameBodySYTC object. |
| 43 | */ |
| 44 | public FrameBodySYTC() { |
| 45 | super(); |
| 46 | } |
| 47 | |
| 48 | /** |
| 49 | * Creates a new FrameBodySYTC object. |
| 50 | */ |
| 51 | public FrameBodySYTC(final FrameBodySYTC body) { |
| 52 | super(body); |
| 53 | } |
| 54 | |
| 55 | protected void setupObjectList() { |
| 56 | throw new UnsupportedOperationException("This frame has not been implemented."); |
| 57 | } |
| 58 | |
| 59 | public String getIdentifier() { |
| 60 | throw new UnsupportedOperationException("This frame has not been implemented."); |
| 61 | } |
| 62 | } |