mirror of
https://github.com/iluvcapra/wavinfo.git
synced 2025-12-31 08:50:41 +00:00
Steinberg in progress
This commit is contained in:
@@ -9,7 +9,7 @@ IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name'
|
||||
|
||||
class SteinbergMetadata:
|
||||
"""
|
||||
Vendor-specific Steinberg metadata
|
||||
Vendor-specific Steinberg metadata.
|
||||
"""
|
||||
|
||||
class AudioSpeakerArrangement(IntEnum):
|
||||
@@ -49,20 +49,87 @@ class SteinbergMetadata:
|
||||
AURO_13_0 = 41
|
||||
AURO_13_1 = 42
|
||||
|
||||
def __init__(self, xml : ET.ElementTree) -> None:
|
||||
Steinberg_xpath = "//BWFXML/STEINBERG"
|
||||
|
||||
@classmethod
|
||||
def present(cls, xml: ET.ElementTree) -> bool:
|
||||
"""
|
||||
Parse Steinberg iXML data
|
||||
Test if `xml` has Steinberg metadata.
|
||||
:param xml: an iXML ElementTree
|
||||
"""
|
||||
x = xml.find(cls.Steinberg_xpath)
|
||||
return len(x) > 0
|
||||
|
||||
def __init__(self, xml: ET.ElementTree) -> None:
|
||||
"""
|
||||
Parse Steinberg iXML data.
|
||||
:param xml: The entire iXML Tree
|
||||
"""
|
||||
self.parsed = xml.find("//BWFXML/STEINBERG")
|
||||
|
||||
@property
|
||||
def audio_speaker_arrangement(self) -> AudioSpeakerArrangement:
|
||||
"""
|
||||
AudioSpeakerArrangement
|
||||
"""
|
||||
val = self.parsed.find("./ATTR_LIST/ATTR[NAME/text() = 'AudioSpeakerArrangement']/VALUE/text()")
|
||||
return type(self).AudioSpeakerArrangement(int(val))
|
||||
|
||||
|
||||
@property
|
||||
def sample_format_size(self) -> Optional[int]:
|
||||
"""
|
||||
AudioSampleFormatSize
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def media_company(self) -> Optional[str]:
|
||||
"""
|
||||
MediaCompany
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def media_drop_frames(self) -> Optional[bool]:
|
||||
"""
|
||||
MediaDropFrames
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def media_duration(self) -> Optional[float]:
|
||||
"""
|
||||
MediaDuration
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def media_start_time(self) -> Optional[float]:
|
||||
"""
|
||||
MediaStartTime
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def media_track_title(self) -> Optional[str]:
|
||||
"""
|
||||
MediaTrackTitle
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def program_name(self) -> Optional[str]:
|
||||
"""
|
||||
ProgramName
|
||||
"""
|
||||
pass
|
||||
|
||||
@property
|
||||
def program_version(self) -> Optional[str]:
|
||||
"""
|
||||
ProgramVersion
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class WavIXMLFormat:
|
||||
@@ -158,7 +225,10 @@ class WavIXMLFormat:
|
||||
"""
|
||||
Steinberg vendor iXML metadata if present.
|
||||
"""
|
||||
return SteinbergMetadata(self.raw_xml)
|
||||
if SteinbergMetadata.present(self.raw_xml):
|
||||
return SteinbergMetadata(self.raw_xml)
|
||||
else:
|
||||
return None
|
||||
|
||||
def to_dict(self):
|
||||
return dict(track_list=list(map(lambda x: x._asdict(), self.track_list)),
|
||||
@@ -169,86 +239,3 @@ class WavIXMLFormat:
|
||||
family_uid=self.family_uid,
|
||||
family_name=self.family_name
|
||||
)
|
||||
|
||||
# Nuendo Audio Speaker Arrangement Codes
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Nuendo Keys
|
||||
# AudioSampleFormatSize, AudioSpeakerArrangement, MediaCompany, MediaDropFrames, MediaDuration(float) (seconds, session length?),
|
||||
# MediaStartTime(float), MediaTrackTitle, ProgramName, ProgramVersion,
|
||||
|
||||
|
||||
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - LRCS.wav
|
||||
# 14
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Stereo.wav
|
||||
# 1
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - LRC.wav
|
||||
# 10
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Mono.wav
|
||||
# 0
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Quad.wav
|
||||
# 15
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 5.1.wav
|
||||
# 19
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 5.0.wav
|
||||
# 18
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 6.1 Surround EX.wav
|
||||
# 22
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 6.0 Surround EX.wav
|
||||
# 20
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 7.1 SDDS.wav
|
||||
# 26
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 7.0 SDDS.wav
|
||||
# 24
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 7.0.wav
|
||||
# 25
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 7.1.wav
|
||||
# 27
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 6.1 Music.wav
|
||||
# 23
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 7.1.2.wav
|
||||
# 33
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 5.0.4.wav
|
||||
# 35
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 5.1.4.wav
|
||||
# 36
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 7.0.2.wav
|
||||
# 48
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 7.1.4.wav
|
||||
# 44
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 7.1.6.wav
|
||||
# 51
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 9.1.4.wav
|
||||
# 53
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Atmos 9.1.6.wav
|
||||
# 55
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 3OA.wav
|
||||
# 47
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 1OA.wav
|
||||
# 45
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - 2OA.wav
|
||||
# 46
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 10.0.wav
|
||||
# 37
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 10.1.wav
|
||||
# 38
|
||||
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 13.1.wav
|
||||
# 42
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 13.0.wav
|
||||
# 41
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 11.0.wav
|
||||
# 39
|
||||
# tests/test_files/nuendo//wavinfo Test Project - Audio - Auro3d 11.1.wav
|
||||
# 40
|
||||
|
||||
Reference in New Issue
Block a user