diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-10 16:42:17 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-10 16:42:17 +0000 |
commit | 23350c195db2a8a777ca8d471174b44255c96ec4 (patch) | |
tree | ed17d2c8545b38fdc879e96ddb13a22c6986218f /libs/midi++2 | |
parent | df6222b3b408ecf2aa673beb0fdff2fa309a81a1 (diff) |
remove craziness of propagating MIDI 7 bit limits into MIDNAM handling by replacing bank_msb/lsb with "bank" ; move responsibility for discovering patch names into MIDI trackview (soon to move again)
git-svn-id: svn://localhost/ardour2/branches/3.0@12647 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2')
-rw-r--r-- | libs/midi++2/midi++/midnam_patch.h | 28 | ||||
-rw-r--r-- | libs/midi++2/midnam_patch.cc | 9 |
2 files changed, 16 insertions, 21 deletions
diff --git a/libs/midi++2/midi++/midnam_patch.h b/libs/midi++2/midi++/midnam_patch.h index 11bdb79f8b..cbf64299ea 100644 --- a/libs/midi++2/midi++/midnam_patch.h +++ b/libs/midi++2/midi++/midnam_patch.h @@ -39,42 +39,36 @@ namespace Name struct PatchPrimaryKey { public: - int msb; - int lsb; + int bank_number; int program_number; - - PatchPrimaryKey(int a_msb = -1, int a_lsb = -1, int a_program_number = -1) { - msb = a_msb; - lsb = a_lsb; + + PatchPrimaryKey(int a_bank_number = -1, int a_program_number = -1) { + bank_number = a_bank_number; program_number = a_program_number; } bool is_sane() { - return ((msb >= 0) && (msb <= 127) && - (lsb >= 0) && (lsb <= 127) && + return ((bank_number >= 0) && (bank_number <= 16384) && (program_number >=0 ) && (program_number <= 127)); } inline PatchPrimaryKey& operator=(const PatchPrimaryKey& id) { - msb = id.msb; - lsb = id.lsb; + bank_number = id.bank_number; program_number = id.program_number; return *this; } inline bool operator==(const PatchPrimaryKey& id) const { - return (msb == id.msb && lsb == id.lsb && program_number == id.program_number); + return (bank_number == id.bank_number && program_number == id.program_number); } /** * obey strict weak ordering or crash in STL containers */ inline bool operator<(const PatchPrimaryKey& id) const { - if (msb < id.msb) { - return true; - } else if (msb == id.msb && lsb < id.lsb) { + if (bank_number < id.bank_number) { return true; - } else if (msb == id.msb && lsb == id.lsb && program_number < id.program_number) { + } else if (bank_number == id.bank_number && program_number < id.program_number) { return true; } @@ -168,7 +162,7 @@ public: boost::shared_ptr<Patch> previous_patch(PatchPrimaryKey& key) { assert(key.is_sane()); - std::cerr << "finding patch with " << key.msb << "/" << key.lsb << "/" <<key.program_number << std::endl; + std::cerr << "finding patch with " << key.bank_number << "/" <<key.program_number << std::endl; for (PatchList::const_iterator i = _patch_list.begin(); i != _patch_list.end(); ++i) { @@ -186,7 +180,7 @@ public: boost::shared_ptr<Patch> next_patch(PatchPrimaryKey& key) { assert(key.is_sane()); - std::cerr << "finding patch with " << key.msb << "/" << key.lsb << "/" <<key.program_number << std::endl; + std::cerr << "finding patch with " << key.bank_number << "/" <<key.program_number << std::endl; for (PatchList::const_iterator i = _patch_list.begin(); i != _patch_list.end(); ++i) { diff --git a/libs/midi++2/midnam_patch.cc b/libs/midi++2/midnam_patch.cc index 86edc7504e..66d3219310 100644 --- a/libs/midi++2/midnam_patch.cc +++ b/libs/midi++2/midnam_patch.cc @@ -78,10 +78,12 @@ int initialize_primary_key_from_commands (PatchPrimaryKey& id, const XMLNode* no string value = node->property("Value")->value(); assert(value != ""); + id.bank_number = 0; + if (control == "0") { - id.msb = PBD::atoi(value); + id.bank_number |= (PBD::atoi (value)<<7); } else if (control == "32") { - id.lsb = PBD::atoi(value); + id.bank_number |= PBD::atoi (value); } } else if (node->name() == "ProgramChange") { string number = node->property("Number")->value(); @@ -135,8 +137,7 @@ Patch::use_bank_info (PatchBank* bank) { if (bank) { if (bank->patch_primary_key() ) { - _id.msb = bank->patch_primary_key()->msb; - _id.lsb = bank->patch_primary_key()->lsb; + _id.bank_number = bank->patch_primary_key()->bank_number; } else { return -1; } |