47 lines
1.1 KiB
Python
Executable File
47 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import struct
|
|
|
|
with open("out.mod", "wb") as fo:
|
|
|
|
# Module name.
|
|
fo.write(struct.pack("20s", "TEMP".encode('utf-8')))
|
|
|
|
for i in range(1,32):
|
|
# Sample name.
|
|
fo.write(struct.pack("22s", "SMPL".encode('utf-8')))
|
|
|
|
fo.write(struct.pack(">H", 0)) # Sample length.
|
|
fo.write(struct.pack(">B", 0)) # Finetune.
|
|
fo.write(struct.pack(">B", 64)) # Volume.
|
|
fo.write(struct.pack(">H", 0)) # Loop offset.
|
|
fo.write(struct.pack(">H", 0)) # Loop length.
|
|
|
|
fo.write(struct.pack(">B", 1)) # Song positions.
|
|
fo.write(struct.pack(">B", 42)) # Obsolete.
|
|
|
|
# Pattern table.
|
|
for i in range(0, 128):
|
|
fo.write(bytes(b"\x00"))
|
|
|
|
# 31 samples mode.
|
|
fo.write(struct.pack("4s", "M.K.".encode("ascii")))
|
|
|
|
# Pattern data.
|
|
for i in range(0, 1):
|
|
for r in range(0,64):
|
|
for c in range(0, 4):
|
|
etype = 1
|
|
evall = 32
|
|
evalh = evall >> 4
|
|
|
|
period = 202
|
|
effect = (evall & 0xF) | ((evalh & 0xF) * 16) | ((etype & 0xF) * 256)
|
|
sample = 1
|
|
|
|
div0 = (period & 0xFFF) | ((sample & 0xF0) * 256)
|
|
div1 = (effect & 0xFFF) | ((sample & 0xF) * 4096)
|
|
fo.write(struct.pack(">H", div0))
|
|
fo.write(struct.pack(">H", div1))
|