home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / SID-FORMAT.TXT < prev    next >
Encoding:
Text File  |  2019-04-13  |  11.3 KB  |  291 lines

  1. :10,0 
  2.                SIDPLAYER MUSIC FILE CONTENTS 
  3.                       BY DICK THORNTON 
  4. :10,60 
  5.  
  6. SIDPLAYER MUSIC FILES ARE PRG TYPE FILES WHICH CONTAIN THE 
  7. MUSICAL NOTES AND COMMAND DIRECTIVES FOR PLAYING A SONG, AS 
  8. WELL AS THE SEVERAL TEXT LINES INTENDED FOR THE SONG NAME 
  9. AND CREDIT LINES FOR THE COMPOSER AND SID ARRANGER. 
  10.  
  11. ON DISK, THE FILE CONSISTS OF ONE OR MORE SECTORS WRITTEN IN 
  12. STANDARD PRG FORMAT. CHARACTERISTICS OF THIS FILE TYPE CAN 
  13. BE FOUND IN YOUR DISK MANUAL, OR OTHER BOOKS ON DISK FILE 
  14. MANAGEMENT. FROM HERE ON, WE WILL CONSIDER THE FILE DATA AS 
  15. IT RESIDES IN MEMORY AFTER BEING LOAD'ED. THE GENERAL FORMAT 
  16. OF THE .MUS FILE IN MEMORY IS: 
  17.  
  18. :10,0 
  19.   (1) TWO-BYTE LENGTH OF VOICE 1 IN LOW-BYTE, HIGH-BYTE FORM. 
  20.   (2) TWO-BYTE LENGTH OF VOICE 2 IN LOW-BYTE, HIGH-BYTE FORM. 
  21.   (3) TWO-BYTE LENGTH OF VOICE 3 IN LOW-BYTE, HIGH-BYTE FORM. 
  22.   (4) THE DATA FOR VOICE 1 ALWAYS ENDING WITH A HLT COMMAND. 
  23.   (5) THE DATA FOR VOICE 2 ALWAYS ENDING WITH A HLT COMMAND. 
  24.   (6) THE DATA FOR VOICE 3 ALWAYS ENDING WITH A HLT COMMAND. 
  25.   (7) THE TEXT LINES FOR SONG NAME, ETC. THERE ARE FIVE 
  26.       LINES, EACH CONTAINING 0-32 BYTES AND ENDING WITH A 
  27.       CARRIAGE RETURN. THE TEXT DATA INFORMATION IS IN 
  28.       UPPER-CASE COMMODORE PET ASCII. A HEX ZERO BYTE FOLLOWS 
  29.       THE LAST BYTE OF THE LAST LINE OF TEXT. 
  30. :10,60 
  31.  
  32. THE EFFECT OF THIS IS THAT EACH .MUS FILE IS ACTUALLY FOUR 
  33. FILES PACKED END-TO-END IN A SINGLE PRG FILE WITH THREE 
  34. LITTLE TWO-BYTE LENGTHS IN THE FRONT TO HELP YOU FIND 
  35. THINGS. VOICE 1 BEGINS AT THE SIXTH BYTE OF THE DATA FILE AS 
  36. LOAD'ED INTO MEMORY. VOICE 2 STARTS AT A POINT 6 + LENGTH OF 
  37. VOICE 1 FROM THE BEGINNING OF THE FILE IN MEMORY. VOICE 3 IS 
  38. AT 6 + LENGTH OF VOICE 1 + LENGTH OF VOICE 2 FROM THE FILE 
  39. START, AND THE TEXT LINES BEGIN AT 6 + LENGTH OF VOICE 1 + 
  40. LENGTH OF VOICE 2 + LENGTH OF VOICE 3. EACH VOICE ENDS WITH 
  41. A HLT COMMAND (HEX 014F), AND IF THERE IS NO DATA FOR A 
  42. VOICE THAT IS ALL IT WILL CONTAIN. THE TEXT AREA ENDS WITH A 
  43. HEX ZERO AFTER THE CARRIAGE RETURN FOR THE FINAL LINE. 
  44.  
  45. EACH VOICE CONTAINS DATA IN TWO-BYTE PAIRS THAT CONTAIN THE 
  46. MUSICAL NOTES AND COMMANDS NEEDED TO PLAY THE SONG. THE 
  47. FIRST BYTE OF EACH PAIR WILL HAVE BITS 1 AND 0 BOTH SET TO 
  48. ZERO IF THE BYTE-PAIR DESCRIBES A MUSICAL NOTE, OTHERWISE 
  49. THE BYTE-PAIR DESCRIBES A SID CHIP COMMAND OR SIDPLAYER 
  50. COMMAND. 
  51.  
  52. IN THE FOLLOWING, COMMANDS ARE IDENTIFIED BY THE THREE 
  53. CHARACTER ABBREVIATION USED BY THE SID EDITOR PROGRAM 
  54. DESCRIBED IN THE BOOKS "ALL ABOUT THE COMMODORE 64" VOLUME 
  55. 2, AND "COMPUTE!'S MUSIC SYSTEM FOR THE COMMODORE 128 AND 
  56. 64". BOTH BOOKS ARE PUBLISHED BY COMPUTE! BOOKS. 
  57. :10,0 
  58.  
  59.                        - PAGE 1 - 
  60.                   MUSICAL NOTE DATA PAIRS 
  61. :10,60 
  62. MUSICAL NOTE DATA PAIRS WILL CONTAIN 00 IN THE LOWER-ORDER 
  63. TWO BITS OF THE FIRST BYTE OF THE PAIR. EACH MUSICAL NOTE 
  64. BYTE-PAIR CONTAINS DURATION IN ITS FIRST BYTE, AND FREQUENCY 
  65. (PITCH) IN THE SECOND. THIS DATA IS CODED AS FOLLOWS, WHERE 
  66. THE PARENTHETIC NUMBER FOLLOWING A BIT NUMBER IS THE HEX 
  67. VALUE OF THAT BIT: 
  68. :10,0 
  69.  
  70.  
  71.                BYTE 1 - TIE AND DURATION 
  72.  
  73.   BIT 7 (80)     ALWAYS 0 
  74.   BIT 6 (40)     1=TIE TO NEXT NOTE. 0=NOT TIED 
  75.   BIT 5 (20)     1=DOTTED NOTE DURATION. 0=NOT DOTTED 
  76.   BIT 4 (10)     BITS 4 3 2  NOTE DURATION 
  77.   BIT 3 (08)     .    1 1 1    32ND NOTE 
  78.   BIT 2 (04)     .    1 1 0    16TH NOTE 
  79.                  .    1 0 1    8TH NOTE 
  80.                  .    1 0 0    QUARTER NOTE 
  81.                  .    0 1 1    HALF NOTE 
  82.                  .    0 1 0    WHOLE NOTE 
  83.                  .    0 0 1    UTILITY DURATION 
  84.                  .    0 0 0    ABSOLUTE PITCH 
  85.   BIT 1 (02)     ALWAYS 0 FOR NOTE PAIRS 
  86.   BIT 0 (01)     ALWAYS 0 FOR NOTE PAIRS 
  87.  
  88.  
  89.  
  90.  
  91.                BYTE 2 - FREQUENCY (PITCH) AND RESTS 
  92.  
  93.   BIT 7 (80)     BITS 7 6    PITCH MODIFICATION 
  94.   BIT 6 (40)     .    1 1      FLATTED NOTE 
  95.                  .    1 0      NATURAL NOTE 
  96.                  .    0 1      SHARPED NOTE 
  97.   BIT 5 (20)     BITS 5 4 3  OCTAVE NUMBER 
  98.   BIT 4 (10)     .    1 1 1    OCTAVE 0 
  99.   BIT 3 (08)     .    1 1 0    OCTAVE 1 
  100.                  .    1 0 1    OCTAVE 2 
  101.                  .    1 0 0    OCTAVE 3 
  102.                  .    0 1 1    OCTAVE 4 
  103.                  .    0 1 0    OCTAVE 5 
  104.                  .    0 0 1    OCTAVE 6 
  105.                  .    0 0 0    OCTAVE 7 
  106.   BIT 2 (04)     BITS 2 1 0  NOTE LETTER IDENTIFIER 
  107.   BIT 1 (02)     .    1 1 1    B NOTE 
  108.   BIT 0 (01)     .    1 1 0    A NOTE 
  109.                  .    1 0 1    G NOTE 
  110.                  .    1 0 0    F NOTE 
  111.                  .    0 1 1    E NOTE 
  112.                  .    0 1 0    D NOTE 
  113.                  .    0 0 1    C NOTE 
  114.                  .    0 0 0    REST 
  115.  
  116.  
  117.                          - PAGE 2 - 
  118.                    COMMAND DATA PAIRS 
  119. :10,60 
  120. COMMANDS CONTAIN INFORMATION OTHER THAN MUSICAL NOTE PITCH 
  121. AND DURATION. FOR COMMANDS, THE LOW-ORDER TWO BITS OF THE 
  122. FIRST BYTE ARE NOT 00. A WHOLE SET OF COMMANDS ARE 
  123. IDENTIFIED WITH A FIRST BYTE VALUE OF HEX 01. FOR THESE 
  124. COMMANDS, THE LOW-ORDER FOUR BITS OF THE SECOND BYTE CAN BE 
  125. USED AS A GROSS IDENTIFIER, WHILE THE HIGH ORDER FOUR BITS 
  126. OFTEN CONTAIN A NUMERIC VALUE. THESE COMMANDS ARE DESCRIBED 
  127. BY THEIR SECOND BYTES BELOW: 
  128. :10,0 
  129.  
  130.                COMMANDS WITH FIRST BYTE = HEX 01 
  131.  
  132.   * BYTE2 *   HEX  COMMAND  VALUE 
  133.   7654 3210        NAME 
  134.   NNNN 0000   N0   DCY      BITS 7654 CONTAIN A VALUE, 0-F 
  135.   NNNN 0010   N2   CAL      BITS 7654 CONTAIN A VALUE, 0-F 
  136.   0000 0011   03   BMP      UP 
  137.   0001 0011   13   FLT      NO 
  138.   0010 0011   23   RNG      NO 
  139.   0011 0011   33   SNC      NO 
  140.   0100 0011   43   F-X      NO 
  141.   0101 0011   53   3-0      NO 
  142.   0NNN N100        ATK      BITS 6543 CONTAIN A VALUE, 0-F 
  143.   1NNN N100        SUS      BITS 6543 CONTAIN A VALUE, 0-F 
  144.   NNNN 0110   N6   DEF      BITS 7654 CONTAIN A VALUE, 0-F 
  145.   NNN0 0111   N7   WAV      BITS 7 6 5  WAVEFORM 
  146.                                  0 0 0  NOISE 
  147.                                  0 0 1  TRIANGLE 
  148.                                  0 1 0  SAWTOOTH 
  149.                                  0 1 1  TRIANGLE + SAWTOOTH 
  150.                                  1 0 0  PULSE 
  151.                                  1 0 1  PULSE + TRIANGLE 
  152.                                  1 1 0  PULSE + SAWTOOTH 
  153.                                  1 1 1  PULS+TRIANG+SAWTOO 
  154.   NNN1 0111   N7   F-M      BITS 7 6 5  FILTER MODE 
  155.                                  0 0 0  OFF 
  156.                                  0 0 1  LOW PASS 
  157.                                  0 1 0  BAND PASS 
  158.                                  0 1 1  LOW + BAND 
  159.                                  1 0 0  HIGH PASS 
  160.                                  1 0 1  HIGH + LOW 
  161.                                  1 1 0  HIGH + BAND 
  162.                                  1 1 1  HIGH + BAND + LOW 
  163.   NNNN 1000   N8   RLS      BITS 7654 CONTAIN A VALUE, 0-F 
  164.   NNNN 1010   NA   RES      BITS 7654 CONTAIN A VALUE, 0-F 
  165.   0000 1011   0B   BMP      DOWN 
  166.   0001 1011   1B   FLT      YES 
  167.   0010 1011   2B   RNG      YES 
  168.   0011 1011   3B   SNC      YES 
  169.   0100 1011   4B   F-X      YES 
  170.   0101 1011   5B   3-0      YES 
  171.   NNNN 1110   NE   VOL      BITS 7654 CONTAIN A VALUE, 0-F 
  172.   0000 1111   0F   TAL      N/A 
  173.   0010 1111   2F   END      N/A 
  174.   0100 1111   4F   HLT      N/A 
  175.                          - PAGE 3 - 
  176.           COMMANDS WHOSE FIRST BYTE IS NOT HEX 01 
  177.  
  178. :10,60 
  179. THIS GROUP OF COMMAND PAIRS GENERALLY HAS A FIRST BYTE THAT 
  180. DEFINES THE COMMAND, AND THE SECOND BYTE GIVES A NUMERIC 
  181. VALUE FROM HEX 00 TO FF (DECIMAL RANGE 0 TO 255). THERE ARE 
  182. A FEW VARIATIONS, HOWEVER, WHERE THE VALUE RANGE EXCEEDS 255 
  183. (DTN AND POR), AND WHERE NEGATIVE VALUES MUST BE AVAILABLE (AUT, 
  184. P-S, TPS, AND DTN). 
  185. :10,0 
  186.  
  187.   BYTE1  * BYTE2 *   CMD 
  188.    HEX   7654 3210   NAME VALUE 
  189.  
  190.     N2   NNNN NNNN   P-W  THE 12-BIT NUMBER COMPOSED OF 
  191.                           BYTE 1, BITS 7-4 AND ALL 8 
  192.                           BITS OF BYTE 2 GIVE A RANGE OF 
  193.                           0-4,095. 
  194.  
  195.  
  196.  
  197.     06   NNNN NNNN   TEM  IF THE SECOND BYTE IS ZERO, IT 
  198.                           IS REPLACED BY 256 (HEX 100). 
  199.                           THE SECOND BYTE VALUE IS THEN 
  200.                           DIVIDED INTO 14,400. THE WHOLE 
  201.                           NUMBER QUOTIENT IS THE NUMBER 
  202.                           OF QUARTER NOTES PER MINUTE. 
  203.  
  204.     16   NNNN NNNN   UTL  SECOND BYTE IS THE VALUE. 
  205.  
  206.     26   NNNN NNNN   PNT  SECOND BYTE IS THE VALUE. 
  207.  
  208.     36   NNNN NNNN   HED  SECOND BYTE IS THE VALUE. 
  209.  
  210.     46   NNNN NNNN   FLG  SECOND BYTE IS THE VALUE. 
  211.  
  212.     56   SNNN NNNN   P-S  SECOND BYTE CONTAINS THE VALUE 
  213.                           AS A SIGNED NUMBER WITH RANGE 
  214.                           -127 (HEX 81) TO +127 (HEX 7F) 
  215.  
  216.     66   SNNN NNNN   F-S  SECOND BYTE CONTAINS THE VALUE 
  217.                           AS A SIGNED NUMBER WITH RANGE 
  218.                           -127 (HEX 81) TO +127 (HEX 7F) 
  219.  
  220.     76   0NNN NNNN   VDP  BYTE 2 BITS 6-0 CONTAIN THE 
  221.                           VALUE, 0-127. 
  222.  
  223.     86   NNNN NNNN   VRT  SECOND BYTE IS THE VALUE. 
  224.  
  225.     96   SNNN NNNN   AUT  SECOND BYTE CONTAINS THE VALUE 
  226.                           AS A SIGNED NUMBER WITH RANGE 
  227.                           -127 (HEX 81) TO +127 (HEX 7F) 
  228.  
  229.  
  230.  
  231.  
  232.  
  233.                          - PAGE 4 - 
  234.     A6   HHHH OOOS   TPS  THE SECOND BYTE CONTAINS THE 
  235.                           NUMBER OF HALF-STEPS TO TRANS- 
  236.                           POSE, FROM -95 TO +95. BIT 0 
  237.                           IS THE SIGN, 0=+. 1=-. BITS 
  238.                           3-1 GIVE THE NUMBER OF WHOLE 
  239.                           OCTAVES FOR NEGATIVE VALUES. 
  240.                           FOR POSITIVE NUMBERS, THE 
  241.                           NUMBER OF OCTAVES IS 7 MINUS 
  242.                           THE NUMBER IN BITS 3-1. BITS 
  243.                           7-4 GIVE THE ADDITIONAL HALF- 
  244.                           STEPS LESS THAN AN OCTAVE (0- 
  245.                           11) FOR POSITIVE NUMBERS. FOR 
  246.                           NEGATIVE NUMBERS, THE EXCESS 
  247.                           HALF-STEPS ARE 11 MINUS THE 
  248.                           NUMBER IN BITS 7-4. 
  249.  
  250.     B6   NNNN NNNN   AUX  SECOND BYTE IS THE VALUE. 
  251.  
  252.     0E   NNNN NNNN   F-C  SECOND BYTE IS THE VALUE. 
  253.  
  254.     NE   NNNN NNNN   MEA  THE 10-BIT NUMBER COMPOSED OF 
  255.                           BITS 7-6 OF THE 1ST BYTE AND 
  256.                           ALL 8 BITS OF THE SECOND BYTE 
  257.                           GIVE A VALUE OF 0-1,024. BIT 5 
  258.                           AND 4 ARE ALWAYS 01 FOR THIS 
  259.                           COMMAND, SO THE FIRST BYTE MAY 
  260.                           BE 1E, 5E, 9E, OR DE. 
  261.  
  262.     NA   NNNN NNNN   DTN  THE 11-BIT NUMBER COMPOSED OF 
  263.                           BYTE 1, BITS 7-5 AND ALL 8 BITS 
  264.                           OF BYTE 2 PRODUCES A VALUE OF 
  265.                           0-2,048. IF BYTE 1, BIT 4 IS 1, 
  266.                           THE NUMBER IS NEGATIVE, AND IS 
  267.                           REDUCED BY 2,048 FOR AN 
  268.                           EFFECTIVE RANGE OF -2,048 TO 
  269.                           +2,048. 
  270.  
  271.     NN   NNNN NNNN   POR  THE 14-BIT NUMBER COMPOSED OF 
  272.                           BYTE 1, BITS 7-3 AND ALL 8 
  273.                           BITS OF THE SECOND BYTE. VALUE 
  274.                           RANGE IS 0 TO 16,383. BITS 1 AND 
  275.                           0 OF BYTE 1 ARE ALWAYS 11 FOR THIS 
  276.                           COMMAND, ALL OTHER BITS MAY BE ANY 
  277.                           VALUE. 
  278. :0,60 
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.                          - PAGE 5 -