#include "synprivate.h" #include #include "mix.h" // #include s32 __HBMSYNVolumeAttenuation[128] = { -62914560, -55149952, -47258631, -42642504, -39367310, -36826872, -34751184, -32996214, -31475990, -30135057, -28935552, -27850467, -26859863, -25948595, -25104893, -24319425, -23584669, -22894472, -22243736, -21628193, -21044231, -20488766, -19959147, -19453074, -18968542, -18503793, -18057274, -17627610, -17213572, -16814066, -16428104, -16054800, -15693348, -15343020, -15003151, -14673134, -14352415, -14040484, -13736873, -13441148, -13152910, -12871791, -12597446, -12329556, -12067826, -11811978, -11561753, -11316910, -11077221, -10842476, -10612472, -10387024, -10165954, -9949094, -9736289, -9527388, -9322252, -9120746, -8922745, -8728129, -8536784, -8348601, -8163479, -7981319, -7802027, -7625516, -7451699, -7280496, -7111830, -6945626, -6781814, -6620325, -6461095, -6304061, -6149164, -5996346, -5845552, -5696729, -5549827, -5404796, -5261590, -5120162, -4980470, -4842471, -4706125, -4571392, -4438236, -4306618, -4176505, -4047862, -3920657, -3794857, -3670432, -3547352, -3425589, -3305114, -3185901, -3067923, -2951155, -2835573, -2721152, -2607870, -2495703, -2384632, -2274633, -2165687, -2057774, -1950874, -1844968, -1740039, -1636067, -1533037, -1430931, -1329732, -1229425, -1129994, -1031424, -933700, -836808, -740733, -645463, -550983, -457281, -364343, -272158, -180714, -89998, 0 }; // only used in synenv.cpp; it should really be there instead s32 __HBMSYNAttackAttnTable[100] = { -62914560, -26157189, -22211529, -19903465, -18265868, -16995649, -15957805, -15080320, -14320208, -13649742, -13049989, -12507447, -12012145, -11556511, -11134660, -10741926, -10374548, -10029449, -9704081, -9396310, -9104329, -8826596, -8561787, -8308750, -8066484, -7834110, -7610850, -7396018, -7188999, -6989246, -6796265, -6609613, -6428887, -6253723, -6083789, -5918780, -5758421, -5602455, -5450650, -5302787, -5158668, -5018109, -4880936, -4746991, -4616126, -4488202, -4363090, -4240668, -4120824, -4003451, -3888449, -3775725, -3665190, -3556760, -3450358, -3345907, -3243339, -3142586, -3043586, -2946278, -2850605, -2756514, -2663953, -2572873, -2483227, -2394971, -2308063, -2222461, -2138128, -2055026, -1973120, -1892376, -1812761, -1734244, -1656795, -1580386, -1504989, -1430578, -1357127, -1284611, -1213008, -1142294, -1072448, -1003449, -935276, -867909, -801331, -735522, -670466, -606144, -542542, -479642, -417429, -355889, -295008, -234770, -175164, -116175, -57791, 0 }; void __HBMSYNSetupVolume(HBMSYNVOICE *voice) { ASSERTLINE(80, voice); voice->attn = voice->region->attn + __HBMSYNVolumeAttenuation[voice->keyVel]; } void __HBMSYNSetupPan(HBMSYNVOICE *voice) { ASSERTLINE(93, voice); voice->pan = voice->synth->pan[voice->midiChannel]; } s32 __HBMSYNGetVoiceInput(HBMSYNVOICE *voice) { return (voice->attn + voice->veAttn) >> 16; } s32 __HBMSYNGetVoiceFader(HBMSYNVOICE *voice) { return (voice->synth->masterVolume + voice->synth->volAttn[voice->midiChannel]) >> 16; } void __HBMSYNUpdateMix(HBMSYNVOICE *voice) { HBMMIXSetInput(voice->axvpb, __HBMSYNGetVoiceInput(voice)); HBMMIXSetAuxA(voice->axvpb, voice->synth->auxAAttn[voice->midiChannel] >> 16); HBMMIXSetFader(voice->axvpb, __HBMSYNGetVoiceFader(voice)); HBMMIXSetPan(voice->axvpb, voice->synth->pan[voice->midiChannel]); }