MCPcopy Create free account
hub / github.com/doldecomp/mkdd / noteOn

Method noteOn

libs/JSystem/JAudio/System/JASBank.cpp:12–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10#endif
11
12JASChannel *JASBank::noteOn(const JASBank *pBnk, u32 instId, u8 param_2, u8 vel, u16 prio,
13 JASChannel::Callback cb,
14 void *param_6) {
15 if (instId > 0xef) {
16 return noteOnOsc(instId - 0xf0, param_2, vel, prio, cb, param_6);
17 }
18 if (!pBnk) {
19 return NULL;
20 }
21 JASInst *inst = pBnk->getInst(instId);
22 if (!inst) {
23 return NULL;
24 }
25 JASInstParam instParam;
26 if (!inst->getParam(param_2, vel, &instParam)) {
27 return NULL;
28 }
29 JASWaveBank *waveBank = pBnk->getWaveBank();
30 if (!waveBank) {
31 return NULL;
32 }
33 JASWaveHandle *waveHandle = waveBank->getWaveHandle(instParam._18);
34 if (!waveHandle) {
35 return NULL;
36 }
37 const JASWaveInfo *waveInfo = waveHandle->getWaveInfo();
38 if (!waveInfo) {
39 return NULL;
40 }
41 int wavePtr = waveHandle->getWavePtr();
42 if (!wavePtr) {
43 return NULL;
44 }
45
46 JASChannel *channel = new JASChannel(cb, param_6);
47 if (!channel) {
48 return NULL;
49 }
50
51 channel->setPriority(prio);
52 channel->mWaveData.mInfo = *waveInfo;
53 channel->mWaveData.mPtr = wavePtr;
54 channel->mWaveData._0 = instParam._14;
55 channel->setBankDisposeID(pBnk);
56 channel->setInitPitch(instParam.mPitch * (waveInfo->_04 / JASDriver::getDacRate()));
57
58 if (instParam._24 == 0) {
59 channel->setKey(param_2 - waveInfo->_01);
60 }
61
62 channel->setInitVolume(instParam.mVolume);
63 channel->setVelocity(vel);
64 channel->setInitPan(instParam.mPan);
65 channel->setInitFxmix(instParam.mFxMix);
66 channel->setInitDolby(instParam.mDolby);
67
68 for (u32 i = 0; i < instParam._20; i++) {
69 channel->setOscInit(i, instParam._1c[i]);

Callers 1

execNoteOnMidiMethod · 0.45

Calls 15

getDacRateFunction · 0.85
getInstMethod · 0.80
setBankDisposeIDMethod · 0.80
setInitPitchMethod · 0.80
setKeyMethod · 0.80
setInitVolumeMethod · 0.80
setVelocityMethod · 0.80
setInitPanMethod · 0.80
setInitFxmixMethod · 0.80
setInitDolbyMethod · 0.80
setOscInitMethod · 0.80
getParamMethod · 0.45

Tested by

no test coverage detected