Merge branch 'master' of klarke.webfactional.com:webapps/git/repos/libcm

This commit is contained in:
Kevin Larke 2014-12-06 13:31:28 -08:00
commit d848f94030
13 changed files with 1099 additions and 881 deletions

View File

@ -38,6 +38,7 @@ extern "C" {
kSysErrApRC, kSysErrApRC,
kInvalidDevIdApRC, kInvalidDevIdApRC,
kAudioPortFileFailApRC, kAudioPortFileFailApRC,
kParamRangeErrorApRC,
kThreadFailApRC kThreadFailApRC
}; };

View File

@ -245,7 +245,7 @@ cmMidiByte_t cmSciPitchToMidi( const char* sciPitchStr )
unsigned rv = (octave*12) + idx + 12; unsigned rv = (octave*12) + idx + 12;
if( 0 <= rv && rv <= 127 ) if( rv <= 127 )
return rv; return rv;
return kInvalidMidiPitch; return kInvalidMidiPitch;

133
cmProc2.c
View File

@ -4779,6 +4779,7 @@ cmRC_t cmFrqTrkInit( cmFrqTrk* p, const cmFrqTrkArgs_t* a )
p->minTrkN = a->minTrkSec * a->srate / a->hopSmpCnt; p->minTrkN = a->minTrkSec * a->srate / a->hopSmpCnt;
p->nextTrkId = 1; p->nextTrkId = 1;
p->aV = cmMemResizeZ(cmReal_t,p->aV,p->a.binCnt); p->aV = cmMemResizeZ(cmReal_t,p->aV,p->a.binCnt);
p->attenDlyPhsMax = cmMax(3,a->attenDlySec * a->srate / a->hopSmpCnt );
p->attenPhsMax = cmMax(3,a->attenAtkSec * a->srate / a->hopSmpCnt ); p->attenPhsMax = cmMax(3,a->attenAtkSec * a->srate / a->hopSmpCnt );
if( a->logFn != NULL ) if( a->logFn != NULL )
@ -5019,7 +5020,11 @@ void _cmFrqTrkScoreChs( cmFrqTrk* p )
c->hz_mean = cmVOR_Mean(c->hzV,n); c->hz_mean = cmVOR_Mean(c->hzV,n);
c->hz_std = sqrt(cmVOR_Variance( c->hzV,n,&c->hz_mean)); c->hz_std = sqrt(cmVOR_Variance( c->hzV,n,&c->hz_mean));
c->score = c->db / ((cmMin(0.1,c->db_std) + cmMin(0.1,c->hz_std))/2); //c->score = c->db / ((cmMax(0.1,c->db_std) + cmMax(0.1,c->hz_std))/2);
c->score = c->db - (c->db_std * 5) - (c->hz_std/50);
//printf("%f %f %f %f %f\n",c->db,cmMin(0.1,c->db_std),c->hz,cmMin(0.1,c->hz_std),c->score);
} }
} }
@ -5082,8 +5087,9 @@ void _cmFrqTrkUpdateFilter( cmFrqTrk* p )
// //
if( c->score >= p->a.attenThresh && c->state == kNoStateFrqTrkId ) if( c->score >= p->a.attenThresh && c->state == kNoStateFrqTrkId )
{ {
//printf("%f\n",c->score);
c->attenPhsIdx = 0; c->attenPhsIdx = 0;
c->state = kAtkFrqTrkId; c->state = kDlyFrqTrkId;
} }
switch( c->state ) switch( c->state )
@ -5091,8 +5097,16 @@ void _cmFrqTrkUpdateFilter( cmFrqTrk* p )
case kNoStateFrqTrkId: case kNoStateFrqTrkId:
break; break;
case kDlyFrqTrkId:
c->attenPhsIdx += 1;
if( c->attenPhsIdx >= p->attenDlyPhsMax && c->dN == 0 )
c->state = kAtkFrqTrkId;
break;
case kAtkFrqTrkId: case kAtkFrqTrkId:
if( c->attenPhsIdx < p->attenPhsMax ) if( c->attenPhsIdx < p->attenDlyPhsMax + p->attenPhsMax )
{ {
c->attenGain = cmMin(1.0,p->a.attenGain * c->attenPhsIdx / p->attenPhsMax); c->attenGain = cmMin(1.0,p->a.attenGain * c->attenPhsIdx / p->attenPhsMax);
@ -5101,7 +5115,7 @@ void _cmFrqTrkUpdateFilter( cmFrqTrk* p )
} }
c->attenPhsIdx += 1; c->attenPhsIdx += 1;
if( c->attenPhsIdx >= p->attenPhsMax ) if( c->attenPhsIdx >= p->attenDlyPhsMax + p->attenPhsMax )
c->state = kSusFrqTrkId; c->state = kSusFrqTrkId;
break; break;
@ -5275,7 +5289,7 @@ void _cmFrqTrkNewChs( cmFrqTrk* p, const cmReal_t* dbV, const cmReal_t* hzV, uns
void _cmFrqTrkApplyFrqBias( cmFrqTrk* p, cmReal_t* xV ) void _cmFrqTrkApplyFrqBias( cmFrqTrk* p, cmReal_t* xV )
{ {
// 1+2*([0:.01:1].^4) // convert to decibel scale (0.0 - 100.0) and then scale to (0.0 to 1.0)
unsigned i; unsigned i;
for(i=0; i<p->bN; ++i) for(i=0; i<p->bN; ++i)
xV[i] = cmMax(0.0, (20*log10( cmMax(xV[i]/1.5,0.00001)) + 100.0)/100.0); xV[i] = cmMax(0.0, (20*log10( cmMax(xV[i]/1.5,0.00001)) + 100.0)/100.0);
@ -5318,20 +5332,20 @@ cmRC_t cmFrqTrkExec( cmFrqTrk* p, const cmReal_t* magV, const cmReal_t* phsV, co
// copy p->dbV to dbM[hi,:] // copy p->dbV to dbM[hi,:]
cmVOR_CopyN(p->dbM + p->hi, p->bN, p->hN, p->dbV, 1 ); cmVOR_CopyN(p->dbM + p->hi, p->bN, p->hN, p->dbV, 1 );
// increment hi // increment hi to next column to fill in dbM[]
p->hi = (p->hi + 1) % p->hN; p->hi = (p->hi + 1) % p->hN;
// Form the spectral magnitude profile by taking the mean over time // Set dbV[] to spectral magnitude profile by taking the mean over time
// of the last hN magnitude vectors // of the last hN magnitude vectors
cmVOR_MeanM2(p->dbV, p->dbM, p->hN, p->bN, 0, cmMin(p->fN+1,p->hN)); cmVOR_MeanM2(p->dbV, p->dbM, p->hN, p->bN, 0, cmMin(p->fN+1,p->hN));
//cmVOR_MeanM(p->dbV, p->dbM, p->hN, p->bN, 0); //cmVOR_MeanM(p->dbV, p->dbM, p->hN, p->bN, 0);
if( p->fN >= p->hN ) if( p->fN >= p->hN )
{ {
// set the indexes of the peaks above pkThreshDb in i0[] // set pkiV[] to the indexes of the peaks above pkThreshDb in i0[]
unsigned pkN = cmVOR_PeakIndexes(p->pkiV, p->bN, p->dbV, p->bN, p->a.pkThreshDb ); unsigned pkN = cmVOR_PeakIndexes(p->pkiV, p->bN, p->dbV, p->bN, p->a.pkThreshDb );
// generate the peak frequencies from the magnitude // set hzV[] to the peak frequencies assoc'd with peaks at dbV[ pkiV[] ].
_cmFrqTrkMagnToHz(p, p->dbV, p->pkiV, pkN, hzV ); _cmFrqTrkMagnToHz(p, p->dbV, p->pkiV, pkN, hzV );
// extend the existing trackers // extend the existing trackers
@ -5485,6 +5499,7 @@ cmSpecDist_t* cmSpecDistAlloc( cmCtx* ctx,cmSpecDist_t* ap, unsigned procSmpCnt,
{ {
cmSpecDist_t* p = cmObjAlloc( cmSpecDist_t, ctx, ap ); cmSpecDist_t* p = cmObjAlloc( cmSpecDist_t, ctx, ap );
p->iSpecVa = cmVectArrayAlloc(ctx,kRealVaFl);
p->oSpecVa = cmVectArrayAlloc(ctx,kRealVaFl); p->oSpecVa = cmVectArrayAlloc(ctx,kRealVaFl);
if( procSmpCnt != 0 ) if( procSmpCnt != 0 )
@ -5505,8 +5520,13 @@ cmRC_t cmSpecDistFree( cmSpecDist_t** pp )
cmSpecDist_t* p = *pp; cmSpecDist_t* p = *pp;
cmSpecDistFinal(p); cmSpecDistFinal(p);
cmVectArrayFree(&p->iSpecVa);
cmVectArrayFree(&p->oSpecVa); cmVectArrayFree(&p->oSpecVa);
cmMemPtrFree(&p->hzV); cmMemPtrFree(&p->hzV);
cmMemPtrFree(&p->iSpecM);
cmMemPtrFree(&p->oSpecM);
cmMemPtrFree(&p->iSpecV);
cmMemPtrFree(&p->oSpecV);
cmObjFree(pp); cmObjFree(pp);
return cmOkRC; return cmOkRC;
@ -5523,6 +5543,7 @@ cmRC_t cmSpecDistInit( cmSpecDist_t* p, unsigned procSmpCnt, double srate, unsig
unsigned flags = 0; unsigned flags = 0;
p->srate = srate;
p->wndSmpCnt = wndSmpCnt; p->wndSmpCnt = wndSmpCnt;
p->hopSmpCnt = (unsigned)floor(wndSmpCnt/hopFcmt); p->hopSmpCnt = (unsigned)floor(wndSmpCnt/hopFcmt);
p->procSmpCnt = procSmpCnt; p->procSmpCnt = procSmpCnt;
@ -5550,9 +5571,10 @@ cmRC_t cmSpecDistInit( cmSpecDist_t* p, unsigned procSmpCnt, double srate, unsig
fta.pkMaxHz = 20000; fta.pkMaxHz = 20000;
fta.whFiltCoeff = 0.33; fta.whFiltCoeff = 0.33;
fta.attenThresh = 900.0; fta.attenThresh = 0.4;
fta.attenGain = 1.0; fta.attenGain = 0.5;
fta.attenAtkSec = 0.25; fta.attenDlySec = 1.0;
fta.attenAtkSec = 1.0;
fta.logFn = "/home/kevin/temp/frqtrk/trk_log.va"; fta.logFn = "/home/kevin/temp/frqtrk/trk_log.va";
fta.levelFn = "/home/kevin/temp/frqtrk/level.va"; fta.levelFn = "/home/kevin/temp/frqtrk/level.va";
@ -5560,7 +5582,7 @@ cmRC_t cmSpecDistInit( cmSpecDist_t* p, unsigned procSmpCnt, double srate, unsig
fta.attenFn = "/home/kevin/temp/frqtrk/atten.va"; fta.attenFn = "/home/kevin/temp/frqtrk/atten.va";
p->ft = cmFrqTrkAlloc( p->obj.ctx, NULL, &fta ); p->ft = cmFrqTrkAlloc( p->obj.ctx, NULL, &fta );
cmFrqTrkPrint(p->ft); //cmFrqTrkPrint(p->ft);
cmFbCtlArgs_t fba; cmFbCtlArgs_t fba;
fba.srate = srate; fba.srate = srate;
@ -5588,6 +5610,15 @@ cmRC_t cmSpecDistInit( cmSpecDist_t* p, unsigned procSmpCnt, double srate, unsig
p->aeMax = -1000; p->aeMax = -1000;
double histSecs = 0.05;
p->hN = cmMax(1,histSecs * p->srate / p->hopSmpCnt );
p->iSpecM = cmMemResizeZ(cmReal_t,p->iSpecM,p->hN*p->pva->binCnt);
p->oSpecM = cmMemResizeZ(cmReal_t,p->oSpecM,p->hN*p->pva->binCnt);
p->iSpecV = cmMemResizeZ(cmReal_t,p->iSpecV, p->pva->binCnt);
p->oSpecV = cmMemResizeZ(cmReal_t,p->oSpecV, p->pva->binCnt);
p->hi = 0;
//p->bypOut = cmMemResizeZ(cmSample_t, p->bypOut, procSmpCnt ); //p->bypOut = cmMemResizeZ(cmSample_t, p->bypOut, procSmpCnt );
return rc; return rc;
@ -5597,6 +5628,7 @@ cmRC_t cmSpecDistFinal(cmSpecDist_t* p )
{ {
cmRC_t rc = cmOkRC; cmRC_t rc = cmOkRC;
cmVectArrayWrite(p->iSpecVa, "/home/kevin/temp/frqtrk/iSpec.va");
cmVectArrayWrite(p->oSpecVa, "/home/kevin/temp/frqtrk/oSpec.va"); cmVectArrayWrite(p->oSpecVa, "/home/kevin/temp/frqtrk/oSpec.va");
cmPvAnlFree(&p->pva); cmPvAnlFree(&p->pva);
@ -5777,27 +5809,58 @@ void _cmSpecDistAmpEnvMode( cmSpecDist_t* p, cmReal_t* X1m )
} }
void _cmSpecDistPhaseMod( cmSpecDist_t* p, cmReal_t* phsV, unsigned binCnt )
{
unsigned i;
cmReal_t offs = sin( 0.1 * 2.0 * M_PI * (p->phaseModIndex++) / (p->srate/p->hopSmpCnt) );
//printf("offs %f %i %i %f\n",offs,p->phaseModIndex,p->hopSmpCnt,p->srate);
cmReal_t new_phs = phsV[0] + offs;
for(i=0; i<binCnt-1; ++i)
{
while( new_phs > M_PI )
new_phs -= 2.0*M_PI;
while( new_phs < -M_PI )
new_phs += 2.0*M_PI;
cmReal_t d = phsV[i+1] - phsV[i];
phsV[i] = new_phs;
new_phs += d;
}
}
cmRC_t cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn ) cmRC_t cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn )
{ {
assert( sn == p->procSmpCnt ); assert( sn == p->procSmpCnt );
bool recordFl = false;
// cmPvAnlExec() returns true when it calc's a new spectral output frame // cmPvAnlExec() returns true when it calc's a new spectral output frame
if( cmPvAnlExec( p->pva, sp, sn ) ) if( cmPvAnlExec( p->pva, sp, sn ) )
{ {
cmReal_t X1m[p->pva->binCnt]; cmReal_t X1m[p->pva->binCnt];
// take the mean of the the input magntitude spectrum
cmReal_t u0 = cmVOR_Mean(p->pva->magV,p->pva->binCnt); cmReal_t u0 = cmVOR_Mean(p->pva->magV,p->pva->binCnt);
//cmFrqTrkExec(p->ft, p->pva->magV, p->pva->phsV, NULL ); if(recordFl)
{
// apply the freq track suppression filter // store a time windowed average of the input spectrum to p->iSpecV
//cmVOR_MultVVV(X1m, p->pva->binCnt,p->pva->magV, p->ft->aV ); cmVOR_CopyN(p->iSpecM + p->hi, p->pva->binCnt, p->hN, X1m, 1 );
cmVOR_MeanM2(p->iSpecV, p->iSpecM, p->hN, p->pva->binCnt, 0, cmMin(p->fi+1,p->hN));
}
cmVOR_AmplToDbVV(X1m, p->pva->binCnt, p->pva->magV, -1000.0 ); cmVOR_AmplToDbVV(X1m, p->pva->binCnt, p->pva->magV, -1000.0 );
//cmVOR_AmplToDbVV(X1m, p->pva->binCnt, X1m, -1000.0 ); //cmVOR_AmplToDbVV(X1m, p->pva->binCnt, X1m, -1000.0 );
switch( p->mode ) switch( p->mode )
{ {
case kBypassModeSdId: case kBypassModeSdId:
@ -5838,21 +5901,24 @@ cmRC_t cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn )
break; break;
} }
//cmVectArrayAppendR(p->oSpecVa,X1m,p->pva->binCnt);
cmVOR_DbToAmplVV(X1m, p->pva->binCnt, X1m ); cmVOR_DbToAmplVV(X1m, p->pva->binCnt, X1m );
// run and apply the tracker/supressor // run and apply the tracker/supressor
cmFrqTrkExec(p->ft, X1m, p->pva->phsV, NULL ); //cmFrqTrkExec(p->ft, X1m, p->pva->phsV, NULL );
cmVOR_MultVV(X1m, p->pva->binCnt,p->ft->aV ); //cmVOR_MultVV(X1m, p->pva->binCnt,p->ft->aV );
// convert the mean input magnitude to db
cmReal_t idb = 20*log10(u0); cmReal_t idb = 20*log10(u0);
// get the mean output magnitude spectra
cmReal_t u1 = cmVOR_Mean(X1m,p->pva->binCnt); cmReal_t u1 = cmVOR_Mean(X1m,p->pva->binCnt);
if( idb > -150.0 ) if( idb > -150.0 )
{ {
// set the output gain such that the mean output magnitude
// will match the mean input magnitude
p->ogain = u0/u1; p->ogain = u0/u1;
} }
else else
@ -5861,17 +5927,34 @@ cmRC_t cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn )
p->ogain *= a0; p->ogain *= a0;
} }
//cmReal_t v[] = { u0, u1, idb, 20*log10(u1), p->ogain };
//unsigned vn = sizeof(v)/sizeof(v[0]);
//cmVectArrayAppendR(p->oSpecVa,v,vn);
cmVOR_MultVS(X1m,p->pva->binCnt,cmMin(4.0,p->ogain)); cmVOR_MultVS(X1m,p->pva->binCnt,cmMin(4.0,p->ogain));
//cmFbCtlExec(p->fbc,X1m); //cmFbCtlExec(p->fbc,X1m);
//cmReal_t v[ p->pva->binCnt ];
//cmVOR_Copy(v,p->pva->binCnt,p->pva->phsV);
//_cmSpecDistPhaseMod(p, v, p->pva->binCnt );
if(recordFl)
{
// store a time windowed average of the output spectrum to p->iSpecV
cmVOR_CopyN(p->oSpecM + p->hi, p->pva->binCnt, p->hN, X1m, 1 );
cmVOR_MeanM2(p->oSpecV, p->oSpecM, p->hN, p->pva->binCnt, 0, cmMin(p->fi+1,p->hN));
// store iSpecV and oSpecV to iSpecVa and oSpecVa to create debugging files
cmVectArrayAppendR(p->iSpecVa,p->iSpecV,p->pva->binCnt);
cmVectArrayAppendR(p->oSpecVa,p->oSpecV,p->pva->binCnt);
p->hi = (p->hi + 1) % p->hN;
}
cmPvSynExec(p->pvs, X1m, p->pva->phsV ); cmPvSynExec(p->pvs, X1m, p->pva->phsV );
p->fi += 1;
} }
return cmOkRC; return cmOkRC;

View File

@ -902,6 +902,7 @@ extern "C" {
typedef enum typedef enum
{ {
kNoStateFrqTrkId, kNoStateFrqTrkId,
kDlyFrqTrkId,
kAtkFrqTrkId, kAtkFrqTrkId,
kSusFrqTrkId, kSusFrqTrkId,
kDcyFrqTrkId kDcyFrqTrkId
@ -924,6 +925,7 @@ extern "C" {
cmReal_t attenThresh; cmReal_t attenThresh;
cmReal_t attenGain; cmReal_t attenGain;
cmReal_t attenDlySec;
cmReal_t attenAtkSec; cmReal_t attenAtkSec;
const char* logFn; // log file name or NULL if no file is to be written const char* logFn; // log file name or NULL if no file is to be written
@ -985,6 +987,7 @@ extern "C" {
unsigned deadTrkCnt; unsigned deadTrkCnt;
cmReal_t* aV; cmReal_t* aV;
int attenDlyPhsMax;
int attenPhsMax; int attenPhsMax;
cmWhFilt* wf; cmWhFilt* wf;
@ -1106,9 +1109,20 @@ extern "C" {
cmReal_t aeMax; cmReal_t aeMax;
cmReal_t aeUnit; cmReal_t aeUnit;
cmVectArray_t* oSpecVa;
cmReal_t ogain; cmReal_t ogain;
unsigned phaseModIndex;
unsigned fi; // total count of frames processed by cmSpecDistExec()
unsigned hN;
unsigned hi;
cmReal_t* iSpecM; // iSpecMtx[hN binN]
cmReal_t* iSpecV; // mean of rows of iSpecM
cmVectArray_t* iSpecVa;
cmReal_t* oSpecM; // oSpecMtx[hN binN]
cmReal_t* oSpecV; // mean of rows of oSpecM
cmVectArray_t* oSpecVa;
} cmSpecDist_t; } cmSpecDist_t;
cmSpecDist_t* cmSpecDistAlloc( cmCtx* ctx,cmSpecDist_t* ap, unsigned procSmpCnt, double srate, unsigned wndSmpCnt, unsigned hopFcmt, unsigned olaWndTypeId ); cmSpecDist_t* cmSpecDistAlloc( cmCtx* ctx,cmSpecDist_t* ap, unsigned procSmpCnt, double srate, unsigned wndSmpCnt, unsigned hopFcmt, unsigned olaWndTypeId );

View File

@ -1,5 +1,5 @@
#ifndef cmNet_h #ifndef cmRtNet_h
#define cmNet_h #define cmRtNet_h
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -12,7 +12,7 @@ extern "C" {
unique among all other nodes on the network. A node also has a set of application unique among all other nodes on the network. A node also has a set of application
defined 'endpoints'. Each endpoint has a label and id that is unique among all defined 'endpoints'. Each endpoint has a label and id that is unique among all
other endpoints on the same node. Endpoints on different nodes however may share other endpoints on the same node. Endpoints on different nodes however may share
use the same label and id. Endpoints are used by remote senders to identify the same label and id. Endpoints are used by remote senders to identify
a particular receiver which is sharing the node with other receivers. Endpoints a particular receiver which is sharing the node with other receivers. Endpoints
are therefore analogous to port numbers on sockets. are therefore analogous to port numbers on sockets.

View File

@ -419,7 +419,7 @@ bool _cmRtThreadCallback(void* arg)
cmSleepMs(cp->noBlockSleepMs); cmSleepMs(cp->noBlockSleepMs);
else else
{ {
if( cmThreadMutexWaitOnCondVar(cp->engMutexH,false) != kOkRtRC ) if( (rc = cmThreadMutexWaitOnCondVar(cp->engMutexH,false)) != kOkRtRC )
{ {
cmThreadMutexUnlock(cp->engMutexH); cmThreadMutexUnlock(cp->engMutexH);
_cmRtError(cp->p,rc,"The cmRtSys cond. var. wait failed."); _cmRtError(cp->p,rc,"The cmRtSys cond. var. wait failed.");

2
cmUi.c
View File

@ -1504,7 +1504,7 @@ cmUiRC_t cmUiClearPanel( cmUiH_t uiH, unsigned appId, unsigned panelId )
cmUiRC_t cmUiSelectPanel( cmUiH_t uiH, const cmChar_t* label ) cmUiRC_t cmUiSelectPanel( cmUiH_t uiH, const cmChar_t* label )
{ {
cmUiRC_t rc = kOkUiRC; cmUiRC_t rc = kOkUiRC;
cmUi_t* p = _cmUiHandleToPtr(uiH); //cmUi_t* p = _cmUiHandleToPtr(uiH);

View File

@ -1378,8 +1378,8 @@ cmDspRC_t _cmDspSysPgm_PickupFxFile( cmDspSysH_t h, void** userPtrPtr )
bool cfFbFl = true; bool cfFbFl = true;
unsigned sgShapeId = 2; unsigned sgShapeId = 2;
const cmChar_t* afn = "/home/kevin/media/audio/gate_detect/gate_detect0.aif"; const cmChar_t* afn = "/home/kevin/media/audio/gate_detect/gate_detect0.aif";
unsigned abeg[] = { 9.842046, 18.838291, 27.007957, 35.562079, 45.461793, 52.920218, 60.436312, 68.913543}; double abeg[] = { 9.842046, 18.838291, 27.007957, 35.562079, 45.461793, 52.920218, 60.436312, 68.913543};
unsigned aend[] = {11.399088, 20.645229, 28.891786, 37.311349, 47.287954, 54.131251, 62.473923, 72.142964}; double aend[] = {11.399088, 20.645229, 28.891786, 37.311349, 47.287954, 54.131251, 62.473923, 72.142964};
bool cfBypassFl = false; bool cfBypassFl = false;
unsigned i; unsigned i;

View File

@ -89,285 +89,6 @@ const cmChar_t* _mlbl(const cmChar_t* prefix, unsigned ch )
#define mlbl(a) _mlbl(a,mch) #define mlbl(a) _mlbl(a,mch)
#define lbl(a) cmDspSysPrintLabel(a,ch) #define lbl(a) cmDspSysPrintLabel(a,ch)
void _cmDspSys_TlXformChain1( cmDspSysH_t h, cmDspTlXform_t* c, unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch )
{
unsigned measRtrChCnt = 6; // note: router channel 6 is not connected
int krWndSmpCnt = 2048;
int krHopFact = 4;
unsigned xfadeChCnt = 2;
double xfadeMs = 50;
bool xfadeInitFl = true;
double mixGain = 1.0;
bool cmpBypassFl = false;
double cmpInGain = 3.0;
double cmpThreshDb = -40.0;
double cmpRatio_num = 5.0;
double cmpAtkMs = 20.0;
double cmpRlsMs = 100.0;
double cmpMakeup = 1.0;
double cmpWndMaxMs = 1000.0;
double cmpWndMs = 200.0;
cmDspInst_t* achan = cmDspSysAllocInst(h, "AvailCh", NULL, 1, xfadeChCnt );
// Measurement scale/range
cmDspInst_t* even_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.8, 1.1, 0.0, 1.0 );
cmDspInst_t* dynm_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 4.0, 0.01, 1.0 );
cmDspInst_t* tmpo_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 80.0, 120.0, 0.01, 1.0 );
cmDspInst_t* cost_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, 0.001, 1.0 );
// Measurement -> parameter mappers
cmDspInst_t* even_rt = cmDspSysAllocInst(h, "Router", NULL, 2, measRtrChCnt, measRtrChCnt-1 );
cmDspInst_t* dynm_rt = cmDspSysAllocInst(h, "Router", NULL, 2, measRtrChCnt, measRtrChCnt-1 );
cmDspInst_t* tmpo_rt = cmDspSysAllocInst(h, "Router", NULL, 2, measRtrChCnt, measRtrChCnt-1 );
cmDspInst_t* cost_rt = cmDspSysAllocInst(h, "Router", NULL, 2, measRtrChCnt, measRtrChCnt-1 );
// Scale/ranges applied to incoming measurements.
cmDspInst_t* thr_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, 0.01, 100.0 );
cmDspInst_t* upr_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, -1.0, 5.0 );
cmDspInst_t* lwr_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, -5.0, 5.0 );
cmDspInst_t* off_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, 0.0, 100.0 );
cmDspInst_t* wet_sr = cmDspSysAllocInst(h, "ScaleRange", NULL, 4, 0.0, 1.0, 0.0, 1.0 );
// Parameter-> kr routers (routers used to cross-fade between the two kr units)
unsigned paramRtChCnt = 2;
cmDspInst_t* mod_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* wnd_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* hop_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* thr_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* upr_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* lwr_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* inv_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* off_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
cmDspInst_t* wet_rt = cmDspSysAllocInst(h, "Router", NULL, 2, paramRtChCnt, paramRtChCnt-1 );
// Audio processors
cmDspInst_t* kr0 = cmDspSysAllocInst(h, "Kr", NULL, 2, krWndSmpCnt, krHopFact );
cmDspInst_t* kr1 = cmDspSysAllocInst(h, "Kr", NULL, 2, krWndSmpCnt, krHopFact );
cmDspInst_t* xfad = cmDspSysAllocInst(h, "Xfader", NULL, 3, xfadeChCnt, xfadeMs, xfadeInitFl );
cmDspInst_t* mix = cmDspSysAllocInst(h, "AMix", NULL, 3, xfadeChCnt, mixGain, mixGain );
cmDspInst_t* cmp = cmDspSysAllocInst(h, "Compressor", NULL, 8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs );
// Internal audio connections
cmDspSysConnectAudio(h, kr0, "out", xfad, "in-0");
cmDspSysConnectAudio(h, kr1, "out", xfad, "in-1");
cmDspSysConnectAudio(h, xfad, "out-0", mix, "in-0");
cmDspSysConnectAudio(h, xfad, "out-1", mix, "in-1");
cmDspSysConnectAudio(h, mix, "out", cmp, "in" );
// active channel <-> cross-fade connections
cmDspSysInstallCb(h, achan, "reset", xfad, "reset", NULL);
cmDspSysInstallCb(h, achan, "gate-0", xfad, "gate-0", NULL );
cmDspSysInstallCb(h, achan, "gate-1", xfad, "gate-1", NULL );
cmDspSysInstallCb(h, xfad, "state-0", achan, "dis-0", NULL );
cmDspSysInstallCb(h, xfad, "state-1", achan, "dis-1", NULL );
// Measurement Number Controls
cmDspInst_t* min_dynm_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min In Dyn"), 0.0, 10.0, 1.0, 0.0);
cmDspInst_t* max_dynm_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max In Dyn"), 0.0, 10.0, 1.0, 4.0);
cmDspInst_t* dynm_map_menu = cmDspSysAllocMsgListP(h,preGrpSymId, NULL, lbl("DynSel 0"), NULL, "measMenu", measRtrChCnt-1);
cmDspInst_t* min_even_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min In Even"), 0.0, 1.0, 0.001, 0.75);
cmDspInst_t* max_even_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max In Even"), 0.0, 3.0, 0.001, 1.0);
cmDspInst_t* even_map_menu = cmDspSysAllocMsgListP( h,preGrpSymId, NULL, lbl("EvenSel"), NULL, "measMenu", measRtrChCnt-1);
cmDspSysNewColumn(h,0);
cmDspInst_t* min_tmpo_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min In Tempo"), 0.0, 200.0, 1.0, 80.0);
cmDspInst_t* max_tmpo_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max In Tempo"), 0.0, 200.0, 1.0, 120.0);
cmDspInst_t* tmpo_map_menu = cmDspSysAllocMsgListP( h,preGrpSymId, NULL, lbl("TempoSel"), NULL, "measMenu", measRtrChCnt-1);
cmDspInst_t* min_cost_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min In Cost"), 0.0, 1.0, 0.01, 0.0);
cmDspInst_t* max_cost_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max In Cost"), 0.0, 1.0, 0.01, 1.0);
cmDspInst_t* cost_map_menu = cmDspSysAllocMsgListP( h,preGrpSymId, NULL, lbl("CostSel"), NULL, "measMenu", measRtrChCnt-1);
cmDspSysInstallCb(h, min_dynm_ctl, "val", dynm_sr, "min_in", NULL );
cmDspSysInstallCb(h, max_dynm_ctl, "val", dynm_sr, "min_in", NULL );
cmDspSysInstallCb(h, dynm_map_menu,"out", dynm_rt, "sel", NULL );
cmDspSysInstallCb(h, dynm_sr, "val_out", dynm_rt, "f-in", NULL );
cmDspSysInstallCb(h, min_even_ctl, "val", even_sr, "min_in", NULL );
cmDspSysInstallCb(h, max_even_ctl, "val", even_sr, "min_in", NULL );
cmDspSysInstallCb(h, even_map_menu,"out", even_rt, "sel", NULL );
cmDspSysInstallCb(h, even_sr, "val_out", even_rt, "f-in", NULL );
cmDspSysInstallCb(h, min_tmpo_ctl, "val", tmpo_sr, "min_in", NULL );
cmDspSysInstallCb(h, max_tmpo_ctl, "val", tmpo_sr, "min_in", NULL );
cmDspSysInstallCb(h, tmpo_map_menu,"out", tmpo_rt, "sel", NULL );
cmDspSysInstallCb(h, tmpo_sr, "val_out", tmpo_rt, "f-in", NULL );
cmDspSysInstallCb(h, min_cost_ctl, "val", cost_sr, "min_in", NULL );
cmDspSysInstallCb(h, max_cost_ctl, "val", cost_sr, "min_in", NULL );
cmDspSysInstallCb(h, cost_map_menu,"out", cost_rt, "sel", NULL );
cmDspSysInstallCb(h, cost_sr, "val_out", cost_rt, "f-in", NULL );
cmDspSysNewColumn(h,0);
cmDspInst_t* min_thr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Thresh"), 0.0,100.0, 1.0, 30.0);
cmDspInst_t* max_thr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Thresh"), 0.0,100.0, 1.0, 80.0);
cmDspInst_t* min_upr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Upr"), -1.0, 1.0, 0.001, -0.5);
cmDspInst_t* max_upr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Upr"), -1.0, 1.0, 0.001, 0.5);
cmDspInst_t* min_lwr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Lwr"), 0.0, -1.0, 5.0, 1.0);
cmDspInst_t* max_lwr_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Lwr"), 0.0, -1.0, 5.0, 3.0);
cmDspInst_t* min_off_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Off"), 0.0, 50.0, 0.1, 30.0);
cmDspInst_t* max_off_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Off"), 0.0, 50.0, 0.1, 30.0);
cmDspInst_t* min_wet_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Wet"), 0.0, 1.0, 0.01, 1.0);
cmDspInst_t* max_wet_ctl = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Wet"), 0.0, 1.0, 0.01, 1.0);
// Parameter number controls
cmDspSysNewColumn(h,0);
cmDspInst_t* mod_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Mode"), 0.0, 4.0, 1.0, 1.0);
cmDspInst_t* wnd_ctl = cmDspSysAllocMsgListP(h,preGrpSymId,NULL, lbl("WndSmpCnt"), NULL, "wndSmpCnt", 2);
cmDspInst_t* hop_ctl = cmDspSysAllocMsgListP(h,preGrpSymId,NULL, lbl("HopFact"), NULL, "hopFact", 2);
cmDspInst_t* thr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Threshold"), 0.0, 100.0, 1.0, 60.0 );
cmDspInst_t* upr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Upr slope"), 0.0, 10.0, 0.01, 0.0 );
cmDspInst_t* lwr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Lwr slope"), 0.3, 10.0, 0.01, 2.0 );
cmDspInst_t* off_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Offset"), 0.0, 100.0, 0.01, 20.0 );
cmDspInst_t* inv_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Invert"), 0.0, 1.0, 1.0, 0.0 );
cmDspInst_t* wet_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Wet Dry"), 0.0, 1.0, 0.001, 1.0 );
cmDspSysInstallCb(h, mod_ctl, "val", mod_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", mod_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, mod_rt, "f-out-0", kr0, "mode", NULL ); // mode->kr
cmDspSysInstallCb(h, mod_rt, "f-out-1", kr1, "mode", NULL ); // mode->kr
cmDspSysInstallCb(h, wnd_ctl, "out", wnd_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", wnd_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, wnd_rt, "f-out-0", kr0, "wndn", NULL ); // wndn->kr
cmDspSysInstallCb(h, wnd_rt, "f-out-1", kr1, "wndn", NULL ); // wndn->kr
cmDspSysInstallCb(h, hop_ctl, "out", hop_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", hop_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, hop_rt, "f-out-0", kr0, "hopf", NULL ); // hopf->kr
cmDspSysInstallCb(h, hop_rt, "f-out-1", kr1, "hopf", NULL ); // hopf->kr
cmDspSysInstallCb(h, min_thr_ctl, "val", thr_sr, "min_out", NULL );
cmDspSysInstallCb(h, max_thr_ctl, "val", thr_sr, "max_out", NULL );
cmDspSysInstallCb(h, even_rt, "f-out-0", thr_sr, "val_in", NULL );
cmDspSysInstallCb(h, dynm_rt, "f-out-0", thr_sr, "val_in", NULL );
cmDspSysInstallCb(h, tmpo_rt, "f-out-0", thr_sr, "val_in", NULL );
cmDspSysInstallCb(h, cost_rt, "f-out-0", thr_sr, "val_in", NULL );
cmDspSysInstallCb(h, thr_sr, "val_out", thr_ctl,"val", NULL );
cmDspSysInstallCb(h, thr_ctl, "val", thr_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", thr_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, thr_rt, "f-out-0", kr0, "thrh", NULL ); // thr->kr
cmDspSysInstallCb(h, thr_rt, "f-out-1", kr1, "thrh", NULL ); // thr->kr
cmDspSysInstallCb(h, min_upr_ctl, "val", upr_sr, "min_out", NULL );
cmDspSysInstallCb(h, max_upr_ctl, "val", upr_sr, "max_out", NULL );
cmDspSysInstallCb(h, even_rt, "f-out-1", upr_sr, "val_in", NULL );
cmDspSysInstallCb(h, dynm_rt, "f-out-1", upr_sr, "val_in", NULL );
cmDspSysInstallCb(h, tmpo_rt, "f-out-1", upr_sr, "val_in", NULL );
cmDspSysInstallCb(h, cost_rt, "f-out-1", upr_sr, "val_in", NULL );
cmDspSysInstallCb(h, upr_sr, "val_out", upr_ctl,"val", NULL );
cmDspSysInstallCb(h, upr_ctl, "val", upr_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", upr_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, upr_rt, "f-out-0", kr0, "uprs", NULL ); // upr->kr
cmDspSysInstallCb(h, upr_rt, "f-out-1", kr1, "uprs", NULL ); // upr->kr
cmDspSysInstallCb(h, min_lwr_ctl, "val", lwr_sr, "min_out", NULL );
cmDspSysInstallCb(h, max_lwr_ctl, "val", lwr_sr, "max_out", NULL );
cmDspSysInstallCb(h, even_rt, "f-out-2", lwr_sr, "val_in", NULL );
cmDspSysInstallCb(h, dynm_rt, "f-out-2", lwr_sr, "val_in", NULL );
cmDspSysInstallCb(h, tmpo_rt, "f-out-2", lwr_sr, "val_in", NULL );
cmDspSysInstallCb(h, cost_rt, "f-out-2", lwr_sr, "val_in", NULL );
cmDspSysInstallCb(h, lwr_sr, "val_out", lwr_ctl,"val", NULL );
cmDspSysInstallCb(h, lwr_ctl, "val", lwr_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", lwr_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, lwr_rt, "f-out-0", kr0, "lwrs", NULL ); // lwr->kr
cmDspSysInstallCb(h, lwr_rt, "f-out-1", kr1, "lwrs", NULL ); // lwr->kr
cmDspSysInstallCb(h, min_off_ctl, "val", off_sr, "min_out", NULL );
cmDspSysInstallCb(h, max_off_ctl, "val", off_sr, "max_out", NULL );
cmDspSysInstallCb(h, even_rt, "f-out-3", off_sr, "val_in", NULL );
cmDspSysInstallCb(h, dynm_rt, "f-out-3", off_sr, "val_in", NULL );
cmDspSysInstallCb(h, tmpo_rt, "f-out-3", off_sr, "val_in", NULL );
cmDspSysInstallCb(h, cost_rt, "f-out-3", off_sr, "val_in", NULL );
cmDspSysInstallCb(h, off_sr, "val_out", off_ctl,"val", NULL );
cmDspSysInstallCb(h, off_ctl, "val", off_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", off_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, off_rt, "f-out-0", kr0, "offs", NULL ); // off->kr
cmDspSysInstallCb(h, off_rt, "f-out-1", kr1, "offs", NULL ); // off->kr
cmDspSysInstallCb(h, inv_ctl, "val", inv_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", inv_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, inv_rt, "f-out-0", kr0, "invt", NULL ); // inv->kr
cmDspSysInstallCb(h, inv_rt, "f-out-1", kr1, "invt", NULL ); // inv->kr
cmDspSysInstallCb(h, min_wet_ctl, "val", wet_sr, "min_out", NULL );
cmDspSysInstallCb(h, max_wet_ctl, "val", wet_sr, "max_out", NULL );
cmDspSysInstallCb(h, even_rt, "f-out-4", wet_sr, "val_in", NULL );
cmDspSysInstallCb(h, dynm_rt, "f-out-4", wet_sr, "val_in", NULL );
cmDspSysInstallCb(h, tmpo_rt, "f-out-4", wet_sr, "val_in", NULL );
cmDspSysInstallCb(h, cost_rt, "f-out-4", wet_sr, "val_in", NULL );
cmDspSysInstallCb(h, wet_sr, "val_out", wet_ctl,"val", NULL );
cmDspSysInstallCb(h, wet_ctl, "val", wet_rt, "f-in", NULL );
cmDspSysInstallCb(h, achan, "ch", wet_rt, "sel", NULL ); // ach->rt sel
cmDspSysInstallCb(h, wet_rt, "f-out-0", kr0, "wet", NULL ); // wet->kr
cmDspSysInstallCb(h, wet_rt, "f-out-1", kr1, "wet", NULL ); // wet->kr
cmDspSysNewColumn(h,0);
cmDspInst_t* cmp_byp = cmDspSysAllocCheckP( h, cmpPreGrpSymId, NULL, lbl("Bypass"), 1.0 );
cmDspInst_t* cmp_igain = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("In Gain"), 0.0, 10.0, 0.1, cmpInGain);
cmDspInst_t* cmp_thr = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("ThreshDb"), -100.0, 0.0, 0.1, cmpThreshDb);
cmDspInst_t* cmp_rat = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Ratio"), 0.1, 100, 0.1, cmpRatio_num);
cmDspInst_t* cmp_atk = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Atk Ms"), 0.0, 1000.0, 0.1, cmpAtkMs);
cmDspInst_t* cmp_rls = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Rls Ms"), 0.0, 1000.0, 0.1, cmpRlsMs);
cmDspInst_t* cmp_mkup = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Makeup"), 0.0, 10.0, 0.01, cmpMakeup);
cmDspInst_t* cmp_wnd = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Wnd Ms"), 1.0, cmpWndMaxMs, 1.0, cmpWndMs );
cmDspInst_t* cmp_mtr = cmDspSysAllocInst(h,"Meter",lbl("Env"), 3, 0.0, 0.0, 1.0);
cmDspSysInstallCb(h, cmp_byp, "out", cmp, "bypass", NULL );
cmDspSysInstallCb(h, cmp_igain,"val", cmp, "igain", NULL );
cmDspSysInstallCb(h, cmp_thr, "val", cmp, "thr", NULL );
cmDspSysInstallCb(h, cmp_rat, "val", cmp, "ratio", NULL );
cmDspSysInstallCb(h, cmp_atk, "val", cmp, "atk", NULL );
cmDspSysInstallCb(h, cmp_rls, "val", cmp, "rls", NULL );
cmDspSysInstallCb(h, cmp_mkup, "val", cmp, "ogain", NULL );
cmDspSysInstallCb(h, cmp_wnd, "val", cmp, "wnd", NULL );
cmDspSysInstallCb(h, cmp, "env", cmp_mtr, "in", NULL );
cmDspSysInstallCb(h, modp, mlbl("cbyp"), cmp_byp, "in", NULL );
cmDspSysInstallCb(h, modp, mlbl("cigain"), cmp_igain,"val", NULL );
cmDspSysInstallCb(h, modp, mlbl("cthrsh"), cmp_thr, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("cratio"), cmp_rat, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("catkms"), cmp_atk, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("crlsms"), cmp_rls, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("cmakeup"), cmp_mkup, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("cwndms"), cmp_wnd, "val", NULL );
//
cmDspInst_t* xfadMs = cmDspSysAllocInst(h,"Scalar", lbl("Xfade Ms"), 5, kNumberDuiId, 0.0, 1000.0,0.01, 50.0 );
cmDspSysInstallCb(h, xfadMs, "val", xfad, "ms", NULL );
cmDspSysInstallCb(h, modp, mlbl("xfad"), xfadMs, "val", NULL);
cmDspSysInstallCb(h, modp, mlbl("win"), wnd_ctl, "sel", NULL );
cmDspSysInstallCb(h, modp, mlbl("hop"), hop_ctl, "sel", NULL );
cmDspSysInstallCb(h, modp, mlbl("mod"), mod_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("thr"), thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("upr"), upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("lwr"), lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("sw"), achan, "trig", NULL ); // See also: amp.sfloc->achan.trig
c->achan = achan;
c->kr0 = kr0;
c->kr1 = kr1;
c->cmp = cmp;
}
void _cmDspSys_TlXformChain( cmDspSysH_t h, cmDspTlXform_t* c, unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch ) void _cmDspSys_TlXformChain( cmDspSysH_t h, cmDspTlXform_t* c, unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch )
{ {
@ -634,12 +355,15 @@ void _cmDspSys_TlXformChain( cmDspSysH_t h, cmDspTlXform_t* c, unsigned preGrpS
cmDspSysInstallCb(h, modp, mlbl("thr"), thr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("thr"), thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("upr"), upr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("upr"), upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("lwr"), lwr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("lwr"), lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("off"), off_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL ); cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("mino"), min_off_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("maxo"), max_off_ctl, "val", NULL );
cmDspSysInstallCb(h, modp, mlbl("sw"), achan, "trig", NULL ); // See also: amp.sfloc->achan.trig cmDspSysInstallCb(h, modp, mlbl("sw"), achan, "trig", NULL ); // See also: amp.sfloc->achan.trig
c->achan = achan; c->achan = achan;
@ -657,7 +381,8 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
krRsrc_t r; krRsrc_t r;
bool fragFl = false; bool fragFl = false;
bool useWtFl = false; bool useWtFl = false;
bool useChain1Fl= true; bool useChain1Fl = true;
bool useInputEqFl = false;
unsigned wtLoopCnt = 1; // 1=play once (-1=loop forever) unsigned wtLoopCnt = 1; // 1=play once (-1=loop forever)
unsigned wtInitMode = 0; // initial wt mode is 'silence' unsigned wtInitMode = 0; // initial wt mode is 'silence'
unsigned wtSmpCnt = floor(cmDspSysSampleRate(h)); // wt length == srate unsigned wtSmpCnt = floor(cmDspSysSampleRate(h)); // wt length == srate
@ -671,6 +396,30 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
double recdPlayCurLaSecs = 0.1; double recdPlayCurLaSecs = 0.1;
double recdPlayFadeRateDbPerSec = 4.0; double recdPlayFadeRateDbPerSec = 4.0;
bool eqBypassFl = false;
unsigned eqLpSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"LP");
double eqLpF0hz = 200.0;
double eqLpQ = 0.5;
double eqLpGain = 0.9;
unsigned eqBpSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"BP");
double eqBpF0hz = 350.0;
double eqBpQ = 0.6;
double eqBpGain = 1.0;
unsigned eqHpSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"HP");
double eqHpF0hz = 600.0;
double eqHpQ = 0.5;
double eqHpGain = 0.9;
bool apfBypassFl = false;
unsigned apfModeSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"AP");
double apfF0hz = 100.0;
double apfQ = 1.0;
double apfGain = 1.0;
/* /*
bool cmpBypassFl = false; bool cmpBypassFl = false;
double cmpInGain = 3.0; double cmpInGain = 3.0;
@ -691,6 +440,34 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspInst_t* ai0p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 2); cmDspInst_t* ai0p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 2);
cmDspInst_t* ai1p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 3); cmDspInst_t* ai1p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 3);
cmDspInst_t* ai2p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 4);
cmDspInst_t* ai3p = cmDspSysAllocInst(h,"AudioIn", NULL, 1, 5);
cmDspInst_t* eqLpf_0 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain ) : NULL;
cmDspInst_t* eqLpf_1 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain ) : NULL;
cmDspInst_t* eqLpf_2 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain ) : NULL;
cmDspInst_t* eqLpf_3 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain ) : NULL;
cmDspInst_t* eqBpf_0 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain ) : NULL;
cmDspInst_t* eqBpf_1 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain ) : NULL;
cmDspInst_t* eqBpf_2 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain ) : NULL;
cmDspInst_t* eqBpf_3 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain ) : NULL;
cmDspInst_t* eqHpf_0 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain ) : NULL;
cmDspInst_t* eqHpf_1 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain ) : NULL;
cmDspInst_t* eqHpf_2 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain ) : NULL;
cmDspInst_t* eqHpf_3 = useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain ) : NULL;
double eqMixGain = 1.0/3.0;
cmDspInst_t* eqMx_0 = useInputEqFl ? cmDspSysAllocInst( h, "AMix", NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
cmDspInst_t* eqMx_1 = useInputEqFl ? cmDspSysAllocInst( h, "AMix", NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
cmDspInst_t* eqMx_2 = useInputEqFl ? cmDspSysAllocInst( h, "AMix", NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
cmDspInst_t* eqMx_3 = useInputEqFl ? cmDspSysAllocInst( h, "AMix", NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
cmDspInst_t* mx0p = cmDspSysAllocInst( h, "AMix", NULL, 3, 2, 1.0, 1.0);
cmDspInst_t* mx1p = cmDspSysAllocInst( h, "AMix", NULL, 3, 2, 1.0, 1.0);
//cmDspInst_t* ci0p = cmDspSysAllocInst(h,"Compressor", NULL, 8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); //cmDspInst_t* ci0p = cmDspSysAllocInst(h,"Compressor", NULL, 8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs );
//cmDspInst_t* ci1p = cmDspSysAllocInst(h,"Compressor", NULL, 8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); //cmDspInst_t* ci1p = cmDspSysAllocInst(h,"Compressor", NULL, 8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs );
@ -701,7 +478,7 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspInst_t* php = cmDspSysAllocInst(h,"Phasor", NULL, 1, cmDspSysSampleRate(h) ); cmDspInst_t* php = cmDspSysAllocInst(h,"Phasor", NULL, 1, cmDspSysSampleRate(h) );
cmDspInst_t* wtp = cmDspSysAllocInst(h,"WaveTable", NULL, 4, wtSmpCnt, wtInitMode, NULL, wtLoopCnt ); cmDspInst_t* wtp = cmDspSysAllocInst(h,"WaveTable", NULL, 4, wtSmpCnt, wtInitMode, NULL, wtLoopCnt );
cmDspInst_t* pts = cmDspSysAllocInst(h,"PortToSym", NULL, 2, "on", "off" ); cmDspInst_t* pts = cmDspSysAllocInst(h,"PortToSym", NULL, 2, "on", "off" );
cmDspInst_t* mip = cmDspSysAllocInst(h,"MidiIn", NULL, 0 ); //cmDspInst_t* mip = cmDspSysAllocInst(h,"MidiIn", NULL, 0 );
cmDspInst_t* mfp = cmDspSysAllocInst(h,"MidiFilePlay",NULL, 0 ); cmDspInst_t* mfp = cmDspSysAllocInst(h,"MidiFilePlay",NULL, 0 );
cmDspInst_t* nmp = cmDspSysAllocInst(h,"NanoMap", NULL, 0 ); cmDspInst_t* nmp = cmDspSysAllocInst(h,"NanoMap", NULL, 0 );
@ -791,11 +568,15 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
} }
*/ */
cmDspInst_t* apf0 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+0, apfQ, apfGain );
cmDspInst_t* apf1 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+100.0, apfQ, apfGain );
cmDspInst_t* apf2 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+200.0, apfQ, apfGain );
cmDspInst_t* apf3 = cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+300.0, apfQ, apfGain );
cmDspInst_t* ao0p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 0 ); cmDspInst_t* ao0p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 0 );
cmDspInst_t* ao1p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 1 ); cmDspInst_t* ao1p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 1 );
//cmDspInst_t* ao2p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 2 ); cmDspInst_t* ao2p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 2 );
//cmDspInst_t* ao3p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 3 ); cmDspInst_t* ao3p = cmDspSysAllocInst(h,"AudioOut", NULL, 1, 3 );
cmDspSysNewPage(h,"Main"); cmDspSysNewPage(h,"Main");
cmDspInst_t* liveb= cmDspSysAllocInst(h,"Button", "live", 2, kCheckDuiId, 0.0 ); cmDspInst_t* liveb= cmDspSysAllocInst(h,"Button", "live", 2, kCheckDuiId, 0.0 );
@ -804,8 +585,8 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspInst_t* measb= cmDspSysAllocInst(h,"Button", "meas", 2, kCheckDuiId, 0.0 ); cmDspInst_t* measb= cmDspSysAllocInst(h,"Button", "meas", 2, kCheckDuiId, 0.0 );
cmDspInst_t* onb = cmDspSysAllocInst(h,"Button", "start", 2, kButtonDuiId, 1.0 ); cmDspInst_t* onb = cmDspSysAllocInst(h,"Button", "start", 2, kButtonDuiId, 1.0 );
cmDspInst_t* offb = cmDspSysAllocInst(h,"Button", "stop", 2, kButtonDuiId, 1.0 ); cmDspInst_t* offb = cmDspSysAllocInst(h,"Button", "stop", 2, kButtonDuiId, 1.0 );
cmDspInst_t* prtb = cmDspSysAllocInst(h,"Button", "print", 2, kButtonDuiId, 1.0 ); //cmDspInst_t* prtb = cmDspSysAllocInst(h,"Button", "print", 2, kButtonDuiId, 1.0 );
cmDspInst_t* qtb = cmDspSysAllocInst(h,"Button", "quiet", 2, kButtonDuiId, 1.0 ); //cmDspInst_t* qtb = cmDspSysAllocInst(h,"Button", "quiet", 2, kButtonDuiId, 1.0 );
cmDspInst_t* mutm = cmDspSysAllocInst(h,"Checkbox","main", 1, "main","on","off",1.0,0.0,1.0 ); cmDspInst_t* mutm = cmDspSysAllocInst(h,"Checkbox","main", 1, "main","on","off",1.0,0.0,1.0 );
cmDspInst_t* mutr = cmDspSysAllocInst(h,"Checkbox","frag", 1, "frag","on","off",1.0,0.0,1.0 ); cmDspInst_t* mutr = cmDspSysAllocInst(h,"Checkbox","frag", 1, "frag","on","off",1.0,0.0,1.0 );
cmDspInst_t* prp = cmDspSysAllocInst(h,"Printer", NULL, 1, ">" ); cmDspInst_t* prp = cmDspSysAllocInst(h,"Printer", NULL, 1, ">" );
@ -831,15 +612,22 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspSysNewColumn(h,0); cmDspSysNewColumn(h,0);
cmDspInst_t* igain0 = cmDspSysAllocInst(h,"Scalar", "In Gain-0", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 ); cmDspInst_t* igain0 = cmDspSysAllocInst(h,"Scalar", "In Gain-0", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
cmDspInst_t* igain1 = cmDspSysAllocInst(h,"Scalar", "In Gain-1", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 ); cmDspInst_t* igain1 = cmDspSysAllocInst(h,"Scalar", "In Gain-1", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
cmDspInst_t* igain2 = cmDspSysAllocInst(h,"Scalar", "In Gain-2", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
cmDspInst_t* igain3 = cmDspSysAllocInst(h,"Scalar", "In Gain-3", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.0 );
cmDspInst_t* lasecs = cmDspSysAllocInst(h,"Scalar", "LA Secs", 5, kNumberDuiId, 0.0, recdPlayMaxLaSecs,0.01, recdPlayCurLaSecs ); cmDspInst_t* lasecs = cmDspSysAllocInst(h,"Scalar", "LA Secs", 5, kNumberDuiId, 0.0, recdPlayMaxLaSecs,0.01, recdPlayCurLaSecs );
cmDspInst_t* dbpsec = cmDspSysAllocInst(h,"Scalar", "Fade dBpSec", 5, kNumberDuiId, 0.0, 24.0, 0.01, recdPlayFadeRateDbPerSec); cmDspInst_t* dbpsec = cmDspSysAllocInst(h,"Scalar", "Fade dBpSec", 5, kNumberDuiId, 0.0, 24.0, 0.01, recdPlayFadeRateDbPerSec);
cmDspInst_t* apfByp = cmDspSysAllocCheck( h, "APF-Bypass", 0.0 );
cmDspSysNewColumn(h,0);
cmDspInst_t* ogain0 = cmDspSysAllocInst(h,"Scalar", "Out Gain-0", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 ); cmDspInst_t* ogain0 = cmDspSysAllocInst(h,"Scalar", "Out Gain-0", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
cmDspInst_t* ogain1 = cmDspSysAllocInst(h,"Scalar", "Out Gain-1", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 ); cmDspInst_t* ogain1 = cmDspSysAllocInst(h,"Scalar", "Out Gain-1", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
cmDspInst_t* ogain2 = cmDspSysAllocInst(h,"Scalar", "Out Gain-2", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 ); cmDspInst_t* ogain2 = cmDspSysAllocInst(h,"Scalar", "Out Gain-2", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
cmDspInst_t* ogain3 = cmDspSysAllocInst(h,"Scalar", "Out Gain-3", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 ); cmDspInst_t* ogain3 = cmDspSysAllocInst(h,"Scalar", "Out Gain-3", 5, kNumberDuiId, 0.0, 10.0,0.01, 1.0 );
cmDspInst_t* scLoc = cmDspSysAllocInst(h,"Scalar", "Sc Loc", 5, kNumberDuiId, 0.0, 3000.0, 1.0, 0.0 ); //cmDspInst_t* scLoc = cmDspSysAllocInst(h,"Scalar", "Sc Loc", 5, kNumberDuiId, 0.0, 3000.0, 1.0, 0.0 );
// Audio file recording // Audio file recording
cmDspInst_t* recdGain= cmDspSysAllocInst(h,"Scalar", "Recd Gain", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.5 ); cmDspInst_t* recdGain= cmDspSysAllocInst(h,"Scalar", "Recd Gain", 5, kNumberDuiId, 0.0, 100.0,0.01, 1.5 );
@ -849,98 +637,6 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspInst_t* mi0p = cmDspSysAllocInst(h,"AMeter","In 0", 0); cmDspInst_t* mi0p = cmDspSysAllocInst(h,"AMeter","In 0", 0);
cmDspInst_t* mi1p = cmDspSysAllocInst(h,"AMeter","In 1", 0); cmDspInst_t* mi1p = cmDspSysAllocInst(h,"AMeter","In 1", 0);
if((rc = cmDspSysLastRC(h)) != kOkDspRC )
return rc;
// Output Audio file recording.
cmDspSysInstallCb(h, recdGain,"val", afop, "gain0", NULL );
cmDspSysInstallCb(h, recdGain,"val", afop, "gain1", NULL );
cmDspSysInstallCb(h, recdChk, "out", recdPtS, "on", NULL );
cmDspSysInstallCb(h, recdChk, "out", recdPtS, "off", NULL );
cmDspSysInstallCb(h, recdPtS, "out", afop, "sel", NULL );
// Audio connections
cmDspSysConnectAudio(h, php, "out", wtp, "phs" ); // phs -> wt
if( useWtFl )
{
cmDspSysConnectAudio(h, wtp, "out", au0Sw, "a-in-0" ); // wt -> sw
cmDspSysConnectAudio(h, ai0p, "out", au0Sw, "a-in-1" ); // ain -> sw
//cmDspSysConnectAudio(h, ci0p, "out", au0Sw, "a-in-1" );
cmDspSysConnectAudio(h, au0Sw, "a-out", rpp, "in-0"); // sw -> rcdply
cmDspSysConnectAudio(h, au0Sw, "a-out", c0.kr0,"in" ); // sw -> kr
//cmDspSysConnectAudio(h, au0Sw, "a-out", c0.kr1,"in" ); // sw -> kr
cmDspSysConnectAudio(h, au0Sw, "a-out", mi0p, "in" ); // sw -> meter
}
else
{
cmDspSysConnectAudio(h, ai0p, "out", rpp, "in-0"); // sw -> rcdply
cmDspSysConnectAudio(h, ai0p, "out", c0.kr0, "in" ); // ain -> sw
//cmDspSysConnectAudio(h, ai0p, "out", c0.kr1, "in" ); // ain -> sw
cmDspSysConnectAudio(h, ai0p, "out", mi0p, "in" );
}
if( fragFl )
{
cmDspSysConnectAudio(h, c0.cmp, "out", mix0, "in-0" ); // cmp -> mix 0
cmDspSysConnectAudio(h, rpp, "out-0", c2.kr0,"in" );
//cmDspSysConnectAudio(h, rpp, "out-0", c2.kr1,"in" );
cmDspSysConnectAudio(h, c2.cmp, "out", mix0, "in-1"); // rpp -> mix 1
cmDspSysConnectAudio(h, mix0, "out", ao0p, "in" ); // mix -> aout
}
else
{
cmDspSysConnectAudio(h, c0.cmp, "out", ao0p, "in" );
//cmDspSysConnectAudio(h, wtp, "out", ao0p, "in" );
}
if( useChain1Fl )
{
if( useWtFl )
{
cmDspSysConnectAudio(h, wtp, "out", au1Sw, "a-in-0" ); // wt -> sw
cmDspSysConnectAudio(h, ai1p, "out", au1Sw, "a-in-1" ); // ain -> sw
//cmDspSysConnectAudio(h, ci1p, "out", au1Sw, "a-in-1" );
cmDspSysConnectAudio(h, au1Sw, "a-out", rpp, "in-1"); // sw -> rcdply
cmDspSysConnectAudio(h, au1Sw, "a-out", c1.kr0,"in" ); // sw -> kr
//cmDspSysConnectAudio(h, au1Sw, "a-out", c1.kr1,"in" ); // sw -> kr
cmDspSysConnectAudio(h, au1Sw, "a-out", mi1p, "in" ); // sw -> meter
}
else
{
cmDspSysConnectAudio(h, ai1p, "out", rpp, "in-1"); // sw -> rcdply
cmDspSysConnectAudio(h, ai1p, "out", c1.kr0, "in" ); // ain -> sw
//cmDspSysConnectAudio(h, ai1p, "out", c1.kr1, "in" ); // ain -> sw
cmDspSysConnectAudio(h, ai1p, "out", mi1p, "in" );
}
if( fragFl )
{
cmDspSysConnectAudio(h, c1.cmp, "out", mix1, "in-0" ); // cmp -> mix 0
cmDspSysConnectAudio(h, rpp, "out-1", c3.kr0, "in" );
//cmDspSysConnectAudio(h, rpp, "out-1", c3.kr1, "in" );
cmDspSysConnectAudio(h, c3.cmp, "out", mix1, "in-1"); // rpp -> mix 1
cmDspSysConnectAudio(h, mix1, "out", ao1p, "in" ); // mix -> aout
}
else
{
cmDspSysConnectAudio(h, c1.cmp, "out", ao1p, "in" ); // cmp -> mix 0
//cmDspSysConnectAudio(h, wtp, "out", ao1p, "in" );
}
}
cmDspSysConnectAudio(h, c0.cmp, "out", afop, "in0" ); // comp -> audio_file_out
cmDspSysConnectAudio(h, c1.cmp, "out", afop, "in1" );
//cmDspSysConnectAudio(h, ai0p, "out", afop, "in0" ); // comp -> audio_file_out
//cmDspSysConnectAudio(h, ai1p, "out", afop, "in1" );
//cmDspSysConnectAudio(h, ai0p, "out", ao2p, "in" ); // direct through from input to
//cmDspSysConnectAudio(h, ai1p, "out", ao3p, "in" ); // output chs 2&3
//--------------- Preset controls //--------------- Preset controls
cmDspSysNewColumn(h,0); cmDspSysNewColumn(h,0);
@ -965,6 +661,226 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
if( useInputEqFl ) cmDspSysNewPage(h,"In EQ");
cmDspInst_t* eqLpByp0 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-0", 0.0 ) : NULL;
cmDspInst_t* eqLpMode0 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-LPF-Mode-0", 3, "biQuadEqMode", NULL, 1) : NULL;
cmDspInst_t* eqLpFc0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Hz-0", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqLpF0hz ) : NULL;
cmDspInst_t* eqLpQ0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Q-0", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqLpQ ) : NULL;
cmDspInst_t* eqLpGain0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Gain-0", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqLpGain ) : NULL;
cmDspInst_t* eqBpByp0 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-0", 0.0 ) : NULL;
cmDspInst_t* eqBpMode0 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-BPF-Mode-0", 3, "biQuadEqMode", NULL, 3) : NULL;
cmDspInst_t* eqBpFc0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Hz-0", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqBpF0hz ) : NULL;
cmDspInst_t* eqBpQ0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Q-0", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqBpQ ) : NULL;
cmDspInst_t* eqBpGain0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Gain-0", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqBpGain ) : NULL;
cmDspInst_t* eqHpByp0 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-0", 0.0 ) : NULL;
cmDspInst_t* eqHpMode0 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-HPF-Mode-0", 3, "biQuadEqMode", NULL, 2) : NULL;
cmDspInst_t* eqHpFc0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Hz-0", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqHpF0hz ) : NULL;
cmDspInst_t* eqHpQ0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Q-0", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqHpQ ) : NULL;
cmDspInst_t* eqHpGain0 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Gain-0", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqHpGain ) : NULL;
if( useInputEqFl ) cmDspSysNewColumn(h,0);
cmDspInst_t* eqLpByp1 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-1", 0.0 ) : NULL;
cmDspInst_t* eqLpMode1 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-LPF-Mode-1", 3, "biQuadEqMode", NULL, 1) : NULL;
cmDspInst_t* eqLpFc1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Hz-1", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqLpF0hz ) : NULL;
cmDspInst_t* eqLpQ1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Q-1", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqLpQ ) : NULL;
cmDspInst_t* eqLpGain1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Gain-1", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqLpGain ) : NULL;
cmDspInst_t* eqBpByp1 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-1", 0.0 ) : NULL;
cmDspInst_t* eqBpMode1 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-BPF-Mode-1", 3, "biQuadEqMode", NULL, 3) : NULL;
cmDspInst_t* eqBpFc1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Hz-1", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqBpF0hz ) : NULL;
cmDspInst_t* eqBpQ1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Q-1", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqBpQ ) : NULL;
cmDspInst_t* eqBpGain1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Gain-1", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqBpGain ) : NULL;
cmDspInst_t* eqHpByp1 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-1", 0.0 ) : NULL;
cmDspInst_t* eqHpMode1 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-HPF-Mode-1", 3, "biQuadEqMode", NULL, 2) : NULL;
cmDspInst_t* eqHpFc1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Hz-1", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqHpF0hz ) : NULL;
cmDspInst_t* eqHpQ1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Q-1", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqHpQ ) : NULL;
cmDspInst_t* eqHpGain1 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Gain-1", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqHpGain ) : NULL;
if( useInputEqFl ) cmDspSysNewColumn(h,0);
cmDspInst_t* eqLpByp2 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-2", 0.0 ) : NULL;
cmDspInst_t* eqLpMode2 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-LPF-Mode-2", 3, "biQuadEqMode", NULL, 1) : NULL;
cmDspInst_t* eqLpFc2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Hz-2", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqLpF0hz ) : NULL;
cmDspInst_t* eqLpQ2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Q-2", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqLpQ ) : NULL;
cmDspInst_t* eqLpGain2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Gain-2", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqLpGain ) : NULL;
cmDspInst_t* eqBpByp2 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-2", 0.0 ) : NULL;
cmDspInst_t* eqBpMode2 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-BPF-Mode-2", 3, "biQuadEqMode", NULL, 3) : NULL;
cmDspInst_t* eqBpFc2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Hz-2", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqBpF0hz ) : NULL;
cmDspInst_t* eqBpQ2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Q-2", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqBpQ ) : NULL;
cmDspInst_t* eqBpGain2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Gain-2", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqBpGain ) : NULL;
cmDspInst_t* eqHpByp2 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-2", 0.0 ) : NULL;
cmDspInst_t* eqHpMode2 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-HPF-Mode-2", 3, "biQuadEqMode", NULL, 2) : NULL;
cmDspInst_t* eqHpFc2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Hz-2", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqHpF0hz ) : NULL;
cmDspInst_t* eqHpQ2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Q-2", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqHpQ ) : NULL;
cmDspInst_t* eqHpGain2 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Gain-2", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqHpGain ) : NULL;
if( useInputEqFl ) cmDspSysNewColumn(h,0);
cmDspInst_t* eqLpByp3 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-3", 0.0 ) : NULL;
cmDspInst_t* eqLpMode3 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-LPF-Mode-3", 3, "biQuadEqMode", NULL, 1) : NULL;
cmDspInst_t* eqLpFc3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Hz-3", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqLpF0hz ) : NULL;
cmDspInst_t* eqLpQ3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Q-3", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqLpQ ) : NULL;
cmDspInst_t* eqLpGain3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-LPF-Gain-3", 5, kNumberDuiId, -300.0, 100.0, 0.5, eqLpGain ) : NULL;
cmDspInst_t* eqBpByp3 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-3", 0.0 ) : NULL;
cmDspInst_t* eqBpMode3 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-BPF-Mode-3", 3, "biQuadEqMode", NULL, 3) : NULL;
cmDspInst_t* eqBpFc3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Hz-3", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqBpF0hz ) : NULL;
cmDspInst_t* eqBpQ3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Q-3", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqBpQ ) : NULL;
cmDspInst_t* eqBpGain3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-BPF-Gain-3", 5, kNumberDuiId, -300.0, 100.0, 0.5, eqBpGain ) : NULL;
cmDspInst_t* eqHpByp3 = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-3", 0.0 ) : NULL;
cmDspInst_t* eqHpMode3 = useInputEqFl ? cmDspSysAllocInst( h,"MsgList","Eq-HPF-Mode-3", 3, "biQuadEqMode", NULL, 2) : NULL;
cmDspInst_t* eqHpFc3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Hz-3", 5, kNumberDuiId, 0.0, 20000.0, 0.5, eqHpF0hz ) : NULL;
cmDspInst_t* eqHpQ3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Q-3", 5, kNumberDuiId, 0.0, 100.0, 0.01, eqHpQ ) : NULL;
cmDspInst_t* eqHpGain3 = useInputEqFl ? cmDspSysAllocInst( h,"Scalar", "Eq-HPF-Gain-3", 5, kNumberDuiId, -100.0, 100.0, 0.5, eqHpGain ) : NULL;
if((rc = cmDspSysLastRC(h)) != kOkDspRC )
return rc;
// Output Audio file recording.
cmDspSysInstallCb(h, recdGain,"val", afop, "gain0", NULL );
cmDspSysInstallCb(h, recdGain,"val", afop, "gain1", NULL );
cmDspSysInstallCb(h, recdChk, "out", recdPtS, "on", NULL );
cmDspSysInstallCb(h, recdChk, "out", recdPtS, "off", NULL );
cmDspSysInstallCb(h, recdPtS, "out", afop, "sel", NULL );
// Audio connections
cmDspSysConnectAudio(h, php, "out", wtp, "phs" ); // phs -> wt
if( useInputEqFl )
{
cmDspSysConnectAudio(h, ai0p, "out", eqLpf_0, "in" ); // ain->eq
cmDspSysConnectAudio(h, ai0p, "out", eqBpf_0, "in" );
cmDspSysConnectAudio(h, ai0p, "out", eqHpf_0, "in" );
cmDspSysConnectAudio(h, eqLpf_0, "out", eqMx_0, "in-0"); // eq -> eqmix
cmDspSysConnectAudio(h, eqBpf_0, "out", eqMx_0, "in-1");
cmDspSysConnectAudio(h, eqHpf_0, "out", eqMx_0, "in-2");
cmDspSysConnectAudio(h, ai1p, "out", eqLpf_1, "in" ); // ain->eq
cmDspSysConnectAudio(h, ai1p, "out", eqBpf_1, "in" );
cmDspSysConnectAudio(h, ai1p, "out", eqHpf_1, "in" );
cmDspSysConnectAudio(h, eqLpf_1, "out", eqMx_1, "in-0"); // eq -> eqmix
cmDspSysConnectAudio(h, eqBpf_1, "out", eqMx_1, "in-1");
cmDspSysConnectAudio(h, eqHpf_1, "out", eqMx_1, "in-2");
cmDspSysConnectAudio(h, ai2p, "out", eqLpf_2, "in" ); // ain->eq
cmDspSysConnectAudio(h, ai2p, "out", eqBpf_2, "in" );
cmDspSysConnectAudio(h, ai2p, "out", eqHpf_2, "in" );
cmDspSysConnectAudio(h, eqLpf_2, "out", eqMx_2, "in-0"); // eq -> eqmix
cmDspSysConnectAudio(h, eqBpf_2, "out", eqMx_2, "in-1");
cmDspSysConnectAudio(h, eqHpf_2, "out", eqMx_2, "in-2");
cmDspSysConnectAudio(h, ai3p, "out", eqLpf_3, "in" ); // ain->eq
cmDspSysConnectAudio(h, ai3p, "out", eqBpf_3, "in" );
cmDspSysConnectAudio(h, ai3p, "out", eqHpf_3, "in" );
cmDspSysConnectAudio(h, eqLpf_3, "out", eqMx_3, "in-0"); // eq -> eqmix
cmDspSysConnectAudio(h, eqBpf_3, "out", eqMx_3, "in-1");
cmDspSysConnectAudio(h, eqHpf_3, "out", eqMx_3, "in-2");
}
cmDspSysConnectAudio(h, useInputEqFl ? ai0p : eqMx_0, "out", mx0p, "in-0" ); // eqmix -> input mix
cmDspSysConnectAudio(h, useInputEqFl ? ai1p : eqMx_1, "out", mx1p, "in-0" );
cmDspSysConnectAudio(h, useInputEqFl ? ai2p : eqMx_2, "out", mx0p, "in-1" );
cmDspSysConnectAudio(h, useInputEqFl ? ai3p : eqMx_3, "out", mx1p, "in-1" );
if( useWtFl )
{
cmDspSysConnectAudio(h, wtp, "out", au0Sw, "a-in-0" ); // wt -> sw
cmDspSysConnectAudio(h, mx0p, "out", au0Sw, "a-in-1" ); // ain -> sw
//cmDspSysConnectAudio(h, ci0p, "out", au0Sw, "a-in-1" );
cmDspSysConnectAudio(h, au0Sw, "a-out", rpp, "in-0"); // sw -> rcdply
cmDspSysConnectAudio(h, au0Sw, "a-out", c0.kr0,"in" ); // sw -> kr
//cmDspSysConnectAudio(h, au0Sw, "a-out", c0.kr1,"in" ); // sw -> kr
cmDspSysConnectAudio(h, au0Sw, "a-out", mi0p, "in" ); // sw -> meter
}
else
{
cmDspSysConnectAudio(h, mx0p, "out", rpp, "in-0"); // sw -> rcdply
cmDspSysConnectAudio(h, mx0p, "out", c0.kr0, "in" ); // ain -> sw
//cmDspSysConnectAudio(h, mx0p, "out", c0.kr1, "in" ); // ain -> sw
cmDspSysConnectAudio(h, mx0p, "out", mi0p, "in" );
}
if( fragFl )
{
cmDspSysConnectAudio(h, c0.cmp, "out", mix0, "in-0" ); // cmp -> mix 0
cmDspSysConnectAudio(h, rpp, "out-0", c2.kr0,"in" );
//cmDspSysConnectAudio(h, rpp, "out-0", c2.kr1,"in" );
cmDspSysConnectAudio(h, c2.cmp, "out", mix0, "in-1"); // rpp -> mix 1
cmDspSysConnectAudio(h, mix0, "out", apf0, "in" ); // mix -> aout
cmDspSysConnectAudio(h, apf0, "out", ao0p, "in" );
}
else
{
cmDspSysConnectAudio(h, c0.cmp, "out", apf0, "in" );
cmDspSysConnectAudio(h, c0.cmp, "out", apf2, "in" );
cmDspSysConnectAudio(h, apf0, "out", ao0p, "in" );
cmDspSysConnectAudio(h, apf2, "out", ao2p, "in" );
//cmDspSysConnectAudio(h, wtp, "out", apf0, "in" );
}
if( useChain1Fl )
{
if( useWtFl )
{
cmDspSysConnectAudio(h, wtp, "out", au1Sw, "a-in-0" ); // wt -> sw
cmDspSysConnectAudio(h, mx1p, "out", au1Sw, "a-in-1" ); // ain -> sw
//cmDspSysConnectAudio(h, ci1p, "out", au1Sw, "a-in-1" );
cmDspSysConnectAudio(h, au1Sw, "a-out", rpp, "in-1"); // sw -> rcdply
cmDspSysConnectAudio(h, au1Sw, "a-out", c1.kr0,"in" ); // sw -> kr
//cmDspSysConnectAudio(h, au1Sw, "a-out", c1.kr1,"in" ); // sw -> kr
cmDspSysConnectAudio(h, au1Sw, "a-out", mi1p, "in" ); // sw -> meter
}
else
{
cmDspSysConnectAudio(h, mx1p, "out", rpp, "in-1"); // sw -> rcdply
cmDspSysConnectAudio(h, mx1p, "out", c1.kr0, "in" ); // ain -> sw
//cmDspSysConnectAudio(h, mx1p, "out", c1.kr1, "in" ); // ain -> sw
cmDspSysConnectAudio(h, mx1p, "out", mi1p, "in" );
}
if( fragFl )
{
cmDspSysConnectAudio(h, c1.cmp, "out", mix1, "in-0" ); // cmp -> mix 0
cmDspSysConnectAudio(h, rpp, "out-1", c3.kr0, "in" );
//cmDspSysConnectAudio(h, rpp, "out-1", c3.kr1, "in" );
cmDspSysConnectAudio(h, c3.cmp, "out", mix1, "in-1"); // rpp -> mix 1
cmDspSysConnectAudio(h, mix1, "out", apf1, "in" ); // mix -> aout
cmDspSysConnectAudio(h, apf1, "out", ao1p, "in" );
}
else
{
cmDspSysConnectAudio(h, c1.cmp, "out", apf1, "in" ); // cmp -> mix 0
cmDspSysConnectAudio(h, c1.cmp, "out", apf3, "in" ); // cmp -> mix 0
cmDspSysConnectAudio(h, apf1, "out", ao1p, "in" );
cmDspSysConnectAudio(h, apf3, "out", ao3p, "in" );
//cmDspSysConnectAudio(h, wtp, "out", apf1, "in" );
}
}
cmDspSysConnectAudio(h, c0.cmp, "out", afop, "in0" ); // comp -> audio_file_out
cmDspSysConnectAudio(h, c1.cmp, "out", afop, "in1" );
//cmDspSysConnectAudio(h, ai0p, "out", afop, "in0" ); // comp -> audio_file_out
//cmDspSysConnectAudio(h, ai1p, "out", afop, "in1" );
//cmDspSysConnectAudio(h, ai0p, "out", ao2p, "in" ); // direct through from input to
//cmDspSysConnectAudio(h, ai1p, "out", ao3p, "in" ); // output chs 2&3
cmDspSysInstallCb( h, clrBtn, "sym", amp, "cmd", NULL ); // clear active meas. cmDspSysInstallCb( h, clrBtn, "sym", amp, "cmd", NULL ); // clear active meas.
cmDspSysInstallCb( h, prtBtn, "sym", amp, "cmd", NULL ); // print active meas cmDspSysInstallCb( h, prtBtn, "sym", amp, "cmd", NULL ); // print active meas
cmDspSysInstallCb( h, prtBtn, "sym", scp, "cmd", NULL ); cmDspSysInstallCb( h, prtBtn, "sym", scp, "cmd", NULL );
@ -1082,38 +998,41 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspSysInstallCb(h, scp, "sel", prp, "in", NULL ); cmDspSysInstallCb(h, scp, "sel", prp, "in", NULL );
// NOTE: THIS IS A DUPLICATE OF THE scp.sel CONNECTIONS // NOTE: THIS IS A DUPLICATE OF THE scp.sel CONNECTIONS
/*
cmDspSysInstallCb(h, scLoc, "val", sfp, "index", NULL ); cmDspSysInstallCb(h, scLoc, "val", sfp, "index", NULL );
cmDspSysInstallCb(h, scLoc, "val", modp,"reset", NULL ); cmDspSysInstallCb(h, scLoc, "val", modp,"reset", NULL );
cmDspSysInstallCb(h, scLoc, "val", modr,"reset", NULL ); cmDspSysInstallCb(h, scLoc, "val", modr,"reset", NULL );
cmDspSysInstallCb(h, scLoc, "val", rpp, "initIdx", NULL ); cmDspSysInstallCb(h, scLoc, "val", rpp, "initIdx", NULL );
cmDspSysInstallCb(h, scLoc, "val", prp, "in", NULL ); cmDspSysInstallCb(h, scLoc, "val", prp, "in", NULL );
*/
//cmDspSysInstallCb(h, reload,"out", modp, "reload", NULL ); //cmDspSysInstallCb(h, reload,"out", modp, "reload", NULL );
// MIDI file player to score follower // MIDI file player to score follower
cmDspSysInstallCb(h, mfp, "smpidx", siRt, "f-in",NULL ); cmDspSysInstallCb(h, mfp, "smpidx", siRt, "f-in",NULL );
cmDspSysInstallCb(h, siRt, "f-out-0", sfp, "smpidx",NULL ); cmDspSysInstallCb(h, siRt, "f-out-1", sfp, "smpidx",NULL );
// leave siRt.f-out-1 unconnected because it should be ignored in 'simulate mode' // leave siRt.f-out-1 unconnected because it should be ignored in 'simulate mode'
cmDspSysInstallCb(h, mfp, "d1", d1Rt, "f-in", NULL ); cmDspSysInstallCb(h, mfp, "d1", d1Rt, "f-in", NULL );
cmDspSysInstallCb(h, d1Rt, "f-out-0", sfp, "d1", NULL ); cmDspSysInstallCb(h, d1Rt, "f-out-1", sfp, "d1", NULL );
cmDspSysInstallCb(h, d1Rt, "f-out-1", nmp, "d1", NULL ); cmDspSysInstallCb(h, d1Rt, "f-out-1", nmp, "d1", NULL );
cmDspSysInstallCb(h, nmp, "d1", mop, "d1", NULL ); cmDspSysInstallCb(h, nmp, "d1", mop, "d1", NULL );
cmDspSysInstallCb(h, nmp, "d1", mo2p, "d1", NULL ); cmDspSysInstallCb(h, nmp, "d1", mo2p, "d1", NULL );
cmDspSysInstallCb(h, mfp, "d0", d0Rt, "f-in", NULL ); cmDspSysInstallCb(h, mfp, "d0", d0Rt, "f-in", NULL );
cmDspSysInstallCb(h, d0Rt, "f-out-0", sfp, "d0", NULL ); cmDspSysInstallCb(h, d0Rt, "f-out-1", sfp, "d0", NULL );
cmDspSysInstallCb(h, d0Rt, "f-out-1", nmp, "d0", NULL ); cmDspSysInstallCb(h, d0Rt, "f-out-1", nmp, "d0", NULL );
cmDspSysInstallCb(h, nmp, "d0", mop, "d0", NULL ); cmDspSysInstallCb(h, nmp, "d0", mop, "d0", NULL );
cmDspSysInstallCb(h, nmp, "d0", mo2p, "d0", NULL ); cmDspSysInstallCb(h, nmp, "d0", mo2p, "d0", NULL );
cmDspSysInstallCb(h, mfp, "status", stRt, "f-in", NULL ); cmDspSysInstallCb(h, mfp, "status", stRt, "f-in", NULL );
cmDspSysInstallCb(h, stRt, "f-out-0", sfp, "status",NULL ); cmDspSysInstallCb(h, stRt, "f-out-1", sfp, "status",NULL );
cmDspSysInstallCb(h, stRt, "f-out-1", nmp, "status",NULL ); cmDspSysInstallCb(h, stRt, "f-out-1", nmp, "status",NULL );
cmDspSysInstallCb(h, nmp, "status", mop, "status",NULL ); cmDspSysInstallCb(h, nmp, "status", mop, "status",NULL );
cmDspSysInstallCb(h, nmp, "status", mo2p, "status",NULL ); cmDspSysInstallCb(h, nmp, "status", mo2p, "status",NULL );
// MIDI input port // MIDI input port
//cmDspSysInstallCb(h, mip, "smpidx", sfp, "smpidx", NULL ); //cmDspSysInstallCb(h, mip, "smpidx", sfp, "smpidx", NULL );
//cmDspSysInstallCb(h, mip, "d1", sfp, "d1", NULL ); //cmDspSysInstallCb(h, mip, "d1", sfp, "d1", NULL );
@ -1122,9 +1041,9 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
// score follower to recd_play,modulator and printers // score follower to recd_play,modulator and printers
//cmDspSysInstallCb(h, sfp, "out", rpp, "index", NULL ); //cmDspSysInstallCb(h, sfp, "out", rpp, "index", NULL );
//cmDspSysInstallCb(h, sfp, "out", modp, "index", NULL ); cmDspSysInstallCb(h, sfp, "out", modp, "index", NULL );
//cmDspSysInstallCb(h, sfp, "out", modr, "index", NULL ); //cmDspSysInstallCb(h, sfp, "out", modr, "index", NULL );
//cmDspSysInstallCb(h, sfp, "recent", prp, "in", NULL ); // report 'recent' but only act on 'max' loc index cmDspSysInstallCb(h, sfp, "recent", prp, "in", NULL ); // report 'recent' but only act on 'max' loc index
//cmDspSysInstallCb(h, prtb, "sym", sfp, "cmd", NULL ); //cmDspSysInstallCb(h, prtb, "sym", sfp, "cmd", NULL );
//cmDspSysInstallCb(h, qtb, "sym", sfp, "cmd", NULL ); //cmDspSysInstallCb(h, qtb, "sym", sfp, "cmd", NULL );
@ -1135,6 +1054,8 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspSysInstallCb(h, igain0, "val", ai0p, "gain", NULL ); // input gain control cmDspSysInstallCb(h, igain0, "val", ai0p, "gain", NULL ); // input gain control
cmDspSysInstallCb(h, igain1, "val", ai1p, "gain", NULL ); cmDspSysInstallCb(h, igain1, "val", ai1p, "gain", NULL );
cmDspSysInstallCb(h, igain2, "val", ai2p, "gain", NULL ); // input gain control
cmDspSysInstallCb(h, igain3, "val", ai3p, "gain", NULL );
if( fragFl ) if( fragFl )
{ {
@ -1144,10 +1065,96 @@ cmDspRC_t _cmDspSysPgm_TimeLine(cmDspSysH_t h, void** userPtrPtr )
cmDspSysInstallCb(h, mutr, "out", mix1, "gain-1", NULL ); cmDspSysInstallCb(h, mutr, "out", mix1, "gain-1", NULL );
} }
cmDspSysInstallCb(h, apfByp, "out", apf0, "bypass", NULL ); // APF bypass
cmDspSysInstallCb(h, apfByp, "out", apf1, "bypass", NULL ); //
cmDspSysInstallCb(h, apfByp, "out", apf2, "bypass", NULL ); //
cmDspSysInstallCb(h, apfByp, "out", apf3, "bypass", NULL ); //
cmDspSysInstallCb(h, ogain0, "val", ao0p, "gain", NULL ); // output gain control cmDspSysInstallCb(h, ogain0, "val", ao0p, "gain", NULL ); // output gain control
cmDspSysInstallCb(h, ogain1, "val", ao1p, "gain", NULL ); cmDspSysInstallCb(h, ogain1, "val", ao1p, "gain", NULL );
//cmDspSysInstallCb(h, ogain2, "val", ao2p, "gain", NULL ); cmDspSysInstallCb(h, ogain2, "val", ao2p, "gain", NULL );
//cmDspSysInstallCb(h, ogain3, "val", ao3p, "gain", NULL ); cmDspSysInstallCb(h, ogain3, "val", ao3p, "gain", NULL );
if( useInputEqFl )
{
cmDspSysInstallCb(h, eqLpByp0, "out", eqLpf_0, "bypass", NULL);
cmDspSysInstallCb(h, eqLpMode0, "mode",eqLpf_0, "mode", NULL );
cmDspSysInstallCb(h, eqLpFc0, "val", eqLpf_0, "f0", NULL );
cmDspSysInstallCb(h, eqLpQ0, "val", eqLpf_0, "Q", NULL );
cmDspSysInstallCb(h, eqLpGain0, "val", eqLpf_0, "gain", NULL );
cmDspSysInstallCb(h, eqBpByp0, "out", eqBpf_0, "bypass", NULL);
cmDspSysInstallCb(h, eqBpMode0, "mode",eqBpf_0, "mode", NULL );
cmDspSysInstallCb(h, eqBpFc0, "val", eqBpf_0, "f0", NULL );
cmDspSysInstallCb(h, eqBpQ0, "val", eqBpf_0, "Q", NULL );
cmDspSysInstallCb(h, eqBpGain0, "val", eqBpf_0, "gain", NULL );
cmDspSysInstallCb(h, eqHpByp0, "out", eqHpf_0, "bypass", NULL);
cmDspSysInstallCb(h, eqHpMode0, "mode",eqHpf_0, "mode", NULL );
cmDspSysInstallCb(h, eqHpFc0, "val", eqHpf_0, "f0", NULL );
cmDspSysInstallCb(h, eqHpQ0, "val", eqHpf_0, "Q", NULL );
cmDspSysInstallCb(h, eqHpGain0, "val", eqHpf_0, "gain", NULL );
cmDspSysInstallCb(h, eqLpByp1, "out", eqLpf_1, "bypass", NULL);
cmDspSysInstallCb(h, eqLpMode1, "mode",eqLpf_1, "mode", NULL );
cmDspSysInstallCb(h, eqLpFc1, "val", eqLpf_1, "f0", NULL );
cmDspSysInstallCb(h, eqLpQ1, "val", eqLpf_1, "Q", NULL );
cmDspSysInstallCb(h, eqLpGain1, "val", eqLpf_1, "gain", NULL );
cmDspSysInstallCb(h, eqBpByp1, "out", eqBpf_1, "bypass", NULL);
cmDspSysInstallCb(h, eqBpMode1, "mode",eqBpf_1, "mode", NULL );
cmDspSysInstallCb(h, eqBpFc1, "val", eqBpf_1, "f0", NULL );
cmDspSysInstallCb(h, eqBpQ1, "val", eqBpf_1, "Q", NULL );
cmDspSysInstallCb(h, eqBpGain1, "val", eqBpf_1, "gain", NULL );
cmDspSysInstallCb(h, eqHpByp1, "out", eqHpf_1, "bypass", NULL);
cmDspSysInstallCb(h, eqHpMode1, "mode",eqHpf_1, "mode", NULL );
cmDspSysInstallCb(h, eqHpFc1, "val", eqHpf_1, "f0", NULL );
cmDspSysInstallCb(h, eqHpQ1, "val", eqHpf_1, "Q", NULL );
cmDspSysInstallCb(h, eqHpGain1, "val", eqHpf_1, "gain", NULL );
cmDspSysInstallCb(h, eqLpByp2, "out", eqLpf_2, "bypass", NULL);
cmDspSysInstallCb(h, eqLpMode2, "mode",eqLpf_2, "mode", NULL );
cmDspSysInstallCb(h, eqLpFc2, "val", eqLpf_2, "f0", NULL );
cmDspSysInstallCb(h, eqLpQ2, "val", eqLpf_2, "Q", NULL );
cmDspSysInstallCb(h, eqLpGain2, "val", eqLpf_2, "gain", NULL );
cmDspSysInstallCb(h, eqBpByp2, "out", eqBpf_2, "bypass", NULL);
cmDspSysInstallCb(h, eqBpMode2, "mode",eqBpf_2, "mode", NULL );
cmDspSysInstallCb(h, eqBpFc2, "val", eqBpf_2, "f0", NULL );
cmDspSysInstallCb(h, eqBpQ2, "val", eqBpf_2, "Q", NULL );
cmDspSysInstallCb(h, eqBpGain2, "val", eqBpf_2, "gain", NULL );
cmDspSysInstallCb(h, eqHpByp2, "out", eqHpf_2, "bypass", NULL);
cmDspSysInstallCb(h, eqHpMode2, "mode",eqHpf_2, "mode", NULL );
cmDspSysInstallCb(h, eqHpFc2, "val", eqHpf_2, "f0", NULL );
cmDspSysInstallCb(h, eqHpQ2, "val", eqHpf_2, "Q", NULL );
cmDspSysInstallCb(h, eqHpGain2, "val", eqHpf_2, "gain", NULL );
cmDspSysInstallCb(h, eqLpByp3, "out", eqLpf_3, "bypass", NULL);
cmDspSysInstallCb(h, eqLpMode3, "mode",eqLpf_3, "mode", NULL );
cmDspSysInstallCb(h, eqLpFc3, "val", eqLpf_3, "f0", NULL );
cmDspSysInstallCb(h, eqLpQ3, "val", eqLpf_3, "Q", NULL );
cmDspSysInstallCb(h, eqLpGain3, "val", eqLpf_3, "gain", NULL );
cmDspSysInstallCb(h, eqBpByp3, "out", eqBpf_3, "bypass", NULL);
cmDspSysInstallCb(h, eqBpMode3, "mode",eqBpf_3, "mode", NULL );
cmDspSysInstallCb(h, eqBpFc3, "val", eqBpf_3, "f0", NULL );
cmDspSysInstallCb(h, eqBpQ3, "val", eqBpf_3, "Q", NULL );
cmDspSysInstallCb(h, eqBpGain3, "val", eqBpf_3, "gain", NULL );
cmDspSysInstallCb(h, eqHpByp3, "out", eqHpf_3, "bypass", NULL);
cmDspSysInstallCb(h, eqHpMode3, "mode",eqHpf_3, "mode", NULL );
cmDspSysInstallCb(h, eqHpFc3, "val", eqHpf_3, "f0", NULL );
cmDspSysInstallCb(h, eqHpQ3, "val", eqHpf_3, "Q", NULL );
cmDspSysInstallCb(h, eqHpGain3, "val", eqHpf_3, "gain", NULL );
}
return rc; return rc;
} }

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,8 @@ extern "C" {
cmApRC_t cmApOsxDeviceStop( unsigned devIdx ); cmApRC_t cmApOsxDeviceStop( unsigned devIdx );
bool cmApOsxDeviceIsStarted( unsigned devIdx ); bool cmApOsxDeviceIsStarted( unsigned devIdx );
void cmApOsxTest( cmRpt_t* );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -13,7 +13,7 @@ void VECT_OP_FUNC(VPrint)( cmRpt_t* rpt, const char* fmt, ... )
va_end(vl); va_end(vl);
} }
void VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rowCnt, unsigned colCnt, const VECT_OP_TYPE* sbp, unsigned fieldWidth, unsigned decPlCnt, const char* fmt, unsigned flags ) void VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rowCnt, unsigned colCnt, const VECT_OP_TYPE* sbp, int fieldWidth, int decPlCnt, const char* fmt, unsigned flags )
{ {
unsigned cci; unsigned cci;
unsigned outColCnt = 10; unsigned outColCnt = 10;
@ -1287,7 +1287,11 @@ VECT_OP_TYPE* VECT_OP_FUNC(LUInverse)(VECT_OP_TYPE* dp, int_lap_t* ipiv, int drn
// Calculate the NB factor for LWORK - // Calculate the NB factor for LWORK -
// The two args are length of string args 'funcNameStr' and ' '. // The two args are length of string args 'funcNameStr' and ' '.
// It is not clear how many 'n' args are requred so all are passed set to 'drn' // It is not clear how many 'n' args are requred so all are passed set to 'drn'
#ifdef OS_OSX
int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4 );
#else
int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4, strlen(funcNameStr), 1 ); int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4, strlen(funcNameStr), 1 );
#endif
VECT_OP_TYPE w[drn * nb]; // allocate working memory VECT_OP_TYPE w[drn * nb]; // allocate working memory
int_lap_t info; int_lap_t info;

View File

@ -2,7 +2,7 @@
/// Vector operations interface. /// Vector operations interface.
/// Setting fieldWidth or decPltCnt to to negative values result in fieldWidth == 10 or decPlCnt == 4 /// Setting fieldWidth or decPltCnt to to negative values result in fieldWidth == 10 or decPlCnt == 4
void VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp, unsigned fieldWidth, unsigned decPlCnt, const char* fmt, unsigned flags ); void VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp, int fieldWidth, int decPlCnt, const char* fmt, unsigned flags );
void VECT_OP_FUNC(Print)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp ); void VECT_OP_FUNC(Print)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );
void VECT_OP_FUNC(PrintE)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp ); void VECT_OP_FUNC(PrintE)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );