/** * Copyright (c) 2021 Enzien Audio, Ltd. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions, and the following disclaimer. * * 2. Redistributions in binary form must reproduce the phrase "powered by heavy", * the heavy logo, and a hyperlink to https://enzienaudio.com, all in a visible * form. * * 2.1 If the Application is distributed in a store system (for example, * the Apple "App Store" or "Google Play"), the phrase "powered by heavy" * shall be included in the app description or the copyright text as well as * the in the app itself. The heavy logo will shall be visible in the app * itself as well. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "Heavy_dpf_example.hpp" #define Context(_c) reinterpret_cast(_c) /* * C Functions */ extern "C" { HV_EXPORT HeavyContextInterface *hv_dpf_example_new(double sampleRate) { return new Heavy_dpf_example(sampleRate); } HV_EXPORT HeavyContextInterface *hv_dpf_example_new_with_options(double sampleRate, int poolKb, int inQueueKb, int outQueueKb) { return new Heavy_dpf_example(sampleRate, poolKb, inQueueKb, outQueueKb); } } // extern "C" /* * Class Functions */ Heavy_dpf_example::Heavy_dpf_example(double sampleRate, int poolKb, int inQueueKb, int outQueueKb) : HeavyContext(sampleRate, poolKb, inQueueKb, outQueueKb) { numBytes += cSlice_init(&cSlice_ttrjbnOH, 2, 1); numBytes += cSlice_init(&cSlice_rTF9DX7m, 1, 1); numBytes += cSlice_init(&cSlice_nooBN54U, 0, 1); numBytes += cSlice_init(&cSlice_lOTfFMgJ, 1, -1); numBytes += cVar_init_f(&cVar_tVuvuw5t, 0.0f); numBytes += cIf_init(&cIf_3GBmEV4I, false); numBytes += cIf_init(&cIf_3GmBWZyt, false); numBytes += cPack_init(&cPack_4UsIEgMe, 3, 0.0f, 0.0f, 0.0f); numBytes += cVar_init_f(&cVar_RPdD4HeF, 0.0f); numBytes += cVar_init_f(&cVar_kvMEvPOV, 0.0f); numBytes += cSlice_init(&cSlice_mIVBD06q, 2, 1); numBytes += cSlice_init(&cSlice_r5tp1yeR, 1, 1); numBytes += cSlice_init(&cSlice_cjeHB0rH, 0, 1); numBytes += cSlice_init(&cSlice_BP4eRBIb, 1, -1); numBytes += cSlice_init(&cSlice_QnwldHWp, 1, -1); numBytes += cVar_init_f(&cVar_NLylhRgN, 0.0f); numBytes += cIf_init(&cIf_h1bPPAcV, false); numBytes += cVar_init_f(&cVar_u2kHFx8W, 0.0f); numBytes += cIf_init(&cIf_1GZZJQDp, false); numBytes += cIf_init(&cIf_RDyyH4D7, false); numBytes += cIf_init(&cIf_gfwlNnMH, false); numBytes += cIf_init(&cIf_7APZEkWD, false); numBytes += cIf_init(&cIf_4gCIzY9i, false); numBytes += cPack_init(&cPack_67nBZkn4, 3, 0.0f, 0.0f, 0.0f); numBytes += cVar_init_f(&cVar_CI9mBnmb, 0.0f); numBytes += cVar_init_f(&cVar_hUYiyA45, 0.0f); numBytes += cSlice_init(&cSlice_SVSHWF8f, 1, 1); numBytes += cSlice_init(&cSlice_6uDCUz4Z, 0, 1); numBytes += cSlice_init(&cSlice_rpQXuGzG, 1, -1); numBytes += cVar_init_f(&cVar_l69aX925, 0.0f); numBytes += cIf_init(&cIf_TQcurnzR, false); numBytes += cIf_init(&cIf_kCZOtTp6, false); numBytes += cPack_init(&cPack_9ZEg77rp, 2, 0.0f, 0.0f); numBytes += cVar_init_f(&cVar_aKKuw1wF, 0.0f); numBytes += cSlice_init(&cSlice_UQl1eJDR, 1, 1); numBytes += cSlice_init(&cSlice_IF0v5IW7, 0, 1); numBytes += cSlice_init(&cSlice_rvhylz8z, 1, -1); numBytes += cVar_init_f(&cVar_wzQuii3f, 0.0f); numBytes += cIf_init(&cIf_oCABT68v, false); numBytes += cIf_init(&cIf_QHZoesRt, false); numBytes += cPack_init(&cPack_agXozp2N, 2, 0.0f, 0.0f); numBytes += cVar_init_f(&cVar_7WaHIJJn, 0.0f); numBytes += cSlice_init(&cSlice_pUE0odgY, 1, 1); numBytes += cSlice_init(&cSlice_1SUmZGqv, 0, 1); numBytes += cSlice_init(&cSlice_CyV2pK5m, 1, -1); numBytes += cVar_init_f(&cVar_vZGQuEfK, 0.0f); numBytes += cIf_init(&cIf_i5UiKkIh, false); numBytes += cIf_init(&cIf_9A9dOokl, false); numBytes += cPack_init(&cPack_zKPHN0bG, 2, 0.0f, 0.0f); numBytes += cVar_init_f(&cVar_LblSCQEp, 0.0f); // schedule a message to trigger all loadbangs via the __hv_init receiver scheduleMessageForReceiver(0xCE5CC65B, msg_initWithBang(HV_MESSAGE_ON_STACK(1), 0)); } Heavy_dpf_example::~Heavy_dpf_example() { cPack_free(&cPack_4UsIEgMe); cPack_free(&cPack_67nBZkn4); cPack_free(&cPack_9ZEg77rp); cPack_free(&cPack_agXozp2N); cPack_free(&cPack_zKPHN0bG); } HvTable *Heavy_dpf_example::getTableForHash(hv_uint32_t tableHash) { return nullptr; } void Heavy_dpf_example::scheduleMessageForReceiver(hv_uint32_t receiverHash, HvMessage *m) { switch (receiverHash) { case 0x3083F0F7: { // __hv_bendin mq_addMessageByTimestamp(&mq, m, 0, &cReceive_viUp6CVK_sendMessage); break; } case 0x41BE0F9C: { // __hv_ctlin mq_addMessageByTimestamp(&mq, m, 0, &cReceive_FE4FMnT2_sendMessage); break; } case 0xCE5CC65B: { // __hv_init mq_addMessageByTimestamp(&mq, m, 0, &cReceive_6yjHqG0b_sendMessage); break; } case 0x67E37CA3: { // __hv_notein mq_addMessageByTimestamp(&mq, m, 0, &cReceive_DuxcXrCQ_sendMessage); break; } case 0x2E1EA03D: { // __hv_pgmin mq_addMessageByTimestamp(&mq, m, 0, &cReceive_RYEj4fUB_sendMessage); break; } case 0x553925BD: { // __hv_touchin mq_addMessageByTimestamp(&mq, m, 0, &cReceive_8YNr1wEC_sendMessage); break; } default: return; } } int Heavy_dpf_example::getParameterInfo(int index, HvParameterInfo *info) { if (info != nullptr) { switch (index) { default: { info->name = "invalid parameter index"; info->hash = 0; info->type = HvParameterType::HV_PARAM_TYPE_PARAMETER_IN; info->minVal = 0.0f; info->maxVal = 0.0f; info->defaultVal = 0.0f; break; } } } return 0; } /* * Send Function Implementations */ void Heavy_dpf_example::cSlice_ttrjbnOH_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cBinop_k_onMessage(_c, NULL, HV_BINOP_ADD, 1.0f, 0, m, &cBinop_Bg0uxEJb_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_rTF9DX7m_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cVar_onMessage(_c, &Context(_c)->cVar_kvMEvPOV, 0, m, &cVar_kvMEvPOV_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_nooBN54U_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cIf_onMessage(_c, &Context(_c)->cIf_3GmBWZyt, 0, m, &cIf_3GmBWZyt_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSwitchcase_JbdLUebF_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_lOTfFMgJ, 0, m, &cSlice_lOTfFMgJ_sendMessage); break; } default: { break; } } } void Heavy_dpf_example::cSlice_lOTfFMgJ_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cPack_onMessage(_c, &Context(_c)->cPack_4UsIEgMe, 0, m, &cPack_4UsIEgMe_sendMessage); break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_4UsIEgMe, 0, m, &cPack_4UsIEgMe_sendMessage); break; } default: return; } } void Heavy_dpf_example::cVar_tVuvuw5t_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_8eWRT6Gg_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_3GBmEV4I, 0, m, &cIf_3GBmEV4I_sendMessage); } void Heavy_dpf_example::cUnop_o8wCPnuu_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_9HstX6kC_sendMessage); } void Heavy_dpf_example::cUnop_kRzmgAXl_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_9HstX6kC_sendMessage); } void Heavy_dpf_example::cIf_3GBmEV4I_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_kRzmgAXl_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_o8wCPnuu_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_8eWRT6Gg_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_3GBmEV4I, 1, m, &cIf_3GBmEV4I_sendMessage); } void Heavy_dpf_example::cIf_3GmBWZyt_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_4UsIEgMe, 0, m, &cPack_4UsIEgMe_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_9HstX6kC_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_3GmBWZyt, 1, m, &cIf_3GmBWZyt_sendMessage); } void Heavy_dpf_example::cMsg_2AKDoJxc_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(2); msg_init(m, 2, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 2); msg_setElementToFrom(m, 1, n, 0); cSwitchcase_JbdLUebF_onMessage(_c, NULL, 0, m, NULL); } void Heavy_dpf_example::cPack_4UsIEgMe_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSend_VBRbmcTL_sendMessage(_c, 0, m); } void Heavy_dpf_example::cVar_RPdD4HeF_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MIN, 15.0f, 0, m, &cBinop_TL48hOqt_sendMessage); } void Heavy_dpf_example::cBinop_TL48hOqt_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MAX, 0.0f, 0, m, &cBinop_mxHJxq7j_sendMessage); } void Heavy_dpf_example::cBinop_mxHJxq7j_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_4UsIEgMe, 2, m, &cPack_4UsIEgMe_sendMessage); } void Heavy_dpf_example::cVar_kvMEvPOV_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_4UsIEgMe, 1, m, &cPack_4UsIEgMe_sendMessage); } void Heavy_dpf_example::cSend_VBRbmcTL_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { if (_c->getSendHook() != nullptr) _c->getSendHook()(_c, "__hv_noteout", 0xD1D4AC2, m); } void Heavy_dpf_example::cCast_3yanjwYr_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_RPdD4HeF, 0, m, &cVar_RPdD4HeF_sendMessage); } void Heavy_dpf_example::cCast_licMnEIU_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_kvMEvPOV, 0, m, &cVar_kvMEvPOV_sendMessage); } void Heavy_dpf_example::cSlice_mIVBD06q_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cVar_onMessage(_c, &Context(_c)->cVar_CI9mBnmb, 0, m, &cVar_CI9mBnmb_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_RDyyH4D7, 0, m, &cIf_RDyyH4D7_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_r5tp1yeR_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cIf_onMessage(_c, &Context(_c)->cIf_4gCIzY9i, 0, m, &cIf_4gCIzY9i_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_cjeHB0rH_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSwitchcase_Hsr07mq8_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_BP4eRBIb, 0, m, &cSlice_BP4eRBIb_sendMessage); break; } default: { cMsg_x0Zoh6lt_sendMessage(_c, 0, m); break; } } } void Heavy_dpf_example::cSlice_BP4eRBIb_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cSwitchcase_m9g4RF0D_onMessage(_c, NULL, 0, m, NULL); break; } case 1: { cSwitchcase_m9g4RF0D_onMessage(_c, NULL, 0, m, NULL); break; } default: return; } } void Heavy_dpf_example::cSwitchcase_m9g4RF0D_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_QnwldHWp, 0, m, &cSlice_QnwldHWp_sendMessage); break; } default: { cMsg_QibGQjn2_sendMessage(_c, 0, m); break; } } } void Heavy_dpf_example::cSlice_QnwldHWp_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 0, m, &cPack_67nBZkn4_sendMessage); break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 0, m, &cPack_67nBZkn4_sendMessage); break; } default: return; } } void Heavy_dpf_example::cVar_NLylhRgN_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_DoZ4UWlE_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_h1bPPAcV, 0, m, &cIf_h1bPPAcV_sendMessage); } void Heavy_dpf_example::cUnop_qmcAYqwI_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_IJFspSKG_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_RDyyH4D7, 1, m, &cIf_RDyyH4D7_sendMessage); } void Heavy_dpf_example::cUnop_RpawO5s4_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_IJFspSKG_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_RDyyH4D7, 1, m, &cIf_RDyyH4D7_sendMessage); } void Heavy_dpf_example::cIf_h1bPPAcV_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_RpawO5s4_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_qmcAYqwI_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_DoZ4UWlE_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_h1bPPAcV, 1, m, &cIf_h1bPPAcV_sendMessage); } void Heavy_dpf_example::cVar_u2kHFx8W_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_9LCBqi43_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_1GZZJQDp, 0, m, &cIf_1GZZJQDp_sendMessage); } void Heavy_dpf_example::cUnop_hoezKhvV_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_eerhl1ua_sendMessage); } void Heavy_dpf_example::cUnop_g9ZNGpyd_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_eerhl1ua_sendMessage); } void Heavy_dpf_example::cIf_1GZZJQDp_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_g9ZNGpyd_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_hoezKhvV_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_9LCBqi43_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_1GZZJQDp, 1, m, &cIf_1GZZJQDp_sendMessage); } void Heavy_dpf_example::cIf_RDyyH4D7_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cVar_onMessage(_c, &Context(_c)->cVar_hUYiyA45, 0, m, &cVar_hUYiyA45_sendMessage); break; } default: return; } } void Heavy_dpf_example::cIf_gfwlNnMH_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 0, m, &cPack_67nBZkn4_sendMessage); break; } default: return; } } void Heavy_dpf_example::cIf_7APZEkWD_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 0, m, &cPack_67nBZkn4_sendMessage); break; } default: return; } } void Heavy_dpf_example::cIf_4gCIzY9i_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cVar_onMessage(_c, &Context(_c)->cVar_hUYiyA45, 0, m, &cVar_hUYiyA45_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_eerhl1ua_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_gfwlNnMH, 1, m, &cIf_gfwlNnMH_sendMessage); } void Heavy_dpf_example::cBinop_IJFspSKG_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_7APZEkWD, 1, m, &cIf_7APZEkWD_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_4gCIzY9i, 1, m, &cIf_4gCIzY9i_sendMessage); } void Heavy_dpf_example::cMsg_QlCmKOoy_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(3); msg_init(m, 3, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 1); msg_setElementToFrom(m, 1, n, 2); msg_setElementToFrom(m, 2, n, 0); cSwitchcase_Hsr07mq8_onMessage(_c, NULL, 0, m, NULL); } void Heavy_dpf_example::cMsg_x0Zoh6lt_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(1); msg_init(m, 1, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 2); cIf_onMessage(_c, &Context(_c)->cIf_7APZEkWD, 0, m, &cIf_7APZEkWD_sendMessage); } void Heavy_dpf_example::cMsg_QibGQjn2_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(1); msg_init(m, 1, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 1); cIf_onMessage(_c, &Context(_c)->cIf_gfwlNnMH, 0, m, &cIf_gfwlNnMH_sendMessage); } void Heavy_dpf_example::cPack_67nBZkn4_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSend_HcdOcqYn_sendMessage(_c, 0, m); } void Heavy_dpf_example::cVar_CI9mBnmb_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MIN, 15.0f, 0, m, &cBinop_fXWBgAAI_sendMessage); } void Heavy_dpf_example::cBinop_fXWBgAAI_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MAX, 0.0f, 0, m, &cBinop_4kAoJi4a_sendMessage); } void Heavy_dpf_example::cBinop_4kAoJi4a_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 2, m, &cPack_67nBZkn4_sendMessage); } void Heavy_dpf_example::cVar_hUYiyA45_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_67nBZkn4, 1, m, &cPack_67nBZkn4_sendMessage); } void Heavy_dpf_example::cSend_HcdOcqYn_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { if (_c->getSendHook() != nullptr) _c->getSendHook()(_c, "__hv_ctlout", 0xE5E2A040, m); } void Heavy_dpf_example::cCast_jTrtXzdZ_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_CI9mBnmb, 0, m, &cVar_CI9mBnmb_sendMessage); } void Heavy_dpf_example::cCast_yxJZQOSG_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_hUYiyA45, 0, m, &cVar_hUYiyA45_sendMessage); } void Heavy_dpf_example::cSlice_SVSHWF8f_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cVar_onMessage(_c, &Context(_c)->cVar_aKKuw1wF, 0, m, &cVar_aKKuw1wF_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_6uDCUz4Z_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cIf_onMessage(_c, &Context(_c)->cIf_kCZOtTp6, 0, m, &cIf_kCZOtTp6_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSwitchcase_MJfuA6bT_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_rpQXuGzG, 0, m, &cSlice_rpQXuGzG_sendMessage); break; } default: { break; } } } void Heavy_dpf_example::cSlice_rpQXuGzG_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cPack_onMessage(_c, &Context(_c)->cPack_9ZEg77rp, 0, m, &cPack_9ZEg77rp_sendMessage); break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_9ZEg77rp, 0, m, &cPack_9ZEg77rp_sendMessage); break; } default: return; } } void Heavy_dpf_example::cVar_l69aX925_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_J1OHpyxO_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_TQcurnzR, 0, m, &cIf_TQcurnzR_sendMessage); } void Heavy_dpf_example::cUnop_m4uEYRd8_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_f0EA83ID_sendMessage); } void Heavy_dpf_example::cUnop_YMDYN2ac_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_f0EA83ID_sendMessage); } void Heavy_dpf_example::cIf_TQcurnzR_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_YMDYN2ac_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_m4uEYRd8_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_J1OHpyxO_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_TQcurnzR, 1, m, &cIf_TQcurnzR_sendMessage); } void Heavy_dpf_example::cIf_kCZOtTp6_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_9ZEg77rp, 0, m, &cPack_9ZEg77rp_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_f0EA83ID_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_kCZOtTp6, 1, m, &cIf_kCZOtTp6_sendMessage); } void Heavy_dpf_example::cMsg_mzMGkFHp_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(2); msg_init(m, 2, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 1); msg_setElementToFrom(m, 1, n, 0); cSwitchcase_MJfuA6bT_onMessage(_c, NULL, 0, m, NULL); } void Heavy_dpf_example::cPack_9ZEg77rp_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSend_LtOiX6BK_sendMessage(_c, 0, m); } void Heavy_dpf_example::cVar_aKKuw1wF_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MIN, 15.0f, 0, m, &cBinop_rPu3NBfO_sendMessage); } void Heavy_dpf_example::cBinop_rPu3NBfO_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MAX, 0.0f, 0, m, &cBinop_iDPe6eFg_sendMessage); } void Heavy_dpf_example::cBinop_iDPe6eFg_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_9ZEg77rp, 1, m, &cPack_9ZEg77rp_sendMessage); } void Heavy_dpf_example::cSend_LtOiX6BK_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { if (_c->getSendHook() != nullptr) _c->getSendHook()(_c, "__hv_touchout", 0x476D4387, m); } void Heavy_dpf_example::cSlice_UQl1eJDR_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cVar_onMessage(_c, &Context(_c)->cVar_7WaHIJJn, 0, m, &cVar_7WaHIJJn_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_IF0v5IW7_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cIf_onMessage(_c, &Context(_c)->cIf_QHZoesRt, 0, m, &cIf_QHZoesRt_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSwitchcase_FG5VUpJm_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_rvhylz8z, 0, m, &cSlice_rvhylz8z_sendMessage); break; } default: { break; } } } void Heavy_dpf_example::cSlice_rvhylz8z_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cPack_onMessage(_c, &Context(_c)->cPack_agXozp2N, 0, m, &cPack_agXozp2N_sendMessage); break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_agXozp2N, 0, m, &cPack_agXozp2N_sendMessage); break; } default: return; } } void Heavy_dpf_example::cVar_wzQuii3f_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_x4BkE4os_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_oCABT68v, 0, m, &cIf_oCABT68v_sendMessage); } void Heavy_dpf_example::cUnop_Ttfhllz0_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_NsCedK82_sendMessage); } void Heavy_dpf_example::cUnop_7Kzr246O_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_NsCedK82_sendMessage); } void Heavy_dpf_example::cIf_oCABT68v_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_7Kzr246O_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_Ttfhllz0_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_x4BkE4os_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_oCABT68v, 1, m, &cIf_oCABT68v_sendMessage); } void Heavy_dpf_example::cIf_QHZoesRt_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_agXozp2N, 0, m, &cPack_agXozp2N_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_NsCedK82_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_QHZoesRt, 1, m, &cIf_QHZoesRt_sendMessage); } void Heavy_dpf_example::cMsg_RFcEeDEf_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(2); msg_init(m, 2, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 1); msg_setElementToFrom(m, 1, n, 0); cSwitchcase_FG5VUpJm_onMessage(_c, NULL, 0, m, NULL); } void Heavy_dpf_example::cPack_agXozp2N_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSend_ljFySekA_sendMessage(_c, 0, m); } void Heavy_dpf_example::cVar_7WaHIJJn_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MIN, 15.0f, 0, m, &cBinop_RXDzviSo_sendMessage); } void Heavy_dpf_example::cBinop_RXDzviSo_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MAX, 0.0f, 0, m, &cBinop_ek8JPICW_sendMessage); } void Heavy_dpf_example::cBinop_ek8JPICW_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_agXozp2N, 1, m, &cPack_agXozp2N_sendMessage); } void Heavy_dpf_example::cSend_ljFySekA_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { if (_c->getSendHook() != nullptr) _c->getSendHook()(_c, "__hv_bendout", 0xE8458013, m); } void Heavy_dpf_example::cSlice_pUE0odgY_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cVar_onMessage(_c, &Context(_c)->cVar_LblSCQEp, 0, m, &cVar_LblSCQEp_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSlice_1SUmZGqv_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cIf_onMessage(_c, &Context(_c)->cIf_9A9dOokl, 0, m, &cIf_9A9dOokl_sendMessage); break; } case 1: { break; } default: return; } } void Heavy_dpf_example::cSwitchcase_T5Kb88r2_onMessage(HeavyContextInterface *_c, void *o, int letIn, const HvMessage *const m, void *sendMessage) { switch (msg_getHash(m, 0)) { case 0x0: { // "0.0" cSlice_onMessage(_c, &Context(_c)->cSlice_CyV2pK5m, 0, m, &cSlice_CyV2pK5m_sendMessage); break; } default: { break; } } } void Heavy_dpf_example::cSlice_CyV2pK5m_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cPack_onMessage(_c, &Context(_c)->cPack_zKPHN0bG, 0, m, &cPack_zKPHN0bG_sendMessage); break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_zKPHN0bG, 0, m, &cPack_zKPHN0bG_sendMessage); break; } default: return; } } void Heavy_dpf_example::cVar_vZGQuEfK_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_GREATER_THAN, 0.0f, 0, m, &cBinop_525QSQkJ_sendMessage); cIf_onMessage(_c, &Context(_c)->cIf_i5UiKkIh, 0, m, &cIf_i5UiKkIh_sendMessage); } void Heavy_dpf_example::cUnop_aeXYOa0w_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_2grRI3yy_sendMessage); } void Heavy_dpf_example::cUnop_4VGcIjpW_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_EQ, 0.0f, 0, m, &cBinop_2grRI3yy_sendMessage); } void Heavy_dpf_example::cIf_i5UiKkIh_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { cUnop_onMessage(_c, HV_UNOP_CEIL, m, &cUnop_4VGcIjpW_sendMessage); break; } case 1: { cUnop_onMessage(_c, HV_UNOP_FLOOR, m, &cUnop_aeXYOa0w_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_525QSQkJ_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_i5UiKkIh, 1, m, &cIf_i5UiKkIh_sendMessage); } void Heavy_dpf_example::cIf_9A9dOokl_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { switch (letIn) { case 0: { break; } case 1: { cPack_onMessage(_c, &Context(_c)->cPack_zKPHN0bG, 0, m, &cPack_zKPHN0bG_sendMessage); break; } default: return; } } void Heavy_dpf_example::cBinop_2grRI3yy_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cIf_onMessage(_c, &Context(_c)->cIf_9A9dOokl, 1, m, &cIf_9A9dOokl_sendMessage); } void Heavy_dpf_example::cMsg_upvC5MzX_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *const n) { HvMessage *m = nullptr; m = HV_MESSAGE_ON_STACK(2); msg_init(m, 2, msg_getTimestamp(n)); msg_setElementToFrom(m, 0, n, 1); msg_setElementToFrom(m, 1, n, 0); cSwitchcase_T5Kb88r2_onMessage(_c, NULL, 0, m, NULL); } void Heavy_dpf_example::cPack_zKPHN0bG_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSend_Qe1LV31F_sendMessage(_c, 0, m); } void Heavy_dpf_example::cVar_LblSCQEp_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MIN, 15.0f, 0, m, &cBinop_OniKYXOx_sendMessage); } void Heavy_dpf_example::cBinop_OniKYXOx_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cBinop_k_onMessage(_c, NULL, HV_BINOP_MAX, 0.0f, 0, m, &cBinop_v5klMKxv_sendMessage); } void Heavy_dpf_example::cBinop_v5klMKxv_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cPack_onMessage(_c, &Context(_c)->cPack_zKPHN0bG, 1, m, &cPack_zKPHN0bG_sendMessage); } void Heavy_dpf_example::cSend_Qe1LV31F_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { if (_c->getSendHook() != nullptr) _c->getSendHook()(_c, "__hv_pgmout", 0x8753E39E, m); } void Heavy_dpf_example::cBinop_Bg0uxEJb_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_RPdD4HeF, 0, m, &cVar_RPdD4HeF_sendMessage); } void Heavy_dpf_example::cReceive_6yjHqG0b_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cVar_onMessage(_c, &Context(_c)->cVar_tVuvuw5t, 0, m, &cVar_tVuvuw5t_sendMessage); cCast_onMessage(_c, HV_CAST_BANG, 0, m, &cCast_3yanjwYr_sendMessage); cCast_onMessage(_c, HV_CAST_BANG, 0, m, &cCast_licMnEIU_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_NLylhRgN, 0, m, &cVar_NLylhRgN_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_u2kHFx8W, 0, m, &cVar_u2kHFx8W_sendMessage); cCast_onMessage(_c, HV_CAST_BANG, 0, m, &cCast_jTrtXzdZ_sendMessage); cCast_onMessage(_c, HV_CAST_BANG, 0, m, &cCast_yxJZQOSG_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_l69aX925, 0, m, &cVar_l69aX925_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_aKKuw1wF, 0, m, &cVar_aKKuw1wF_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_wzQuii3f, 0, m, &cVar_wzQuii3f_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_7WaHIJJn, 0, m, &cVar_7WaHIJJn_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_vZGQuEfK, 0, m, &cVar_vZGQuEfK_sendMessage); cVar_onMessage(_c, &Context(_c)->cVar_LblSCQEp, 0, m, &cVar_LblSCQEp_sendMessage); } void Heavy_dpf_example::cReceive_DuxcXrCQ_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSlice_onMessage(_c, &Context(_c)->cSlice_ttrjbnOH, 0, m, &cSlice_ttrjbnOH_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_rTF9DX7m, 0, m, &cSlice_rTF9DX7m_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_nooBN54U, 0, m, &cSlice_nooBN54U_sendMessage); cMsg_2AKDoJxc_sendMessage(_c, 0, m); } void Heavy_dpf_example::cReceive_FE4FMnT2_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSlice_onMessage(_c, &Context(_c)->cSlice_mIVBD06q, 0, m, &cSlice_mIVBD06q_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_r5tp1yeR, 0, m, &cSlice_r5tp1yeR_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_cjeHB0rH, 0, m, &cSlice_cjeHB0rH_sendMessage); cMsg_QlCmKOoy_sendMessage(_c, 0, m); } void Heavy_dpf_example::cReceive_8YNr1wEC_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSlice_onMessage(_c, &Context(_c)->cSlice_SVSHWF8f, 0, m, &cSlice_SVSHWF8f_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_6uDCUz4Z, 0, m, &cSlice_6uDCUz4Z_sendMessage); cMsg_mzMGkFHp_sendMessage(_c, 0, m); } void Heavy_dpf_example::cReceive_viUp6CVK_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSlice_onMessage(_c, &Context(_c)->cSlice_UQl1eJDR, 0, m, &cSlice_UQl1eJDR_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_IF0v5IW7, 0, m, &cSlice_IF0v5IW7_sendMessage); cMsg_RFcEeDEf_sendMessage(_c, 0, m); } void Heavy_dpf_example::cReceive_RYEj4fUB_sendMessage(HeavyContextInterface *_c, int letIn, const HvMessage *m) { cSlice_onMessage(_c, &Context(_c)->cSlice_pUE0odgY, 0, m, &cSlice_pUE0odgY_sendMessage); cSlice_onMessage(_c, &Context(_c)->cSlice_1SUmZGqv, 0, m, &cSlice_1SUmZGqv_sendMessage); cMsg_upvC5MzX_sendMessage(_c, 0, m); } /* * Context Process Implementation */ int Heavy_dpf_example::process(float **inputBuffers, float **outputBuffers, int n) { while (hLp_hasData(&inQueue)) { hv_uint32_t numBytes = 0; ReceiverMessagePair *p = reinterpret_cast(hLp_getReadBuffer(&inQueue, &numBytes)); hv_assert(numBytes >= sizeof(ReceiverMessagePair)); scheduleMessageForReceiver(p->receiverHash, &p->msg); hLp_consume(&inQueue); } const int n4 = n & ~HV_N_SIMD_MASK; // ensure that the block size is a multiple of HV_N_SIMD // temporary signal vars // input and output vars hv_bufferf_t O0, O1; hv_bufferf_t I0, I1; // declare and init the zero buffer hv_bufferf_t ZERO; __hv_zero_f(VOf(ZERO)); hv_uint32_t nextBlock = blockStartTimestamp; for (int n = 0; n < n4; n += HV_N_SIMD) { // process all of the messages for this block nextBlock += HV_N_SIMD; while (mq_hasMessageBefore(&mq, nextBlock)) { MessageNode *const node = mq_peek(&mq); node->sendMessage(this, node->let, node->m); mq_pop(&mq); } // load input buffers __hv_load_f(inputBuffers[0]+n, VOf(I0)); __hv_load_f(inputBuffers[1]+n, VOf(I1)); // zero output buffers __hv_zero_f(VOf(O0)); __hv_zero_f(VOf(O1)); // process all signal functions __hv_add_f(VIf(I0), VIf(O0), VOf(O0)); __hv_add_f(VIf(I1), VIf(O1), VOf(O1)); // save output vars to output buffer __hv_store_f(outputBuffers[0]+n, VIf(O0)); __hv_store_f(outputBuffers[1]+n, VIf(O1)); } blockStartTimestamp = nextBlock; return n4; // return the number of frames processed } int Heavy_dpf_example::processInline(float *inputBuffers, float *outputBuffers, int n4) { hv_assert(!(n4 & HV_N_SIMD_MASK)); // ensure that n4 is a multiple of HV_N_SIMD // define the heavy input buffer for 2 channel(s) float **const bIn = reinterpret_cast(hv_alloca(2*sizeof(float *))); bIn[0] = inputBuffers+(0*n4); bIn[1] = inputBuffers+(1*n4); // define the heavy output buffer for 2 channel(s) float **const bOut = reinterpret_cast(hv_alloca(2*sizeof(float *))); bOut[0] = outputBuffers+(0*n4); bOut[1] = outputBuffers+(1*n4); int n = process(bIn, bOut, n4); return n; } int Heavy_dpf_example::processInlineInterleaved(float *inputBuffers, float *outputBuffers, int n4) { hv_assert(n4 & ~HV_N_SIMD_MASK); // ensure that n4 is a multiple of HV_N_SIMD // define the heavy input buffer for 2 channel(s), uninterleave float *const bIn = reinterpret_cast(hv_alloca(2*n4*sizeof(float))); #if HV_SIMD_SSE || HV_SIMD_AVX for (int i = 0, j = 0; j < n4; j += 4, i += 8) { __m128 a = _mm_load_ps(inputBuffers+i); // LRLR __m128 b = _mm_load_ps(inputBuffers+4+i); // LRLR __m128 x = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2,0,2,0)); // LLLL __m128 y = _mm_shuffle_ps(a, b, _MM_SHUFFLE(3,1,3,1)); // RRRR _mm_store_ps(bIn+j, x); _mm_store_ps(bIn+n4+j, y); } #elif HV_SIMD_NEON for (int i = 0, j = 0; j < n4; j += 4, i += 8) { float32x4x2_t a = vld2q_f32(inputBuffers+i); // load and uninterleave vst1q_f32(bIn+j, a.val[0]); vst1q_f32(bIn+n4+j, a.val[1]); } #else // HV_SIMD_NONE for (int j = 0; j < n4; ++j) { bIn[0*n4+j] = inputBuffers[0+2*j]; bIn[1*n4+j] = inputBuffers[1+2*j]; } #endif // define the heavy output buffer for 2 channel(s) float *const bOut = reinterpret_cast(hv_alloca(2*n4*sizeof(float))); int n = processInline(bIn, bOut, n4); // interleave the heavy output into the output buffer #if HV_SIMD_AVX for (int i = 0, j = 0; j < n4; j += 8, i += 16) { __m256 x = _mm256_load_ps(bOut+j); // LLLLLLLL __m256 y = _mm256_load_ps(bOut+n4+j); // RRRRRRRR __m256 a = _mm256_unpacklo_ps(x, y); // LRLRLRLR __m256 b = _mm256_unpackhi_ps(x, y); // LRLRLRLR _mm256_store_ps(outputBuffers+i, a); _mm256_store_ps(outputBuffers+8+i, b); } #elif HV_SIMD_SSE for (int i = 0, j = 0; j < n4; j += 4, i += 8) { __m128 x = _mm_load_ps(bOut+j); // LLLL __m128 y = _mm_load_ps(bOut+n4+j); // RRRR __m128 a = _mm_unpacklo_ps(x, y); // LRLR __m128 b = _mm_unpackhi_ps(x, y); // LRLR _mm_store_ps(outputBuffers+i, a); _mm_store_ps(outputBuffers+4+i, b); } #elif HV_SIMD_NEON // https://community.arm.com/groups/processors/blog/2012/03/13/coding-for-neon--part-5-rearranging-vectors for (int i = 0, j = 0; j < n4; j += 4, i += 8) { float32x4_t x = vld1q_f32(bOut+j); float32x4_t y = vld1q_f32(bOut+n4+j); float32x4x2_t z = {x, y}; vst2q_f32(outputBuffers+i, z); // interleave and store } #else // HV_SIMD_NONE for (int i = 0; i < 2; ++i) { for (int j = 0; j < n4; ++j) { outputBuffers[i+2*j] = bOut[i*n4+j]; } } #endif return n; }