271 lines · 8.7 KB · C++
RawDownload
#include "nh_hall.hpp"#include "chuck_dl.h"#include "chuck_def.h" CK_DLL_CTOR(nhhall_ctor);CK_DLL_DTOR(nhhall_dtor); CK_DLL_MFUN(nhhall_getRt60);CK_DLL_MFUN(nhhall_setRt60);CK_DLL_MFUN(nhhall_getStereo);CK_DLL_MFUN(nhhall_setStereo);CK_DLL_MFUN(nhhall_getLowFreq);CK_DLL_MFUN(nhhall_setLowFreq);CK_DLL_MFUN(nhhall_getLowRatio);CK_DLL_MFUN(nhhall_setLowRatio);CK_DLL_MFUN(nhhall_getHiFreq);CK_DLL_MFUN(nhhall_setHiFreq);CK_DLL_MFUN(nhhall_getHiRatio);CK_DLL_MFUN(nhhall_setHiRatio);CK_DLL_MFUN(nhhall_getEarlyDiffusion);CK_DLL_MFUN(nhhall_setEarlyDiffusion);CK_DLL_MFUN(nhhall_getLateDiffusion);CK_DLL_MFUN(nhhall_setLateDiffusion);CK_DLL_MFUN(nhhall_getModRate);CK_DLL_MFUN(nhhall_setModRate);CK_DLL_MFUN(nhhall_getModDepth);CK_DLL_MFUN(nhhall_setModDepth); CK_DLL_TICKF(nhhall_tickf); class NHHall {public:    // NOTE: The default allocator calls malloc.    nh_ugens::NHHall<> m_core;     float m_rt60 = 1.0f;    float m_stereo = 0.5;    float m_lowFreq = 200;    float m_lowRatio = 0.5;    float m_hiFreq = 4000;    float m_hiRatio = 0.5;    float m_earlyDiffusion = 0.5;    float m_lateDiffusion = 0.5;    float m_modRate = 0.2;    float m_modDepth = 0.3;     NHHall(float sample_rate)    : m_core(sample_rate)    {        m_core.set_rt60(m_rt60);        m_core.set_stereo(m_stereo);        m_core.set_low_shelf_parameters(m_lowFreq, m_lowRatio);        m_core.set_hi_shelf_parameters(m_hiFreq, m_hiRatio);        m_core.set_early_diffusion(m_earlyDiffusion);        m_core.set_late_diffusion(m_lateDiffusion);        m_core.set_mod_rate(m_modRate);        m_core.set_mod_rate(m_modDepth);    }}; t_CKINT nhhall_unit_offset = 0; CK_DLL_QUERY(NHHall) {    QUERY->setname(QUERY, "NHHall");     QUERY->begin_class(QUERY, "NHHall", "UGen");     QUERY->add_ctor(QUERY, nhhall_ctor);    QUERY->add_dtor(QUERY, nhhall_dtor);     QUERY->add_ugen_funcf(QUERY, nhhall_tickf, NULL, 2, 2);     QUERY->add_mfun(QUERY, nhhall_setRt60, "float", "rt60");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getRt60, "float", "rt60");     QUERY->add_mfun(QUERY, nhhall_setStereo, "float", "stereo");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getStereo, "float", "stereo");     QUERY->add_mfun(QUERY, nhhall_setLowFreq, "float", "lowFreq");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getLowFreq, "float", "lowFreq");     QUERY->add_mfun(QUERY, nhhall_setLowRatio, "float", "lowRatio");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getLowRatio, "float", "lowRatio");     QUERY->add_mfun(QUERY, nhhall_setHiFreq, "float", "hiFreq");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getHiFreq, "float", "hiFreq");     QUERY->add_mfun(QUERY, nhhall_setHiRatio, "float", "hiRatio");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getHiRatio, "float", "hiRatio");     QUERY->add_mfun(QUERY, nhhall_setEarlyDiffusion, "float", "earlyDiffusion");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getEarlyDiffusion, "float", "earlyDiffusion");     QUERY->add_mfun(QUERY, nhhall_setLateDiffusion, "float", "lateDiffusion");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getLateDiffusion, "float", "lateDiffusion");     QUERY->add_mfun(QUERY, nhhall_setModRate, "float", "modRate");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getModRate, "float", "modRate");     QUERY->add_mfun(QUERY, nhhall_setModDepth, "float", "modDepth");    QUERY->add_arg(QUERY, "float", "arg");    QUERY->add_mfun(QUERY, nhhall_getModDepth, "float", "modDepth");     nhhall_unit_offset = QUERY->add_mvar(QUERY, "int", "@data", false);     QUERY->end_class(QUERY);     return TRUE;} CK_DLL_CTOR(nhhall_ctor) {    OBJ_MEMBER_INT(SELF, nhhall_unit_offset) = 0;     NHHall* unit = new NHHall(API->vm->get_srate(API, SHRED));     OBJ_MEMBER_INT(SELF, nhhall_unit_offset) = (t_CKINT)unit;} CK_DLL_DTOR(nhhall_dtor) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    if (unit) {        delete unit;        OBJ_MEMBER_INT(SELF, nhhall_unit_offset) = 0;        unit = NULL;    }} CK_DLL_TICKF(nhhall_tickf) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);     for (int i = 0; i < nframes; i++) {        float in_left = in[i * 2 + 0];        float in_right = in[i * 2 + 1];        std::array<float, 2> core_out = unit->m_core.process(in_left, in_right);        out[i * 2 + 0] = core_out[0];        out[i * 2 + 1] = core_out[1];    }     return TRUE;} CK_DLL_MFUN(nhhall_getRt60) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_dur = unit->m_rt60;} CK_DLL_MFUN(nhhall_setRt60) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_rt60 = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_rt60(unit->m_rt60);    unit->m_core.set_low_shelf_parameters(unit->m_lowFreq, unit->m_lowRatio);    unit->m_core.set_hi_shelf_parameters(unit->m_hiFreq, unit->m_hiRatio);    RETURN->v_dur = unit->m_rt60;} CK_DLL_MFUN(nhhall_getStereo) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_stereo;} CK_DLL_MFUN(nhhall_setStereo) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_stereo = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_stereo(unit->m_stereo);    RETURN->v_float = unit->m_stereo;} CK_DLL_MFUN(nhhall_getLowFreq) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_lowFreq;} CK_DLL_MFUN(nhhall_setLowFreq) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_lowFreq = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_low_shelf_parameters(unit->m_lowFreq, unit->m_lowRatio);    RETURN->v_float = unit->m_lowFreq;} CK_DLL_MFUN(nhhall_getLowRatio) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_lowRatio;} CK_DLL_MFUN(nhhall_setLowRatio) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_lowRatio = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_low_shelf_parameters(unit->m_lowFreq, unit->m_lowRatio);    RETURN->v_float = unit->m_lowRatio;} CK_DLL_MFUN(nhhall_getHiFreq) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_hiFreq;} CK_DLL_MFUN(nhhall_setHiFreq) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_hiFreq = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_hi_shelf_parameters(unit->m_hiFreq, unit->m_hiRatio);    RETURN->v_float = unit->m_hiFreq;} CK_DLL_MFUN(nhhall_getHiRatio) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_hiRatio;} CK_DLL_MFUN(nhhall_setHiRatio) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_hiRatio = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_hi_shelf_parameters(unit->m_hiFreq, unit->m_hiRatio);    RETURN->v_float = unit->m_hiRatio;} CK_DLL_MFUN(nhhall_getEarlyDiffusion) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_earlyDiffusion;} CK_DLL_MFUN(nhhall_setEarlyDiffusion) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_earlyDiffusion = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_early_diffusion(unit->m_earlyDiffusion);    RETURN->v_float = unit->m_earlyDiffusion;} CK_DLL_MFUN(nhhall_getLateDiffusion) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_lateDiffusion;} CK_DLL_MFUN(nhhall_setLateDiffusion) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_lateDiffusion = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_late_diffusion(unit->m_lateDiffusion);    RETURN->v_float = unit->m_lateDiffusion;} CK_DLL_MFUN(nhhall_getModRate) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_modRate;} CK_DLL_MFUN(nhhall_setModRate) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_modRate = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_mod_rate(unit->m_modRate);    RETURN->v_float = unit->m_modRate;} CK_DLL_MFUN(nhhall_getModDepth) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    RETURN->v_float = unit->m_modDepth;} CK_DLL_MFUN(nhhall_setModDepth) {    NHHall* unit = (NHHall*)OBJ_MEMBER_INT(SELF, nhhall_unit_offset);    unit->m_modDepth = GET_NEXT_FLOAT(ARGS);    unit->m_core.set_mod_depth(unit->m_modDepth);    RETURN->v_float = unit->m_modDepth;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t