if(seq_play_timer != 65535){ unsigned int length32th = ((65535/8)/seq_session.bpm)*60; //65535 = 1s seq_play_timer += 1311; //0.02*65525 if(seq_play_timer > length32th){ seq_play_timer -= length32th; //if(seq_playseq_selected_for_playing != 255){ if(seq_play_playseq_place != 255){ seq_current_track = read_playseq(seq_session.playseq[seq_playseq_selected_for_playing], seq_play_playseq_place) - 1; } if(seq_current_track == 255){ //ei soiteta if(seq_play_something_playing[0]){ deletevoice(2, 0); seq_play_something_playing[0] = 0; } } else{ unsigned char current_node = seq_session.tracks[seq_current_track][seq_play_track_place/2]; unsigned char note = current_node >> 4; unsigned char oct = current_node & 0x07; unsigned char half = (current_node & 0x08)?1:0; //unsigned char savel = note + 12*oct + 85; unsigned char savel = noteoct_to_savel(note,oct); if(seq_play_track_place % 2 == 0){ if(note == NOTE_EMPTY){ } else if(note == NOTE_END){ if(!half){ deletevoice(2+0, 0); seq_play_something_playing[0] = 0; } } else if(note < 12){ if(seq_play_something_playing[0]){ deletevoice(2+0, 0); } addvoice(2+0, &voiceoptslist[seq_session.track_instrument[seq_current_track]], 0, savel); seq_play_something_playing[0] = half?2:1; } } else if(seq_play_something_playing[0] == 2){ deletevoice(2+0, 0); seq_play_something_playing[0] = 0; } else if(note == NOTE_END){ if(half){ deletevoice(2+0, 0); seq_play_something_playing[0] = 0; } } } if(seq_play_track_place >= seq_session.track_len*2-1){ seq_play_track_place = 0; //pysäytetään haluttaessa kun ei soiteta pätkäsekvenssiä if(seq_stop_after_current && seq_play_playseq_place == 255){ seq_stop_playing(); seq_drawbottomline(); } else if(seq_track_change_after_current_to != 0){ seq_current_track = seq_track_change_after_current_to - 1; seq_track_change_after_current_to = 0; } else if(seq_play_playseq_place != 255){ //jos soitellaan playseqin mukaan if(seq_play_playseq_place >= seq_session.playseq_len[seq_playseq_selected_for_playing] - 1){ if(seq_playseq_change_after_current_to != 255){ seq_playseq_selected_for_playing = seq_playseq_change_after_current_to; seq_playseq_change_after_current_to = 255; //seq_mainpage_draw_bottomline(); draw_all(); } if(seq_stop_after_current){ seq_stop_playing(); seq_drawbottomline(); } else{ seq_play_playseq_place = 0; } } else seq_play_playseq_place++; } } else seq_play_track_place++; } }