mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-03 08:23:08 -04:00
More JAudio naming, focused on instruments this time
This commit is contained in:
@@ -14,20 +14,20 @@ const int OSC_MAX = 2;
|
||||
*/
|
||||
struct JASInstParam : public JASSoundParams {
|
||||
JASInstParam() {
|
||||
field_0x14 = NULL;
|
||||
field_0x18 = 0;
|
||||
field_0x1a = 0;
|
||||
field_0x1c = 0;
|
||||
field_0x1d = 0;
|
||||
field_0x1e = 0;
|
||||
mOscillators = NULL;
|
||||
mDirectRelease = 0;
|
||||
mWaveId = 0;
|
||||
mChannelType = 0;
|
||||
mOscillatorCount = 0;
|
||||
mDontSetKey = 0;
|
||||
}
|
||||
|
||||
JASOscillator::Data** field_0x14;
|
||||
u16 field_0x18;
|
||||
u16 field_0x1a;
|
||||
u8 field_0x1c;
|
||||
u8 field_0x1d;
|
||||
u8 field_0x1e;
|
||||
JASOscillator::Data** mOscillators;
|
||||
u16 mDirectRelease;
|
||||
u16 mWaveId;
|
||||
u8 mChannelType; // Always CHANNEL_WAVE in practice
|
||||
u8 mOscillatorCount;
|
||||
u8 mDontSetKey;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -52,10 +52,10 @@ struct JASBasicInst : public JASInst {
|
||||
void setHighKey(int key) { mHighKey = key; }
|
||||
|
||||
/* 0x0 */ s32 mHighKey;
|
||||
/* 0x4 */ u16 field_0x4;
|
||||
/* 0x4 */ u16 mWaveId;
|
||||
/* 0x6 */ u16 field_0x6;
|
||||
/* 0x8 */ f32 field_0x8;
|
||||
/* 0xC */ f32 field_0xc;
|
||||
/* 0x8 */ f32 mVolumeMult;
|
||||
/* 0xC */ f32 mPitchMult;
|
||||
};
|
||||
|
||||
JASBasicInst();
|
||||
@@ -74,7 +74,7 @@ struct JASBasicInst : public JASInst {
|
||||
|
||||
/* 0x04 */ f32 mVolume;
|
||||
/* 0x08 */ f32 mPitch;
|
||||
/* 0x0C */ JASOscillator::Data const* field_0xc[OSC_MAX];
|
||||
/* 0x0C */ JASOscillator::Data const* mOscillators[OSC_MAX];
|
||||
/* 0x10 */ u32 mKeymapCount;
|
||||
/* 0x14 */ TKeymap* mKeymap;
|
||||
};
|
||||
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
struct {
|
||||
u32 mChannelType; // CHANNEL_WAVE or CHANNEL_OSCILLATOR
|
||||
JASWaveInfo mWaveInfo;
|
||||
} field_0xdc;
|
||||
} mAnon;
|
||||
union {
|
||||
u32 mWaveAramAddress;
|
||||
u32 mOscillatorSomething;
|
||||
|
||||
@@ -21,10 +21,10 @@ struct JASDrumSet : public JASInst {
|
||||
/* 0x00 */ f32 mVolume;
|
||||
/* 0x04 */ f32 mPitch;
|
||||
/* 0x08 */ f32 mPan;
|
||||
/* 0x0C */ u16 field_0xc;
|
||||
/* 0x0E */ u16 field_0xe;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x0C */ u16 mDirectRelease;
|
||||
/* 0x0E */ u16 mWaveId;
|
||||
/* 0x10 */ f32 mVolumeMult;
|
||||
/* 0x14 */ f32 mPitchMult;
|
||||
};
|
||||
|
||||
JASDrumSet();
|
||||
|
||||
@@ -722,9 +722,9 @@ void JASAramStream::channelStart() {
|
||||
}
|
||||
jc->setInitPitch(mSampleRate / JASDriver::getDacRate());
|
||||
jc->setOscInit(0, &OSC_ENV);
|
||||
jc->field_0xdc.mWaveInfo = wave_info;
|
||||
jc->mAnon.mWaveInfo = wave_info;
|
||||
jc->mWaveAramAddress = mAramAddress + sBlockSize * mAramBlocksPerChannel * i;
|
||||
jc->field_0xdc.mChannelType = 0;
|
||||
jc->mAnon.mChannelType = 0;
|
||||
int ret = jc->playForce();
|
||||
JUT_ASSERT(977, ret);
|
||||
JUT_ASSERT_MSG(979, mChannels[i] == NULL, "channelStart for already playing channel");
|
||||
|
||||
@@ -115,9 +115,9 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
JASBasicInst::TKeymap* keymap = instp->getKeyRegion(j);
|
||||
keymap->setHighKey(*data >> 0x18);
|
||||
u32 fVar4 = data[1];
|
||||
keymap->field_0x4 = JSULoHalf(data[3]);
|
||||
keymap->field_0x8 = *(BE(f32)*)&data[4];
|
||||
keymap->field_0xc = *(BE(f32)*)&data[5];
|
||||
keymap->mWaveId = JSULoHalf(data[3]);
|
||||
keymap->mVolumeMult = *(BE(f32)*)&data[4];
|
||||
keymap->mPitchMult = *(BE(f32)*)&data[5];
|
||||
data += 2;
|
||||
for (int k = 0; k < fVar4; k++) {
|
||||
data += 4;
|
||||
@@ -159,9 +159,9 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
ptr++;
|
||||
}
|
||||
u32 pVar6 = ptr[0];
|
||||
percp->field_0xe = JSULoHalf(ptr[2]);
|
||||
percp->field_0x10 = *(BE(f32)*)&ptr[3];
|
||||
percp->field_0x14 = *(BE(f32)*)&ptr[4];
|
||||
percp->mWaveId = JSULoHalf(ptr[2]);
|
||||
percp->mVolumeMult = *(BE(f32)*)&ptr[3];
|
||||
percp->mPitchMult = *(BE(f32)*)&ptr[4];
|
||||
for (int k = 0; k < pVar6; k++) {}
|
||||
drump->setPerc(j, percp);
|
||||
}
|
||||
@@ -260,9 +260,9 @@ JASBasicBank* JASBNKParser::Ver0::createBasicBank(void const* stream, JKRHeap* h
|
||||
TKeymap* tkeymap = tinst->mKeymapOffset[j].ptr(header);
|
||||
keymap->setHighKey(tkeymap->mHighKey);
|
||||
TVmap* tvmap = tkeymap->mVmapOffset.ptr(header);
|
||||
keymap->field_0x4 = JSULoHalf(tvmap->field_0x4);
|
||||
keymap->field_0x8 = tvmap->field_0x8;
|
||||
keymap->field_0xc = tvmap->field_0xc;
|
||||
keymap->mWaveId = JSULoHalf(tvmap->field_0x4);
|
||||
keymap->mVolumeMult = tvmap->field_0x8;
|
||||
keymap->mPitchMult = tvmap->field_0xc;
|
||||
}
|
||||
|
||||
bank->setInst(i, instp);
|
||||
@@ -288,9 +288,9 @@ JASBasicBank* JASBNKParser::Ver0::createBasicBank(void const* stream, JKRHeap* h
|
||||
percp->setRelease(tperc->mRelease[j]);
|
||||
}
|
||||
TVmap* vmap = tpmap->mVmapOffset.ptr(header);
|
||||
percp->field_0xe = JSULoHalf(vmap->field_0x4);
|
||||
percp->field_0x10 = vmap->field_0x8;
|
||||
percp->field_0x14 = vmap->field_0xc;
|
||||
percp->mWaveId = JSULoHalf(vmap->field_0x4);
|
||||
percp->mVolumeMult = vmap->field_0x8;
|
||||
percp->mPitchMult = vmap->field_0xc;
|
||||
setp->setPerc(j, percp);
|
||||
}
|
||||
}
|
||||
@@ -314,8 +314,8 @@ JASOscillator::Data* JASBNKParser::Ver0::findOscPtr(JASBasicBank* bank, THeader
|
||||
if (inst != NULL) {
|
||||
JASInstParam param;
|
||||
inst->getParam(0x3c, 0x7f, ¶m);
|
||||
if (j < param.field_0x1d) {
|
||||
return param.field_0x14[j];
|
||||
if (j < param.mOscillatorCount) {
|
||||
return param.mOscillators[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,31 +11,31 @@
|
||||
using namespace dusk::mods::svc::audio_res;
|
||||
|
||||
// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations
|
||||
JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4,
|
||||
void (*param_5)(u32, JASChannel*, JASDsp::TChannel*, void*),
|
||||
void* param_6) {
|
||||
if (param_1 >= 0xf0) {
|
||||
return noteOnOsc(param_1 - 0xf0, param_2, param_3, param_4, param_5, param_6);
|
||||
JASChannel* JASBank::noteOn(JASBank const* bank, int program, u8 key, u8 velocity, u16 priority,
|
||||
void (*callback)(u32, JASChannel*, JASDsp::TChannel*, void*),
|
||||
void* callback_data) {
|
||||
if (program >= 0xf0) {
|
||||
return noteOnOsc(program - 0xf0, key, velocity, priority, callback, callback_data);
|
||||
}
|
||||
if (!param_0) {
|
||||
if (!bank) {
|
||||
return NULL;
|
||||
}
|
||||
JASInstParam stack_60;
|
||||
if (!param_0->getInstParam(param_1, param_2, param_3, &stack_60)) {
|
||||
JASInstParam instParam;
|
||||
if (!bank->getInstParam(program, key, velocity, &instParam)) {
|
||||
return NULL;
|
||||
}
|
||||
JASWaveBank* waveBank = param_0->getWaveBank();
|
||||
JASWaveBank* waveBank = bank->getWaveBank();
|
||||
if (!waveBank) {
|
||||
return NULL;
|
||||
}
|
||||
JASWaveHandle* waveHandle = waveBank->getWaveHandle(stack_60.field_0x1a);
|
||||
JASWaveHandle* waveHandle = waveBank->getWaveHandle(instParam.mWaveId);
|
||||
if (!waveHandle) {
|
||||
return NULL;
|
||||
}
|
||||
#if TARGET_PC
|
||||
auto const key = AudioWaveKey(static_cast<AudioWaveBank>(waveBank->bankId), stack_60.field_0x1a);
|
||||
auto const wave_key = AudioWaveKey(static_cast<AudioWaveBank>(waveBank->bankId), instParam.mWaveId);
|
||||
std::lock_guard lock(s_replacements_mutex);
|
||||
auto const found_replacement = s_replacements.find(key);
|
||||
auto const found_replacement = s_replacements.find(wave_key);
|
||||
if (found_replacement != s_replacements.end()) {
|
||||
waveHandle = &found_replacement->second;
|
||||
}
|
||||
@@ -52,32 +52,32 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8
|
||||
return NULL;
|
||||
}
|
||||
|
||||
JASChannel* channel = JKR_NEW JASChannel(param_5, param_6);
|
||||
JASChannel* channel = JKR_NEW JASChannel(callback, callback_data);
|
||||
if (!channel) {
|
||||
return NULL;
|
||||
}
|
||||
channel->setPriority(param_4);
|
||||
channel->field_0xdc.mWaveInfo = *waveInfo;
|
||||
channel->setPriority(priority);
|
||||
channel->mAnon.mWaveInfo = *waveInfo;
|
||||
channel->mWaveAramAddress = wavePtr;
|
||||
#if TARGET_PC
|
||||
channel->mAramBaseAddress = aramBase;
|
||||
channel->mSampleReference = waveHandle->getSampleReference();
|
||||
#endif
|
||||
channel->field_0xdc.mChannelType = stack_60.field_0x1c;
|
||||
channel->setBankDisposeID(param_0);
|
||||
channel->setInitPitch(stack_60.mPitch * (waveInfo->mSampleRate / JASDriver::getDacRate()));
|
||||
if (stack_60.field_0x1e == 0) {
|
||||
channel->setKey(param_2 - waveInfo->mBaseKey);
|
||||
channel->mAnon.mChannelType = instParam.mChannelType;
|
||||
channel->setBankDisposeID(bank);
|
||||
channel->setInitPitch(instParam.mPitch * (waveInfo->mSampleRate / JASDriver::getDacRate()));
|
||||
if (instParam.mDontSetKey == 0) {
|
||||
channel->setKey(key - waveInfo->mBaseKey);
|
||||
}
|
||||
channel->setInitVolume(stack_60.mVolume);
|
||||
channel->setVelocity(param_3);
|
||||
channel->setInitPan(stack_60.mPan);
|
||||
channel->setInitFxmix(stack_60.mFxMix);
|
||||
channel->setInitDolby(stack_60.mDolby);
|
||||
for (u32 i = 0; i < stack_60.field_0x1d; i++) {
|
||||
channel->setOscInit(i, stack_60.field_0x14[i]);
|
||||
channel->setInitVolume(instParam.mVolume);
|
||||
channel->setVelocity(velocity);
|
||||
channel->setInitPan(instParam.mPan);
|
||||
channel->setInitFxmix(instParam.mFxMix);
|
||||
channel->setInitDolby(instParam.mDolby);
|
||||
for (u32 i = 0; i < instParam.mOscillatorCount; i++) {
|
||||
channel->setOscInit(i, instParam.mOscillators[i]);
|
||||
}
|
||||
channel->setDirectRelease(stack_60.field_0x18);
|
||||
channel->setDirectRelease(instParam.mDirectRelease);
|
||||
if (!channel->play()) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -85,24 +85,24 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8
|
||||
}
|
||||
|
||||
// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations
|
||||
JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3,
|
||||
void (*param_4)(u32, JASChannel*, JASDsp::TChannel*, void*),
|
||||
void* param_5) {
|
||||
JASChannel* JASBank::noteOnOsc(int param_0, u8 key, u8 velocity, u16 priority,
|
||||
void (*callback)(u32, JASChannel*, JASDsp::TChannel*, void*),
|
||||
void* callback_data) {
|
||||
static JASOscillator::Point const OSC_RELEASE_TABLE[2] = {
|
||||
{0x0001, 0x000A, 0x0000},
|
||||
{0x000F, 0x0000, 0x0000},
|
||||
};
|
||||
static const JASOscillator::Data OSC_ENV = {0, 1.0f, NULL, OSC_RELEASE_TABLE, 1.0f, 0.0f};
|
||||
JASChannel* channel = JKR_NEW JASChannel(param_4, param_5);
|
||||
JASChannel* channel = JKR_NEW JASChannel(callback, callback_data);
|
||||
if (!channel) {
|
||||
return NULL;
|
||||
}
|
||||
channel->setPriority(param_3);
|
||||
channel->setPriority(priority);
|
||||
channel->mOscillatorSomething = param_0;
|
||||
channel->field_0xdc.mChannelType = 2;
|
||||
channel->mAnon.mChannelType = CHANNEL_OSCILLATOR;
|
||||
channel->setInitPitch(16736.016f / JASDriver::getDacRate());
|
||||
channel->setKey(param_1 - channel->field_0xdc.mWaveInfo.mBaseKey);
|
||||
channel->setVelocity(param_2);
|
||||
channel->setKey(key - channel->mAnon.mWaveInfo.mBaseKey);
|
||||
channel->setVelocity(velocity);
|
||||
channel->setOscInit(0, &OSC_ENV);
|
||||
if (!channel->play()) {
|
||||
return NULL;
|
||||
|
||||
@@ -21,13 +21,13 @@ void JASBasicBank::newInstTable(u8 num, JKRHeap* heap) {
|
||||
}
|
||||
}
|
||||
|
||||
bool JASBasicBank::getInstParam(int prg_no, int param_1, int param_2,
|
||||
bool JASBasicBank::getInstParam(int prg_no, int key, int velocity,
|
||||
JASInstParam* o_param) const {
|
||||
JASInst* inst = getInst(prg_no);
|
||||
if (inst == NULL) {
|
||||
return false;
|
||||
}
|
||||
return inst->getParam(param_1, param_2, o_param);
|
||||
return inst->getParam(key, velocity, o_param);
|
||||
}
|
||||
|
||||
void JASBasicBank::setInst(int prg_no, JASInst* inst) {
|
||||
|
||||
@@ -14,9 +14,9 @@ JASBasicInst::JASBasicInst() {
|
||||
mKeymapCount = 0;
|
||||
mKeymap = NULL;
|
||||
#if TARGET_ANDROID
|
||||
JASCalc::_bzero(field_0xc, sizeof(field_0xc));
|
||||
JASCalc::_bzero(mOscillators, sizeof(mOscillators));
|
||||
#else
|
||||
JASCalc::bzero(field_0xc, sizeof(field_0xc));
|
||||
JASCalc::bzero(mOscillators, sizeof(mOscillators));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -24,18 +24,18 @@ JASBasicInst::~JASBasicInst() {
|
||||
JKR_DELETE_ARRAY(mKeymap);
|
||||
}
|
||||
|
||||
bool JASBasicInst::getParam(int param_0, int param_1, JASInstParam* param_2) const {
|
||||
UNUSED(param_1);
|
||||
param_2->field_0x1c = 0;
|
||||
param_2->field_0x1e = 0;
|
||||
param_2->field_0x14 = (JASOscillator::Data**)&field_0xc;
|
||||
param_2->field_0x1d = 2;
|
||||
param_2->mVolume = mVolume;
|
||||
param_2->mPitch = mPitch;
|
||||
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 (param_0 <= mKeymap[i].mHighKey) {
|
||||
if (key <= mKeymap[i].mHighKey) {
|
||||
keyMap = &mKeymap[i];
|
||||
break;
|
||||
}
|
||||
@@ -45,9 +45,9 @@ bool JASBasicInst::getParam(int param_0, int param_1, JASInstParam* param_2) con
|
||||
return false;
|
||||
}
|
||||
|
||||
param_2->mVolume *= keyMap->field_0x8;
|
||||
param_2->mPitch *= keyMap->field_0xc;
|
||||
param_2->field_0x1a = u16(keyMap->field_0x4);
|
||||
o_param->mVolume *= keyMap->mVolumeMult;
|
||||
o_param->mPitch *= keyMap->mPitchMult;
|
||||
o_param->mWaveId = u16(keyMap->mWaveId);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ void JASBasicInst::setKeyRegionCount(u32 count, JKRHeap* param_1) {
|
||||
void JASBasicInst::setOsc(int index, JASOscillator::Data const* param_1) {
|
||||
JUT_ASSERT(128, index < OSC_MAX);
|
||||
JUT_ASSERT(129, index >= 0);
|
||||
field_0xc[index] = param_1;
|
||||
mOscillators[index] = param_1;
|
||||
}
|
||||
|
||||
JASBasicInst::TKeymap* JASBasicInst::getKeyRegion(int index) {
|
||||
|
||||
@@ -37,7 +37,7 @@ JASChannel::JASChannel(Callback i_callback, void* i_callbackData) :
|
||||
mKeySweepCount(0),
|
||||
mSkipSamples(0)
|
||||
{
|
||||
field_0xdc.mChannelType = 0;
|
||||
mAnon.mChannelType = 0;
|
||||
field_0x104 = 0;
|
||||
mMixConfig[0].whole = 0x150;
|
||||
mMixConfig[1].whole = 0x210;
|
||||
@@ -240,7 +240,7 @@ s32 JASChannel::initialUpdateDSPChannel(JASDsp::TChannel* i_channel) {
|
||||
mCallback(CB_START, this, i_channel, mCallbackData);
|
||||
}
|
||||
|
||||
if (field_0xdc.mWaveInfo.mpLoaded[0] == 0) {
|
||||
if (mAnon.mWaveInfo.mpLoaded[0] == 0) {
|
||||
JUT_WARN_DEVICE(346, 2, "%s", "Lost wave data while playing");
|
||||
mDspCh->free();
|
||||
mDspCh = NULL;
|
||||
@@ -256,9 +256,9 @@ s32 JASChannel::initialUpdateDSPChannel(JASDsp::TChannel* i_channel) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (field_0xdc.mChannelType) {
|
||||
switch (mAnon.mChannelType) {
|
||||
case 0:
|
||||
i_channel->setWaveInfo(field_0xdc.mWaveInfo, mWaveAramAddress, mSkipSamples);
|
||||
i_channel->setWaveInfo(mAnon.mWaveInfo, mWaveAramAddress, mSkipSamples);
|
||||
#if TARGET_PC
|
||||
i_channel->mAramBaseAddress = mAramBaseAddress;
|
||||
#endif
|
||||
@@ -321,7 +321,7 @@ s32 JASChannel::updateDSPChannel(JASDsp::TChannel* i_channel) {
|
||||
mCallback(CB_PLAY, this, i_channel, mCallbackData);
|
||||
}
|
||||
|
||||
if (field_0xdc.mWaveInfo.mpLoaded[0] == 0) {
|
||||
if (mAnon.mWaveInfo.mpLoaded[0] == 0) {
|
||||
JUT_WARN_DEVICE(456, 2, "%s","Lost wave data while playing");
|
||||
mDspCh->free();
|
||||
mDspCh = NULL;
|
||||
|
||||
@@ -26,8 +26,8 @@ void JASDrumSet::newPercArray(u8 num, JKRHeap* heap) {
|
||||
}
|
||||
}
|
||||
|
||||
bool JASDrumSet::getParam(int key, int param_1, JASInstParam* param_2) const {
|
||||
UNUSED(param_1);
|
||||
bool JASDrumSet::getParam(int key, int velocity, JASInstParam* o_param) const {
|
||||
UNUSED(velocity);
|
||||
JUT_ASSERT(48, key >= 0);
|
||||
if (mPercArray == NULL) {
|
||||
return false;
|
||||
@@ -43,12 +43,12 @@ bool JASDrumSet::getParam(int key, int param_1, JASInstParam* param_2) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
param_2->field_0x1c = 0;
|
||||
param_2->field_0x1e = 1;
|
||||
param_2->mVolume = perc->mVolume;
|
||||
param_2->mPitch = perc->mPitch;
|
||||
param_2->mPan = perc->mPan;
|
||||
param_2->field_0x18 = u16(perc->field_0xc);
|
||||
o_param->mChannelType = 0;
|
||||
o_param->mDontSetKey = 1;
|
||||
o_param->mVolume = perc->mVolume;
|
||||
o_param->mPitch = perc->mPitch;
|
||||
o_param->mPan = perc->mPan;
|
||||
o_param->mDirectRelease = u16(perc->mDirectRelease);
|
||||
|
||||
static JASOscillator::Data osc;
|
||||
|
||||
@@ -61,11 +61,11 @@ bool JASDrumSet::getParam(int key, int param_1, JASInstParam* param_2) const {
|
||||
|
||||
static JASOscillator::Data* oscp = &osc;
|
||||
|
||||
param_2->field_0x14 = &oscp;
|
||||
param_2->field_0x1d = 1;
|
||||
param_2->mVolume *= perc->field_0x10;
|
||||
param_2->mPitch *= perc->field_0x14;
|
||||
param_2->field_0x1a = u16(perc->field_0xe);
|
||||
o_param->mOscillators = &oscp;
|
||||
o_param->mOscillatorCount = 1;
|
||||
o_param->mVolume *= perc->mVolumeMult;
|
||||
o_param->mPitch *= perc->mPitchMult;
|
||||
o_param->mWaveId = u16(perc->mWaveId);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -107,12 +107,12 @@ JASDrumSet::TPerc::TPerc() {
|
||||
mVolume = 1.0f;
|
||||
mPitch = 1.0f;
|
||||
mPan = 0.5f;
|
||||
field_0xc = 1000;
|
||||
mDirectRelease = 1000;
|
||||
}
|
||||
|
||||
void JASDrumSet::TPerc::setRelease(u32 release) {
|
||||
JUT_ASSERT(224, release < 0x10000);
|
||||
field_0xc = release;
|
||||
mDirectRelease = release;
|
||||
}
|
||||
|
||||
u32 JASDrumSet::getType() const { return 'PERC'; }
|
||||
|
||||
@@ -288,13 +288,13 @@ void JASTrack::setLatestKey(u8 param_0) {
|
||||
field_0x22b += getTransposeTotal();
|
||||
}
|
||||
|
||||
JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* i_channelMgr, u32 param_1, u32 param_2,
|
||||
JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* i_channelMgr, u32 key, u32 velocity,
|
||||
u32 i_updateTimer) {
|
||||
JASBank* bank = NULL;
|
||||
if (mBankTable != NULL) {
|
||||
bank = mBankTable->getBank(mBankNumber);
|
||||
}
|
||||
JASChannel* channel = JASBank::noteOn(bank, mProgNumber, param_1, param_2,
|
||||
JASChannel* channel = JASBank::noteOn(bank, mProgNumber, key, velocity,
|
||||
mNoteOnPrio | mReleasePrio << 8,
|
||||
channelUpdateCallback, i_channelMgr);
|
||||
if (channel == NULL) {
|
||||
@@ -315,17 +315,17 @@ JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* i_channelMgr, u32 para
|
||||
return channel;
|
||||
}
|
||||
|
||||
int JASTrack::noteOn(u32 noteid, u32 param_1, u32 param_2) {
|
||||
int JASTrack::noteOn(u32 noteid, u32 key, u32 velocity) {
|
||||
JUT_ASSERT(486, noteid != 0 && noteid < TChannelMgr::CHANNEL_MAX);
|
||||
if (isMute()) {
|
||||
return 0;
|
||||
}
|
||||
int ret = 1;
|
||||
param_1 += getTransposeTotal();
|
||||
key += getTransposeTotal();
|
||||
for (u32 i = 0; i < mChannelMgrCount; i++) {
|
||||
if (mChannelMgrs[i] != NULL) {
|
||||
mChannelMgrs[i]->noteOff(noteid, 0);
|
||||
JASChannel* channel = channelStart(mChannelMgrs[i], param_1, param_2, 0);
|
||||
JASChannel* channel = channelStart(mChannelMgrs[i], key, velocity, 0);
|
||||
if (channel == NULL) {
|
||||
ret = 0;
|
||||
}
|
||||
@@ -356,7 +356,7 @@ int JASTrack::gateOn(u32 param_0, u32 i_velocity, f32 i_time, u32 i_flags) {
|
||||
} else {
|
||||
JASChannel* channel = channel_mgr->mChannels[0];
|
||||
if (channel != NULL) {
|
||||
channel->setKey(uvar7 - channel->field_0xdc.mWaveInfo.mBaseKey);
|
||||
channel->setKey(uvar7 - channel->mAnon.mWaveInfo.mBaseKey);
|
||||
channel->setVelocity(i_velocity);
|
||||
channel->setUpdateTimer(update_timer);
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ bool JASVoiceBank::getInstParam(int param_0, int param_1, int param_2,
|
||||
return false;
|
||||
}
|
||||
sOscTable = (JASOscillator::Data*)&sOscData;
|
||||
param_3->field_0x1a = param_0;
|
||||
param_3->field_0x1d = 1;
|
||||
param_3->field_0x14 = &sOscTable;
|
||||
param_3->mWaveId = param_0;
|
||||
param_3->mOscillatorCount = 1;
|
||||
param_3->mOscillators = &sOscTable;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user