void GetTimeSegmentPositions(TimeSegment timeSegment, double &dStartPos, double &dEndPos, MediaItem* item) { double dOrgCursorPos = GetCursorPositionEx(0); bool bRefreshCurPos = false; switch(timeSegment) { case eTIMESEGMENT_TIMESEL: //Main_OnCommandEx(ID_GOTO_TIMESEL_END, 0, 0); //dEndPos = GetCursorPositionEx(0); //Main_OnCommandEx(ID_GOTO_TIMESEL_START, 0, 0); //dStartPos = GetCursorPositionEx(0); GetSet_LoopTimeRange2(0, false, false, &dStartPos, &dEndPos, false); break; case eTIMESEGMENT_SELITEM: if(item != NULL) { dStartPos = GetMediaItemInfo_Value(item, "D_POSITION"); dEndPos = dStartPos + GetMediaItemInfo_Value(item, "D_LENGTH"); } else { Main_OnCommandEx(ID_GOTO_SELITEM_END, 0, 0); dEndPos = GetCursorPositionEx(0); Main_OnCommandEx(ID_GOTO_SELITEM_START, 0, 0); dStartPos = GetCursorPositionEx(0); bRefreshCurPos = true; } break; case eTIMESEGMENT_LOOP: //Main_OnCommandEx(ID_GOTO_LOOP_END, 0, 0); //dEndPos = GetCursorPositionEx(0); //Main_OnCommandEx(ID_GOTO_LOOP_START, 0, 0); //dStartPos = GetCursorPositionEx(0); GetSet_LoopTimeRange2(0, false, true, &dStartPos, &dEndPos, false); break; case eTIMESEGMENT_PROJECT: Main_OnCommandEx(ID_GOTO_PROJECT_END, 0, 0); dEndPos = GetCursorPositionEx(0); //Main_OnCommandEx(ID_GOTO_PROJECT_START, 0, 0); //dStartPos = GetCursorPositionEx(0); dStartPos = *(int*)GetConfigVar("projtimeoffs"); bRefreshCurPos = true; break; //case eTIMESEGMENT_CURRENTMEASURE: // Main_OnCommandEx(ID_GOTO_CURMEASURE_START, 0, 0); // dStartPos = GetCursorPositionEx(0); // Main_OnCommandEx(ID_GOTO_NEXTMEASURE_START, 0, 0); // dEndPos = GetCursorPositionEx(0); //break; default: break; } if(bRefreshCurPos) SetEditCurPos2(0, dOrgCursorPos, true, false); }
void GrooveDialog::OnCommand(WPARAM wParam, LPARAM lParam) { switch(LOWORD(wParam)) { case FNG_OPEN_FOLDER: OnGrooveFolderButton(HIWORD(wParam), lParam); break; case FNG_REFRESH: RefreshGrooveList(); break; case IDC_GROOVELIST: OnGrooveList(HIWORD(wParam), lParam); break; case IDC_STRENGTH: OnStrengthChange(HIWORD(wParam), lParam); break; case IDC_VELSTRENGTH: OnVelStrengthChange(HIWORD(wParam), lParam); break; case IDC_SENS_32ND: setSensitivity(m_hwnd, 32); setGrooveTolerance(32); break; case IDC_SENS_16TH: setSensitivity(m_hwnd, 16); setGrooveTolerance(16); break; case IDC_SENS_4TH: setSensitivity(m_hwnd, 4); setGrooveTolerance(4); break; case IDC_SENS_8TH: setSensitivity(m_hwnd, 8); setGrooveTolerance(8); break; case IDC_TARG_ITEMS: setTarget(m_hwnd, true); setGrooveTarget(TARGET_ITEMS); break; case IDC_TARG_NOTES: setTarget(m_hwnd, false); setGrooveTarget(TARGET_NOTES); break; case IDC_APPLYGROOVE: ApplySelectedGroove(); break; case IDC_STORE: if(IsDlgButtonChecked(m_hwnd, IDC_TARG_ITEMS) == BST_CHECKED) Main_OnCommandEx(NamedCommandLookup("_FNG_GET_GROOVE"), 0, 0); else Main_OnCommandEx(NamedCommandLookup("_FNG_GET_GROOVE_MIDI"), 0, 0); SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_SETCURSEL, 0, 0); break; default: Main_OnCommand((int)wParam, (int)lParam); // Required when you have reaper commands in the context menu } }
EnvelopeProcessor::ErrorCode EnvelopeProcessor::generateSelectedTrackEnvLfo() { TrackEnvelope* envelope = GetSelectedTrackEnvelope(0); if(!envelope) return eERRORCODE_NOENVELOPE; Undo_BeginBlock2(0); //! \todo: use insert/goto actions AFTER error returns double dStartPos, dEndPos; GetTimeSegmentPositions(_parameters.timeSegment, dStartPos, dEndPos); if(dStartPos==dEndPos) return eERRORCODE_NULLTIMESELECTION; double dOrgCursorPos = GetCursorPositionEx(0); SetEditCurPos2(0, dStartPos-EPSILON_TIME, false, false); Main_OnCommandEx(ID_ENVELOPE_INSERT_POINT, 0, 0); SetEditCurPos2(0, dEndPos+EPSILON_TIME, false, false); Main_OnCommandEx(ID_ENVELOPE_INSERT_POINT, 0, 0); SetEditCurPos2(0, dOrgCursorPos, false, false); //Main_OnCommandEx(ID_MOVE_TIMESEL_NUDGE_LEFTEDGE_LEFT, 0, 0); //Main_OnCommandEx(ID_MOVE_TIMESEL_NUDGE_RIGHTEDGE_RIGHT, 0, 0); //Main_OnCommandEx(ID_GOTO_TIMESEL_START, 0, 0); //Main_OnCommandEx(ID_ENVELOPE_INSERT_POINT, 0, 0); //Main_OnCommandEx(ID_GOTO_TIMESEL_END, 0, 0); //Main_OnCommandEx(ID_ENVELOPE_INSERT_POINT, 0, 0); //Main_OnCommandEx(ID_MOVE_TIMESEL_NUDGE_LEFTEDGE_RIGHT, 0, 0); //Main_OnCommandEx(ID_MOVE_TIMESEL_NUDGE_RIGHTEDGE_LEFT, 0, 0); //Main_OnCommandEx(ID_ENVELOPE_DELETE_ALL_POINTS_TIMESEL, 0, 0); ErrorCode res = generateTrackLfo(envelope, dStartPos, dEndPos, _parameters.waveParams, _parameters.precision); //UpdateTimeline(); Undo_EndBlock2(NULL, __LOCALIZE("Track envelope LFO","sws_undo"), UNDO_STATE_TRACKCFG); return res; }
static bool convertToInProjectMidi(RprItemCtrPtr &ctr) { bool hasMidiFile = false; for(int i = 0; i < ctr->size(); i++) { RprTake take(ctr->getAt(i).getActiveTake()); if(!take.isMIDI()) continue; if(take.isFile()) { hasMidiFile = true; break; } } if(hasMidiFile) { if(MessageBox(GetMainHwnd(), __LOCALIZE("Current selection has takes with MIDI files.\r\nTo apply this action these takes must be converted to in-project takes.\r\nDo you want to continue?","sws_mbox"), __LOCALIZE("FNG - Warning","sws_mbox"), MB_YESNO) == IDNO) { return false; } Main_OnCommandEx(40684, 0 , 0); } return true; }