2015-02-23 06:52:11 +00:00
|
|
|
#ifndef cmTakeSeqBldr_h
|
|
|
|
#define cmTakeSeqBldr_h
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
kOkTsbRC = cmOkRC,
|
|
|
|
kJsonFailTsbRC,
|
2015-02-23 19:08:45 +00:00
|
|
|
kParseFailTsbRC,
|
|
|
|
kTimeLineFailTsbRC,
|
|
|
|
kScoreFailTsbRC
|
2015-02-23 06:52:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef cmRC_t cmTsbRC_t;
|
|
|
|
typedef cmHandle_t cmTakeSeqBldrH_t;
|
|
|
|
|
|
|
|
extern cmTakeSeqBldrH_t cmTakeSeqBldrNullHandle;
|
|
|
|
|
|
|
|
cmTsbRC_t cmTakeSeqBldrAlloc( cmCtx_t* ctx, cmTakeSeqBldrH_t* hp );
|
2015-02-23 19:08:45 +00:00
|
|
|
cmTsbRC_t cmTakeSeqBldrAllocFn( cmCtx_t* ctx, cmTakeSeqBldrH_t* hp, const cmChar_t* scoreTrkFn );
|
2015-02-23 06:52:11 +00:00
|
|
|
|
|
|
|
cmTsbRC_t cmTakeSeqBldrFree( cmTakeSeqBldrH_t* hp );
|
|
|
|
|
|
|
|
bool cmTakeSeqBldrIsValid( cmTakeSeqBldrH_t h );
|
|
|
|
|
2015-02-23 19:08:45 +00:00
|
|
|
cmTsbRC_t cmTakeSeqBldrInitialize( cmTakeSeqBldrH_t h, const cmChar_t* scoreTrkFn );
|
2015-02-23 06:52:11 +00:00
|
|
|
|
|
|
|
// Load a group of notes delinated by a time-line marker into the sequence.
|
|
|
|
// If notes overlap with existing notes according to their 'scEvtIdx' attribute:
|
|
|
|
// a. If 'overWriteFl' is set then the incoming overlapped notes are enabled
|
|
|
|
// and the existing overlapped notes are disabled, otherwise the incoming
|
|
|
|
// overlapped notes are disabled and the existing notes remain enabled.
|
|
|
|
// b. The incoming section is time aligned with the first or last existing
|
|
|
|
// note depending on whether the new section aligns best with the beginning
|
|
|
|
// or ending of the existing notes.
|
|
|
|
//
|
|
|
|
// If no overlapping notes exist then the incoming section is aligned by estimating
|
|
|
|
// the alignment with existing notes using the score alone.
|
2015-02-23 19:08:45 +00:00
|
|
|
cmTsbRC_t cmTakeSeqBldrLoadTake( cmTakeSeqBldrH_t h, unsigned tlMarkUid, bool overwriteFL );
|
|
|
|
cmTsbRC_t cmTakeSeqBldrUnloadTake( cmTakeSeqBldrH_t h, unsigned tlMarkUid );
|
2015-02-23 06:52:11 +00:00
|
|
|
|
|
|
|
// Fill in missing notes from the score.
|
|
|
|
cmTsbRC_t cmTakeSeqBldrInsertScoreNotes( cmTakeSeqBldrH_t h, unsigned begScEvtIdx, unsigned endScEvtId );
|
|
|
|
cmTsbRC_t cmTakeSeqBldrRemoveScoreNotes( cmTakeSeqBldrH_t h, unsigned begScEvtIdx, unsigned endScEvtId );
|
|
|
|
|
|
|
|
enum { kMarkTsbFl = 0x01, kTlNoteTsbFl=0x02, kScoreNoteTsbFl = 0x04, kPedalTsbFl = 0x08 };
|
|
|
|
cmTsbRC_t cmTakeSeqBldrSelectEnable( cmTakeSeqBldrH_t h, unsigned flags, unsigned id, bool selectFl );
|
|
|
|
cmTsbRC_t cmTakeSeqBldrEnableNote( cmTakeSeqBldrH_t h, unsigned ssqId, bool enableFl );
|
|
|
|
|
|
|
|
cmTsbRC_t cmTakeSeqBldrMoveNote( cmTakeSeqBldrH_t h, unsigned ssqId, int deltaSmpIdx );
|
|
|
|
|
|
|
|
cmTsbRC_t cmTakeSeqBldrWriteMidiFile( cmTakeSeqBldrH_t h, const char* fn );
|
|
|
|
|
|
|
|
cmTsbRC_t cmTakeSeqBldrTest( cmCtx_t* ctx );
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|