feat: split MIDI clips nondestructively with source-relative note slices
This commit is contained in:
parent
4c855ee5d7
commit
3c202cbfdc
8 changed files with 51 additions and 9 deletions
|
|
@ -1379,6 +1379,9 @@ int main(int argc, char **argv)
|
|||
CHECK(s->select(0));CHECK(s->duplicate_track("Keys copy")==XTC_OK);
|
||||
size_t tracks=0,clips=0;xtc_project_get_counts(s->project(),&tracks,&clips);CHECK(tracks==2 && clips==2);
|
||||
CHECK(window.undo()==XTC_OK);xtc_project_get_counts(s->project(),&tracks,&clips);CHECK(tracks==1 && clips==1);
|
||||
CHECK(s->select(0,0));s->position(1920);CHECK(s->split_selection()==XTC_OK);
|
||||
xtc_project_get_counts(s->project(),&tracks,&clips);CHECK(clips==2);
|
||||
CHECK(window.undo()==XTC_OK);xtc_project_get_counts(s->project(),&tracks,&clips);CHECK(clips==1);
|
||||
window.do_callback();
|
||||
}
|
||||
if (failures != 0) return 1;
|
||||
|
|
|
|||
|
|
@ -82,4 +82,17 @@ static void duplicate_track(void)
|
|||
assert(xtc_project_automation_count(p,&count)==XTC_OK && count==2);
|
||||
xtc_project_destroy(p);
|
||||
}
|
||||
int main(void){markers();sections();ripple();duplicate_track();puts("Next DAW workflow tests passed.");return 0;}
|
||||
static void split_midi(void)
|
||||
{
|
||||
xtc_project *p=NULL;xtc_midi_plan *before=NULL,*after=NULL;uint64_t t,c,n,right=999;xtc_clip_info slice;float a[512],b[512];
|
||||
assert(xtc_project_create(&p)==XTC_OK && xtc_project_add_track(p,"Track",&t)==XTC_OK);
|
||||
assert(xtc_project_add_midi_clip(p,t,0,960,&c)==XTC_OK && xtc_project_add_note(p,c,0,960,60,90,0,&n)==XTC_OK);
|
||||
assert(xtc_midi_plan_create(p,48000,&before)==XTC_OK);
|
||||
assert(xtc_project_split_midi(p,c,0,&right)==XTC_ERR_INVALID_ARGUMENT && right==999);
|
||||
assert(xtc_project_split_midi(p,c,480,&right)==XTC_OK && right!=c);
|
||||
assert(xtc_project_find_clip(p,right,&slice)==XTC_OK && slice.offset_tick==480 && slice.length_tick==480);
|
||||
assert(xtc_midi_plan_create(p,48000,&after)==XTC_OK);
|
||||
assert(xtc_midi_plan_render(before,11800,NULL,0,a,512)==XTC_OK && xtc_midi_plan_render(after,11800,NULL,0,b,512)==XTC_OK);
|
||||
assert(!memcmp(a,b,sizeof(a)));xtc_midi_plan_destroy(before);xtc_midi_plan_destroy(after);xtc_project_destroy(p);
|
||||
}
|
||||
int main(void){markers();sections();ripple();duplicate_track();split_midi();puts("Next DAW workflow tests passed.");return 0;}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue