neogeo-mzs / Mezz-Estate-NeoGeo-Audio-Driver

An audio driver for the NeoGeo written in Z80 assembly
MIT License
19 stars 1 forks source link

Parsing error of DMFs saved with latest version of Deflemask #5

Open sreuter opened 2 months ago

sreuter commented 2 months ago

Hey there :)

We recently started doing some final adjustments on our BGM. Unfortunately, the DMFs produced by the latest version of Deflemask can't be parsed by dmf2mlm.

Parsing 'input/xxxx.dmf'... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/__main__.py", line 116, in <module>
    mod = dmf.Module(file.read())
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 563, in __init__
    self.parse_samples()
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 669, in parse_samples
    sample = Sample.from_dmf_data(self.data[self.head_ofs:])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 415, in from_dmf_data
    s.bits = SampleWidth(data[head_ofs+2])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/enum.py", line 744, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/enum.py", line 1158, in __new__
    raise ve_exc
ValueError: 178 is not a valid SampleWidth

==

Parsing 'input/xxxx.dmf'... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/__main__.py", line 116, in <module>
    mod = dmf.Module(file.read())
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 563, in __init__
    self.parse_samples()
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 669, in parse_samples
    sample = Sample.from_dmf_data(self.data[self.head_ofs:])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mtn/Library/CloudStorage/Dropbox/dmf2mlm/src/dmf.py", line 410, in from_dmf_data
    s.name = data[head_ofs+5:head_ofs+5+name_len].decode(encoding='ascii')
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

Any idea what might be going wrong here?

sreuter commented 1 month ago

@neogeo-mzs Any chance you could have a look at this? :) Apologies btw, I should have opened that in the dmf2mlm repo.