#define _POSIX_C_SOURCE 200809L #include "xtc/xtc_midi_file.h" #include "xtc/xtc_mixer.h" #include "../../src/midi/output.h" #include #include #include #include #include static unsigned int read_vlq(const unsigned char *data,size_t size,size_t *at) { unsigned int value=0;unsigned char byte;int n=0; do{assert(*at=0);close(fd);assert(xtc_project_create(&p)==XTC_OK && xtc_project_add_track(p,"Import",&t)==XTC_OK); assert(xtc_project_set_tempo(p,135000)==XTC_OK);write_bytes(path,song,sizeof(song)); assert(xtc_project_import_midi(p,t,3840,path,&c)==XTC_OK && xtc_project_tempo(p)==135000); assert(xtc_project_find_clip(p,c,&clip)==XTC_OK && clip.start_tick==3840 && clip.length_tick==1920); assert(xtc_project_note_count(p,¬es)==XTC_OK && notes==2); assert(xtc_project_get_note(p,0,¬e)==XTC_OK && note.start_tick==0 && note.length_tick==480 && note.channel==1 && note.pitch==60 && note.velocity==90); assert(xtc_project_get_note(p,1,¬e)==XTC_OK && note.pitch==64 && note.length_tick==480 && note.velocity==80); for(size_t size=0;size=0);close(fd);assert(xtc_project_create(&p)==XTC_OK && xtc_project_add_track(p,"Keys",&t)==XTC_OK); assert(xtc_project_set_tempo(p,150000)==XTC_OK && xtc_project_add_midi_clip(p,t,1000,1920,&c)==XTC_OK); assert(xtc_project_add_note(p,c,0,480,60,80,2,&n)==XTC_OK && xtc_project_add_note(p,c,480,960,64,100,3,&n)==XTC_OK); assert(xtc_project_add_note(p,c,1600,100,72,70,0,&n)==XTC_OK); assert(xtc_project_edit_clip(p,c,t,1000,960,240)==XTC_OK); assert(xtc_project_export_midi_clip(p,c,path)==XTC_OK); f=fopen(path,"rb");assert(f);size=fread(bytes,1,sizeof(bytes),f);assert(fclose(f)==0); assert(size>22 && !memcmp(bytes,"MThd\0\0\0\6\0\0\0\1\3\300MTrk",18)); while(at