void AddVelocityCurrPos(struct Tracker_Windows *window){ struct WBlocks *wblock=window->wblock; struct LocalZooms *realline= wblock->reallines[wblock->curr_realline]; int subtrack=window->curr_track_sub; if(-1==subtrack) return; ADD_UNDO(Notes_CurrPos(window)); struct Notes *note = FindNoteOnSubTrack( wblock->wtrack, subtrack, &realline->l.p ); if(note==NULL) return; AddVelocity( root->standardvel, &realline->l.p, note ); #if !USE_OPENGL ClearTrack(window,wblock,wblock->wtrack,wblock->top_realline,wblock->bot_realline); UpdateWTrack(window,wblock,wblock->wtrack,wblock->top_realline,wblock->bot_realline); #endif }
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; }