More JAudio naming, focused on instruments this time

This commit is contained in:
PJB3005
2026-08-02 15:19:21 +02:00
parent 6d7269b654
commit c43ed69b6d
12 changed files with 119 additions and 119 deletions
@@ -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();
+2 -2
View File
@@ -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");
+14 -14
View File
@@ -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, &param);
if (j < param.field_0x1d) {
return param.field_0x14[j];
if (j < param.mOscillatorCount) {
return param.mOscillators[j];
}
}
}
+36 -36
View File
@@ -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;
+2 -2
View File
@@ -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) {
+15 -15
View File
@@ -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) {
+5 -5
View File
@@ -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;
+15 -15
View File
@@ -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'; }
+6 -6
View File
@@ -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);
}
+3 -3
View File
@@ -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;
}