void ShowStartupActions(COMMAND_T* _ct) { WDL_FastString msg(__LOCALIZE("No project startup action is defined","sws_startup_action")); if (int cmdId = SNM_NamedCommandLookup(g_prjActions.Get()->Get())) msg.SetFormatted(512, __LOCALIZE_VERFMT("'%s' is defined as project startup action", "sws_startup_action"), kbd_getTextFromCmd(cmdId, NULL)); char prjFn[SNM_MAX_PATH] = ""; EnumProjects(-1, prjFn, sizeof(prjFn)); if (*prjFn) { msg.Append("\r\n"); msg.AppendFormatted(SNM_MAX_PATH, __LOCALIZE_VERFMT("for %s", "sws_startup_action"), prjFn); } msg.Append("."); msg.Append("\r\n\r\n"); if (int cmdId = SNM_NamedCommandLookup(g_globalAction.Get())) { msg.AppendFormatted(512, __LOCALIZE_VERFMT("'%s' is defined as global startup action", "sws_startup_action"), kbd_getTextFromCmd(cmdId, NULL)); } else { msg.Append(__LOCALIZE("No global startup action is defined","sws_startup_action")); } msg.Append("."); MessageBox(GetMainHwnd(), msg.Get(), SWS_CMD_SHORTNAME(_ct), MB_OK); }
void DelRelatedProject(COMMAND_T*) { if (!g_relatedProjects.Get()->GetSize()) MessageBox(g_hwndParent, __LOCALIZE("No related projects to delete","sws_mbox"), __LOCALIZE("SWS Delete Related Project","sws_mbox"), MB_OK); else DialogBox(g_hInst, MAKEINTRESOURCE(IDD_LOAD) ,g_hwndParent, doDeleteDialog); }
void FindWnd::OnInitDlg() { m_resize.init_item(IDC_EDIT, 0.0, 0.0, 1.0, 0.0); SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_EDIT), GWLP_USERDATA, 0xdeadf00b); // load prefs m_type = GetPrivateProfileInt(FIND_INI_SEC, "Type", 0, g_SNM_IniFn.Get()); m_zoomSrollItems = (GetPrivateProfileInt(FIND_INI_SEC, "ZoomScrollToFoundItems", 0, g_SNM_IniFn.Get()) == 1); LICE_CachedFont* font = SNM_GetThemeFont(); m_vwnd_painter.SetGSC(WDL_STYLE_GetSysColor); m_parentVwnd.SetRealParent(m_hwnd); m_txtScope.SetID(TXTID_SCOPE); m_txtScope.SetFont(font); m_txtScope.SetText(__LOCALIZE("Find in:","sws_DLG_154")); m_parentVwnd.AddChild(&m_txtScope); m_btnEnableZommScroll.SetID(BTNID_ZOOM_SCROLL_EN); m_btnEnableZommScroll.SetTextLabel(__LOCALIZE("Zoom/Scroll","sws_DLG_154"), -1, font); m_btnEnableZommScroll.SetCheckState(m_zoomSrollItems); m_parentVwnd.AddChild(&m_btnEnableZommScroll); m_btnFind.SetID(BTNID_FIND); m_parentVwnd.AddChild(&m_btnFind); m_btnPrev.SetID(BTNID_PREV); m_parentVwnd.AddChild(&m_btnPrev); m_btnNext.SetID(BTNID_NEXT); m_parentVwnd.AddChild(&m_btnNext); m_cbType.SetID(CMBID_TYPE); m_cbType.SetFont(font); m_cbType.AddItem(__LOCALIZE("Item names","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Item names (all takes)","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Media filenames","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Media filenames (all takes)","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Item notes","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Track names","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Track notes","sws_DLG_154")); m_cbType.AddItem(__LOCALIZE("Marker/region names","sws_DLG_154")); m_cbType.SetCurSel(m_type); m_parentVwnd.AddChild(&m_cbType); m_txtResult.SetID(TXTID_RESULT); m_txtResult.SetFont(font); m_txtResult.SetColors(LICE_RGBA(170,0,0,255)); m_parentVwnd.AddChild(&m_txtResult); g_notFound = false; // *g_searchStr = 0; SetDlgItemText(m_hwnd, IDC_EDIT, g_searchStr); m_parentVwnd.RequestRedraw(NULL); }
HMENU GrooveDialog::OnContextMenu(int x, int y, bool* wantDefaultItems) { HMENU contextMenu = CreatePopupMenu(); AddToMenu(contextMenu, __LOCALIZE("Select groove folder...","sws_DLG_157"), FNG_OPEN_FOLDER); AddToMenu(contextMenu, __LOCALIZE("Save groove...","sws_DLG_157"), NamedCommandLookup("_FNG_SAVE_GROOVE")); AddToMenu(contextMenu, __LOCALIZE("Refresh","sws_DLG_157"), FNG_REFRESH); return contextMenu; }
void SetRMSOptions(COMMAND_T*) { char reply[100]; GetPrivateProfileString(SWS_INI, SWS_RMS_KEY, "-20,0.1", reply, 100, get_ini_file()); if (GetUserInputs(__LOCALIZE("SWS RMS options","sws_analysis"), 2, __LOCALIZE("Target RMS normalize level (db),Window size for peak RMS (s)","sws_analysis"), reply, 100)) { // Do really basic input check if (strchr(reply, ',') && strlen(reply) > 2) WritePrivateProfileString(SWS_INI, SWS_RMS_KEY, reply, get_ini_file()); } }
const char* GetEnvModTypeStr(EnvModType type) { switch(type) { case eENVMOD_FADEIN : return __LOCALIZE("Fade in","sws_DLG_148"); break; case eENVMOD_FADEOUT : return __LOCALIZE("Fade out","sws_DLG_148"); break; case eENVMOD_AMPLIFY : return __LOCALIZE("Amplify","sws_DLG_148"); break; default : return NULL; break; } }
static void ShowGroove(int flags, void *data) { GrooveTemplateHandler *me = GrooveTemplateHandler::Instance(); if(me->isGrooveEmpty()) { MessageBox(GetMainHwnd(), __LOCALIZE("No groove loaded!","sws_mbox"), __LOCALIZE("FNG - Error","sws_mbox"),0); return; } MessageBox(GetMainHwnd(), me->GrooveToString().c_str(), __LOCALIZE("Groove","sws_mbox"), 0); }
const char* GetEnvTypeStr(EnvType type) { switch(type) { case eENVTYPE_TRACK : return __LOCALIZE("Selected track envelope","sws_DLG_148"); break; case eENVTYPE_TAKE : return __LOCALIZE("Selected take(s)","sws_DLG_148"); break; case eENVTYPE_MIDICC : return __LOCALIZE("Selected take(s) (MIDI)","sws_DLG_148"); break; default : return NULL; break; } }
void FindWnd::DrawControls(LICE_IBitmap* _bm, const RECT* _r, int* _tooltipHeight) { // 1st row of controls int x0 = _r->left + SNM_GUI_X_MARGIN_OLD; int h = SNM_GUI_TOP_H; if (_tooltipHeight) *_tooltipHeight = h; bool drawLogo = false; if (!SNM_AutoVWndPosition(DT_LEFT, &m_txtScope, NULL, _r, &x0, _r->top, h, 5)) return; if (SNM_AutoVWndPosition(DT_LEFT, &m_cbType, &m_txtScope, _r, &x0, _r->top, h)) { switch (m_type) { case TYPE_ITEM_NAME: case TYPE_ITEM_NAME_ALL_TAKES: case TYPE_ITEM_FILENAME: case TYPE_ITEM_FILENAME_ALL_TAKES: case TYPE_ITEM_NOTES: m_btnEnableZommScroll.SetCheckState(m_zoomSrollItems); drawLogo = SNM_AutoVWndPosition(DT_LEFT, &m_btnEnableZommScroll, NULL, _r, &x0, _r->top, h); break; default: drawLogo = true; break; } } if (drawLogo) SNM_AddLogo(_bm, _r, x0, h); // 2nd row of controls h = 45; x0 = _r->left + SNM_GUI_X_MARGIN_OLD; int y0 = _r->top+56; SNM_SkinToolbarButton(&m_btnFind, __LOCALIZE("Find all","sws_DLG_154")); m_btnFind.SetGrayed(!g_searchStr || !(*g_searchStr) || m_type == TYPE_MARKER_REGION); if (SNM_AutoVWndPosition(DT_LEFT, &m_btnFind, NULL, _r, &x0, y0, h, 4)) { SNM_SkinToolbarButton(&m_btnPrev, __LOCALIZE("Previous","sws_DLG_154")); m_btnPrev.SetGrayed(!g_searchStr || !(*g_searchStr)); if (SNM_AutoVWndPosition(DT_LEFT, &m_btnPrev, NULL, _r, &x0, y0, h, 4)) { SNM_SkinToolbarButton(&m_btnNext, __LOCALIZE("Next","sws_DLG_154")); m_btnNext.SetGrayed(!g_searchStr || !(*g_searchStr)); SNM_AutoVWndPosition(DT_LEFT, &m_btnNext, NULL, _r, &x0, y0, h); } } m_txtResult.SetText(g_notFound ? __LOCALIZE("Not found!","sws_DLG_154") : ""); SNM_AutoVWndPosition(DT_LEFT, &m_txtResult, NULL, _r, &x0, y0, h); }
const char* GetTakeEnvelopeStr(TakeEnvType type) { switch(type) { case eTAKEENV_VOLUME : return __LOCALIZE("Volume","sws_mbox"); break; case eTAKEENV_PAN : return __LOCALIZE("Pan","sws_mbox"); break; case eTAKEENV_MUTE : return __LOCALIZE("Mute","sws_mbox"); break; case eTAKEENV_PITCH : return __LOCALIZE("Pitch","sws_mbox"); break; default : return NULL; break; } }
void GrooveDialog::ApplySelectedGroove() { int index = (int)SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_GETCURSEL, 0, 0); std::string grooveName = __LOCALIZE("** User Groove **","sws_DLG_157"); GrooveTemplateMemento memento = GrooveTemplateHandler::GetMemento(); if(index > 0) { std::string itemLocation; char itemText[MAX_PATH]; SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_GETTEXT, index, (LPARAM)itemText); grooveName = itemText; itemLocation = currentDir; itemLocation += PATH_SEP; itemLocation += grooveName; itemLocation += ".rgt"; GrooveTemplateHandler *me = GrooveTemplateHandler::Instance(); std::string errMessage; if(!me->LoadGroove(itemLocation, errMessage)) MessageBox(GetMainHwnd(), errMessage.c_str(), __LOCALIZE("FNG - Error","sws_DLG_157"), 0); } if(index >= 0) { GrooveTemplateHandler *me = GrooveTemplateHandler::Instance(); int beatDivider = me->GetGrooveTolerance(); bool midiEditorTarget = SendDlgItemMessage(m_hwnd, IDC_TARG_NOTES, BM_GETCHECK, 0, 0) == BST_CHECKED; HWND editControl = GetDlgItem(m_hwnd, IDC_STRENGTH); char percentage[16]; GetWindowText(editControl, percentage, 16); double posStrength = (double)atoi(percentage) / 100.0; editControl = GetDlgItem(m_hwnd, IDC_VELSTRENGTH); GetWindowText(editControl, percentage, 16); double velStrength = (double)atoi(percentage) / 100.0; std::string undoMessage = __LOCALIZE("FNG: load and apply groove - ","sws_DLG_157") + grooveName; try { if(midiEditorTarget) me->ApplyGrooveToMidiEditor(beatDivider, posStrength, velStrength); else me->ApplyGroove(beatDivider, posStrength, velStrength); Undo_OnStateChange2(0, undoMessage.c_str()); } catch(RprLibException &e) { if(e.notify()) { MessageBox(GetMainHwnd(), e.what(), __LOCALIZE("FNG - Error","sws_DLG_157"), 0); } } } GrooveTemplateHandler::SetMemento(memento); }
const char* GetTimeSegmentStr(TimeSegment timeSegment) { switch(timeSegment) { case eTIMESEGMENT_TIMESEL : return __LOCALIZE("Time selection","sws_mbox"); break; case eTIMESEGMENT_PROJECT : return __LOCALIZE("Project","sws_mbox"); break; case eTIMESEGMENT_SELITEM : return __LOCALIZE("Selected item","sws_mbox"); break; case eTIMESEGMENT_LOOP : return __LOCALIZE("Loop","sws_mbox"); break; //case eTIMESEGMENT_CURRENTMEASURE : return __LOCALIZE("Current measure","sws_mbox"); break; default : return "???"; break; } }
void OpenProjectsFromList(COMMAND_T*) { char cPath[256]; GetProjectPath(cPath, 256); char* filename = BrowseForFiles(__LOCALIZE("Select project list","sws_mbox"), cPath, NULL, false, "Reaper Project List (*.RPL)\0*.RPL\0All Files\0*.*\0"); if (filename) { FILE* f = fopenUTF8(filename, "r"); if (f) { // Save "prompt on new project" variable int iNewProjOpts; int sztmp; int* pNewProjOpts = (int*)get_config_var("newprojdo", &sztmp); iNewProjOpts = *pNewProjOpts; *pNewProjOpts = 0; int i = 0; int iProjects = -1; while (EnumProjects(++iProjects, NULL, 0)); // Count projects char cName[10]; EnumProjects(-1, cName, 10); if (iProjects != 1 || cName[0] != 0 || GetNumTracks() != 0) { if (MessageBox(g_hwndParent, __LOCALIZE("Close active tabs first?","sws_mbox"), __LOCALIZE("SWS Project List Open","sws_mbox"), MB_YESNO) == IDYES) Main_OnCommand(40886, 0); else i = 1; } while(fgets(cPath, 256, f)) { char* pC; while((pC = strchr(cPath, '\r'))) *pC = 0; // Strip newlines no matter the format while((pC = strchr(cPath, '\n'))) *pC = 0; if (cPath[0]) { if (i++) Main_OnCommand(41929, 0); // New project tab (ignore default template) Main_openProject(cPath); } } fclose(f); *pNewProjOpts = iNewProjOpts; } else MessageBox(g_hwndParent, __LOCALIZE("Unable to open file.","sws_mbox"), __LOCALIZE("SWS Project List Open","sws_mbox"), MB_OK); free(filename); } }
static void GetEmulationSettings(int flag, void *data) { char returnStrings[512] = "1,1"; std::string delay = getReaperProperty("midihw_delay"); std::string jitter = getReaperProperty("midihw_jitter"); if(!delay.empty() && !jitter.empty()) { std::string temp = delay + "," + jitter; ::strcpy(returnStrings, temp.c_str()); } if(GetUserInputs(__LOCALIZE("MIDI hardware emulation","sws_mbox"), 2, __LOCALIZE("Serial delay (ms),Max jitter (ms)","sws_mbox"), returnStrings, 512)) { std::string results(returnStrings); setReaperProperty("midihw_delay", results.substr(0, results.find_first_of(','))); setReaperProperty("midihw_jitter", results.substr(results.find_first_of(',') + 1)); } }
void SetProjectStartupAction(COMMAND_T* _ct) { if (PromptClearProjectStartupAction(false) == IDNO) return; char idstr[SNM_MAX_ACTION_CUSTID_LEN]; lstrcpyn(idstr, __LOCALIZE("Paste command ID or identifier string here","sws_mbox"), sizeof(idstr)); if (PromptUserForString(GetMainHwnd(), SWS_CMD_SHORTNAME(_ct), idstr, sizeof(idstr), true)) { WDL_FastString msg; if (int cmdId = SNM_NamedCommandLookup(idstr)) { // more checks: http://forum.cockos.com/showpost.php?p=1252206&postcount=1618 if (int tstNum = CheckSwsMacroScriptNumCustomId(idstr)) { msg.SetFormatted(256, __LOCALIZE_VERFMT("%s failed: unreliable command ID '%s'!","sws_DLG_161"), SWS_CMD_SHORTNAME(_ct), idstr); msg.Append("\n"); // localization note: msgs shared with the CA editor if (tstNum==-1) msg.Append(__LOCALIZE("For SWS/S&M actions, you must use identifier strings (e.g. _SWS_ABOUT), not command IDs (e.g. 47145).\nTip: to copy such identifiers, right-click the action in the Actions window > Copy selected action cmdID/identifier string.","sws_mbox")); else if (tstNum==-2) msg.Append(__LOCALIZE("For macros/scripts, you must use identifier strings (e.g. _f506bc780a0ab34b8fdedb67ed5d3649), not command IDs (e.g. 47145).\nTip: to copy such identifiers, right-click the macro/script in the Actions window > Copy selected action cmdID/identifier string.","sws_mbox")); MessageBox(GetMainHwnd(), msg.Get(), __LOCALIZE("S&M - Error","sws_DLG_161"), MB_OK); } else { g_prjActions.Get()->Set(idstr); Undo_OnStateChangeEx2(NULL, SWS_CMD_SHORTNAME(_ct), UNDO_STATE_MISCCFG, -1); msg.SetFormatted(256, __LOCALIZE_VERFMT("'%s' is defined as project startup action","sws_mbox"), kbd_getTextFromCmd(cmdId, NULL)); char prjFn[SNM_MAX_PATH] = ""; EnumProjects(-1, prjFn, sizeof(prjFn)); if (*prjFn) { msg.Append("\n"); msg.AppendFormatted(SNM_MAX_PATH, __LOCALIZE_VERFMT("for %s","sws_mbox"), prjFn); } msg.Append("."); MessageBox(GetMainHwnd(), msg.Get(), SWS_CMD_SHORTNAME(_ct), MB_OK); } } else { msg.SetFormatted(256, __LOCALIZE_VERFMT("%s failed: command ID or identifier string '%s' not found in the 'Main' section of the action list!","sws_DLG_161"), SWS_CMD_SHORTNAME(_ct), idstr); MessageBox(GetMainHwnd(), msg.Get(), __LOCALIZE("S&M - Error","sws_DLG_161"), MB_OK); } } }
// Return TRUE on delete send bool ResolveMissingRecv(MediaTrack* tr, int iSend, TrackSend* ts, WDL_PtrList<TrackSendFix>* pFix) { WDL_FastString str; char* cName = (char*)GetSetMediaTrackInfo(tr, "P_NAME", NULL); if (!cName || !cName[0]) cName = (char*)__LOCALIZE("(unnamed)","sws_DLG_114"); str.SetFormatted(200, __LOCALIZE_VERFMT("Send %d on track %d \"%s\" is missing its receive track!","sws_DLG_114"), iSend+1, CSurf_TrackToID(tr, false), cName); g_cErrorStr = str.Get(); g_ts = ts; g_send = tr; g_recv = NULL; DialogBox(g_hInst, MAKEINTRESOURCE(IDD_RECVMISSING), g_hwndParent, doResolve); if (g_iResolveRet == 1) return true; else if (g_iResolveRet == 2) { GUID* newGuid = (GUID*)GetSetMediaTrackInfo(g_recv, "GUID", NULL); if (pFix) pFix->Add(new TrackSendFix(ts->GetGuid(), newGuid)); ts->SetGuid(newGuid); } return false; }
void TakeRandomCols(COMMAND_T* = NULL) { COLORREF cr; // All black check if (AllBlack()) return; for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); for (int j = 0; j < GetTrackNumMediaItems(tr); j++) { MediaItem* mi = GetTrackMediaItem(tr, j); if (*(bool*)GetSetMediaItemInfo(mi, "B_UISEL", NULL)) { for (int h = 0; h < CountTakes(mi); h++) { while (!(cr = g_custColors[rand() % 16])); cr |= 0x1000000; GetSetMediaItemTakeInfo(GetTake(mi, h), "I_CUSTOMCOLOR", &cr); } } } } Undo_OnStateChange(__LOCALIZE("Set takes in selected item(s) to random custom color(s)","sws_undo")); UpdateTimeline(); }
void ME_CCEventAtEditCursor (COMMAND_T* ct, int val, int valhw, int relmode, HWND hwnd) { BR_MouseInfo mouseInfo(BR_MouseInfo::MODE_MIDI_EDITOR_ALL); if (mouseInfo.GetMidiEditor()) { if (MediaItem_Take* take = MIDIEditor_GetTake(mouseInfo.GetMidiEditor())) { double positionPPQ = MIDI_GetPPQPosFromProjTime(take, GetCursorPositionEx(NULL)); int lane, value; if (mouseInfo.GetCCLane(&lane, &value, NULL) && value >= 0) { if (lane == CC_TEXT_EVENTS || lane == CC_SYSEX || lane == CC_BANK_SELECT || lane == CC_VELOCITY) MessageBox((HWND)mouseInfo.GetMidiEditor(), __LOCALIZE("Can't insert in velocity, text, sysex and bank select lanes","sws_mbox"), __LOCALIZE("SWS/BR - Warning","sws_mbox"), MB_OK); else { bool do14bit = (lane >= CC_14BIT_START) ? true : false; int type = (lane == CC_PROGRAM) ? (STATUS_PROGRAM) : (lane == CC_CHANNEL_PRESSURE ? STATUS_CHANNEL_PRESSURE : (lane == CC_PITCH ? STATUS_PITCH : STATUS_CC)); int channel = MIDIEditor_GetSetting_int(mouseInfo.GetMidiEditor(), "default_note_chan"); int msg2 = CheckBounds(lane, 0, 127) ? ((value >> 7) | 0) : (value & 0x7F); int msg3 = CheckBounds(lane, 0, 127) ? (value & 0x7F) : ((value >> 7) | 0); int targetLane = (do14bit) ? lane - CC_14BIT_START : lane; int targetLane2 = (do14bit) ? targetLane + 32 : lane; MIDI_InsertCC(take, true, false, positionPPQ, type, channel, (CheckBounds(targetLane, 0, 127) ? targetLane : msg2), msg3); if (do14bit) MIDI_InsertCC(take, true, false, positionPPQ, type, channel, targetLane2, msg2); Undo_OnStateChangeEx2(NULL, SWS_CMD_SHORTNAME(ct), UNDO_STATE_ITEMS, -1); } } } }
void ColorChildren(COMMAND_T* = NULL) { int iParentDepth; COLORREF crParentColor; bool bSelected = false; MediaTrack* gfd = NULL; for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); int iType; int iFolder = GetFolderDepth(tr, &iType, &gfd); if (bSelected) GetSetMediaTrackInfo(tr, "I_CUSTOMCOLOR", &crParentColor); if (iType == 1) { if (!bSelected && *(int*)GetSetMediaTrackInfo(tr, "I_SELECTED", NULL)) { iParentDepth = iFolder; bSelected = true; } crParentColor = *(COLORREF*)GetSetMediaTrackInfo(tr, "I_CUSTOMCOLOR", NULL); } if (iType + iFolder <= iParentDepth) bSelected = false; } Undo_OnStateChangeEx(__LOCALIZE("Set track(s) children to same color","sws_undo"), UNDO_STATE_TRACKCFG, -1); }
void CustomColorAll(COMMAND_T*) { // Get the first selected track for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); if (*(int*)GetSetMediaTrackInfo(tr, "I_SELECTED", NULL)) { Undo_BeginBlock(); Main_OnCommand(40357, 0); // Set track(s) to one custom color // Assume the user clicked 'OK' in the color picker! COLORREF cr = *(COLORREF*)GetSetMediaTrackInfo(tr, "I_CUSTOMCOLOR", NULL); for (int i = 1; i <= GetNumTracks(); i++) { tr = CSurf_TrackFromID(i, false); for (int j = 0; j < GetTrackNumMediaItems(tr); j++) { MediaItem* mi = GetTrackMediaItem(tr, j); if (*(bool*)GetSetMediaItemInfo(mi, "B_UISEL", NULL)) GetSetMediaItemInfo(mi, "I_CUSTOMCOLOR", &cr); } } UpdateTimeline(); Undo_EndBlock(__LOCALIZE("Set selected track(s)/item(s) to custom color","sws_undo"), UNDO_STATE_ALL); return; } } // No tracks selected so just run the item action Main_OnCommand(40704, 0); // Set item(s) to one custom color }
void RMSNormalizeAll(double dTargetDb, double dWindowSize) { WDL_TypedBuf<MediaItem*> items; SWS_GetSelectedMediaItems(&items); double dMaxRMS = -DBL_MAX; ANALYZE_PCM a; memset(&a, 0, sizeof(a)); a.dWindowSize = dWindowSize; for (int i = 0; i < items.GetSize(); i++) { MediaItem* mi = items.Get()[i]; MediaItem_Take* take = GetMediaItemTake(mi, -1); if (take && AnalyzeItem(mi, &a) && a.dRMS != 0.0 && a.dRMS > dMaxRMS) dMaxRMS = a.dRMS; } if (dMaxRMS > -DBL_MAX) { for (int i = 0; i < items.GetSize(); i++) { MediaItem* mi = items.Get()[i]; MediaItem_Take* take = GetMediaItemTake(mi, -1); if (take) { double dVol = *(double*)GetSetMediaItemTakeInfo(take, "D_VOL", NULL); dVol *= DB2VAL(dTargetDb) / dMaxRMS; GetSetMediaItemTakeInfo(take, "D_VOL", &dVol); } } UpdateTimeline(); Undo_OnStateChangeEx(__LOCALIZE("Normalize items to RMS","sws_undo"), UNDO_STATE_ITEMS, -1); } }
void ItemGradient(COMMAND_T* = NULL) { int iCurPos = 0; int iNumSel = 0; // First, must count the number of selected items for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); for (int j = 0; j < GetTrackNumMediaItems(tr); j++) if (*(bool*)GetSetMediaItemInfo(GetTrackMediaItem(tr, j), "B_UISEL", NULL)) iNumSel++; } // Now, set the colors for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); for (int j = 0; j < GetTrackNumMediaItems(tr); j++) { MediaItem* mi = GetTrackMediaItem(tr, j); if (*(bool*)GetSetMediaItemInfo(mi, "B_UISEL", NULL)) { COLORREF cr = CalcGradient(g_crGradStart, g_crGradEnd, (double)iCurPos++ / (iNumSel-1)) | 0x1000000; GetSetMediaItemInfo(mi, "I_CUSTOMCOLOR", &cr); } } } Undo_OnStateChange(__LOCALIZE("Set selected item(s) to color gradient","sws_undo")); UpdateTimeline(); }
/****************************************************************************** * Dialogs * ******************************************************************************/ void ConvertMarkersToTempoDialog (COMMAND_T* = NULL) { static HWND hwnd = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_BR_MARKERS_TO_TEMPO), g_hwndParent, ConvertMarkersToTempoProc); if (g_convertMarkersToTempoDialog) { KillTimer(hwnd, 1); ShowWindow(hwnd, SW_HIDE); g_convertMarkersToTempoDialog = false; } else { // Detect timebase bool cancel = false; int timebase; GetConfig("itemtimelock", timebase); if (timebase) { int answer = MessageBox(g_hwndParent, __LOCALIZE("Project timebase is not set to time. Do you want to set it now?","sws_DLG_166"), __LOCALIZE("SWS - Warning","sws_mbox"), MB_YESNOCANCEL); if (answer == 6) SetConfig("itemtimelock", 0); if (answer == 2) cancel = true; } if (!cancel) { SetTimer(hwnd, 1, 100, NULL); ShowWindow(hwnd, SW_SHOW); SetFocus(hwnd); g_convertMarkersToTempoDialog = true; } } RefreshToolbar(SWSGetCommandID(ConvertMarkersToTempoDialog)); }
EnvelopeProcessor::ErrorCode EnvelopeProcessor::processSelectedTakes() { ErrorCode res = eERRORCODE_OK; list<MediaItem*> items; GetSelectedMediaItems(items); if(items.empty()) return eERRORCODE_NOITEMSELECTED; Undo_BeginBlock2(0); for(list<MediaItem*>::iterator item = items.begin(); res == eERRORCODE_OK && item != items.end(); item++) { list<MediaItem_Take*> takes; GetMediaItemTakes(*item, takes, _envModParams.activeTakeOnly); //if(takes.empty()) // return eERRORCODE_NOITEMSELECTED; for(list<MediaItem_Take*>::iterator take = takes.begin(); take != takes.end(); take++) { res = processTakeEnv(*take); UpdateItemInProject(*item); if (res != eERRORCODE_OK) break; } } //Undo_OnStateChangeEx("Item Envelope LFO", UNDO_STATE_ALL, -1); // UpdateTimeline(); Undo_EndBlock2(NULL, __LOCALIZE("Take envelope processor","sws_undo"), UNDO_STATE_TRACKCFG); return eERRORCODE_OK; }
void GrooveDialog::RefreshGrooveList() { SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_RESETCONTENT, 0, 0); SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_ADDSTRING, 0, (LPARAM)__LOCALIZE("** User Groove **","sws_DLG_157")); WDL_DirScan dirScan; WDL_String searchStr(currentDir.c_str()); /* dirScan doesn't support wildcards on OSX do filtering later */ #ifdef _WIN32 searchStr.Append( PATH_SEP "*.rgt", MAX_PATH); int iFind = dirScan.First(searchStr.Get(), true); #else int iFind = dirScan.First(searchStr.Get()); #endif if (iFind == 0) { do { std::string fileName = dirScan.GetCurrentFN(); /* dirScan doesn't support wildcards on OSX so do basic filtering here */ #ifndef _WIN32 std::string::size_type index = fileName.find_last_of("."); if(index == std::string::npos) continue; if(fileName.substr(index) != ".rgt") continue; #endif std::string fileHead = fileName.substr(0, fileName.size() - 4); SendDlgItemMessage(m_hwnd, IDC_GROOVELIST, LB_ADDSTRING, 0, (LPARAM)fileHead.c_str()); } while(!dirScan.Next()); } }
EnvelopeProcessor::ErrorCode EnvelopeProcessor::processSelectedTrackEnv() { TrackEnvelope* envelope = GetSelectedTrackEnvelope(0); if(!envelope) return eERRORCODE_NOENVELOPE; Undo_BeginBlock2(0); double dStartPos, dEndPos; GetTimeSegmentPositions(_envModParams.timeSegment, dStartPos, dEndPos); if(dStartPos==dEndPos) return eERRORCODE_NULLTIMESELECTION; double dValMin, dValMax; ErrorCode res = getTrackEnvelopeMinMax(envelope, dValMin, dValMax); if(res != eERRORCODE_OK) return res; char* envState = GetSetObjectState(envelope, ""); string newState; res = processPoints(envState, newState, dStartPos, dEndPos, dValMin, dValMax, _envModParams.type, _envModParams.strength, _envModParams.offset); if(GetSetObjectState(envelope, newState.c_str())) res = eERRORCODE_UNKNOWN; else FreeHeapPtr(envState); //UpdateTimeline(); /* JFB "recursive" undo point, enabled at top level Undo_OnStateChangeEx("Envelope Processor", UNDO_STATE_ALL, -1); */ Undo_EndBlock2(NULL, __LOCALIZE("Track envelope processor","sws_undo"), UNDO_STATE_TRACKCFG); return res; }
INT_PTR WINAPI doResolve(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch (uMsg) { case WM_INITDIALOG: { SetDlgItemText(hwndDlg, IDC_TEXT, g_cErrorStr); CheckDlgButton(hwndDlg, IDC_APPLY, BST_CHECKED); HWND hTracks = GetDlgItem(hwndDlg, IDC_TRACK); WDL_UTF8_HookComboBox(hTracks); SendMessage(hTracks, CB_ADDSTRING, 0, (LPARAM)__LOCALIZE("(create new track)","sws_DLG_114")); for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); if (tr != g_send) { char cName[80]; _snprintf(cName, 80, "%d: %s", i, (char*)GetSetMediaTrackInfo(tr, "P_NAME", NULL)); SendMessage(hTracks, CB_ADDSTRING, 0, (LPARAM)cName); } } SendMessage(hTracks, CB_SETCURSEL, 0, 0); RestoreWindowPos(hwndDlg, RESOLVE_WND_POS, false); g_iResolveRet = 0; return 0; } case WM_COMMAND: wParam = LOWORD(wParam); if (wParam == IDC_DELETE) g_iResolveRet = 1; else if (wParam == IDOK) { char cTrack[10]; GetDlgItemText(hwndDlg, IDC_TRACK, cTrack, 10); int id = atol(cTrack); if (!id) // assume they chose "create new track" { id = GetNumTracks()+1; InsertTrackAtIndex(id, false); TrackList_AdjustWindows(false); } g_recv = CSurf_TrackFromID(id, false); g_iResolveRet = 2; } if (wParam == IDC_DELETE || wParam == IDOK || wParam == IDCANCEL) { SaveWindowPos(hwndDlg, RESOLVE_WND_POS); EndDialog(hwndDlg,0); } return 0; } return 0; }
RprMidiTakePtr RprMidiTake::createFromMidiEditor(bool readOnly) { void *midiEditor = SWS_MIDIEditor_GetActive(); if(midiEditor == NULL) { throw RprLibException(__LOCALIZE("No active MIDI editor","sws_mbox"), true); } RprTake take(SWS_MIDIEditor_GetTake(midiEditor)); const char *sourceFilename = take.getSource()->GetFileName(); if(!*sourceFilename) { RprMidiTakePtr takePtr(new RprMidiTake(take, readOnly)); return takePtr; } throw RprLibException(__LOCALIZE("Only in-project MIDI can be modified","sws_mbox"), true); }
void HideAll(COMMAND_T* = NULL) { for (int i = 1; i <= GetNumTracks(); i++) SetTrackVis(CSurf_TrackFromID(i, false), 0); TrackList_AdjustWindows(MAJORADJUST); UpdateTimeline(); Undo_OnStateChangeEx(__LOCALIZE("Hide all tracks","sws_undo"), UNDO_STATE_TRACKCFG, -1); }
void DelTracksChild(COMMAND_T* = NULL) { int iRet = MessageBox(g_hwndParent, __LOCALIZE("Delete track(s) children too?","sws_mbox"), __LOCALIZE("Delete track(s)","sws_mbox"), MB_YESNOCANCEL); if (iRet == IDCANCEL) return; if (iRet == IDYES) SelChildren(); for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); if (*(int*)GetSetMediaTrackInfo(tr, "I_SELECTED", NULL)) { DeleteTrack(tr); i--; } } Undo_OnStateChangeEx(__LOCALIZE("Delete track(s)","sws_undo"), UNDO_STATE_TRACKCFG, -1); }