mirror of
https://github.com/opsxcq/mirror-textfiles.com.git
synced 2025-08-18 06:01:47 +02:00
111 lines
3.7 KiB
Plaintext
111 lines
3.7 KiB
Plaintext
Date: Wed, 9 Mar 94 16:14:20 PST
|
||
From: awiggins@sdcc5.UCSD.EDU (Adam Wiggins)
|
||
Subject: Re: Need CMF format
|
||
Newsgroups: rec.games.programmer
|
||
|
||
> I need the format of CMF files, particularly the FM instruments part.
|
||
>Thanks in advance.
|
||
|
||
CMF consists of 3 different block structures: header block, instrument block
|
||
and a music block.
|
||
|
||
Header Block.
|
||
|
||
Offset Description
|
||
|
||
00-03 File ID'CTMF'
|
||
04-05 Version # (currently 1.10)
|
||
06-07 Offset of instrument block from start of file
|
||
08-09 Offset of music block from start of file
|
||
0A-0B Ticks per quarter note (default=120)
|
||
0C-0D Clock ticks per second (default=96)
|
||
0E-0F Offset of music title from start of file (0=none)
|
||
10-11 Offset of composer name (0=none)
|
||
12-13 Offset of remarks (0=none)
|
||
14-23 Channel-in-use table (16 bytes long)
|
||
24-25 # of instruments used
|
||
26-27 Basic tempo
|
||
28- Title, composer and/or remarks
|
||
|
||
|
||
Instrument Block
|
||
|
||
Each instrument block is 16 bytes long.
|
||
|
||
Offset Description
|
||
|
||
00 Modulator characteristic
|
||
01 Carrier characteristic
|
||
bit 7 Pitch Vibrato
|
||
6 Amplitude Vibrato
|
||
5 Sustaining Sound
|
||
4 Envelope Scaling
|
||
3-0 Frequency Multiplier
|
||
02 Modulator Scaling/Output Level
|
||
03 Carrier Scaling/Output Level
|
||
bit 7-6 Level Scaling
|
||
5-0 Output Level
|
||
04 Modulator Attack/Delay
|
||
05 Carrier Attack/Delay
|
||
bit 7-4 Attack Rate
|
||
3-0 Delay Rate
|
||
06 Modulator Sustain Level/Release Rate
|
||
07 Carrier Sustain Level/Release Rate
|
||
bit 7-4 Sustain Level
|
||
3-0 Release Rate
|
||
08 Modulator Wave Select
|
||
09 Carrier Wave Select
|
||
bit 7-2 (all cleared)
|
||
0-1 Wave Select
|
||
0A Feedback/Connection
|
||
bit 7-4 (cleared)
|
||
3-1 Modulator Feedback
|
||
0 Connection
|
||
0B-0F Not used (Reserved)
|
||
|
||
|
||
Music Block
|
||
|
||
The music block is single track, polyphonic, with a max of 16 channels.
|
||
It adheres to the Standard Midi File format. It is like:
|
||
|
||
Music block = <delta time> <Midi event> <delta time> <Midi event>...
|
||
|
||
where: Delta time = amount of time before Midi event (in ticks)
|
||
|
||
Midi event = any Midi channel message
|
||
|
||
Here is where the book gets foggy. Some Midi events are Control Change events
|
||
but it doesn't say if all are like that. These are the only ones discussed:
|
||
|
||
Control Number Control Data
|
||
66h 1-127 (Used as markers in music)
|
||
67h 0-Melody mode
|
||
1-Rhythm mode
|
||
|
||
I don't know of the 0 or 1 are bits or follow the Control Number but it
|
||
appears that there will be a 66h then a number between 1 and 127
|
||
designating seminote length (1 seminote = 1/128 of a tick or something)
|
||
or a 67h and a 0 or 1 to determine the mode. In Rhythm mode, the last
|
||
5 channels are:
|
||
|
||
Channel Rhythm
|
||
12 Bass Drum
|
||
13 Snare
|
||
14 Tom-tom
|
||
15 Top-cymbal
|
||
16 High-hat
|
||
|
||
Control Number Control Data
|
||
68h 0-127 (Changes pitch upward by the # of 1/128 seminotes.
|
||
0=Cancel pitch change)
|
||
|
||
69h 0-127 (Changes pitch downward by the # of 1/128
|
||
seminotes. 0=Cancel pitch change)
|
||
|
||
|
||
Sorry about the ^M's.
|
||
|
||
...Boone
|
||
|
||
|