int numBPMs(int blocknum, int windownum){ struct WBlocks *wblock=getWBlockFromNum(windownum,blocknum); if(wblock==NULL) return 0; return ListFindNumElements3(&wblock->block->tempos->l); }
int addLPB(int lpb_value, int line,int counter,int dividor, int blocknum) { struct WBlocks *wblock=getWBlockFromNum(-1,blocknum); if(wblock==NULL) { RError("unknown block(%p)",blocknum); return -1; } Place *place = PlaceCreate(line,counter,dividor); struct LPBs *lpb = SetLPB(wblock->block,place,lpb_value); wblock->block->is_dirty = true; return ListFindElementPos3(&wblock->block->lpbs->l,&lpb->l); }
int addBPM(int bpm, int line,int counter,int dividor, int blocknum) { struct WBlocks *wblock=getWBlockFromNum(-1,blocknum); if(wblock==NULL) { RError("unknown block(%p)",blocknum); return -1; } Place *place = PlaceCreate(line,counter,dividor); struct Tempos *tempo = SetTempo(wblock->block,place,bpm); wblock->block->is_dirty = true; return ListFindElementPos3(&wblock->block->tempos->l,&tempo->l); }
int addSignature(int numerator, int denominator, int line,int counter,int dividor, int blocknum) { struct WBlocks *wblock=getWBlockFromNum(-1,blocknum); if(wblock==NULL) { RError("unknown block(%p)",blocknum); return -1; } Place dasplace = place(line,counter,dividor); struct Signatures *signature = SetSignature(wblock->block,&dasplace,ratio(numerator, denominator)); wblock->block->is_dirty = true; return ListFindElementPos3(&wblock->block->signatures->l,&signature->l); }
int addNote(int notenum,int velocity, int line,int counter,int dividor, int end_line,int end_counter,int end_dividor, int windownum, int blocknum, int tracknum) { struct WBlocks *wblock=getWBlockFromNum(windownum,blocknum); struct WTracks *wtrack=getWTrackFromNum(windownum,blocknum,tracknum); if(wblock==NULL || wtrack==NULL) { RError("unknown wblock(%p) or wtrack(%p) %d/%d/%d\n",wblock,wtrack,windownum,blocknum,tracknum); return -1; } struct Notes *note = InsertNote(wblock, wtrack, PlaceCreate(line,counter,dividor), end_line==-1 ? NULL : PlaceCreate(end_line,end_counter,end_dividor), notenum, velocity, true); wblock->block->is_dirty = true; return ListFindElementPos3(&wtrack->track->notes->l,¬e->l); }