mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-25 06:41:30 -04:00
87 lines
2.0 KiB
C++
87 lines
2.0 KiB
C++
//
|
|
// JASBasicInst
|
|
//
|
|
|
|
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
|
|
|
#include "JSystem/JAudio2/JASBasicInst.h"
|
|
#include "JSystem/JAudio2/JASCalc.h"
|
|
#include "JSystem/JKernel/JKRHeap.h"
|
|
|
|
JASBasicInst::JASBasicInst() {
|
|
mVolume = 1.0;
|
|
mPitch = 1.0;
|
|
mKeymapCount = 0;
|
|
mKeymap = NULL;
|
|
#if TARGET_ANDROID
|
|
JASCalc::_bzero(mOscillators, sizeof(mOscillators));
|
|
#else
|
|
JASCalc::bzero(mOscillators, sizeof(mOscillators));
|
|
#endif
|
|
}
|
|
|
|
JASBasicInst::~JASBasicInst() {
|
|
JKR_DELETE_ARRAY(mKeymap);
|
|
}
|
|
|
|
bool JASBasicInst::getParam(int key, int velocity, JASInstParam* o_param) const {
|
|
UNUSED(velocity);
|
|
o_param->mChannelType = 0;
|
|
o_param->mDontSetKey = 0;
|
|
o_param->mOscillators = (JASOscillator::Data**)&mOscillators;
|
|
o_param->mOscillatorCount = 2;
|
|
o_param->mVolume = mVolume;
|
|
o_param->mPitch = mPitch;
|
|
|
|
TKeymap* keyMap = NULL;
|
|
for (int i = 0; i < mKeymapCount; i++) {
|
|
if (key <= mKeymap[i].mHighKey) {
|
|
keyMap = &mKeymap[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (keyMap == NULL) {
|
|
return false;
|
|
}
|
|
|
|
o_param->mVolume *= keyMap->mVolumeMult;
|
|
o_param->mPitch *= keyMap->mPitchMult;
|
|
o_param->mWaveId = u16(keyMap->mWaveId);
|
|
return true;
|
|
}
|
|
|
|
void JASBasicInst::setKeyRegionCount(u32 count, JKRHeap* param_1) {
|
|
JKR_DELETE_ARRAY(mKeymap);
|
|
mKeymap = JKR_NEW_ARRAY_ARGS(TKeymap, count, param_1, 0);
|
|
JUT_ASSERT(114, mKeymap != NULL);
|
|
mKeymapCount = count;
|
|
}
|
|
|
|
void JASBasicInst::setOsc(int index, JASOscillator::Data const* param_1) {
|
|
JUT_ASSERT(128, index < OSC_MAX);
|
|
JUT_ASSERT(129, index >= 0);
|
|
mOscillators[index] = param_1;
|
|
}
|
|
|
|
JASBasicInst::TKeymap* JASBasicInst::getKeyRegion(int index) {
|
|
JUT_ASSERT(146, index >= 0);
|
|
if (index >= mKeymapCount) {
|
|
return NULL;
|
|
}
|
|
|
|
return mKeymap + index;
|
|
}
|
|
|
|
JASBasicInst::TKeymap* JASBasicInst::getKeyRegion(int index) const {
|
|
JUT_ASSERT(155, index >= 0);
|
|
if (index >= mKeymapCount) {
|
|
return NULL;
|
|
}
|
|
|
|
return mKeymap + index;
|
|
}
|
|
|
|
JASBasicInst::TKeymap::~TKeymap() {
|
|
}
|