com.beaglebuddy.mp3

## Class MP3BaseID3v24

- java.lang.Object
- - com.beaglebuddy.mp3.MP3BaseID3v23
  - - com.beaglebuddy.mp3.MP3BaseID3v24

- Direct Known Subclasses:
    MP3Base

      public class MP3BaseID3v24
      extends MP3BaseID3v23

  This base class provides some underlying methods for working with an ID3v2.4 tag.

  See Also:
    `MP3BaseID3v24`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected ID3v24Tag` | `id3v24Tag` ID3v2.4 tag which holds all the information about an .mp3 file

    - ### Fields inherited from class com.beaglebuddy.mp3.MP3BaseID3v23

      `id3v23Tag`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MP3BaseID3v24()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ID3v24Frame` | `addV24Frame(FrameType frameType)` add an ID3v2.4 frame of the specified type to the ID3v2.4 tag.
    `ID3v24Tag` | `getID3v24Tag()` gets the ID3v2.4 Tag.
    `protected java.lang.String` | `getV24Album()` finds the ID3v2.4 `FrameType.ALBUM_TITLE` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected AttachedPicture` | `getV24AttachedPicture(PictureType pictureType)` finds the ID3v2.4 `FrameType.ATTACHED_PICTURE` frame in the ID3v2.4 tag and retrieves the attached picture.
    `protected ID3v24Frame` | `getV24AttachedPictureFrame(PictureType pictureType)` finds the ID3v2.4 attached picture frame containing the specified picture type in the ID3v2.4 tag.
    `protected java.util.List<AttachedPicture>` | `getV24AttachedPictures()` finds all the ID3v2.4 `FrameType.ATTACHED_PICTURE` frames in the ID3v2.4 tag and retrieves the attached picture for each frame.
    `int` | `getV24AudioDuration()` finds the ID3v2.4 `FrameType.LENGTH` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24Band()` finds the ID3v2.4 `FrameType.BAND` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24Comments(Language language)` finds the song comments written in the specified language in the ID3v2.4 tag.
    `protected ID3v24Frame` | `getV24CommentsFrame(Language language)` finds the ID3v2.4 comments frame with the specified language in the ID3v2.4 tag.
    `protected int` | `getV24Disc()` finds the ID3v2.4 `FrameType.PART_OF_A_SET` text frame in the ID3v2.4 tag and retrieves the text field.
    `java.util.List<java.lang.String>` | `getV24Errors()` gets a list of any frame errors encountered while reading in the ID3v2.4 tag.
    `ID3v24Frame` | `getV24Frame(FrameType frameType)` finds the first ID3v2.4 frame in the ID3v2.4 tag with the specified ID3v2.4 frame id.
    `java.util.List<ID3v24Frame>` | `getV24Frames(FrameType frameType)` finds all the ID3v2.4 frames in the ID3v2.4 tag with the specified ID3v2.4 frame id.
    `protected java.lang.String` | `getV24LeadPerformer()`
    `protected java.lang.String` | `getV24LyricsBy()` finds the ID3v2.4 `FrameType.LYRICIST` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24MusicBy()` finds the ID3v2.4 `FrameType.COMPOSER` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24MusicType()` finds the ID3v2.4 `FrameType.CONTENT_TYPE` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24Publisher()` finds the ID3v2.4 `FrameType.PUBLISHER` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected int` | `getV24Rating()` finds the ID3v2.4 `FrameType.POPULARIMETER` frame in the ID3v2.4 tag and retrieves the rating field.
    `protected java.util.List<SynchronizedLyric>` | `getV24SynchronizedLyrics(Language language)` finds the synchronized song lyrics in the specified language in the ID3v2.4 tag.
    `protected ID3v24Frame` | `getV24SynchronizedLyricsFrame(Language language)` finds the ID3v2.4 synchronized lyrics frame containing in the specified language in the ID3v2.4 tag.
    `protected java.lang.String` | `getV24Text(FrameType frameType)` finds the ID3v2.4 text frame with the specified ID3v2.4 frame type in the ID3v2.4 tag and retrieves the text field from the ID3v2.4 frame.
    `protected int` | `getV24TextAsInteger(FrameType frameType)` gets the text from a text frame and converts it to an integer.
    `protected java.lang.String` | `getV24Title()` finds the ID3v2.4 `FrameType.SONG_TITLE` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected int` | `getV24Track()` finds the ID3v2.4 `FrameType.TRACK_NUMBER` text frame in the ID3v2.4 tag and retrieves the text field.
    `protected java.lang.String` | `getV24UnsynchronizedLyrics(Language language)` finds the unsynchronized song lyrics in the specified language in the ID3v2.4 tag.
    `protected ID3v24Frame` | `getV24UnsynchronizedLyricsFrame(Language language)` finds the ID3v2.4 unsynchronized lyrics frame containing in the specified language in the ID3v2.4 tag.
    `int` | `getV24Year()` finds the ID3v2.4 `FrameType.RECORDING_TIME` text frame in the ID3v2.4 tag and retrieves the text field.
    `boolean` | `hasV24Errors()` determines if the ID3v2.4 tag had any frame errors when it was read in.
    `protected ID3v24Frame` | `removeV24Album()` removes the ID3v2.4 `FrameType.ALBUM_TITLE` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24AttachedPicture(PictureType pictureType)` removes the ID3v2.4 attached picture frame with the specified picture type from the ID3v2.4 tag.
    `protected java.util.List<AttachedPicture>` | `removeV24AttachedPictures()` removes all ID3v2.4 attached picture frames from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24AudioDuration()` removes the ID3v2.4 `FrameType.LENGTH` text frame in the ID3v2.4 tag.
    `protected void` | `removeV24AudioSize()` does nothing.
    `protected ID3v24Frame` | `removeV24Band()` removes the ID3v2.4 `FrameType.BAND` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Comments()` removes the english language song comments from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Comments(Language language)` removes the ID3v2.4 song comments written in the specified language from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Disc()` removes the ID3v2.4 `FrameType.PART_OF_A_SET` text frame in the ID3v2.4 tag.
    `ID3v24Frame` | `removeV24Frame(FrameType frameType)` removes the first ID3v2.4 frame with the specified ID3v2.4 frame id from the ID3v2.4 tag.
    `java.util.List<ID3v24Frame>` | `removeV24Frames(FrameType frameType)` removes all the ID3v2.4 frames with the specified ID3v2.4 frame id from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24LeadPerformer()` removes the ID3v2.4 `FrameType.LEAD_PERFORMER` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24LyricsBy()` removes the ID3v2.4 `FrameType.LYRICIST` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24MusicBy()` removes the ID3v2.4 `FrameType.COMPOSER` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24MusicType()` removes the ID3v2.4 `FrameType.CONTENT_TYPE` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Publisher()` removes the ID3v2.4 `FrameType.PUBLISHER` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Rating()` removes the ID3v2.4 `FrameType.POPULARIMETER` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24SynchronizedLyrics(Language language)` removes the ID3v2.4 synchronized lyrics frame written in the specified language from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Title()` removes the ID3v2.4 `FrameType.SONG_TITLE` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Track()` removes the ID3v2.4 `FrameType.TRACK_NUMBER` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24UnsynchronizedLyrics(Language language)` removes the ID3v2.4 unsynchronized lyrics frame written in the specified language from the ID3v2.4 tag.
    `protected ID3v24Frame` | `removeV24Year()` removes the ID3v2.4 `FrameType.RECORDING_TIME` text frame in the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Album(java.lang.String album)` adds an ID3v2.4 `FrameType.ALBUM_TITLE` text frame with the specified album to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24AttachedPicture(AttachedPicture attachedPicture)` adds an ID3v2.4 attached picture frame with the specified picture type to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24AudioDuration(int duration)` adds an ID3v2.4 `FrameType.LENGTH` text frame with the specified duration to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Band(java.lang.String band)` adds an ID3v2.4 `FrameType.BAND` text frame with the specified band to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Comments(Language language, java.lang.String comments)` adds an ID3v2.4 comments frame with the comments written in the specified language to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Disc(int disc)` adds an ID3v2.4 `FrameType.PART_OF_A_SET` text frame with the specified size to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24LeadPerformer(java.lang.String leadPerformer)` adds an ID3v2.4 `FrameType.LEAD_PERFORMER` text frame with the specified lead performer to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24LyricsBy(java.lang.String lyricist)` adds an ID3v2.4 `FrameType.LYRICIST` text frame with the specified title to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24MusicBy(java.lang.String composer)` adds an ID3v2.4 `FrameType.COMPOSER` text frame with the specified title to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24MusicType(Genre genre)` adds an ID3v2.4 `FrameType.CONTENT_TYPE` text frame with the specified genre to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24MusicType(java.lang.String genre)` adds an ID3v2.4 `FrameType.CONTENT_TYPE` text frame with the specified genre to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Publisher(java.lang.String publisher)` adds an ID3v2.4 `FrameType.PUBLISHER` text frame with the specified title to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Rating(int rating)` adds an ID3v2.4 `FrameType.POPULARIMETER` frame with the specified rating to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24SynchronizedLyrics(Encoding encoding, Language language, java.util.List<SynchronizedLyric> synchronizedLyrics)` adds an ID3v2.4 synchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24SynchronizedLyrics(Language language, java.util.List<SynchronizedLyric> synchronizedLyrics)` adds an ID3v2.4 synchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24SynchronizedLyrics(java.util.List<SynchronizedLyric> synchronizedLyrics)` adds an ID3v2.4 synchronized lyrics frame with the specified english song lyrics to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Text(Encoding encoding, java.lang.String text, FrameType frameType)` adds an ID3v2.4 text frame with the specified text to the ID3v2.4 tag.
    `ID3v24Frame` | `setV24Text(int n, FrameType frameType)` adds an ID3v2.4 text frame with the string value of the specified integer to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Text(java.lang.String text, FrameType frameType)` adds an ID3v2.4 text frame with the specified text to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Title(java.lang.String title)` adds an ID3v2.4 `FrameType.SONG_TITLE` text frame with the specified title to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Track(int track)` adds an ID3v2.4 `FrameType.TRACK_NUMBER` text frame with the specified size to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24UnsynchronizedLyrics(Language language, java.lang.String lyrics)` adds an ID3v2.4 unsynchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag.
    `protected ID3v24Frame` | `setV24Year(int year)` adds an ID3v2.4 `FrameType.RECORDING_TIME` text frame with the specified year to the ID3v2.4 tag.

    - ### Methods inherited from class com.beaglebuddy.mp3.MP3BaseID3v23

      `addV23Frame, getID3v23Tag, getV23Album, getV23AttachedPicture, getV23AttachedPictureFrame, getV23AttachedPictures, getV23AudioDuration, getV23AudioSize, getV23Band, getV23Comments, getV23CommentsFrame, getV23Disc, getV23Errors, getV23Frame, getV23Frames, getV23LeadPerformer, getV23LyricsBy, getV23MusicBy, getV23MusicType, getV23Publisher, getV23Rating, getV23SynchronizedLyrics, getV23SynchronizedLyricsFrame, getV23Text, getV23TextAsInteger, getV23Title, getV23Track, getV23UnsynchronizedLyrics, getV23UnsynchronizedLyricsFrame, getV23Year, hasV23Errors, removeV23Album, removeV23AttachedPicture, removeV23AttachedPictures, removeV23AudioDuration, removeV23AudioSize, removeV23Band, removeV23Comments, removeV23Comments, removeV23Disc, removeV23Frame, removeV23Frames, removeV23LeadPerformer, removeV23LyricsBy, removeV23MusicBy, removeV23MusicType, removeV23Publisher, removeV23Rating, removeV23SynchronizedLyrics, removeV23Title, removeV23Track, removeV23UnsynchronizedLyrics, removeV23Year, setV23Album, setV23AttachedPicture, setV23AudioDuration, setV23AudioSize, setV23Band, setV23Comments, setV23Disc, setV23LeadPerformer, setV23LyricsBy, setV23MusicBy, setV23MusicType, setV23MusicType, setV23Publisher, setV23Rating, setV23SynchronizedLyrics, setV23SynchronizedLyrics, setV23SynchronizedLyrics, setV23Text, setV23Text, setV23Text, setV23Title, setV23Track, setV23UnsynchronizedLyrics, setV23Year`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### id3v24Tag

          protected ID3v24Tag id3v24Tag

      ID3v2.4 tag which holds all the information about an .mp3 file

  - ### Constructor Detail

    - #### MP3BaseID3v24

          public MP3BaseID3v24()

  - ### Method Detail

    - #### hasV24Errors

          public boolean hasV24Errors()

      determines if the ID3v2.4 tag had any frame errors when it was read in.
      Returns:
        whether any invalid frames were encountered while reading in the ID3v2.4 tag from the .mp3 file.

    - #### getV24Errors

          public java.util.List<java.lang.String> getV24Errors()

      gets a list of any frame errors encountered while reading in the ID3v2.4 tag.
      Returns:
        a list of the frame errors that occurred while reading in the ID3v2.4 tag. If the ID3v2.4 tag was valid and did not contain any errors, then an empty list is returned.

    - #### getID3v24Tag

          public ID3v24Tag getID3v24Tag()

      gets the ID3v2.4 Tag.
      Returns:
        the ID3v2.4 Tag.

    - #### addV24Frame

          public ID3v24Frame addV24Frame(FrameType frameType)

      add an ID3v2.4 frame of the specified type to the ID3v2.4 tag.
      Parameters:
        `frameType` - type of ID3v2.4 frame to add to the ID3v2.4 tag.
      Returns:
        the new ID3v2.4 frame that was added to the ID3v2.4 tag.

    - #### getV24Frame

          public ID3v24Frame getV24Frame(FrameType frameType)

      finds the first ID3v2.4 frame in the ID3v2.4 tag with the specified ID3v2.4 frame id.
      Parameters:
        `frameType` - type of ID3v2.4 frame to search for.
      Returns:
        the first ID3v2.4 frame with the given ID3v2.4 frame id found in the ID3v2.4 tag, or null if no frame with the specified id can be found.

    - #### getV24Frames

          public java.util.List<ID3v24Frame> getV24Frames(FrameType frameType)

      finds all the ID3v2.4 frames in the ID3v2.4 tag with the specified ID3v2.4 frame id.
      Parameters:
        `frameType` - type of ID3v2.4 frames to retrieve from the ID3v2.4 tag.
      Returns:
        a list of all the ID3v2.4 frames with the given ID3v2.4 frame id that were found in the ID3v2.4 tag, or an empty collection of size 0 if no ID3v2.4 frame with the specified ID3v2.4 id can be found.

    - #### removeV24Frame

          public ID3v24Frame removeV24Frame(FrameType frameType)

      removes the first ID3v2.4 frame with the specified ID3v2.4 frame id from the ID3v2.4 tag.
      Parameters:
        `frameType` - type of type ID3v2.4 frame to remove from the ID3v2.4 tag.
      Returns:
        the ID3v2.4 frame in the ID3v2.4 tag with the given ID3v2.4 frame id that was removed, or null if no ID3v2.4 frame with the specified id was found.

    - #### removeV24Frames

          public java.util.List<ID3v24Frame> removeV24Frames(FrameType frameType)

      removes all the ID3v2.4 frames with the specified ID3v2.4 frame id from the ID3v2.4 tag.
      Parameters:
        `frameType` - type of ID3v2.4 frame to remove from the ID3v2.4 tag.
      Returns:
        a list of all the ID3v2.4 frames with the given ID3v2.4 frame id that were removed from the ID3v2.4 tag, or an empty collection of size 0 if no ID3v2.4 frames with the specified ID3v2.4 id could be found.

    - #### getV24Album

          protected java.lang.String getV24Album()

      finds the ID3v2.4 `FrameType.ALBUM_TITLE` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.ALBUM_TITLE` text frame. If no ID3v2.4 `FrameType.ALBUM_TITLE` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24Album

          protected ID3v24Frame setV24Album(java.lang.String album)

      adds an ID3v2.4 `FrameType.ALBUM_TITLE` text frame with the specified album to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.ALBUM_TITLE` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.ALBUM_TITLE` text frame is added to the ID3v2.4 tag.
      Parameters:
        `album` - the name of the album on which the .mp3 song was released. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.ALBUM_TITLE` text frame that was added/updated.

    - #### removeV24Album

          protected ID3v24Frame removeV24Album()

      removes the ID3v2.4 `FrameType.ALBUM_TITLE` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.ALBUM_TITLE` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.ALBUM_TITLE` text frame, then no frame is removed and null is returned.

    - #### getV24AttachedPicture

          protected AttachedPicture getV24AttachedPicture(PictureType pictureType)

      finds the ID3v2.4 `FrameType.ATTACHED_PICTURE` frame in the ID3v2.4 tag and retrieves the attached picture.
      Parameters:
        `pictureType` - one of the 21 allowable ID3v2.4 picture types.
      Returns:
        the attached picture found in the ID3v2.4 `FrameType.ATTACHED_PICTURE` frame. If no ID3v2.4 `FrameType.ATTACHED_PICTURE` frame is found in the ID3v2.4 tag, then null is returned.

    - #### getV24AttachedPictures

          protected java.util.List<AttachedPicture> getV24AttachedPictures()

      finds all the ID3v2.4 `FrameType.ATTACHED_PICTURE` frames in the ID3v2.4 tag and retrieves the attached picture for each frame.
      Returns:
        the attached pictures found in the ID3v2.4 `FrameType.ATTACHED_PICTURE` frames. If no ID3v2.4 `FrameType.ATTACHED_PICTURE` frames are found in the ID3v2.4 tag, then an empty list is returned.

    - #### getV24AttachedPictureFrame

          protected ID3v24Frame getV24AttachedPictureFrame(PictureType pictureType)

      finds the ID3v2.4 attached picture frame containing the specified picture type in the ID3v2.4 tag.
      Parameters:
        `pictureType` - one of the 21 allowable ID3v2.4 picture types.
      Returns:
        the ID3v2.4 attached picture frame containing the specified picture type. If no ID3v2.4 attached picture frame with the specified picture type was found in the ID3v2.4 tag, then null is returned.

    - #### setV24AttachedPicture

          protected ID3v24Frame setV24AttachedPicture(AttachedPicture attachedPicture)

      adds an ID3v2.4 attached picture frame with the specified picture type to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 attached picture frame with the specified picture type, then the existing frame's attached picture is simply updated with the new picture. Otherwise, a new ID3v2.4 attached picture frame is added to the ID3v2.4 tag.
      Parameters:
        `attachedPicture` - an attached picture containing the information about the image to be added to the ID3V2.4 tag.
      Returns:
        the ID3v2.4 attached picture frame that was added/updated.

    - #### removeV24AttachedPicture

          protected ID3v24Frame removeV24AttachedPicture(PictureType pictureType)

      removes the ID3v2.4 attached picture frame with the specified picture type from the ID3v2.4 tag.
      Parameters:
        `pictureType` - one of the 21 valid ID3v2.4 picture types.
      Returns:
        the ID3v2.4 attached picture frame with the specified picture type that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not contain an ID3v2.4 attached picture frame with the specified picture type, then null is returned.

    - #### removeV24AttachedPictures

          protected java.util.List<AttachedPicture> removeV24AttachedPictures()

      removes all ID3v2.4 attached picture frames from the ID3v2.4 tag.
      Returns:
        the ID3v2.4 attached picture frame with the specified picture type that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not contain an ID3v2.4 attached picture frame with the specified picture type, then an empty list is returned.

    - #### getV24AudioDuration

          public int getV24AudioDuration()

      finds the ID3v2.4 `FrameType.LENGTH` text frame in the ID3v2.4 tag and retrieves the text field. The text field is then converted to an integer and returned.
      Returns:
        the text field found in the ID3v2.4 `FrameType.LENGTH` text frame. If no ID3v2.4 `FrameType.LENGTH` text frame is found in the ID3v2.4 tag, or if the text field is not a valid integer, then 0 is returned.

    - #### setV24AudioDuration

          protected ID3v24Frame setV24AudioDuration(int duration)
                                             throws java.lang.IllegalArgumentException

      adds an ID3v2.4 `FrameType.LENGTH` text frame with the specified duration to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.LENGTH` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.LENGTH` text frame is added to the ID3v2.4 tag.
      Parameters:
        `duration` - the duration (in seconds) of the song in the .mp3 file.
      Returns:
        the ID3v2.4 `FrameType.LENGTH` text frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the duration is less than 0.

    - #### removeV24AudioDuration

          protected ID3v24Frame removeV24AudioDuration()

      removes the ID3v2.4 `FrameType.LENGTH` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.LENGTH` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.LENGTH` text frame, then no frame is removed and null is returned.

    - #### removeV24AudioSize

          protected void removeV24AudioSize()

      does nothing. Since the LENGTH frame type was removed in ID3v2.4, this method is simply here to provide compatibility with its ID3v2.3 counter part.

    - #### getV24Band

          protected java.lang.String getV24Band()

      finds the ID3v2.4 `FrameType.BAND` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.BAND` text frame. If no ID3v2.4 `FrameType.BAND` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24Band

          protected ID3v24Frame setV24Band(java.lang.String band)

      adds an ID3v2.4 `FrameType.BAND` text frame with the specified band to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.BAND` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.BAND` text frame is added to the ID3v2.4 tag.
      Parameters:
        `band` - the name of the band who recorded the song. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.BAND` text frame that was added/updated.

    - #### removeV24Band

          protected ID3v24Frame removeV24Band()

      removes the ID3v2.4 `FrameType.BAND` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.BAND` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.BAND` text frame, then no frame is removed and null is returned.

    - #### getV24Comments

          protected java.lang.String getV24Comments(Language language)
                                             throws java.lang.IllegalArgumentException

      finds the song comments written in the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song comments are written in.
      Returns:
        the song comments written in the specified language. If no song comments written in the specified language could be found in the ID3v2.4 tag, then null is returned.
      Throws:
        `java.lang.IllegalArgumentException`

    - #### getV24CommentsFrame

          protected ID3v24Frame getV24CommentsFrame(Language language)

      finds the ID3v2.4 comments frame with the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song comments are written in.
      Returns:
        the ID3v2.4 comments frame containing with the specified language. If no ID3v2.4 comments frame written in the specified language were found in the ID3v2.4 tag, then null is returned.

    - #### setV24Comments

          protected ID3v24Frame setV24Comments(Language language,
                                   java.lang.String comments)
                                        throws java.lang.IllegalArgumentException

      adds an ID3v2.4 comments frame with the comments written in the specified language to the ID3v2.4 tag. The comments are encoded as a UTF-16 string in the ID3v2.4 comments frame. If the ID3v2.4 tag already contains an ID3v2.4 comments frame with the specified language, then this frame's comments are simply updated with the new one. Otherwise, a new ID3v2.4 comments frame is added to the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song comments are written in.
        `comments` - the comments about the song.
      Returns:
        the ID3v2.4 comments frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - if the comments are empty or contain only whitespace.

    - #### removeV24Comments

          protected ID3v24Frame removeV24Comments()
                                           throws java.lang.IllegalStateException

      removes the english language song comments from the ID3v2.4 tag.
      Returns:
        the ID3v2.4 comments frame that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not an english language ID3v2.4 comments frame, then null is returned.
      Throws:
        `java.lang.IllegalStateException`

    - #### removeV24Comments

          protected ID3v24Frame removeV24Comments(Language language)
                                           throws java.lang.IllegalArgumentException

      removes the ID3v2.4 song comments written in the specified language from the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song comments are written in.
      Returns:
        the ID3v2.4 comments frame that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not contain an ID3v2.4 comments frame with the specified language, then null is returned.
      Throws:
        `java.lang.IllegalArgumentException`

    - #### getV24Disc

          protected int getV24Disc()

      finds the ID3v2.4 `FrameType.PART_OF_A_SET` text frame in the ID3v2.4 tag and retrieves the text field. The text field is then converted to an integer and returned.
      Returns:
        the text field found in the ID3v2.4 `FrameType.PART_OF_A_SET` text frame. If no ID3v2.4 `FrameType.PART_OF_A_SET` text frame is found in the ID3v2.4 tag, or if the text field is not a valid integer, then 0 is returned.

    - #### setV24Disc

          protected ID3v24Frame setV24Disc(int disc)
                                    throws java.lang.IllegalArgumentException

      adds an ID3v2.4 `FrameType.PART_OF_A_SET` text frame with the specified size to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.PART_OF_A_SET` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.PART_OF_A_SET` text frame is added to the ID3v2.4 tag.
      Parameters:
        `disc` - the disc number of the cd on which the song was released. It must be >= 1.
      Returns:
        the ID3v2.4 `FrameType.PART_OF_A_SET` text frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the disc is less than 1.

    - #### removeV24Disc

          protected ID3v24Frame removeV24Disc()

      removes the ID3v2.4 `FrameType.PART_OF_A_SET` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.PART_OF_A_SET` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.PART_OF_A_SET` text frame, then no frame is removed and null is returned.

    - #### getV24LeadPerformer

          protected java.lang.String getV24LeadPerformer()

    - #### setV24LeadPerformer

          protected ID3v24Frame setV24LeadPerformer(java.lang.String leadPerformer)

      adds an ID3v2.4 `FrameType.LEAD_PERFORMER` text frame with the specified lead performer to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.LEAD_PERFORMER` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.LEAD_PERFORMER` text frame is added to the ID3v2.4 tag. On Windows machines, this field is called "Contributing Artist".
      Parameters:
        `leadPerformer` - the name of the lead performer on which the .mp3 song was released. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.LEAD_PERFORMER` text frame that was added/updated.

    - #### removeV24LeadPerformer

          protected ID3v24Frame removeV24LeadPerformer()

      removes the ID3v2.4 `FrameType.LEAD_PERFORMER` text frame in the ID3v2.4 tag. On Windows machines, this field is called "Contributing Artist".
      Returns:
        the ID3v2.4 `FrameType.LEAD_PERFORMER` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.LEAD_PERFORMER` text frame, then no frame is removed and null is returned.

    - #### getV24LyricsBy

          protected java.lang.String getV24LyricsBy()

      finds the ID3v2.4 `FrameType.LYRICIST` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.LYRICIST` text frame. If no ID3v2.4 `FrameType.LYRICIST` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24LyricsBy

          protected ID3v24Frame setV24LyricsBy(java.lang.String lyricist)

      adds an ID3v2.4 `FrameType.LYRICIST` text frame with the specified title to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.LYRICIST` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.LYRICIST` text frame is added to the ID3v2.4 tag.
      Parameters:
        `lyricist` - the person(s) who wrote the lyrics to the song. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.LYRICIST` text frame that was added/updated.

    - #### removeV24LyricsBy

          protected ID3v24Frame removeV24LyricsBy()

      removes the ID3v2.4 `FrameType.LYRICIST` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.LYRICIST` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.LYRICIST` text frame, then no frame is removed and null is returned.

    - #### getV24MusicBy

          protected java.lang.String getV24MusicBy()

      finds the ID3v2.4 `FrameType.COMPOSER` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.COMPOSER` text frame. If no ID3v2.4 `FrameType.COMPOSER` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24MusicBy

          protected ID3v24Frame setV24MusicBy(java.lang.String composer)

      adds an ID3v2.4 `FrameType.COMPOSER` text frame with the specified title to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.COMPOSER` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.COMPOSER` text frame is added to the ID3v2.4 tag.
      Parameters:
        `composer` - the person(s) who wrote the music to the song. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.COMPOSER` text frame that was added/updated.

    - #### removeV24MusicBy

          protected ID3v24Frame removeV24MusicBy()

      removes the ID3v2.4 `FrameType.COMPOSER` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.COMPOSER` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.COMPOSER` text frame, then no frame is removed and null is returned.

    - #### getV24MusicType

          protected java.lang.String getV24MusicType()

      finds the ID3v2.4 `FrameType.CONTENT_TYPE` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.CONTENT_TYPE` text frame. If no ID3v2.4 `FrameType.CONTENT_TYPE` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24MusicType

          protected ID3v24Frame setV24MusicType(Genre genre)

      adds an ID3v2.4 `FrameType.CONTENT_TYPE` text frame with the specified genre to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.CONTENT_TYPE` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.CONTENT_TYPE` text frame is added to the ID3v2.4 tag.
      Parameters:
        `genre` - the song's music type. That is, the type of music the song would be described as. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.CONTENT_TYPE` text frame that was added/updated.

    - #### setV24MusicType

          protected ID3v24Frame setV24MusicType(java.lang.String genre)

      adds an ID3v2.4 `FrameType.CONTENT_TYPE` text frame with the specified genre to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.CONTENT_TYPE` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.CONTENT_TYPE` text frame is added to the ID3v2.4 tag.
      Parameters:
        `genre` - the song's music type. That is, the type of music the song would be described as. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.CONTENT_TYPE` text frame that was added/updated.

    - #### removeV24MusicType

          protected ID3v24Frame removeV24MusicType()

      removes the ID3v2.4 `FrameType.CONTENT_TYPE` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.CONTENT_TYPE` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.CONTENT_TYPE` text frame, then no frame is removed and null is returned.

    - #### getV24Publisher

          protected java.lang.String getV24Publisher()

      finds the ID3v2.4 `FrameType.PUBLISHER` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.PUBLISHER` text frame. If no ID3v2.4 `FrameType.PUBLISHER` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24Publisher

          protected ID3v24Frame setV24Publisher(java.lang.String publisher)

      adds an ID3v2.4 `FrameType.PUBLISHER` text frame with the specified title to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.PUBLISHER` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.PUBLISHER` text frame is added to the ID3v2.4 tag.
      Parameters:
        `publisher` - the publisher of the song. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.PUBLISHER` text frame that was added/updated.

    - #### removeV24Publisher

          protected ID3v24Frame removeV24Publisher()

      removes the ID3v2.4 `FrameType.PUBLISHER` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.PUBLISHER` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.PUBLISHER` text frame, then no frame is removed and null is returned.

    - #### getV24Rating

          protected int getV24Rating()

      finds the ID3v2.4 `FrameType.POPULARIMETER` frame in the ID3v2.4 tag and retrieves the rating field.
      Returns:
        the rating field found in the ID3v2.4 `FrameType.POPULARIMETER` frame. If no ID3v2.4 `FrameType.POPULARIMETER` frame is found in the ID3v2.4 tag, then 0 is returned.

    - #### setV24Rating

          protected ID3v24Frame setV24Rating(int rating)

      adds an ID3v2.4 `FrameType.POPULARIMETER` frame with the specified rating to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.POPULARIMETER` frame, then the existing frame's rating is simply updated. Otherwise, a new ID3v2.4 `FrameType.POPULARIMETER` frame is added to the ID3v2.4 tag.
      Parameters:
        `rating` - the rating of the song. The rating is 1-255 where 1 is worst and 255 is best. 0 is unknown, or unrated.
      Returns:
        the ID3v2.4 `FrameType.POPULARIMETER` frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the rating is less than 0 or greater than 255.

    - #### removeV24Rating

          protected ID3v24Frame removeV24Rating()

      removes the ID3v2.4 `FrameType.POPULARIMETER` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.POPULARIMETER` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.POPULARIMETER` text frame, then no frame is removed and null is returned.

    - #### getV24SynchronizedLyrics

          protected java.util.List<SynchronizedLyric> getV24SynchronizedLyrics(Language language)

      finds the synchronized song lyrics in the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song lyrics are written in.
      Returns:
        the list of the synchronized song lyrics in the specified language. If no synchronized song lyrics in the specified language were found in the ID3v2.4 tag, then null is returned.

    - #### getV24SynchronizedLyricsFrame

          protected ID3v24Frame getV24SynchronizedLyricsFrame(Language language)

      finds the ID3v2.4 synchronized lyrics frame containing in the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the synchronized song lyrics are written in.
      Returns:
        the ID3v2.4 synchronized lyrics frame written in the specified language. If no ID3v2.4 synchronized lyrics frame written in the specified language was found in the ID3v2.4 tag, then null is returned.

    - #### setV24SynchronizedLyrics

          protected ID3v24Frame setV24SynchronizedLyrics(java.util.List<SynchronizedLyric> synchronizedLyrics)

      adds an ID3v2.4 synchronized lyrics frame with the specified english song lyrics to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 synchronized lyrics frame with the lyrics in english, then this frame's synchronized lyrics are simply updated with the new lyrics. Otherwise, a new ID3v2.4 synchronized lyrics frame is added to the ID3v2.4 tag.
      Parameters:
        `synchronizedLyrics` - the synchronized (english) lyrics to the song. The lyrics are encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 synchronized lyrics frame that was added/updated.

    - #### setV24SynchronizedLyrics

          protected ID3v24Frame setV24SynchronizedLyrics(Language language,
                                             java.util.List<SynchronizedLyric> synchronizedLyrics)
                                                  throws java.lang.IllegalArgumentException

      adds an ID3v2.4 synchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 synchronized lyrics frame with the lyrics in the specified language, then the existing frame's synchronized lyrics are simply updated with the new lyrics. Otherwise, a new ID3v2.4 synchronized lyrics frame is added to the ID3v2.4 tag. The UTF-16 character set used to encode the lyrics.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song lyrics are written in.
        `synchronizedLyrics` - a list of synchronized lyrics to the song. The lyrics must be in chronological order.
      Returns:
        the ID3v2.4 synchronized lyrics frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - if the synchronized lyrics are not sorted in ascending chronological order.

    - #### setV24SynchronizedLyrics

          protected ID3v24Frame setV24SynchronizedLyrics(Encoding encoding,
                                             Language language,
                                             java.util.List<SynchronizedLyric> synchronizedLyrics)
                                                  throws java.lang.IllegalArgumentException

      adds an ID3v2.4 synchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 synchronized lyrics frame with the lyrics in the specified language, then this frame's synchronized lyrics are simply updated with the new lyrics. Otherwise, a new ID3v2.4 synchronized lyrics frame is added to the ID3v2.4 tag.
      Parameters:
        `encoding` - the character set used to encode the lyrics. Only ISO 8859-1 and UTF-16 are allowed.
        `language` - the ISO-639-2 language code of the language the song lyrics are written in.
        `synchronizedLyrics` - a list of synchronized lyrics to the song. The lyrics must be in chronological order.
      Returns:
        the ID3v2.4 synchronized lyrics frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - if the synchronized lyrics are not sorted in ascending chronological order.

    - #### removeV24SynchronizedLyrics

          protected ID3v24Frame removeV24SynchronizedLyrics(Language language)

      removes the ID3v2.4 synchronized lyrics frame written in the specified language from the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the synchronized song lyrics are written in.
      Returns:
        the ID3v2.4 synchronized lyrics frame written in the specified language that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not contain an ID3v2.4 synchronized lyrics frame in the specified language, then null is returned.

    - #### getV24Text

          protected java.lang.String getV24Text(FrameType frameType)

      finds the ID3v2.4 text frame with the specified ID3v2.4 frame type in the ID3v2.4 tag and retrieves the text field from the ID3v2.4 frame.
      Parameters:
        `frameType` - one of the ID3v2.4 text frame types.
      Returns:
        the text field found in the ID3v2.4 text frame specified by the ID3v2.4 frame type. If no ID3v2.4 text frame with the specified frame type was found in the ID3v2.4 tag, then null is returned.

    - #### getV24TextAsInteger

          protected int getV24TextAsInteger(FrameType frameType)

      gets the text from a text frame and converts it to an integer.
      Parameters:
        `frameType` - ID3v2.4 text frame type.
      Returns:
        the text of a text frame as an integer. If no number has been specified or if the number is less <= 0, then 0 is returned.

    - #### setV24Text

          protected ID3v24Frame setV24Text(java.lang.String text,
                               FrameType frameType)

      adds an ID3v2.4 text frame with the specified text to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 text frame with the specified frame type, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 text frame with the specified frame type is added to the ID3v2.4 tag.
      Parameters:
        `text` - the text to be added to the ID3v2.4 tag. The text is encoded using the UTF-16 character set.
        `frameType` - the type of ID3v2.4 text frame to add.
      Returns:
        the ID3v2.4 text frame that was added/updated.

    - #### setV24Text

          public ID3v24Frame setV24Text(int n,
                               FrameType frameType)
                                 throws java.lang.IllegalArgumentException

      adds an ID3v2.4 text frame with the string value of the specified integer to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 text frame with the specified frame type, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 text frame with the specified frame type is added to the ID3v2.4 tag. The specified integer is converted to a string which is then stored in the text frame in the ID3v2.4 tag.
      Parameters:
        `n` - the integer whose value will be converted to a string and stored in a text frame in the ID3v2.4 tag. The text is encoded using the ISO 8859-1 character set.
        `frameType` - the type of ID3v2.4 text frame to add.
      Returns:
        the ID3v2.4 text frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the number n is <= 0.

    - #### setV24Text

          protected ID3v24Frame setV24Text(Encoding encoding,
                               java.lang.String text,
                               FrameType frameType)

      adds an ID3v2.4 text frame with the specified text to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 text frame with the specified frame type, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 text frame with the specified frame type is added to the ID3v2.4 tag.
      Parameters:
        `encoding` - the character set used to encode the text. Only ISO 8859-1 and UTF-16 are allowed.
        `text` - the text to be added to the ID3v2.4 tag.
        `frameType` - the type of ID3v2.4 text frame to add.
      Returns:
        the ID3v2.4 text frame that was added/updated.

    - #### getV24Title

          protected java.lang.String getV24Title()

      finds the ID3v2.4 `FrameType.SONG_TITLE` text frame in the ID3v2.4 tag and retrieves the text field.
      Returns:
        the text field found in the ID3v2.4 `FrameType.SONG_TITLE` text frame. If no ID3v2.4 `FrameType.SONG_TITLE` text frame is found in the ID3v2.4 tag, then null is returned.

    - #### setV24Title

          protected ID3v24Frame setV24Title(java.lang.String title)

      adds an ID3v2.4 `FrameType.SONG_TITLE` text frame with the specified title to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.SONG_TITLE` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.SONG_TITLE` text frame is added to the ID3v2.4 tag.
      Parameters:
        `title` - the name of the .mp3 song. The text is encoded using the UTF-16 character set.
      Returns:
        the ID3v2.4 `FrameType.SONG_TITLE` text frame that was added/updated.

    - #### removeV24Title

          protected ID3v24Frame removeV24Title()

      removes the ID3v2.4 `FrameType.SONG_TITLE` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.SONG_TITLE` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.SONG_TITLE` text frame, then no frame is removed and null is returned.

    - #### getV24Track

          protected int getV24Track()

      finds the ID3v2.4 `FrameType.TRACK_NUMBER` text frame in the ID3v2.4 tag and retrieves the text field. The text field is then converted to an integer and returned.
      Returns:
        the text field found in the ID3v2.4 `FrameType.TRACK_NUMBER` text frame. If no ID3v2.4 `FrameType.TRACK_NUMBER` text frame is found in the ID3v2.4 tag, or if the text field is not a valid integer, then 0 is returned.

    - #### setV24Track

          protected ID3v24Frame setV24Track(int track)
                                     throws java.lang.IllegalArgumentException

      adds an ID3v2.4 `FrameType.TRACK_NUMBER` text frame with the specified size to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.TRACK_NUMBER` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.TRACK_NUMBER` text frame is added to the ID3v2.4 tag.
      Parameters:
        `track` - the track number of the song. It must be >= 1.
      Returns:
        the ID3v2.4 `FrameType.TRACK_NUMBER` text frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the track is less than 1.

    - #### removeV24Track

          protected ID3v24Frame removeV24Track()

      removes the ID3v2.4 `FrameType.TRACK_NUMBER` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.TRACK_NUMBER` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.TRACK_NUMBER` text frame, then no frame is removed and null is returned.

    - #### getV24UnsynchronizedLyrics

          protected java.lang.String getV24UnsynchronizedLyrics(Language language)

      finds the unsynchronized song lyrics in the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song lyrics are written in.
      Returns:
        the list of the unsynchronized song lyrics in the specified language. If no unsynchronized song lyrics in the specified language were found in the ID3v2.4 tag, then null is returned.

    - #### getV24UnsynchronizedLyricsFrame

          protected ID3v24Frame getV24UnsynchronizedLyricsFrame(Language language)

      finds the ID3v2.4 unsynchronized lyrics frame containing in the specified language in the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the unsynchronized song lyrics are written in.
      Returns:
        the ID3v2.4 unsynchronized lyrics frame written in the specified language. If no ID3v2.4 unsynchronized lyrics frame written in the specified language was found in the ID3v2.4 tag, then null is returned.

    - #### setV24UnsynchronizedLyrics

          protected ID3v24Frame setV24UnsynchronizedLyrics(Language language,
                                               java.lang.String lyrics)

      adds an ID3v2.4 unsynchronized lyrics frame with the specified song lyrics written in the given language to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 unsynchronized lyrics frame with the lyrics in the specified language, then the existing frame's unsynchronized lyrics are simply updated with the new lyrics. Otherwise, a new ID3v2.4 unsynchronized lyrics frame is added to the ID3v2.4 tag. The lyrics are encoded with the UTF-16 character set.
      Parameters:
        `language` - the ISO-639-2 language code of the language the song lyrics are written in.
        `lyrics` - the unsynchronized lyrics to the song.
      Returns:
        the ID3v2.4 synchronized lyrics frame that was added/updated.

    - #### removeV24UnsynchronizedLyrics

          protected ID3v24Frame removeV24UnsynchronizedLyrics(Language language)

      removes the ID3v2.4 unsynchronized lyrics frame written in the specified language from the ID3v2.4 tag.
      Parameters:
        `language` - the ISO-639-2 language code of the language the unsynchronized song lyrics are written in.
      Returns:
        the ID3v2.4 unsynchronized lyrics frame written in the specified language that was removed from the ID3v2.4 tag. If the ID3v2.4 tag does not contain an ID3v2.4 unsynchronized lyrics frame in the specified language, then null is returned.

    - #### getV24Year

          public int getV24Year()

      finds the ID3v2.4 `FrameType.RECORDING_TIME` text frame in the ID3v2.4 tag and retrieves the text field. The text field is then converted to an integer and returned.
      Returns:
        the text field found in the ID3v2.4 `FrameType.RECORDING_TIME` text frame. If no ID3v2.4 `FrameType.RECORDING_TIME` text frame is found in the ID3v2.4 tag, or if the text field is not a valid integer, then 0 is returned.

    - #### setV24Year

          protected ID3v24Frame setV24Year(int year)
                                    throws java.lang.IllegalArgumentException

      adds an ID3v2.4 `FrameType.RECORDING_TIME` text frame with the specified year to the ID3v2.4 tag. If the ID3v2.4 tag already contains an ID3v2.4 `FrameType.RECORDING_TIME` text frame, then the existing frame's text is simply updated. Otherwise, a new ID3v2.4 `FrameType.RECORDING_TIME` text frame is added to the ID3v2.4 tag.
      Parameters:
        `year` - the year the song was recorded. It must be >= 1.
      Returns:
        the ID3v2.4 `FrameType.RECORDING_TIME` text frame that was added/updated.
      Throws:
        `java.lang.IllegalArgumentException` - If the year is less than 0.

    - #### removeV24Year

          protected ID3v24Frame removeV24Year()

      removes the ID3v2.4 `FrameType.RECORDING_TIME` text frame in the ID3v2.4 tag.
      Returns:
        the ID3v2.4 `FrameType.RECORDING_TIME` text frame that was removed. If the ID3v2.4 tag does not contain an ID3v2.4 `FrameType.RECORDING_TIME` text frame, then no frame is removed and null is returned.