cmDspKr.c : Added option to cmDspScFol to generate score measurements
(dyn,even,tempo,cost) as they are computed.
This commit is contained in:
parent
e7429a773c
commit
b95348f047
@ -872,9 +872,9 @@ enum
|
|||||||
{
|
{
|
||||||
kFnSfId,
|
kFnSfId,
|
||||||
kBufCntSfId,
|
kBufCntSfId,
|
||||||
kMinLkAhdSfId,
|
|
||||||
kMaxWndCntSfId,
|
kMaxWndCntSfId,
|
||||||
kMinVelSfId,
|
kMinVelSfId,
|
||||||
|
kMeasflSfId,
|
||||||
kIndexSfId,
|
kIndexSfId,
|
||||||
kStatusSfId,
|
kStatusSfId,
|
||||||
kD0SfId,
|
kD0SfId,
|
||||||
@ -883,10 +883,10 @@ enum
|
|||||||
kCmdSfId,
|
kCmdSfId,
|
||||||
kOutSfId,
|
kOutSfId,
|
||||||
kRecentSfId,
|
kRecentSfId,
|
||||||
kDynSfId,
|
kVlocSfId,
|
||||||
kEvenSfId,
|
kVtypSfId,
|
||||||
kTempoSfId,
|
kVvalSfId,
|
||||||
kCostSfId,
|
kVcostSfId,
|
||||||
kSymSfId
|
kSymSfId
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -909,17 +909,18 @@ typedef struct cmDspScFol_str
|
|||||||
unsigned printSymId;
|
unsigned printSymId;
|
||||||
unsigned quietSymId;
|
unsigned quietSymId;
|
||||||
unsigned maxScLocIdx;
|
unsigned maxScLocIdx;
|
||||||
|
bool liveFl;
|
||||||
} cmDspScFol_t;
|
} cmDspScFol_t;
|
||||||
|
|
||||||
cmDspInst_t* _cmDspScFolAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsigned storeSymId, unsigned instSymId, unsigned id, unsigned va_cnt, va_list vl )
|
cmDspInst_t* _cmDspScFolAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsigned storeSymId, unsigned instSymId, unsigned id, unsigned va_cnt, va_list vl )
|
||||||
{
|
{
|
||||||
cmDspVarArg_t args[] =
|
cmDspVarArg_t args[] =
|
||||||
{
|
{
|
||||||
{ "fn", kFnSfId, 0, 0, kInDsvFl | kStrzDsvFl | kReqArgDsvFl, "Score file." },
|
{ "fn", kFnSfId, 0, 0, kInDsvFl | kStrzDsvFl | kReqArgDsvFl, "Score file." },
|
||||||
{ "bufcnt",kBufCntSfId, 0, 0, kInDsvFl | kUIntDsvFl, "Event buffer element count." },
|
{ "bufcnt",kBufCntSfId, 0, 0, kInDsvFl | kUIntDsvFl | kOptArgDsvFl, "Event buffer element count." },
|
||||||
{ "lkahd", kMinLkAhdSfId, 0, 0, kInDsvFl | kUIntDsvFl, "Minimum window look-ahead."},
|
{ "wndcnt",kMaxWndCntSfId,0, 0, kInDsvFl | kUIntDsvFl | kOptArgDsvFl, "Maximum window length."},
|
||||||
{ "wndcnt",kMaxWndCntSfId,0, 0, kInDsvFl | kUIntDsvFl, "Maximum window length."},
|
{ "minvel",kMinVelSfId, 0, 0, kInDsvFl | kUIntDsvFl | kOptArgDsvFl, "Minimum velocity."},
|
||||||
{ "minvel",kMinVelSfId, 0, 0, kInDsvFl | kUIntDsvFl, "Minimum velocity."},
|
{ "measfl",kMeasflSfId, 0, 0, kInDsvFl | kBoolDsvFl | kOptArgDsvFl, "Enable measurements"},
|
||||||
{ "index", kIndexSfId, 0, 0, kInDsvFl | kUIntDsvFl, "Tracking start location."},
|
{ "index", kIndexSfId, 0, 0, kInDsvFl | kUIntDsvFl, "Tracking start location."},
|
||||||
{ "status",kStatusSfId, 0, 0, kInDsvFl | kUIntDsvFl, "MIDI status byte"},
|
{ "status",kStatusSfId, 0, 0, kInDsvFl | kUIntDsvFl, "MIDI status byte"},
|
||||||
{ "d0", kD0SfId, 0, 0, kInDsvFl | kUIntDsvFl, "MIDI data byte 0"},
|
{ "d0", kD0SfId, 0, 0, kInDsvFl | kUIntDsvFl, "MIDI data byte 0"},
|
||||||
@ -928,10 +929,10 @@ cmDspInst_t* _cmDspScFolAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsigned
|
|||||||
{ "cmd", kCmdSfId, 0, 0, kInDsvFl | kSymDsvFl, "Command input: print | quiet"},
|
{ "cmd", kCmdSfId, 0, 0, kInDsvFl | kSymDsvFl, "Command input: print | quiet"},
|
||||||
{ "out", kOutSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Maximum score location index."},
|
{ "out", kOutSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Maximum score location index."},
|
||||||
{ "recent",kRecentSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Most recent score location index."},
|
{ "recent",kRecentSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Most recent score location index."},
|
||||||
{ "dyn", kDynSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Dynamic value."},
|
{ "vloc", kVlocSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Score location at which the variable value becomes active."},
|
||||||
{ "even", kEvenSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Evenness value."},
|
{ "vtyp", kVtypSfId, 0, 0, kOutDsvFl| kUIntDsvFl, "Variable type: 0=even=kEvenVarScId 1=dyn=kDynVarScId 2=tempo=kTempoVarScId."},
|
||||||
{ "tempo", kTempoSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Tempo value."},
|
{ "vval", kVvalSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Variable value."},
|
||||||
{ "cost", kCostSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Match cost value."},
|
{ "vcost", kVcostSfId, 0, 0, kOutDsvFl| kDoubleDsvFl, "Variable match cost value."},
|
||||||
{ "sym", kSymSfId, 0, 0, kOutDsvFl| kSymDsvFl, "Symbol associated with a global variable which has changed value."},
|
{ "sym", kSymSfId, 0, 0, kOutDsvFl| kSymDsvFl, "Symbol associated with a global variable which has changed value."},
|
||||||
{ NULL, 0, 0, 0, 0, NULL }
|
{ NULL, 0, 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
@ -949,15 +950,11 @@ cmDspInst_t* _cmDspScFolAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsigned
|
|||||||
|
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kBufCntSfId, 0, 7);
|
cmDspSetDefaultUInt( ctx, &p->inst, kBufCntSfId, 0, 7);
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kMaxWndCntSfId, 0, 10);
|
cmDspSetDefaultUInt( ctx, &p->inst, kMaxWndCntSfId, 0, 10);
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kMinLkAhdSfId, 0, 3);
|
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kMinVelSfId, 0, 5);
|
cmDspSetDefaultUInt( ctx, &p->inst, kMinVelSfId, 0, 5);
|
||||||
|
cmDspSetDefaultBool( ctx, &p->inst, kMeasflSfId, 0, 0);
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kIndexSfId, 0, 0);
|
cmDspSetDefaultUInt( ctx, &p->inst, kIndexSfId, 0, 0);
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kOutSfId, 0, 0);
|
cmDspSetDefaultUInt( ctx, &p->inst, kOutSfId, 0, 0);
|
||||||
cmDspSetDefaultUInt( ctx, &p->inst, kRecentSfId, 0, 0);
|
cmDspSetDefaultUInt( ctx, &p->inst, kRecentSfId, 0, 0);
|
||||||
cmDspSetDefaultDouble( ctx, &p->inst, kDynSfId, 0, 0);
|
|
||||||
cmDspSetDefaultDouble( ctx, &p->inst, kEvenSfId, 0, 0);
|
|
||||||
cmDspSetDefaultDouble( ctx, &p->inst, kTempoSfId, 0, 0);
|
|
||||||
cmDspSetDefaultDouble( ctx, &p->inst, kCostSfId, 0, 0);
|
|
||||||
|
|
||||||
cmDspSetDefaultSymbol(ctx,&p->inst, kCmdSfId, p->quietSymId );
|
cmDspSetDefaultSymbol(ctx,&p->inst, kCmdSfId, p->quietSymId );
|
||||||
|
|
||||||
@ -990,6 +987,7 @@ void _cmScFolMatcherCb( cmScMatcher* p, void* arg, cmScMatcherResult_t* rp )
|
|||||||
if(ap->sfp->smp->set[i].value != DBL_MAX )
|
if(ap->sfp->smp->set[i].value != DBL_MAX )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
switch( ap->sfp->smp->set[i].sp->varId )
|
switch( ap->sfp->smp->set[i].sp->varId )
|
||||||
{
|
{
|
||||||
case kEvenVarScId:
|
case kEvenVarScId:
|
||||||
@ -1009,7 +1007,7 @@ void _cmScFolMatcherCb( cmScMatcher* p, void* arg, cmScMatcherResult_t* rp )
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmDspSetDouble(ap->ctx,inst,kCostSfId,ap->sfp->smp->set[i].match_cost);
|
cmDspSetDouble(ap->ctx,inst,kCostSfId,ap->sfp->smp->set[i].match_cost);
|
||||||
|
*/
|
||||||
|
|
||||||
// Set the values in the global variable storage
|
// Set the values in the global variable storage
|
||||||
cmDspValue_t vv,cv;
|
cmDspValue_t vv,cv;
|
||||||
@ -1024,6 +1022,14 @@ void _cmScFolMatcherCb( cmScMatcher* p, void* arg, cmScMatcherResult_t* rp )
|
|||||||
|
|
||||||
cmDspSetSymbol(ap->ctx,inst,kSymSfId,ap->sfp->smp->set[i].sp->symArray[j]);
|
cmDspSetSymbol(ap->ctx,inst,kSymSfId,ap->sfp->smp->set[i].sp->symArray[j]);
|
||||||
cmDspSetSymbol(ap->ctx,inst,kSymSfId,ap->sfp->smp->set[i].sp->costSymArray[j]);
|
cmDspSetSymbol(ap->ctx,inst,kSymSfId,ap->sfp->smp->set[i].sp->costSymArray[j]);
|
||||||
|
|
||||||
|
if( cmDspBool(inst,kMeasflSfId) )
|
||||||
|
{
|
||||||
|
cmDspSetUInt( ap->ctx, inst, kVlocSfId, ap->sfp->smp->set[i].sp->sectArray[j]->locPtr->index);
|
||||||
|
cmDspSetDouble( ap->ctx, inst, kVvalSfId, ap->sfp->smp->set[i].value);
|
||||||
|
cmDspSetDouble( ap->ctx, inst, kVcostSfId, ap->sfp->smp->set[i].match_cost);
|
||||||
|
cmDspSetUInt( ap->ctx, inst, kVtypSfId, ap->sfp->smp->set[i].sp->varId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2364,6 +2370,9 @@ cmDspRC_t _cmDspRecdPlayOpenScore( cmDspCtx_t* ctx, cmDspInst_t* inst )
|
|||||||
double maxLaSecs = cmDspDouble(inst,kMaxLaSecsPrId);
|
double maxLaSecs = cmDspDouble(inst,kMaxLaSecsPrId);
|
||||||
double curLaSecs = cmDspDouble(inst,kCurLaSecsPrId);
|
double curLaSecs = cmDspDouble(inst,kCurLaSecsPrId);
|
||||||
|
|
||||||
|
printf("2 max la secs:%f\n",cmDspDouble(inst,kMaxLaSecsPrId));
|
||||||
|
|
||||||
|
|
||||||
if((p->rcdply = cmRecdPlayAlloc(ctx->cmProcCtx, NULL, cmDspSampleRate(ctx), markerCnt, p->chCnt, initFragSecs, maxLaSecs, curLaSecs)) == NULL)
|
if((p->rcdply = cmRecdPlayAlloc(ctx->cmProcCtx, NULL, cmDspSampleRate(ctx), markerCnt, p->chCnt, initFragSecs, maxLaSecs, curLaSecs)) == NULL)
|
||||||
return cmErrMsg(&inst->classPtr->err,kSubSysFailDspRC,"Unable to create the internal recorder-player object.");
|
return cmErrMsg(&inst->classPtr->err,kSubSysFailDspRC,"Unable to create the internal recorder-player object.");
|
||||||
|
|
||||||
@ -2393,11 +2402,11 @@ cmDspInst_t* _cmDspRecdPlayAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsig
|
|||||||
|
|
||||||
cmDspRecdPlay_t* p = cmDspInstAllocV(cmDspRecdPlay_t,ctx,classPtr,instSymId,id,storeSymId,va_cnt,vl1,
|
cmDspRecdPlay_t* p = cmDspInstAllocV(cmDspRecdPlay_t,ctx,classPtr,instSymId,id,storeSymId,va_cnt,vl1,
|
||||||
1, "chs", kChCntPrId, 0,0, kUIntDsvFl | kReqArgDsvFl, "channel count.",
|
1, "chs", kChCntPrId, 0,0, kUIntDsvFl | kReqArgDsvFl, "channel count.",
|
||||||
1, "fn", kFnPrId, 0,0, kInDsvFl | kStrzDsvFl | kReqArgDsvFl, "Score file." ,
|
1, "fn", kFnPrId, 0,0, kInDsvFl | kStrzDsvFl | kReqArgDsvFl, "Score file." ,
|
||||||
1, "secs", kSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kReqArgDsvFl, "Initial fragment allocation in seconds.",
|
1, "secs", kSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kReqArgDsvFl, "Initial fragment allocation in seconds.",
|
||||||
1, "maxla", kMaxLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl, "Maximum look-ahead buffer in seconds.",
|
1, "maxla", kMaxLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kReqArgDsvFl, "Maximum look-ahead buffer in seconds.",
|
||||||
1, "curla", kCurLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl, "Current look-head buffer in seconds.",
|
1, "curla", kCurLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kOptArgDsvFl, "Current look-head buffer in seconds.",
|
||||||
1, "frate", kFadeRatePrId, 0,0, kInDsvFl | kDoubleDsvFl, "Fade rate in dB per second.",
|
1, "frate", kFadeRatePrId, 0,0, kInDsvFl | kDoubleDsvFl | kOptArgDsvFl, "Fade rate in dB per second.",
|
||||||
1, "index", kScLocIdxPrId, 0,0, kInDsvFl | kUIntDsvFl, "Score follower location index.",
|
1, "index", kScLocIdxPrId, 0,0, kInDsvFl | kUIntDsvFl, "Score follower location index.",
|
||||||
1, "cmd", kCmdPrId, 0,0, kInDsvFl | kSymDsvFl, "on=reset off=stop.",
|
1, "cmd", kCmdPrId, 0,0, kInDsvFl | kSymDsvFl, "on=reset off=stop.",
|
||||||
chCnt, "in", kInAudioBasePrId,0,1, kInDsvFl | kAudioBufDsvFl, "Audio input",
|
chCnt, "in", kInAudioBasePrId,0,1, kInDsvFl | kAudioBufDsvFl, "Audio input",
|
||||||
@ -2412,11 +2421,16 @@ cmDspInst_t* _cmDspRecdPlayAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsig
|
|||||||
p->chCnt = chCnt;
|
p->chCnt = chCnt;
|
||||||
p->scLocIdx = 0;
|
p->scLocIdx = 0;
|
||||||
|
|
||||||
|
printf("0 max la secs:%f\n",cmDspDouble(&p->inst,kMaxLaSecsPrId));
|
||||||
|
|
||||||
cmDspSetDefaultDouble(ctx,&p->inst, kSecsPrId, 0.0, 10.0 );
|
cmDspSetDefaultDouble(ctx,&p->inst, kSecsPrId, 0.0, 10.0 );
|
||||||
cmDspSetDefaultDouble(ctx,&p->inst, kMaxLaSecsPrId,0.0, 2.0);
|
cmDspSetDefaultDouble(ctx,&p->inst, kMaxLaSecsPrId,0.0, 2.0);
|
||||||
cmDspSetDefaultDouble(ctx,&p->inst, kCurLaSecsPrId,0.0, 0.1);
|
cmDspSetDefaultDouble(ctx,&p->inst, kCurLaSecsPrId,0.0, 0.1);
|
||||||
cmDspSetDefaultDouble(ctx,&p->inst, kFadeRatePrId, 0.0, 1.0);
|
cmDspSetDefaultDouble(ctx,&p->inst, kFadeRatePrId, 0.0, 1.0);
|
||||||
|
|
||||||
|
printf("1 max la secs:%f\n",cmDspDouble(&p->inst,kMaxLaSecsPrId));
|
||||||
|
|
||||||
|
|
||||||
return &p->inst;
|
return &p->inst;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2433,9 +2447,11 @@ cmDspRC_t _cmDspRecdPlayFree(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_
|
|||||||
|
|
||||||
cmDspRC_t _cmDspRecdPlayReset(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt )
|
cmDspRC_t _cmDspRecdPlayReset(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt )
|
||||||
{
|
{
|
||||||
cmDspApplyAllDefaults(ctx,inst);
|
cmDspRC_t rc;
|
||||||
|
if((rc = _cmDspRecdPlayOpenScore(ctx,inst)) == kOkDspRC )
|
||||||
|
cmDspApplyAllDefaults(ctx,inst);
|
||||||
|
|
||||||
return _cmDspRecdPlayOpenScore(ctx,inst);
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmDspRC_t _cmDspRecdPlayExec(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt )
|
cmDspRC_t _cmDspRecdPlayExec(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt )
|
||||||
@ -2484,6 +2500,9 @@ cmDspRC_t _cmDspRecdPlayRecv(cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_
|
|||||||
{
|
{
|
||||||
cmDspRecdPlay_t* p = (cmDspRecdPlay_t*)inst;
|
cmDspRecdPlay_t* p = (cmDspRecdPlay_t*)inst;
|
||||||
|
|
||||||
|
if( p->rcdply == NULL )
|
||||||
|
return kOkDspRC;
|
||||||
|
|
||||||
cmDspSetEvent(ctx,inst,evt);
|
cmDspSetEvent(ctx,inst,evt);
|
||||||
|
|
||||||
switch( evt->dstVarId )
|
switch( evt->dstVarId )
|
||||||
|
Loading…
Reference in New Issue
Block a user