261efe5452
Add three MIDI-bindable item actions mirroring the track tag family, routed through the shared hookcommand: retag selected items' membership then re-drive mint/apply so each lands on its mode's managed lane (manual-lane items exempt), all in one undo block. Extract shared item_read seam, simplify applyMintPlan's lane-count pass, and guard reconcile against unregistered-mode lanes.
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
// item_read.cpp — the single MediaItem* read seam (GUID + fixed-lane name). See
|
|
// item_read.h. Compiled into the reaper_reasampler MODULE; includes
|
|
// reaper_plugin_functions.h WITHOUT REAPERAPI_IMPLEMENT (main.cpp is the one TU that
|
|
// defines the API pointers — CLAUDE.md §contract).
|
|
|
|
#include "item_read.h"
|
|
|
|
#include <cstdio>
|
|
|
|
#define REAPERAPI_MINIMAL
|
|
#define REAPERAPI_WANT_GetSetMediaItemInfo_String
|
|
#define REAPERAPI_WANT_GetMediaItemInfo_Value
|
|
#define REAPERAPI_WANT_GetSetMediaTrackInfo_String
|
|
#include "reaper_plugin_functions.h"
|
|
|
|
namespace reasampler {
|
|
|
|
std::string itemGuid(MediaItem* it) {
|
|
char buf[64] = {0};
|
|
if (!GetSetMediaItemInfo_String(it, "GUID", buf, false)) return {};
|
|
return std::string(buf);
|
|
}
|
|
|
|
std::string itemLaneName(MediaTrack* tr, MediaItem* it) {
|
|
const int laneIdx = static_cast<int>(GetMediaItemInfo_Value(it, "I_FIXEDLANE"));
|
|
char parm[32];
|
|
std::snprintf(parm, sizeof(parm), "P_LANENAME:%d", laneIdx);
|
|
char buf[512] = {0};
|
|
if (!GetSetMediaTrackInfo_String(tr, parm, buf, false)) return {};
|
|
return std::string(buf);
|
|
}
|
|
|
|
} // namespace reasampler
|