home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / amiga / midi / med210.lhw / in.adf / Source / med210src.lzh / med.h < prev    next >
C/C++ Source or Header  |  1990-06-19  |  7KB  |  242 lines

  1. /* MED.h V 2.10 by Teijo Kinnunen 1989, 1990 */
  2. /* MED.h V 1.1  9.7.1989 -- uusi kappale */
  3. /* MED.h V 1.11 4.8.1989 -- ukkeli + vΣrit */
  4. /* MED.h V 1.12 28.9.1989 -- CLohko */
  5. /* MED.h V 1.20 5.10.1989 -- Softwareinteruptdata */
  6. /* MED.h V 1.201 15.10.1989 -- osiot */
  7. /* MED.h V 1.202 18.10.1989 -- okdefinet */
  8. /* MED.h V 1.203 21.11.1989 -- lisΣΣ okdefineitΣ */
  9. /* MED.h V 1.210 28.12.1989 -- MIDI-kamat */
  10. /* MED.h V 1.220 29.12.1989 -- savel_period -> savel_num */
  11. /* MED.h V 1.221 30.12.1989 -- Kappale -> Kappale + Kappale111 */
  12. /* MED.h V 1.230 08.01.1990 -- Uusi Lohko */
  13. /* MED.h V 1.240 23.01.1990 -- Soitin-structure */
  14. /* MED.h V 1.250 20.02.1990 -- ST 2.4 module */
  15. /* MED.h V 1.251 26.02.1990 -- MIDIIEVENTS ja okdefinet pois */
  16. /* MED.h V 1.260 03.06.1990 -- ObjSong, osiot pois */
  17. /* MED.h V 2.000 10.03.1990 -- vΣhΣn turhia pois, UUSI VERSIONUMERO */
  18. /* MED.h V 2.100 13.04.1990 -- pathrakenteet */
  19. /* MED.h V 2.110 25.04.1990 -- uusi Kappale */
  20. /* MED.h V 2.120 21.05.1990 -- lohkon pituus sΣΣdeltΣvΣ */
  21. /* MED.h V 2.130 07.06.1990 -- MMD0 & MMD0song */
  22. /* MED.h V 2.131 12.06.1990 -- voim. hex/dec */
  23. /* MED.h V 2.132 19.06.1990 -- MMD0sample */
  24.  
  25. struct Lohko { /* ** UUTTA 8.1.1990 ** */
  26.     UBYTE    numtracks;
  27.     UBYTE    lines; /* 0 = 1 line, 255 = 256 lines */
  28.     UBYTE    pad[2];
  29.     ULONG    hlmask[8]; /* 256 bits */
  30.     UBYTE    music[1]; /* size varies */
  31. }; /* note: bits in hlmasks are in reverse order (bit #0 is line 0) */
  32. #define BLKHDRSZ 36
  33.  
  34. struct MMD0Block {
  35.     UBYTE numtracks,lines;
  36. };    /* a bit shorter version is used in modules to save memory */
  37. #define MMDBLKHDRSZ 2
  38. #define ALATEEMITAAN 0 /* SoittokΣskyt */
  39. #define SOITALOHKO 1
  40. #define SOITAKAPPALE 2
  41. #define OHJELMANLOPPU 3
  42. #define SEIS 4
  43. #define SOITANUOTTI 5
  44.  
  45. #define ALASOITA 0 /* soittotila */
  46. #define SOITALOHKOA 1
  47. #define SOITAKAPPALETTA 2
  48.  
  49. #define    FLAG_FILTERON    0x1 /* liput */
  50. #define    FLAG_JUMPINGON    0x2
  51. #define    FLAG_JUMP8TH    0x4
  52. #define    FLAG_INSTRSATT    0x8 /* instruments are attached (this is a module) */
  53. #define    FLAG_VOLHEX    0x10
  54. #define  FLAG_STSLIDE    0x20 /* SoundTracker mode for slides */
  55.  
  56. struct Kappale111 { /* 1.11 */
  57.     ULONG id; /* sisΣltΣΣ "MED\x02" versiolle 1.11 */
  58.     char soitin[32][40];
  59.     UBYTE soittimenvoimakkuus[32];
  60.     UWORD stoisto[32];
  61.     UWORD stoistonpit[32];
  62.     UWORD lohkoja; /* montako lohkoa kappaleessa on */
  63.     UBYTE soittojarjestys[100]; /* lohkojen soittoj... */
  64.     UWORD kappaleen_pituus; /* montako soittojΣrjestystΣ */
  65.     UWORD tempo; /* kappaleen tempo, jos ei ilmoitettu komennolla xFxx */
  66.     UWORD liput;
  67.     UWORD vaihtoja; /* 5 tai 6 */
  68.     ULONG hyppysoitin; /* jokainen bitti on 1 soitin */
  69.     UWORD rgb[8]; /* vain 4 nyt kΣyt÷ssΣ */
  70. };
  71.  
  72. struct Kappale200 { /* 2.00 */
  73.     ULONG id; /* sisΣltΣΣ "MED\x03" versiolle 1.20 */
  74.     char soitin[32][40];
  75.     UBYTE soittimenvoimakkuus[32];
  76.     UWORD stoisto[32];
  77.     UWORD stoistonpit[32];
  78.     UWORD lohkoja; /* montako lohkoa kappaleessa on */
  79.     UBYTE soittojarjestys[100]; /* lohkojen soittoj... */
  80.     UWORD kappaleen_pituus; /* montako soittojΣrjestystΣ */
  81.     UWORD tempo; /* kappaleen tempo, jos ei ilmoitettu komennolla xFxx */
  82.     BYTE  playtransp;
  83.     UBYTE liput;
  84.     UWORD vaihtoja; /* 5 tai 6 */
  85.     ULONG hyppysoitin; /* jokainen bitti on 1 soitin */
  86.     UWORD rgb[8]; /* vain 4 nyt kΣyt÷ssΣ */
  87. /*    TΣstΣ eteenpΣin versio 1.20 */
  88.     UBYTE midikanava[32];    /* offset: 1574 */
  89.     UBYTE midipreset[32];    /* offset: 1606 */
  90. };
  91.  
  92. struct SongSample {
  93.     char sname[40];        /* offs: 0 */
  94.     UWORD rep,replen;        /* offs: 40, 42 */
  95.     UBYTE midich,midipreset;    /* offs: 44, 45 */
  96.     UBYTE svol;            /* offs: 46 */
  97.     BYTE  strans;            /* offs: 47 */
  98. }; /* 48 bytes */
  99.  
  100. struct Kappale {
  101.     ULONG    id; /* MED\x04 for v2.10 */    /* offs: 0 */
  102.     struct SongSample sample[63]; /* 48 * 63 = 3024 */
  103.     UWORD    numblocks;        /* offs: 3028 */
  104.     UWORD    songlen;        /* offs: 3030 */
  105.     UBYTE    playseq[256];        /* offs: 3032 */
  106.     UWORD    deftempo;        /* offs: 3288 */
  107.     BYTE    playtransp;        /* offs: 3290 */
  108.     UBYTE    flags;            /* offs: 3291 */
  109.     UWORD    sliding;        /* offs: 3292 */
  110.     ULONG    jumpmask;        /* offs: 3294 */
  111.     UWORD    rgb[8];            /* offs: 3298 */
  112.     UBYTE    trkvol[16];        /* offs: 3314 */
  113.     UBYTE    mastervol;        /* offs: 3330 */
  114.     UBYTE    pad;
  115. };    /* length = 3332 bytes */
  116.  
  117. struct MMD0 {
  118. /* 0 */    ULONG id;
  119. /* 4 */    ULONG modlen; /* 0 if this module is not one continuous block */
  120. /* 8 */    struct MMD0song *song;
  121. /* 12 */    ULONG songlen; /* 0 if this module is a continuous block */
  122. /* 16 */    struct MMD0block **blockarr; /* ptr to table of block pointers */
  123. /* 20 */    ULONG blockarrlen; /* length of the table of block ptrs (bytes) */
  124. /* 24 */    struct Soitin **smplarr; /* ptr to table of sample ptrs */
  125. /* 28 */    ULONG smplarrlen; /* length of the table */
  126. /* 32 */    CPTR expdata;    /* future expansion...should be 0 now */
  127. /* 36 */    ULONG expsize; /* 0, please */
  128. /* 40 */    UWORD pstate;     /* some data for player routine */
  129. /* 42 */    UWORD pblock;
  130. /* 44 */    UWORD pline;
  131. /* 46 */    UWORD pseqnum;
  132. /* 48 */    WORD actplayline; /* these variables allow flexible switching */
  133. /* 50 */    UBYTE counter; /* of songs */
  134. /* 51 */    UBYTE pad;
  135. }; /* length = 52 bytes */
  136.  
  137. struct MMD0sample {
  138.     UWORD rep,replen;    /* offs: 0(s), 2(s) */
  139.     UBYTE midich;        /* offs: 4(s) */
  140.     UBYTE midipreset;    /* offs: 5(s) */
  141.     UBYTE svol;        /* offs: 6(s) */
  142.     BYTE strans;        /* offs: 7(s) */
  143. };
  144. struct MMD0song {
  145.     struct MMD0sample sample[63]; /* 63 * 8 bytes = 504 bytes */
  146.     UWORD    numblocks;        /* offs: 504 */
  147.     UWORD    songlen;        /* offs: 506 */
  148.     UBYTE    playseq[256];        /* offs: 508 */
  149.     UWORD    deftempo;        /* offs: 764 */
  150.     BYTE    playtransp;        /* offs: 766 */
  151.     UBYTE    flags;            /* offs: 767 */
  152.     UWORD    sliding;        /* offs: 768 */
  153.     UBYTE    trkvol[16];        /* offs: 770 */
  154.     UBYTE    mastervol;        /* offs: 786 */
  155.     UBYTE    numsamples;        /* offs: 787 */
  156. }; /* length = 788 bytes */
  157.  
  158. struct SoundTrackerIns { /* instrumenttidata */
  159.     char sti_nimi[22];
  160.     UWORD sti_pit; /* soittimen pituus (jostakin syystΣ jaettuna 2:lla) */
  161.     UWORD sti_vol; /*  -  " -   voimakkuus */
  162.     UWORD sti_repeat; /* mikΣ lie */
  163.     UWORD sti_replen; /*   -"-    */
  164. };
  165.  
  166. struct SoundTrackerKappale { /* suunnilleen, ei niin tarkasti */
  167.     char st_nimi[20];
  168.     struct SoundTrackerIns st_ins[15];
  169.     UBYTE st_kappaleen_pit; /* soitettavien lohkojen mΣΣrΣ */
  170.     UBYTE st_kummajainen; /* 0x78 ?? */
  171.     UBYTE st_lohkojarj[128];
  172.  /* tΣstΣ alkaa lohkot.... */
  173. };
  174.  
  175. struct PlayNotedata {
  176.     UBYTE playnote; /* 0 = no note to play, 1 = play this */
  177.     UBYTE notenum;
  178.     UBYTE instrnum;
  179.     UBYTE tracknum;
  180. };
  181.  
  182. struct Soitin {
  183.     ULONG    length;
  184.     UWORD    type;
  185.     /* Followed by digitized data */
  186. };
  187.  
  188. #define    IFF5OCT    1
  189. #define    IFF3OCT    2
  190.  
  191. struct ST24Mod {
  192.     char songname[20];
  193.     struct {
  194.         char name[22];
  195.         UWORD length;
  196.         UWORD volume;
  197.         UWORD repeat;
  198.         UWORD replen;
  199.     } sample[31];
  200.     UBYTE songlen;
  201.     UBYTE I_dont_know_what_this_byte_is;
  202.     UBYTE playseq[128];
  203.     ULONG mk; /* contains M.K. ??? */
  204. };
  205.  
  206. struct PSName {
  207.     struct PSName *prev,*next;
  208.     UBYTE namelen;    /* length of the name only */
  209.     UBYTE firstletter; /* the first letter of the name in upper case */
  210. /*    char name[]; the name, maybe followed by ::1234/5678 */
  211. };
  212.  
  213. struct PSDir {
  214.     struct PSDir *prev,*next;
  215.     struct PSName *first,*last;
  216.     UWORD entries;
  217.     UBYTE namelen;
  218.     UBYTE diravail;
  219. /*    char name[] */
  220. };
  221.  
  222. struct FData { struct FData *prev,*next; char fname[108]; LONG type; };
  223.  
  224. struct PrgNote {
  225.     unsigned notenum:6,
  226.           xnn:1,
  227.           x0th:1,
  228.           x1st:1,
  229.           x2nd:1,
  230.           x3rd:1,
  231.           x4th:1,
  232.           num0:1,
  233.           num1:5,
  234.           num2:4,
  235.           num3:4,
  236.           num4:4;
  237. };
  238.  
  239. #define DISKERR ((char *)-1)
  240. #define NOERR ((char *)0)
  241. extern char *nomem,*fileex,*notsaved;
  242.