示例#1
0
ProgramList
MidiDevice::getPrograms0thVariation(bool percussion, const MidiBank &bank) const
{
    // If we aren't in variations mode, just use getPrograms().
    if (m_variationType == NoVariations)
        return getPrograms(bank);

    // Get the variation bank list for this bank
    BankList bankList;
    if (m_variationType == VariationFromMSB) {
        bankList = getBanksByLSB(percussion, bank.getLSB());
    } else {
        bankList = getBanksByMSB(percussion, bank.getMSB());
    }

    if (!bankList.empty()) {
        MidiBank firstBank = bankList.front();
        return getPrograms(firstBank);
    }

    return ProgramList();
}
示例#2
0
int main() {
    int programsCount, i;
    FILE *fp = fopen(FileName, "r");

    getProgramsCount(fp, &programsCount);
    program *programs = (program*)malloc(programsCount * sizeof(program));
    getPrograms(fp, &programs, programsCount);
    runPrograms(programs, programsCount);

    for (i = 0; i < programsCount; i++) {
        free(programs[i].args);
        free(programs[i].line);
    }
    free(programs);
    fclose(fp);
    return 0;
}