Macs Opera CMF File Format

research by mad::mike, 2008, 2023

Macs Opera CMF File Definition

Type Size Amount Data
string 5 1 "A.H." (zero-terminated)
short 2 99 Pattern sequence (from 0 to 98; 99 = end)
short 2 1 Number of patterns [P]
short 2 1 Speed (3 = 4.5 notes/sec, 2 = 9 n/s, 1 = 18 n/s)
short 2 1 Percussion mode: 0x00 = nine voices (9 mel), 0x01 = eleven voices (6 mel, 5 perc)
short 2 1 Number of instruments [I]
Instrument 69 [I] Instrument definitions
Pattern varies [P] Pattern definitions

"A.H." are the initials of Arndt Hasch, the author of Macs Opera.

Instrument Type Definition

Type Size Amount Data
(see below) 56 1 Instrument data
string 13 1 Instrument name (padded with '\0's)

Instrument Data Definition

Offset Size (bytes) DataEnglish
6 2 Anstiegs-Rate Modulator (0..15) Modulator attack
32 2 Anstiegs-Rate Träger (0..15) Carrier attack
12 2 Abstiegs-Rate Modulator (0..15) Modulator decay
38 2 Abstiegs-Rate Träger (0..15) Carrier decay
8 2 Halte-Rate Modulator (0..15) Modulator sustain
34 2 Halte-Rate Träger (0..15) Carrier sustain
14 2 Auskling-Rate Modulator (0..15) Modulator release
40 2 Auskling-Rate Träger (0..15) Carrier release
10 2(?) Halten Modulator (bool) Modulator sustaining
36 2(?) Halten Träger (bool) Carrier sustaining
22 2(?) Hüllkurvenskalierung Modulator (bool) Modulator env scaling (KSR)
48 2(?) Hüllkurvenskalierung Träger (bool) Carrier env scaling (KSR)
2 2 Frequenzmultiplikator Modulator (0..15) Modulator frequency multiplier
28 2 Frequenzmultiplikator Träger (0..15) Carrier frequency multiplier
4 2 Rückwirkung Modulator (0..7) (Modulator) feedback
20 2 Pitchvibrato Modulator (bool) (Modulator) pitch vibrato
16 2 Dämpfung Modulator (0..63) Modulator output level
42 2 Dämpfung Träger (0..63) Carrier output level
0 2 Filter Modulator (0 = Kein, 1 = Hoch, 2 = Tief, 3 = Band)Modulator key scale level (KSL)
26 2 Filter Träger (0 = Kein, 1 = Hoch, 2 = Tief, 3 = Band) Carrier key scale level (KSL)
18 2(?) Amplitudenvibrato Modulator (bool) (Modulator) amplitude vibrato
24 2(?) Frequenzmodulation Modulator (bool) (Modulator) frequency modulation
52 2 Wellenform Modulator (0..3) Modulator wave form
54 2 Wellenform Träger (0..3) Carrier waveform

Pattern Definition

Currently, see constructor of class CMFSong for pattern info, and work your way from there. (It's pretty straightforward, though. 😉 A byte of –1 ends the pattern.)

Note Definition

OffsetSizeData
01Time
11Voice
21Note
31Instrument
41Volume (0..127)
51Pitch

CMF Notes are one octave higher than MIDI notes, so CMF note 57 = a' = 440 Hz; CMF note 48 = c'.