示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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);
}
示例#4
0
int addNote2(float 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 Tracker_Windows *window;
  struct WBlocks *wblock=getWBlockFromNumA(-1,&window,blocknum);
  struct WTracks *wtrack=getWTrackFromNum(windownum,blocknum,tracknum);
  if(wblock==NULL || wtrack==NULL) {
    GFX_Message(NULL, "unknown wblock(%p) or wtrack(%p) %d/%d/%d\n",wblock,wtrack,windownum,blocknum,tracknum);
    return -1;
  }

  Place *place = PlaceCreate(line,counter,dividor);

  ValidatePlace(place);

  if (!PlaceLegal(wblock->block, place)) {
    GFX_Message(NULL, "Place %d + %d/%d is not legal", line, counter, dividor);
    return -1;
  }

  Place *end_place = end_line==-1 ? NULL : PlaceCreate(end_line,end_counter,end_dividor);

  ValidatePlace(end_place);

  if (end_place != NULL && !PlaceLegal(wblock->block, end_place)) {
    GFX_Message(NULL, "Place %d + %d/%d is not legal", end_line, end_counter, end_dividor);
    return -1;
  }

  struct Notes *note = InsertNote(wblock,
                                  wtrack,
                                  place,
                                  end_place,
                                  notenum,
                                  velocity,
                                  true);

  window->must_redraw=true;

  return ListFindElementPos3(&wtrack->track->notes->l,&note->l);
}
示例#5
0
int addBPM(int bpm,
           Place place,
           int blocknum)
{
  struct Tracker_Windows *window;
  struct WBlocks *wblock=getWBlockFromNumA(-1,&window,blocknum);
  if(wblock==NULL)
    return -1;

  if (!PlaceLegal(wblock->block, &place)) {
    GFX_Message(NULL, "Place %s is not legal", PlaceToString(&place));
    return -1;
  }

  ADD_UNDO(Tempos_CurrPos(window));

  struct Tempos *tempo = SetTempo(wblock->block,&place,bpm);

  window->must_redraw=true;

  return ListFindElementPos3(&wblock->block->tempos->l,&tempo->l);
}
示例#6
0
int addLPB(int lpb_value,
           Place place,
           int blocknum)
{
  struct Tracker_Windows *window;
  struct WBlocks *wblock=getWBlockFromNumA(-1,&window,blocknum);
  if(wblock==NULL)
    return -1;

  if (!PlaceLegal(wblock->block, &place)) {
    GFX_Message(NULL, "Place %s is not legal", PlaceToString(&place));
    return -1;
  }

  ADD_UNDO(LPBs_CurrPos(window));
  
  struct LPBs *lpb = SetLPB(wblock->block,&place,lpb_value);

  window->must_redraw=true;

  return ListFindElementPos3(&wblock->block->lpbs->l,&lpb->l);
}
示例#7
0
int addSignature(int numerator, int denominator,
                 Place place,
                 int blocknum)
{
  struct Tracker_Windows *window;
  struct WBlocks *wblock=getWBlockFromNumA(-1,&window,blocknum);
  if(wblock==NULL) {
    GFX_Message(NULL, "unknown block(%p)",blocknum);
    return -1;
  }

  if (!PlaceLegal(wblock->block, &place)) {
    GFX_Message(NULL, "Place %s is not legal", PlaceToString(&place));
    return -1;
  }

  ADD_UNDO(Signatures_CurrPos(window));
        
  struct Signatures *signature = SetSignature(wblock->block,&place,ratio(numerator, denominator));

  window->must_redraw=true;

  return ListFindElementPos3(&wblock->block->signatures->l,&signature->l);
}
示例#8
0
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,&note->l);
}