163 lines
8.5 KiB
C++
163 lines
8.5 KiB
C++
/**
|
|
* Copyright (c) 2022 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.
|
|
*
|
|
*/
|
|
|
|
#ifndef _HEAVY_CONTEXT_DELAY_SIMPLE_HPP_
|
|
#define _HEAVY_CONTEXT_DELAY_SIMPLE_HPP_
|
|
|
|
// object includes
|
|
#include "HeavyContext.hpp"
|
|
#include "HvControlTabhead.h"
|
|
#include "HvSignalVar.h"
|
|
#include "HvTable.h"
|
|
#include "HvControlBinop.h"
|
|
#include "HvSignalTabwrite.h"
|
|
#include "HvControlDelay.h"
|
|
#include "HvMath.h"
|
|
#include "HvSignalTabread.h"
|
|
#include "HvControlSystem.h"
|
|
#include "HvControlVar.h"
|
|
#include "HvControlCast.h"
|
|
|
|
class Heavy_delay_simple : public HeavyContext {
|
|
|
|
public:
|
|
Heavy_delay_simple(double sampleRate, int poolKb=10, int inQueueKb=2, int outQueueKb=0);
|
|
~Heavy_delay_simple();
|
|
|
|
const char *getName() override { return "delay_simple"; }
|
|
int getNumInputChannels() override { return 2; }
|
|
int getNumOutputChannels() override { return 2; }
|
|
|
|
int process(float **inputBuffers, float **outputBuffer, int n) override;
|
|
int processInline(float *inputBuffers, float *outputBuffer, int n) override;
|
|
int processInlineInterleaved(float *inputBuffers, float *outputBuffer, int n) override;
|
|
|
|
int getParameterInfo(int index, HvParameterInfo *info) override;
|
|
struct Parameter {
|
|
struct In {
|
|
enum ParameterIn : hv_uint32_t {
|
|
DELAY_FEEDBACK = 0x36377AA9, // Delay_Feedback
|
|
DELAY_TIME = 0xEE78D101, // Delay_Time
|
|
DRY_VOLUME = 0x5EFB46D2, // Dry_Volume
|
|
GAIN = 0x677821DA, // Gain
|
|
WET_VOLUME = 0xEA49B5A, // Wet_Volume
|
|
};
|
|
};
|
|
};
|
|
|
|
private:
|
|
HvTable *getTableForHash(hv_uint32_t tableHash) override;
|
|
void scheduleMessageForReceiver(hv_uint32_t receiverHash, HvMessage *m) override;
|
|
|
|
// static sendMessage functions
|
|
static void cVar_4cpXTaBY_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cVar_fRPZcVCt_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cVar_Om7ifKfd_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cVar_LnHfGF8V_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cVar_mOyup5ir_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_hdrV3jKk_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSystem_B288dglo_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cDelay_OFD5iAqe_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cDelay_EI4kKdvf_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_4MyuHNhK_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void hTable_TFqOKFso_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_clwxczYs_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_NAf7xjjy_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_o1Fk4mWr_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cCast_g87DeymK_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_DlDeZMFB_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cTabhead_zhu6BFdy_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_c68iDIVD_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSystem_LlBI3RTT_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cVar_nONxuBGP_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cDelay_FTWI9Lbr_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cDelay_4Y58Ksfn_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void sTabread_OJVVdLuf_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_kd9uMvnd_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_qp875S9R_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_99kJjPmN_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSystem_kPqFOU4H_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_2Y6gSDxh_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_60hMCcpx_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cMsg_2y7SxePc_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_khIQbSXe_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cCast_zoAHkSwC_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_H69XkGIL_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cBinop_HsqyfMPx_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cCast_spzeS2Y3_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSend_wldZJDJM_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSend_dFhbvIPr_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSend_4A35hG1G_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cSend_jiugLxbD_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_kE9u8lIG_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_pzAN0z6v_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_iG7Q7Uzr_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_kJYDDgog_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_AJBhI0kX_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_eGza5oBR_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_SIoX2X2C_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_UQL9KHRi_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_ex2b75Oc_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
static void cReceive_LQwqfjMo_sendMessage(HeavyContextInterface *, int, const HvMessage *);
|
|
|
|
// objects
|
|
SignalTabread sTabread_OJVVdLuf;
|
|
SignalTabwrite sTabwrite_kTfJPrs1;
|
|
ControlVar cVar_4cpXTaBY;
|
|
ControlVar cVar_fRPZcVCt;
|
|
ControlVar cVar_Om7ifKfd;
|
|
ControlVar cVar_LnHfGF8V;
|
|
ControlVar cVar_mOyup5ir;
|
|
ControlDelay cDelay_OFD5iAqe;
|
|
ControlDelay cDelay_EI4kKdvf;
|
|
ControlBinop cBinop_4MyuHNhK;
|
|
HvTable hTable_TFqOKFso;
|
|
ControlBinop cBinop_NAf7xjjy;
|
|
ControlTabhead cTabhead_zhu6BFdy;
|
|
ControlVar cVar_nONxuBGP;
|
|
ControlDelay cDelay_FTWI9Lbr;
|
|
ControlDelay cDelay_4Y58Ksfn;
|
|
ControlBinop cBinop_kd9uMvnd;
|
|
ControlBinop cBinop_qp875S9R;
|
|
ControlBinop cBinop_99kJjPmN;
|
|
ControlBinop cBinop_khIQbSXe;
|
|
ControlBinop cBinop_H69XkGIL;
|
|
ControlBinop cBinop_HsqyfMPx;
|
|
SignalVarf sVarf_DXN3F4mN;
|
|
SignalVarf sVarf_o7lB6W7R;
|
|
SignalVarf sVarf_4RDRwlaL;
|
|
SignalVarf sVarf_vL8TEPN9;
|
|
SignalVarf sVarf_eLw9NCKn;
|
|
};
|
|
|
|
#endif // _HEAVY_CONTEXT_DELAY_SIMPLE_HPP_
|