Use the existing OpcodeScope and ass the "<master>" level
This commit is contained in:
parent
89093b1826
commit
7559dfdd7b
3 changed files with 8 additions and 6 deletions
|
|
@ -47,6 +47,8 @@ enum OpcodeScope {
|
|||
kOpcodeScopeGlobal,
|
||||
//! control scope
|
||||
kOpcodeScopeControl,
|
||||
//! Master scope
|
||||
kOpcodeScopeMaster,
|
||||
//! group scope
|
||||
kOpcodeScopeGroup,
|
||||
//! region scope
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ void sfz::Synth::onParseFullBlock(const std::string& header, const std::vector<O
|
|||
case hash("global"):
|
||||
globalOpcodes = members;
|
||||
currentSet = sets.front().get();
|
||||
lastHeader = Header::Global;
|
||||
lastHeader = OpcodeScope::kOpcodeScopeGlobal;
|
||||
groupOpcodes.clear();
|
||||
masterOpcodes.clear();
|
||||
handleGlobalOpcodes(members);
|
||||
|
|
@ -87,17 +87,17 @@ void sfz::Synth::onParseFullBlock(const std::string& header, const std::vector<O
|
|||
masterOpcodes = members;
|
||||
newRegionSet(sets.front().get());
|
||||
groupOpcodes.clear();
|
||||
lastHeader = Header::Master;
|
||||
lastHeader = OpcodeScope::kOpcodeScopeMaster;
|
||||
handleMasterOpcodes(members);
|
||||
numMasters++;
|
||||
break;
|
||||
case hash("group"):
|
||||
groupOpcodes = members;
|
||||
if (lastHeader == Header::Group)
|
||||
if (lastHeader == OpcodeScope::kOpcodeScopeGroup)
|
||||
newRegionSet(currentSet->getParent());
|
||||
else
|
||||
newRegionSet(currentSet);
|
||||
lastHeader = Header::Group;
|
||||
lastHeader = OpcodeScope::kOpcodeScopeGroup;
|
||||
handleGroupOpcodes(members, masterOpcodes);
|
||||
numGroups++;
|
||||
break;
|
||||
|
|
@ -175,6 +175,7 @@ void sfz::Synth::clear()
|
|||
for (auto& list : ccActivationLists)
|
||||
list.clear();
|
||||
|
||||
lastHeader = OpcodeScope::kOpcodeScopeGlobal;
|
||||
sets.clear();
|
||||
sets.emplace_back(new RegionSet);
|
||||
currentSet = sets.front().get();
|
||||
|
|
|
|||
|
|
@ -707,9 +707,8 @@ private:
|
|||
std::vector<RegionPtr> regions;
|
||||
std::vector<VoicePtr> voices;
|
||||
// These are more general "groups" than sfz and encapsulates the full hierarchy
|
||||
enum class Header { Global, Master, Group };
|
||||
RegionSet* currentSet;
|
||||
Header lastHeader { Header::Global };
|
||||
OpcodeScope lastHeader { OpcodeScope::kOpcodeScopeGlobal };
|
||||
std::vector<RegionSetPtr> sets;
|
||||
// These are the `group=` groups where you can off voices
|
||||
std::vector<PolyphonyGroup> polyphonyGroups;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue