cmXScore.c : Added the ability to increment the grace group id.
This commit is contained in:
parent
af84645fa4
commit
92ea6ff806
@ -1718,13 +1718,13 @@ void _cmXScoreGraceInsertSoonAfterFirst( cmXScore_t* p, unsigned graceGroupId, c
|
||||
// after reordering so that we can be sure that the order in time of
|
||||
// the notes in each group has been set prior to building the
|
||||
// grace note groups - which must be in reverse time order.
|
||||
cmXsRC_t _cmXScoreProcessGraceNotes( cmXScore_t* p )
|
||||
cmXsRC_t _cmXScoreProcessGraceNotes( cmXScore_t* p, unsigned nextGraceGroupId )
|
||||
{
|
||||
cmXsRC_t rc = kOkXsRC;
|
||||
unsigned graceGroupId = 1;
|
||||
double graceDurSec = 1.0/15.0; // duration of all grace notes in seconds
|
||||
|
||||
for(; 1; ++graceGroupId)
|
||||
for(; graceGroupId<nextGraceGroupId; ++graceGroupId)
|
||||
{
|
||||
cmXsNote_t* gn0p = NULL; // first note in the grace group
|
||||
cmXsNote_t* gn1p = NULL; // last note in the grace group
|
||||
@ -1776,14 +1776,14 @@ cmXsRC_t _cmXScoreProcessGraceNotes( cmXScore_t* p )
|
||||
} // for each measure
|
||||
} // for each part
|
||||
|
||||
// no records were found for this grace id - we're done
|
||||
// no records were found for this grace id - this grace group id was not used
|
||||
if( gn0p == NULL )
|
||||
break;
|
||||
continue;
|
||||
|
||||
// grace note groups must have at least 3 members
|
||||
if( gN < 3 )
|
||||
{
|
||||
rc = cmErrMsg(&p->err,kSyntaxErrorXsRC,"The grace not group ending in meas %i has fewer than 3 (%i) members.", gn1p->meas->number, gN );
|
||||
rc = cmErrMsg(&p->err,kSyntaxErrorXsRC,"The grace not group (groupid=%i) ending in meas %i has fewer than 3 (%i) members.", gn1p->graceGroupId, gn1p->meas->number, gN );
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2405,6 +2405,12 @@ cmXsRC_t _cmXScoreReorderParseGrace(cmXScore_t* p, const cmChar_t* b, unsigned
|
||||
case 'A': r->graceFlags |= kAFirstGraceXsFl| kEndGraceXsFl; break;
|
||||
case 'n': r->graceFlags |= kNFirstGraceXsFl| kEndGraceXsFl; break;
|
||||
case 'g': break;
|
||||
|
||||
case '1':
|
||||
r->graceGroupId += 1;
|
||||
++s;
|
||||
continue;
|
||||
|
||||
|
||||
case '%':
|
||||
*graceGroupIdRef += 1;
|
||||
@ -2625,7 +2631,7 @@ cmXsRC_t _cmXsApplyEditFile( cmXScore_t* p, const cmChar_t* fn )
|
||||
_cmXScoreSort(p);
|
||||
|
||||
// process the grace notes.
|
||||
_cmXScoreProcessGraceNotes( p );
|
||||
_cmXScoreProcessGraceNotes( p, graceGroupId );
|
||||
|
||||
// inserting grace notes may have left the score unsorted
|
||||
_cmXScoreSort(p);
|
||||
@ -2633,12 +2639,9 @@ cmXsRC_t _cmXsApplyEditFile( cmXScore_t* p, const cmChar_t* fn )
|
||||
// process the dynamic forks
|
||||
_cmXScoreProcessDynamicForks(p);
|
||||
|
||||
//_cmXScoreReport(p, NULL, true );
|
||||
|
||||
|
||||
_cmXScoreReport(p, NULL, true );
|
||||
|
||||
|
||||
|
||||
errLabel:
|
||||
cmFileClose(&fH);
|
||||
cmMemFree(b);
|
||||
@ -3200,7 +3203,6 @@ void _cmXScoreReportNote( cmRpt_t* rpt, const cmXsNote_t* note,unsigned index )
|
||||
|
||||
if( note->graceGroupId != 0)
|
||||
cmRptPrintf(rpt," g=%i",note->graceGroupId);
|
||||
|
||||
/*
|
||||
if( cmIsFlag(note->flags,kBegGraceXsFl) )
|
||||
cmRptPrintf(rpt," B");
|
||||
@ -3216,8 +3218,7 @@ void _cmXScoreReportNote( cmRpt_t* rpt, const cmXsNote_t* note,unsigned index )
|
||||
|
||||
if( cmIsFlag(note->flags,kDynEndForkXsFl) )
|
||||
cmRptPrintf(rpt," E");
|
||||
|
||||
*/
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -3965,7 +3966,7 @@ cmXsRC_t cmXScoreTest(
|
||||
|
||||
}
|
||||
|
||||
//cmXScoreReport(h,&ctx->rpt,true);
|
||||
cmXScoreReport(h,&ctx->rpt,true);
|
||||
|
||||
return cmXScoreFinalize(&h);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user