merging recdplay updates from thunk onto mac
This commit is contained in:
commit
1d9455e9eb
40
cmProc4.c
40
cmProc4.c
@ -4352,6 +4352,46 @@ cmRC_t cmRecdPlayEndRecord( cmRecdPlay* p, unsigned labelSymId )
|
||||
return cmCtxRtCondition( &p->obj, cmInvalidArgRC, "The fragment label symbol id '%i' not found for 'end record'.",labelSymId);
|
||||
}
|
||||
|
||||
cmRC_t cmRecdPlayInsertRecord(cmRecdPlay* p, unsigned labelSymId, const cmChar_t* wavFn )
|
||||
{
|
||||
cmRC_t rc = cmOkRC;
|
||||
unsigned i;
|
||||
|
||||
for(i=0; i<p->fragCnt; ++i)
|
||||
if( p->frags[i].labelSymId == labelSymId )
|
||||
{
|
||||
cmAudioFileH_t afH = cmNullAudioFileH;
|
||||
cmAudioFileInfo_t afInfo;
|
||||
cmRC_t afRC = kOkAfRC;
|
||||
|
||||
// open the audio file
|
||||
if( cmAudioFileIsValid( afH = cmAudioFileNewOpen(wavFn, &afInfo, &afRC, p->obj.err.rpt )) == false )
|
||||
return cmCtxRtCondition( &p->obj, cmInvalidArgRC, "The audio file '%s' could not be opened'.",cmStringNullGuard(wavFn));
|
||||
|
||||
// ignore blank
|
||||
if( afInfo.frameCnt == 0 )
|
||||
return cmOkRC;
|
||||
|
||||
// allocate buffer space
|
||||
unsigned j;
|
||||
for(j=0; j<p->chCnt; ++j)
|
||||
p->frags[i].chArray[j] = cmMemResize(cmSample_t,p->frags[i].chArray[j],afInfo.frameCnt);
|
||||
|
||||
p->frags[i].allocCnt = afInfo.frameCnt;
|
||||
|
||||
// read samples into the buffer space
|
||||
unsigned chIdx = 0;
|
||||
unsigned chCnt = cmMin(p->chCnt,afInfo.chCnt);
|
||||
unsigned actFrmCnt = 0;
|
||||
if( cmAudioFileReadSample(afH,afInfo.frameCnt,chIdx,chCnt,&p->frags[i].chArray, &actFrmCnt) != kOkAfRC )
|
||||
return cmCtxRtCondition(&p->obj, cmSubSysFailRC, "Read failed on the audio file '%s'.",cmStringNullGuard(wavFn));
|
||||
|
||||
}
|
||||
|
||||
return cmCtxRtCondition( &p->obj, cmInvalidArgRC, "The fragment label symbol id '%i' not found for 'begin record'.",labelSymId);
|
||||
}
|
||||
|
||||
|
||||
cmRC_t cmRecdPlayBeginPlay( cmRecdPlay* p, unsigned labelSymId )
|
||||
{
|
||||
unsigned i;
|
||||
|
@ -688,6 +688,8 @@ extern "C" {
|
||||
|
||||
cmRC_t cmRecdPlayBeginRecord( cmRecdPlay* p, unsigned labelSymId );
|
||||
cmRC_t cmRecdPlayEndRecord( cmRecdPlay* p, unsigned labelSymId );
|
||||
cmRC_t cmRecdPlayInsertRecord(cmRecdPlay* p, unsigned labelSymId, const cmChar_t* wavFn );
|
||||
|
||||
cmRC_t cmRecdPlayBeginPlay( cmRecdPlay* p, unsigned labelSymId );
|
||||
cmRC_t cmRecdPlayEndPlay( cmRecdPlay* p, unsigned labelSymId );
|
||||
|
||||
|
@ -2485,6 +2485,8 @@ enum
|
||||
kMaxLaSecsPrId,
|
||||
kCurLaSecsPrId,
|
||||
kFadeRatePrId,
|
||||
kSegFnPrId,
|
||||
kSegLblPrId,
|
||||
kScLocIdxPrId,
|
||||
kCmdPrId,
|
||||
kInAudioBasePrId
|
||||
@ -2537,6 +2539,15 @@ cmDspRC_t _cmDspRecdPlayOpenScore( cmDspCtx_t* ctx, cmDspInst_t* inst )
|
||||
for(i=0; i<markerCnt; ++i)
|
||||
cmRecdPlayRegisterFrag(p->rcdply,i, cmScoreMarkerLabelSymbolId(p->scH,i ));
|
||||
|
||||
const cmChar_t* segFn = cmDspStrcz(inst,kSegFnPrId);
|
||||
const cmChar_t* segLbl= cmDspStrcz(inst,kSegLblPrId);
|
||||
|
||||
if( cmTextLength(segFn)>0 && cmTextLength(segLbl)>0 )
|
||||
{
|
||||
unsigned segSymId = cmSymTblRegisterSymbol(ctx->stH,segLbl);
|
||||
cmRecdPlayInsertRecord(p->rcdply,segSymId,segFn);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return rc;
|
||||
@ -2565,6 +2576,8 @@ cmDspInst_t* _cmDspRecdPlayAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsig
|
||||
1, "maxla", kMaxLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kReqArgDsvFl, "Maximum look-ahead buffer in seconds.",
|
||||
1, "curla", kCurLaSecsPrId, 0,0, kInDsvFl | kDoubleDsvFl | kOptArgDsvFl, "Current look-head buffer in seconds.",
|
||||
1, "frate", kFadeRatePrId, 0,0, kInDsvFl | kDoubleDsvFl | kOptArgDsvFl, "Fade rate in dB per second.",
|
||||
1, "segFn", kSegFnPrId, 0,0, kInDsvFl | kStrzDsvFl | kOptArgDsvFl, "Preload an audio segment.",
|
||||
1, "segLbl", kSegLblPrId, 0,0, kInDsvFl | kStrzDsvFl | kOptArgDsvFl, "Score symbol of preloaded audio segment.",
|
||||
1, "index", kScLocIdxPrId, 0,0, kInDsvFl | kUIntDsvFl, "Score follower location index.",
|
||||
1, "cmd", kCmdPrId, 0,0, kInDsvFl | kSymDsvFl, "on=reset off=stop.",
|
||||
chCnt, "in", kInAudioBasePrId,0,1, kInDsvFl | kAudioBufDsvFl, "Audio input",
|
||||
@ -2589,6 +2602,8 @@ cmDspInst_t* _cmDspRecdPlayAlloc(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsig
|
||||
printf("1 max la secs:%f\n",cmDspDouble(&p->inst,kMaxLaSecsPrId));
|
||||
|
||||
|
||||
|
||||
|
||||
return &p->inst;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user