Example #1
0
void saveBlock(const char *filename, int blocknum, int windownum){
  struct Tracker_Windows *window;
  struct WBlocks *wblock;

  wblock=getWBlockFromNumA(
                           windownum,
                           &window,
                           blocknum
                           );

  if(wblock==NULL)
    return;

  if (filename==NULL || !strcmp(filename, ""))
    filename = "/tmp/block.block";

  if (Save_Initialize(STRING_create(filename), "RADIUM BLOCK")==false)
    return;

  SaveWBlock(wblock);
  SaveBlock(wblock->block);

  if( ! dc.success){
    handleError("Problems writing to file.\n");
  }
  
  DISK_close_and_delete(dc.file);
}
Example #2
0
bool hasRange(int blocknum, int windownum){
  struct Tracker_Windows *window;
  struct WBlocks *wblock;

  wblock=getWBlockFromNumA(
                           windownum,
                           &window,
                           blocknum
                           );

  if(wblock==NULL)
    return false;

  return wblock->isranged;
}
Example #3
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);
}
Example #4
0
Place getRangeEndPlace(int blocknum, int windownum){
  struct Tracker_Windows *window;
  struct WBlocks *wblock;

  wblock=getWBlockFromNumA(
                           windownum,
                           &window,
                           blocknum
                           );

  if(wblock==NULL)
    return place(1,0,1);

  int realline = wblock->rangey2;
  if (realline < 0 || realline >= wblock->num_reallines)
    return place(wblock->block->num_lines,0,1);

  return wblock->reallines[realline]->l.p;
}
Example #5
0
int getRangeEndTrack(int blocknum, int windownum){
  struct Tracker_Windows *window;
  struct WBlocks *wblock;

  wblock=getWBlockFromNumA(
                           windownum,
                           &window,
                           blocknum
                           );

  if(wblock==NULL)
    return wblock->block->num_tracks;

  if (wblock->rangex1 < 0)
    return 0;
  if (wblock->rangex1 >= wblock->block->num_tracks)
    return wblock->block->num_tracks-1;

  return wblock->rangex2+1;
}
Example #6
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);
}
Example #7
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);
}
Example #8
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);
}
Example #9
0
void addNoteAdds(
	PyObject *noteadds,
	int windownum,
	int blocknum,
	int tracknum,
	float startplace,
	int sort
){
	struct Tracker_Windows *window;
	struct WBlocks *wblock;

	PyObject **pyobjects;
	int num_pyobjects;

	struct NoteAdds_track *nats;
	struct NoteAdds_track_do *nat_do=NULL;
	struct NoteAdds_block *nab;
	int num_nats;
	int lokke;

	const int attrformat[]={1,0,1,1};
	char *attrnames[]={"place","notenum","volume","endplace"};

//	printf("tracknum: %d\n",tracknum);

	wblock=getWBlockFromNumA(
		windownum,
		&window,
		blocknum
	);
	if(wblock==NULL){
		printf("wblock==NULL\n");
		return;
	}

	pyobjects=PYR_getPYOArray(&num_pyobjects,noteadds);
	if(num_pyobjects==-1){
		printf("Somethings wrong 1\n");
		return;
	}
	if(num_pyobjects==0) return;


	nab=talloc(sizeof(struct NoteAdds_block));
	nab->blocknum=blocknum;
	nab->num_nats_do=num_pyobjects;
	nab->nats_do=talloc(sizeof(struct NoteAdds_track_do *)*num_pyobjects);

	for(lokke=0;lokke<num_pyobjects;lokke++){
		nats=PYR_getObjArray(&num_nats,pyobjects[lokke],4,attrformat,attrnames);

		if(num_nats==-1){
			printf("Somethings wrong 2\n");
			return;
		}

		nat_do=talloc(sizeof(struct NoteAdds_track_do));
		nat_do->tracknum=tracknum;
		nat_do->num_nats=num_nats;
		nat_do->nats=nats;
		nat_do->startplace=startplace;
		nat_do->sort=sort;

		nab->nats_do[lokke]=nat_do;
	}

//	printf("num_pyobjects: %d\n",num_pyobjects);
	if(num_pyobjects==1){
		AD_installNoteAdds_track_do(
			window,
			wblock,
			nat_do
		);
	}else{
		AD_insertNoteAdds_block_do(window,nab);
	}
}