Esempio n. 1
0
  private void readGeneralInfo(BufferedInputStream in, Module module) throws IOException {
    // "Extended Module: "
    byte b[] = read(in, 17);

    if (!(new String(b)).equalsIgnoreCase("Extended Module: ")) {
      throw new IOException("This is not a xm file!");
    }

    // Module name
    b = read(in, 20);
    module.setTitle(new String(b));

    in.read();

    // Tracker name
    b = read(in, 20);

    // version
    in.read();
    in.read();

    // Header size
    read(in, 4);

    // Song length (in pattern order table)
    int[] patorder = new int[make16Bit(read(in, 2))];

    // Restart position
    module.setRestartPosition(make16Bit(read(in, 2)));

    // Number of channels (2,4,6,8,10,...,32)
    module.setChannelCount(make16Bit(read(in, 2)));

    // Number of patterns (max 128)
    module.setPatterns(new Pattern[make16Bit(read(in, 2))]);

    // Number of instruments (max 128)
    module.setInstruments(new Instrument[make16Bit(read(in, 2))]);

    // Flags: bit 0: 0 = Amiga frequency table;
    //               1 = Linear frequency table
    if ((make16Bit(read(in, 2)) & 0x1) == 0) module.setAmigaFreqTable(true);

    // Default tempo
    module.setTempo(make16Bit(read(in, 2)));

    // Default BPM
    module.setBpm(make16Bit(read(in, 2)));

    // Pattern order table
    b = read(in, 256);

    for (int i = 0; i < patorder.length; i++) {
      patorder[i] = b[i];
    }
    module.setPatternOrder(patorder);
  }