#!/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))