home *** CD-ROM | disk | FTP | other *** search
- :10,0
- SIDPLAYER MUSIC FILE CONTENTS
- BY DICK THORNTON
- :10,60
-
- SIDPLAYER MUSIC FILES ARE PRG TYPE FILES WHICH CONTAIN THE
- MUSICAL NOTES AND COMMAND DIRECTIVES FOR PLAYING A SONG, AS
- WELL AS THE SEVERAL TEXT LINES INTENDED FOR THE SONG NAME
- AND CREDIT LINES FOR THE COMPOSER AND SID ARRANGER.
-
- ON DISK, THE FILE CONSISTS OF ONE OR MORE SECTORS WRITTEN IN
- STANDARD PRG FORMAT. CHARACTERISTICS OF THIS FILE TYPE CAN
- BE FOUND IN YOUR DISK MANUAL, OR OTHER BOOKS ON DISK FILE
- MANAGEMENT. FROM HERE ON, WE WILL CONSIDER THE FILE DATA AS
- IT RESIDES IN MEMORY AFTER BEING LOAD'ED. THE GENERAL FORMAT
- OF THE .MUS FILE IN MEMORY IS:
-
- :10,0
- (1) TWO-BYTE LENGTH OF VOICE 1 IN LOW-BYTE, HIGH-BYTE FORM.
- (2) TWO-BYTE LENGTH OF VOICE 2 IN LOW-BYTE, HIGH-BYTE FORM.
- (3) TWO-BYTE LENGTH OF VOICE 3 IN LOW-BYTE, HIGH-BYTE FORM.
- (4) THE DATA FOR VOICE 1 ALWAYS ENDING WITH A HLT COMMAND.
- (5) THE DATA FOR VOICE 2 ALWAYS ENDING WITH A HLT COMMAND.
- (6) THE DATA FOR VOICE 3 ALWAYS ENDING WITH A HLT COMMAND.
- (7) THE TEXT LINES FOR SONG NAME, ETC. THERE ARE FIVE
- LINES, EACH CONTAINING 0-32 BYTES AND ENDING WITH A
- CARRIAGE RETURN. THE TEXT DATA INFORMATION IS IN
- UPPER-CASE COMMODORE PET ASCII. A HEX ZERO BYTE FOLLOWS
- THE LAST BYTE OF THE LAST LINE OF TEXT.
- :10,60
-
- THE EFFECT OF THIS IS THAT EACH .MUS FILE IS ACTUALLY FOUR
- FILES PACKED END-TO-END IN A SINGLE PRG FILE WITH THREE
- LITTLE TWO-BYTE LENGTHS IN THE FRONT TO HELP YOU FIND
- THINGS. VOICE 1 BEGINS AT THE SIXTH BYTE OF THE DATA FILE AS
- LOAD'ED INTO MEMORY. VOICE 2 STARTS AT A POINT 6 + LENGTH OF
- VOICE 1 FROM THE BEGINNING OF THE FILE IN MEMORY. VOICE 3 IS
- AT 6 + LENGTH OF VOICE 1 + LENGTH OF VOICE 2 FROM THE FILE
- START, AND THE TEXT LINES BEGIN AT 6 + LENGTH OF VOICE 1 +
- LENGTH OF VOICE 2 + LENGTH OF VOICE 3. EACH VOICE ENDS WITH
- A HLT COMMAND (HEX 014F), AND IF THERE IS NO DATA FOR A
- VOICE THAT IS ALL IT WILL CONTAIN. THE TEXT AREA ENDS WITH A
- HEX ZERO AFTER THE CARRIAGE RETURN FOR THE FINAL LINE.
-
- EACH VOICE CONTAINS DATA IN TWO-BYTE PAIRS THAT CONTAIN THE
- MUSICAL NOTES AND COMMANDS NEEDED TO PLAY THE SONG. THE
- FIRST BYTE OF EACH PAIR WILL HAVE BITS 1 AND 0 BOTH SET TO
- ZERO IF THE BYTE-PAIR DESCRIBES A MUSICAL NOTE, OTHERWISE
- THE BYTE-PAIR DESCRIBES A SID CHIP COMMAND OR SIDPLAYER
- COMMAND.
-
- IN THE FOLLOWING, COMMANDS ARE IDENTIFIED BY THE THREE
- CHARACTER ABBREVIATION USED BY THE SID EDITOR PROGRAM
- DESCRIBED IN THE BOOKS "ALL ABOUT THE COMMODORE 64" VOLUME
- 2, AND "COMPUTE!'S MUSIC SYSTEM FOR THE COMMODORE 128 AND
- 64". BOTH BOOKS ARE PUBLISHED BY COMPUTE! BOOKS.
- :10,0
-
- - PAGE 1 -
- MUSICAL NOTE DATA PAIRS
- :10,60
- MUSICAL NOTE DATA PAIRS WILL CONTAIN 00 IN THE LOWER-ORDER
- TWO BITS OF THE FIRST BYTE OF THE PAIR. EACH MUSICAL NOTE
- BYTE-PAIR CONTAINS DURATION IN ITS FIRST BYTE, AND FREQUENCY
- (PITCH) IN THE SECOND. THIS DATA IS CODED AS FOLLOWS, WHERE
- THE PARENTHETIC NUMBER FOLLOWING A BIT NUMBER IS THE HEX
- VALUE OF THAT BIT:
- :10,0
-
-
- BYTE 1 - TIE AND DURATION
-
- BIT 7 (80) ALWAYS 0
- BIT 6 (40) 1=TIE TO NEXT NOTE. 0=NOT TIED
- BIT 5 (20) 1=DOTTED NOTE DURATION. 0=NOT DOTTED
- BIT 4 (10) BITS 4 3 2 NOTE DURATION
- BIT 3 (08) . 1 1 1 32ND NOTE
- BIT 2 (04) . 1 1 0 16TH NOTE
- . 1 0 1 8TH NOTE
- . 1 0 0 QUARTER NOTE
- . 0 1 1 HALF NOTE
- . 0 1 0 WHOLE NOTE
- . 0 0 1 UTILITY DURATION
- . 0 0 0 ABSOLUTE PITCH
- BIT 1 (02) ALWAYS 0 FOR NOTE PAIRS
- BIT 0 (01) ALWAYS 0 FOR NOTE PAIRS
-
-
-
-
- BYTE 2 - FREQUENCY (PITCH) AND RESTS
-
- BIT 7 (80) BITS 7 6 PITCH MODIFICATION
- BIT 6 (40) . 1 1 FLATTED NOTE
- . 1 0 NATURAL NOTE
- . 0 1 SHARPED NOTE
- BIT 5 (20) BITS 5 4 3 OCTAVE NUMBER
- BIT 4 (10) . 1 1 1 OCTAVE 0
- BIT 3 (08) . 1 1 0 OCTAVE 1
- . 1 0 1 OCTAVE 2
- . 1 0 0 OCTAVE 3
- . 0 1 1 OCTAVE 4
- . 0 1 0 OCTAVE 5
- . 0 0 1 OCTAVE 6
- . 0 0 0 OCTAVE 7
- BIT 2 (04) BITS 2 1 0 NOTE LETTER IDENTIFIER
- BIT 1 (02) . 1 1 1 B NOTE
- BIT 0 (01) . 1 1 0 A NOTE
- . 1 0 1 G NOTE
- . 1 0 0 F NOTE
- . 0 1 1 E NOTE
- . 0 1 0 D NOTE
- . 0 0 1 C NOTE
- . 0 0 0 REST
-
-
- - PAGE 2 -
- COMMAND DATA PAIRS
- :10,60
- COMMANDS CONTAIN INFORMATION OTHER THAN MUSICAL NOTE PITCH
- AND DURATION. FOR COMMANDS, THE LOW-ORDER TWO BITS OF THE
- FIRST BYTE ARE NOT 00. A WHOLE SET OF COMMANDS ARE
- IDENTIFIED WITH A FIRST BYTE VALUE OF HEX 01. FOR THESE
- COMMANDS, THE LOW-ORDER FOUR BITS OF THE SECOND BYTE CAN BE
- USED AS A GROSS IDENTIFIER, WHILE THE HIGH ORDER FOUR BITS
- OFTEN CONTAIN A NUMERIC VALUE. THESE COMMANDS ARE DESCRIBED
- BY THEIR SECOND BYTES BELOW:
- :10,0
-
- COMMANDS WITH FIRST BYTE = HEX 01
-
- * BYTE2 * HEX COMMAND VALUE
- 7654 3210 NAME
- NNNN 0000 N0 DCY BITS 7654 CONTAIN A VALUE, 0-F
- NNNN 0010 N2 CAL BITS 7654 CONTAIN A VALUE, 0-F
- 0000 0011 03 BMP UP
- 0001 0011 13 FLT NO
- 0010 0011 23 RNG NO
- 0011 0011 33 SNC NO
- 0100 0011 43 F-X NO
- 0101 0011 53 3-0 NO
- 0NNN N100 ATK BITS 6543 CONTAIN A VALUE, 0-F
- 1NNN N100 SUS BITS 6543 CONTAIN A VALUE, 0-F
- NNNN 0110 N6 DEF BITS 7654 CONTAIN A VALUE, 0-F
- NNN0 0111 N7 WAV BITS 7 6 5 WAVEFORM
- 0 0 0 NOISE
- 0 0 1 TRIANGLE
- 0 1 0 SAWTOOTH
- 0 1 1 TRIANGLE + SAWTOOTH
- 1 0 0 PULSE
- 1 0 1 PULSE + TRIANGLE
- 1 1 0 PULSE + SAWTOOTH
- 1 1 1 PULS+TRIANG+SAWTOO
- NNN1 0111 N7 F-M BITS 7 6 5 FILTER MODE
- 0 0 0 OFF
- 0 0 1 LOW PASS
- 0 1 0 BAND PASS
- 0 1 1 LOW + BAND
- 1 0 0 HIGH PASS
- 1 0 1 HIGH + LOW
- 1 1 0 HIGH + BAND
- 1 1 1 HIGH + BAND + LOW
- NNNN 1000 N8 RLS BITS 7654 CONTAIN A VALUE, 0-F
- NNNN 1010 NA RES BITS 7654 CONTAIN A VALUE, 0-F
- 0000 1011 0B BMP DOWN
- 0001 1011 1B FLT YES
- 0010 1011 2B RNG YES
- 0011 1011 3B SNC YES
- 0100 1011 4B F-X YES
- 0101 1011 5B 3-0 YES
- NNNN 1110 NE VOL BITS 7654 CONTAIN A VALUE, 0-F
- 0000 1111 0F TAL N/A
- 0010 1111 2F END N/A
- 0100 1111 4F HLT N/A
- - PAGE 3 -
- COMMANDS WHOSE FIRST BYTE IS NOT HEX 01
-
- :10,60
- THIS GROUP OF COMMAND PAIRS GENERALLY HAS A FIRST BYTE THAT
- DEFINES THE COMMAND, AND THE SECOND BYTE GIVES A NUMERIC
- VALUE FROM HEX 00 TO FF (DECIMAL RANGE 0 TO 255). THERE ARE
- A FEW VARIATIONS, HOWEVER, WHERE THE VALUE RANGE EXCEEDS 255
- (DTN AND POR), AND WHERE NEGATIVE VALUES MUST BE AVAILABLE (AUT,
- P-S, TPS, AND DTN).
- :10,0
-
- BYTE1 * BYTE2 * CMD
- HEX 7654 3210 NAME VALUE
-
- N2 NNNN NNNN P-W THE 12-BIT NUMBER COMPOSED OF
- BYTE 1, BITS 7-4 AND ALL 8
- BITS OF BYTE 2 GIVE A RANGE OF
- 0-4,095.
-
-
-
- 06 NNNN NNNN TEM IF THE SECOND BYTE IS ZERO, IT
- IS REPLACED BY 256 (HEX 100).
- THE SECOND BYTE VALUE IS THEN
- DIVIDED INTO 14,400. THE WHOLE
- NUMBER QUOTIENT IS THE NUMBER
- OF QUARTER NOTES PER MINUTE.
-
- 16 NNNN NNNN UTL SECOND BYTE IS THE VALUE.
-
- 26 NNNN NNNN PNT SECOND BYTE IS THE VALUE.
-
- 36 NNNN NNNN HED SECOND BYTE IS THE VALUE.
-
- 46 NNNN NNNN FLG SECOND BYTE IS THE VALUE.
-
- 56 SNNN NNNN P-S SECOND BYTE CONTAINS THE VALUE
- AS A SIGNED NUMBER WITH RANGE
- -127 (HEX 81) TO +127 (HEX 7F)
-
- 66 SNNN NNNN F-S SECOND BYTE CONTAINS THE VALUE
- AS A SIGNED NUMBER WITH RANGE
- -127 (HEX 81) TO +127 (HEX 7F)
-
- 76 0NNN NNNN VDP BYTE 2 BITS 6-0 CONTAIN THE
- VALUE, 0-127.
-
- 86 NNNN NNNN VRT SECOND BYTE IS THE VALUE.
-
- 96 SNNN NNNN AUT SECOND BYTE CONTAINS THE VALUE
- AS A SIGNED NUMBER WITH RANGE
- -127 (HEX 81) TO +127 (HEX 7F)
-
-
-
-
-
- - PAGE 4 -
- A6 HHHH OOOS TPS THE SECOND BYTE CONTAINS THE
- NUMBER OF HALF-STEPS TO TRANS-
- POSE, FROM -95 TO +95. BIT 0
- IS THE SIGN, 0=+. 1=-. BITS
- 3-1 GIVE THE NUMBER OF WHOLE
- OCTAVES FOR NEGATIVE VALUES.
- FOR POSITIVE NUMBERS, THE
- NUMBER OF OCTAVES IS 7 MINUS
- THE NUMBER IN BITS 3-1. BITS
- 7-4 GIVE THE ADDITIONAL HALF-
- STEPS LESS THAN AN OCTAVE (0-
- 11) FOR POSITIVE NUMBERS. FOR
- NEGATIVE NUMBERS, THE EXCESS
- HALF-STEPS ARE 11 MINUS THE
- NUMBER IN BITS 7-4.
-
- B6 NNNN NNNN AUX SECOND BYTE IS THE VALUE.
-
- 0E NNNN NNNN F-C SECOND BYTE IS THE VALUE.
-
- NE NNNN NNNN MEA THE 10-BIT NUMBER COMPOSED OF
- BITS 7-6 OF THE 1ST BYTE AND
- ALL 8 BITS OF THE SECOND BYTE
- GIVE A VALUE OF 0-1,024. BIT 5
- AND 4 ARE ALWAYS 01 FOR THIS
- COMMAND, SO THE FIRST BYTE MAY
- BE 1E, 5E, 9E, OR DE.
-
- NA NNNN NNNN DTN THE 11-BIT NUMBER COMPOSED OF
- BYTE 1, BITS 7-5 AND ALL 8 BITS
- OF BYTE 2 PRODUCES A VALUE OF
- 0-2,048. IF BYTE 1, BIT 4 IS 1,
- THE NUMBER IS NEGATIVE, AND IS
- REDUCED BY 2,048 FOR AN
- EFFECTIVE RANGE OF -2,048 TO
- +2,048.
-
- NN NNNN NNNN POR THE 14-BIT NUMBER COMPOSED OF
- BYTE 1, BITS 7-3 AND ALL 8
- BITS OF THE SECOND BYTE. VALUE
- RANGE IS 0 TO 16,383. BITS 1 AND
- 0 OF BYTE 1 ARE ALWAYS 11 FOR THIS
- COMMAND, ALL OTHER BITS MAY BE ANY
- VALUE.
- :0,60
-
-
-
-
-
-
-
-
-
-
-
- - PAGE 5 -