/* INSTEXTR Extracts instruments from CMF files */


#include <stdio.h>

char instr_buf[128][16];

main(int argc,char **argv)
{
FILE* f;

int instr_offs,num_instr,i;
char fname[10];

       if(argc > 2)
       {
               if(f = fopen(argv[1],"rb"))
               {

                       fseek(f,6,SEEK_SET);
                       fread(&instr_offs,2,1,f);

                       fseek(f,0x24,SEEK_SET);
                       fread(&num_instr,2,1,f);

                       fseek(f,instr_offs,SEEK_SET);

                       for(i=0;i<num_instr;i++)
                               fread(&instr_buf[i][0],1,16,f);

                       fclose(f);

                       for(i=0;i<num_instr;i++)
                       {
                               itoa(i+atoi(argv[2]),fname,10);
                               f = fopen(fname,"wb");

                               fwrite(&instr_buf[i][0],1,16,f);
                               fclose(f);
                       }
          }
          else
                       printf("File %s not found\n",argv[1]);
       }
       else
       {
               printf("INSTEXTR extracts instruments from a CMF file\n");
               printf("usage: instextr <CMFfile> <Startnumber>\n");
       }
}