Added velocity to tracks in the sequencer.
This commit is contained in:
parent
9b1e7b7d42
commit
b46d4f09bb
13 changed files with 873 additions and 19 deletions
|
|
@ -1214,6 +1214,56 @@ int main(int argc, char **argv)
|
|||
unlink("/tmp/xtc-workspace.xtc"); window.do_callback();
|
||||
}
|
||||
reset();
|
||||
{
|
||||
MainWindow window(false,""); window.show(); auto *s=timeline(&window);
|
||||
CHECK(window.create_track(true)==XTC_OK);
|
||||
uint64_t track=s->selected_track(), clip=s->selected_clip(), note_id=0, chord_id=0;
|
||||
CHECK(xtc_project_add_note(s->project(),clip,960,480,60,100,2,¬e_id)==XTC_OK);
|
||||
CHECK(xtc_project_add_note(s->project(),clip,960,480,64,40,2,&chord_id)==XTC_OK);
|
||||
CHECK(window.create_track(true)==XTC_OK); // Publish notes and add a second row.
|
||||
uint64_t second=s->selected_track(), second_clip=s->selected_clip();
|
||||
int base=s->track_top(1)-s->y();
|
||||
auto arrow=[&]() {
|
||||
int ox=Fl::e_x,oy=Fl::e_y,ok=Fl::e_keysym;
|
||||
Fl::e_x=s->header_left()+15; Fl::e_y=s->track_top(0)+13;
|
||||
Fl::e_keysym=FL_Button+FL_LEFT_MOUSE; CHECK(s->handle(FL_PUSH)==1);
|
||||
s->handle(FL_RELEASE);
|
||||
Fl::e_x=ox; Fl::e_y=oy; Fl::e_keysym=ok;
|
||||
};
|
||||
arrow(); // Actual disclosure arrow.
|
||||
CHECK(s->track_expanded(track) && s->track_top(1)-s->y()==base+88);
|
||||
CHECK(s->instrument_choice(second)->y()==s->track_top(1)+30);
|
||||
int px=s->header_width()+s->zoom_level();
|
||||
int top=28+56, ny=top+88-8-100*60/127;
|
||||
gesture(s,px,ny,0,30);
|
||||
xtc_note_info note{},chord{};
|
||||
xtc_project_get_note(s->project(),0,¬e); xtc_project_get_note(s->project(),1,&chord);
|
||||
CHECK(note.id==note_id && note.velocity<100 && note.pitch==60 && note.channel==2 && note.start_tick==960);
|
||||
CHECK(chord.id==chord_id && chord.velocity==40);
|
||||
CHECK(window.undo(false)==XTC_OK);
|
||||
xtc_project_get_note(s->project(),0,¬e); CHECK(note.velocity==100 && s->track_expanded(track));
|
||||
CHECK(window.undo(true)==XTC_OK);
|
||||
// Escape cancels a preview without changing the model.
|
||||
xtc_project_get_note(s->project(),0,¬e);
|
||||
int old_x=Fl::e_x,old_y=Fl::e_y,old_key=Fl::e_keysym;
|
||||
Fl::e_x=s->x()+px; Fl::e_y=s->y()+top+80-static_cast<int>(note.velocity)*60/127;
|
||||
Fl::e_keysym=FL_Button+FL_LEFT_MOUSE; CHECK(s->handle(FL_PUSH)==1);
|
||||
Fl::e_y-=20; CHECK(s->handle(FL_DRAG)==1);
|
||||
Fl::e_keysym=FL_Escape; CHECK(s->handle(FL_KEYDOWN)==1);
|
||||
xtc_note_info unchanged{}; xtc_project_get_note(s->project(),0,&unchanged); CHECK(unchanged.velocity==note.velocity);
|
||||
Fl::e_x=old_x; Fl::e_y=old_y; Fl::e_keysym=old_key;
|
||||
gesture(s,s->header_width()+20,s->track_top(1)-s->y()+15,0,0);
|
||||
CHECK(s->selected_track()==second && s->selected_clip()==second_clip);
|
||||
CHECK(s->move_track(-1)==XTC_OK && s->track_expanded(track));
|
||||
CHECK(s->track_top(1)-s->y()==base); // Expansion follows the stable track ID.
|
||||
CHECK(s->move_track(1)==XTC_OK);
|
||||
arrow();
|
||||
CHECK(!s->track_expanded(track) && s->track_top(1)-s->y()==base);
|
||||
CHECK(!s->expand_track(UINT64_MAX,true));
|
||||
CHECK(window.new_project()==XTC_OK && !s->track_expanded(track));
|
||||
window.do_callback();
|
||||
}
|
||||
reset();
|
||||
{
|
||||
MainWindow window(false,""); window.show(); auto *sequence = timeline(&window);
|
||||
CHECK(window.create_track(true) == XTC_OK);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue