Send UI the instrument description
This commit is contained in:
parent
10b36293b6
commit
5e06aba595
3 changed files with 74 additions and 9 deletions
|
|
@ -22,11 +22,19 @@ enum class EditId : int {
|
|||
UserFilesDir,
|
||||
FallbackFilesDir,
|
||||
//
|
||||
Key0,
|
||||
KeyLast = Key0 + 128 - 1,
|
||||
#define KEY_RANGE(Name) Name##0, Name##Last = Name##0 + 128 - 1
|
||||
#define CC_RANGE(Name) Name##0, Name##Last = Name##0 + sfz::config::numCCs - 1
|
||||
//
|
||||
Controller0,
|
||||
ControllerLast = Controller0 + sfz::config::numCCs - 1,
|
||||
KEY_RANGE(Key),
|
||||
CC_RANGE(Controller),
|
||||
//
|
||||
KEY_RANGE(KeyUsed),
|
||||
KEY_RANGE(KeyLabel),
|
||||
KEY_RANGE(KeyswitchUsed),
|
||||
KEY_RANGE(KeyswitchLabel),
|
||||
CC_RANGE(ControllerUsed),
|
||||
CC_RANGE(ControllerDefault),
|
||||
CC_RANGE(ControllerLabel),
|
||||
//
|
||||
UINumCurves,
|
||||
UINumMasters,
|
||||
|
|
@ -35,6 +43,9 @@ enum class EditId : int {
|
|||
UINumPreloadedSamples,
|
||||
UINumActiveVoices,
|
||||
UIActivePanel,
|
||||
//
|
||||
#undef KEY_RANGE
|
||||
#undef CC_RANGE
|
||||
};
|
||||
|
||||
struct EditRange {
|
||||
|
|
@ -66,5 +77,12 @@ struct EditRange {
|
|||
// defines editIdForCC, ccForEditId, editIdIsCC, etc..
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(cc, CC, Controller)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(key, Key, Key)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(keyUsed, KeyUsed, KeyUsed)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(keyLabel, KeyLabel, KeyLabel)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(keyswitchUsed, KeyswitchUsed, KeyswitchUsed)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(keyswitchLabel, KeyswitchLabel, KeyswitchLabel)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(ccUsed, CCUsed, ControllerUsed)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(ccDefault, CCDefault, ControllerDefault)
|
||||
DEFINE_EDIT_ID_RANGE_HELPERS(ccLabel, CCLabel, ControllerLabel)
|
||||
|
||||
#undef DEFINE_EDIT_ID_RANGE_HELPERS
|
||||
|
|
|
|||
|
|
@ -371,11 +371,33 @@ port_event(LV2UI_Handle ui,
|
|||
}
|
||||
|
||||
static void
|
||||
sfizz_ui_update_description(const InstrumentDescription& desc)
|
||||
sfizz_ui_update_description(sfizz_ui_t *self, const InstrumentDescription& desc)
|
||||
{
|
||||
// TODO(jpc) perform editor updates here
|
||||
self->uiReceiveValue(EditId::UINumCurves, desc.numCurves);
|
||||
self->uiReceiveValue(EditId::UINumMasters, desc.numMasters);
|
||||
self->uiReceiveValue(EditId::UINumGroups, desc.numGroups);
|
||||
self->uiReceiveValue(EditId::UINumRegions, desc.numRegions);
|
||||
self->uiReceiveValue(EditId::UINumPreloadedSamples, desc.numSamples);
|
||||
|
||||
//std::cerr << desc << std::endl;
|
||||
for (unsigned key = 0; key < 128; ++key) {
|
||||
bool keyUsed = desc.keyUsed.test(key);
|
||||
bool keyswitchUsed = desc.keyswitchUsed.test(key);
|
||||
self->uiReceiveValue(editIdForKeyUsed(key), float(keyUsed));
|
||||
self->uiReceiveValue(editIdForKeyswitchUsed(key), float(keyswitchUsed));
|
||||
if (keyUsed)
|
||||
self->uiReceiveValue(editIdForKeyLabel(key), desc.keyLabel[key]);
|
||||
if (keyswitchUsed)
|
||||
self->uiReceiveValue(editIdForKeyswitchLabel(key), desc.keyswitchLabel[key]);
|
||||
}
|
||||
|
||||
for (unsigned cc = 0; cc < sfz::config::numCCs; ++cc) {
|
||||
bool ccUsed = desc.ccUsed.test(cc);
|
||||
self->uiReceiveValue(editIdForCCUsed(cc), float(ccUsed));
|
||||
if (ccUsed) {
|
||||
self->uiReceiveValue(editIdForCCDefault(cc), desc.ccDefault[cc]);
|
||||
self->uiReceiveValue(editIdForCCLabel(cc), desc.ccLabel[cc]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -396,7 +418,7 @@ sfizz_ui_check_sfz_update(sfizz_ui_t *self)
|
|||
|
||||
const InstrumentDescription desc = parseDescriptionBlob(
|
||||
absl::string_view(reinterpret_cast<char*>(data), size));
|
||||
sfizz_ui_update_description(desc);
|
||||
sfizz_ui_update_description(self, desc);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -196,7 +196,32 @@ void PLUGIN_API SfizzVstEditor::update(FUnknown* changedUnknown, int32 message)
|
|||
|
||||
if (SfzDescriptionUpdate* update = FCast<SfzDescriptionUpdate>(changedUnknown)) {
|
||||
const InstrumentDescription desc = parseDescriptionBlob(update->getDescription());
|
||||
// TODO(jpc) instrument description
|
||||
|
||||
uiReceiveValue(EditId::UINumCurves, desc.numCurves);
|
||||
uiReceiveValue(EditId::UINumMasters, desc.numMasters);
|
||||
uiReceiveValue(EditId::UINumGroups, desc.numGroups);
|
||||
uiReceiveValue(EditId::UINumRegions, desc.numRegions);
|
||||
uiReceiveValue(EditId::UINumPreloadedSamples, desc.numSamples);
|
||||
|
||||
for (unsigned key = 0; key < 128; ++key) {
|
||||
bool keyUsed = desc.keyUsed.test(key);
|
||||
bool keyswitchUsed = desc.keyswitchUsed.test(key);
|
||||
uiReceiveValue(editIdForKeyUsed(key), float(keyUsed));
|
||||
uiReceiveValue(editIdForKeyswitchUsed(key), float(keyswitchUsed));
|
||||
if (keyUsed)
|
||||
uiReceiveValue(editIdForKeyLabel(key), desc.keyLabel[key]);
|
||||
if (keyswitchUsed)
|
||||
uiReceiveValue(editIdForKeyswitchLabel(key), desc.keyswitchLabel[key]);
|
||||
}
|
||||
|
||||
for (unsigned cc = 0; cc < sfz::config::numCCs; ++cc) {
|
||||
bool ccUsed = desc.ccUsed.test(cc);
|
||||
uiReceiveValue(editIdForCCUsed(cc), float(ccUsed));
|
||||
if (ccUsed) {
|
||||
uiReceiveValue(editIdForCCDefault(cc), desc.ccDefault[cc]);
|
||||
uiReceiveValue(editIdForCCLabel(cc), desc.ccLabel[cc]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ScalaUpdate* update = FCast<ScalaUpdate>(changedUnknown)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue