All ID3v2 frames subclass GOOPS class <id3v2-frame>
:
(define-class <id3v2-frame> () (id #:init-value 'unknown-frame #:accessor id #:init-keyword #:id) (tap #:init-value '() #:accessor tap #:init-keyword #:tap) (fap #:init-value '() #:accessor fap #:init-keyword #:fap) (ro #:init-value '() #:accessor ro #:init-keyword #:ro) (unsync #:init-value '() #:accessor unsync #:init-keyword #:unsync))
id
is a symbol naming the frame See Frame Identifiers. The remaining
four fields are frame flags that can be either true (#t
), false
(#f
) or just left undefined ('()
):
tap
Tag Alter Preserve “This flag tells the software what to
do with this frame if it is unknown and the tag is altered in any
way. This applies to all kinds of alterations, including adding more
padding and reordering the frames.” Sec 3.3.1
fap
File Alter Preserve “This flag tells the software what to
do with this frame if it is unknown and the file, excluding the tag,
is altered. This does not apply when the audio is completely replaced
with other audio data.” Sec 3.3.1
ro
Read Only “This flag, if set, tells the software that the
contents of this frame is intended to be read only. Changing the
contents might break something, e.g. a signature. If the contents are
changed, without knowledge in why the frame was flagged read only and
without taking the proper means to compensate, e.g. recalculating the
signature, the bit should be cleared.” Sec 3.3.1
unsync
Unsynchronisation
In ID3v2.2 & ID3v2.3, a value of #t
for this flag indicates that
the unsynchronisation scheme See The Unsynchronisation Scheme, has been
applied to this tag. In ID3v2.4, it indicates that it has been applied to
all frames.
Module scribbu
defines a few <id3v2-frame>
sub-classes.