ys2-intro/loader/samples/minexample/furC64/chipchune/interchange/furnace.py
2025-11-26 19:42:34 +07:00

52 lines
2.3 KiB
Python

from chipchune.furnace.enums import Note as FurnaceNote
from chipchune.interchange.enums import InterNote
def furnace_note_to_internote(note: FurnaceNote) -> InterNote:
"""
Convert a Furnace note into an InterNote.
Raises:
- Exception: If the supplied note is out of range.
"""
if note == FurnaceNote.__: return InterNote.__
elif note == FurnaceNote.C_: return InterNote.C_
elif note == FurnaceNote.Cs: return InterNote.Cs
elif note == FurnaceNote.D_: return InterNote.D_
elif note == FurnaceNote.Ds: return InterNote.Ds
elif note == FurnaceNote.E_: return InterNote.E_
elif note == FurnaceNote.F_: return InterNote.F_
elif note == FurnaceNote.Fs: return InterNote.Fs
elif note == FurnaceNote.G_: return InterNote.G_
elif note == FurnaceNote.Gs: return InterNote.Gs
elif note == FurnaceNote.A_: return InterNote.A_
elif note == FurnaceNote.As: return InterNote.As
elif note == FurnaceNote.B_: return InterNote.B_
elif note == FurnaceNote.OFF: return InterNote.Off
elif note == FurnaceNote.OFF_REL: return InterNote.OffRel
elif note == FurnaceNote.REL: return InterNote.Rel
else:
raise Exception("Invalid note value %s" % note)
def internote_to_furnace_note(note: InterNote) -> FurnaceNote:
"""
Convert an InterNote into a Furnace note. If the equivalent
value is unable to be determined, a blank note `__` is returned.
"""
if note == InterNote.__: return FurnaceNote.__
elif note == InterNote.C_: return FurnaceNote.C_
elif note == InterNote.Cs: return FurnaceNote.Cs
elif note == InterNote.D_: return FurnaceNote.D_
elif note == InterNote.Ds: return FurnaceNote.Ds
elif note == InterNote.E_: return FurnaceNote.E_
elif note == InterNote.F_: return FurnaceNote.F_
elif note == InterNote.Fs: return FurnaceNote.Fs
elif note == InterNote.G_: return FurnaceNote.G_
elif note == InterNote.Gs: return FurnaceNote.Gs
elif note == InterNote.A_: return FurnaceNote.A_
elif note == InterNote.As: return FurnaceNote.As
elif note == InterNote.B_: return FurnaceNote.B_
elif note == InterNote.Off: return FurnaceNote.OFF
elif note == InterNote.OffRel: return FurnaceNote.OFF_REL
elif note == InterNote.Rel: return FurnaceNote.REL
else:
return FurnaceNote.__