void SampleChannel::setMute(bool internal) { if (internal) { /* global mute is on? don't waste time with fadeout, just mute it * internally */ if (mute) mute_i = true; else { if (isPlaying()) setFadeOut(DO_MUTE_I); else mute_i = true; } } else { /* internal mute is on? don't waste time with fadeout, just mute it * globally */ if (mute_i) mute = true; else { /* sample in play? fadeout needed. Else, just mute it globally */ if (isPlaying()) setFadeOut(DO_MUTE); else mute = true; } } }
void SampleChannel::kill(int frame) { if (wave != NULL && status != STATUS_OFF) { if (mute || mute_i || (status == STATUS_WAIT && mode & LOOP_ANY)) hardStop(frame); else setFadeOut(DO_STOP); } }
void SampleChannel::start(int frame, bool doQuantize) { switch (status) { case STATUS_EMPTY: case STATUS_MISSING: case STATUS_WRONG: { return; } case STATUS_OFF: { if (mode & LOOP_ANY) { status = STATUS_WAIT; } else { if (G_Mixer.quantize > 0 && G_Mixer.running && doQuantize) qWait = true; else { status = STATUS_PLAY; tracker = fillChan(vChan, tracker, frame); /// FIXME - check if frame == 0, possible duplicated fillChan call } } break; } case STATUS_PLAY: { if (mode == SINGLE_BASIC) setFadeOut(DO_STOP); else if (mode == SINGLE_RETRIG) { if (G_Mixer.quantize > 0 && G_Mixer.running && doQuantize) qWait = true; else //mute ? reset(frame) : setXFade(frame); // do xfade only if not muted in order to avoid clicks reset(frame); } else if (mode & (LOOP_ANY | SINGLE_ENDLESS)) status = STATUS_ENDING; break; } case STATUS_WAIT: { status = STATUS_OFF; break; } case STATUS_ENDING: { status = STATUS_PLAY; break; } } }
void SampleChannel::stop() { if (mode == SINGLE_PRESS && status == STATUS_PLAY) { if (mute || mute_i) hardStop(0); /// FIXME - wrong frame value else setFadeOut(DO_STOP); } else // stop a SINGLE_PRESS immediately, if the quantizer is on if (mode == SINGLE_PRESS && qWait == true) qWait = false; }
void SampleChannel::start(int frame, bool doQuantize) { switch (status) { case STATUS_EMPTY: case STATUS_MISSING: case STATUS_WRONG: { return; } case STATUS_OFF: { if (mode & LOOP_ANY) { status = STATUS_WAIT; sendMidiLplay(); } else { if (G_Mixer.quantize > 0 && G_Mixer.running && doQuantize) qWait = true; else { /* fillChan only if frame != 0. If you call fillChan on frame == 0 * a duplicate call to fillChan occurs with loss of data. */ status = STATUS_PLAY; sendMidiLplay(); if (frame != 0) tracker = fillChan(vChan, tracker, frame); } } break; } case STATUS_PLAY: { if (mode == SINGLE_BASIC) setFadeOut(DO_STOP); else if (mode == SINGLE_RETRIG) { if (G_Mixer.quantize > 0 && G_Mixer.running && doQuantize) qWait = true; else reset(frame); } else if (mode & (LOOP_ANY | SINGLE_ENDLESS)) { status = STATUS_ENDING; sendMidiLplay(); } break; } case STATUS_WAIT: { status = STATUS_OFF; sendMidiLplay(); break; } case STATUS_ENDING: { status = STATUS_PLAY; sendMidiLplay(); break; } } }
void MMSWindowClass::setAttributesFromTAFF(MMSTaffFile *tafff, string *path, bool reset_paths) { MMSFBColor color; if ((reset_paths)&&(path)&&(*path!="")) { // unset my paths unsetBgImagePath(); } startTAFFScan { switch (attrid) { case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_alignment: setAlignment(getAlignmentFromString(attrval_str)); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_dx: setDx(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_dy: setDy(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_w: setWidth(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_h: setHeight(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgcolor: setBgColor(MMSFBColor((unsigned int)attrval_int)); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgcolor_a: color.a = color.r = color.g = color.b = 0; if (isBgColor()) getBgColor(color); color.a = attrval_int; setBgColor(color); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgcolor_r: color.a = color.r = color.g = color.b = 0; if (isBgColor()) getBgColor(color); color.r = attrval_int; setBgColor(color); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgcolor_g: color.a = color.r = color.g = color.b = 0; if (isBgColor()) getBgColor(color); color.g = attrval_int; setBgColor(color); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgcolor_b: color.a = color.r = color.g = color.b = 0; if (isBgColor()) getBgColor(color); color.b = attrval_int; setBgColor(color); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgimage: if (*attrval_str) setBgImagePath(""); else setBgImagePath((path)?*path:""); setBgImageName(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgimage_path: if (*attrval_str) setBgImagePath(attrval_str); else setBgImagePath((path)?*path:""); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_bgimage_name: setBgImageName(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_opacity: setOpacity(attrval_int); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_fadein: setFadeIn((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_fadeout: setFadeOut((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_debug: setDebug((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_margin: setMargin(attrval_int); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_up_arrow: setUpArrow(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_down_arrow: setDownArrow(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_left_arrow: setLeftArrow(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_right_arrow: setRightArrow(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_navigate_up: setNavigateUp(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_navigate_down: setNavigateDown(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_navigate_left: setNavigateLeft(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_navigate_right: setNavigateRight(attrval_str); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_own_surface: #ifdef __HAVE_DIRECTFB__ if(attrval_int) { MMSConfigData config; if(config.getBackend() == MMSFB_BE_DFB) { cerr << "Warning: DirectFB backend does not support own_surface=true (ignored)" << endl; break; } } #endif setOwnSurface((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_movein: setMoveIn(getDirectionFromString(attrval_str)); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_moveout: setMoveOut(getDirectionFromString(attrval_str)); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_modal: setModal((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_static_zorder: setStaticZOrder((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_always_on_top: setAlwaysOnTop((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_focusable: setFocusable((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_backbuffer: setBackBuffer((attrval_int) ? true : false); break; case MMSGUI_WINDOW_ATTR::MMSGUI_WINDOW_ATTR_IDS_initial_load: setInitialLoad((attrval_int) ? true : false); break; } } endTAFFScan if ((reset_paths)&&(path)&&(*path!="")) { // set my paths if (!isBgImagePath()) setBgImagePath(*path); } }