void gen_mix(jack_default_audio_sample_t *outs[], int frame) { MASH_UNIT *gen; if (active_gens == NULL) return; for (gen = active_gens->dlink; gen != NULL; gen = gen->dlink) { mix_frame((GEN *)gen, outs, frame); } return; }
void feeds_mix(jack_default_audio_sample_t *outs[], int frame) { MASH_UNIT *feed; if (feeds == NULL) return; for (feed = feeds->dlink; feed != NULL; feed = feed->dlink) { mix_frame((FEED *)feed, outs, frame); } return; }
void Player::mix_events(MessageQueue &queue, int samples) { assert(model); long long target = queue.read_samples + ((long long)samples<<32); while (queue.write_samples < target) { // send status package queue.status_msg(); mix_frame(queue); long long framesize = get_frame_size(); queue.write_samples += framesize; queue.position++; if (model->enable_loop && (queue.position == model->loop.get_end())) { queue.position = model->loop.get_begin(); } } }