void cutNote(float floatplace, int notenum, int tracknum, int blocknum, int windownum){ struct Tracker_Windows *window; struct WBlocks *wblock; struct WTracks *wtrack; struct Notes *note = getNoteFromNumA(windownum, &window, blocknum, &wblock, tracknum, &wtrack, notenum); if (note==NULL) return; Place place; Float2Placement(floatplace, &place); if (PlaceGreaterOrEqual(&place, ¬e->end)) return; if (PlaceLessOrEqual(&place, ¬e->l.p)) return; CutNoteAt(wblock->block, wtrack->track, note, &place); }
void StopVelocityCurrPos(struct Tracker_Windows *window,int noend){ struct WBlocks *wblock; struct WTracks *wtrack; int reallinerealline; struct LocalZooms *realline; struct Notes *note; int subtrack; wblock=window->wblock; wtrack=wblock->wtrack; reallinerealline=wblock->curr_realline; realline=wblock->reallines[reallinerealline]; subtrack=window->curr_track_sub; note=FindNoteOnSubTrack(wtrack,subtrack,&realline->l.p); if(note==NULL) return; ADD_UNDO(Notes_CurrPos(window)); PLAYER_lock();{ if(PlaceGreaterOrEqual(¬e->l.p,&realline->l.p)){ RemoveNote(wblock->block,wtrack->track,note); SetNotePolyphonyAttributes(wtrack->track); ValidateCursorPos(window); }else{ CutNoteAt(wblock->block, wtrack->track, note, &realline->l.p); } note->noend=noend; }PLAYER_unlock(); window->must_redraw=true; }