From 688e5b37bb82813b140dd7d54333d51daa89c736 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 14:38:02 -0700 Subject: [PATCH 01/10] fix tracks not deleting properly --- Web Interfaces/rxfx_Turing-complete.www | 4 ++-- ...ring-complete - Cycle track record arm.lua | 22 ++++++++++--------- .../rxfx_turing_complete.html | 10 +++++++-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Web Interfaces/rxfx_Turing-complete.www b/Web Interfaces/rxfx_Turing-complete.www index 6f165eeb1..e5e4fda03 100644 --- a/Web Interfaces/rxfx_Turing-complete.www +++ b/Web Interfaces/rxfx_Turing-complete.www @@ -1,7 +1,7 @@ @description Turing-complete controller @author Rek's Effeks -@version 0.1beta.3 -@changelog Fixed tempo/time sig editing to be compatible with tap tempo. +@version 0.1beta.4 +@changelog Fixed track not deleting properly. @provides [main script] rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Set time selection from markers.lua diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua index 45c864639..03b6d313e 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua @@ -5,17 +5,19 @@ function Track_Cycle_RecordState() --reaper.ShowConsoleMsg(reaper.GetExtState("Fanciest", "TrackRename")) ToCycle = tonumber(reaper.GetExtState("Fanciest","TrackRecordCycle")) Track = reaper.GetTrack(0, ToCycle-1) -if reaper.GetMediaTrackInfo_Value(Track, "I_RECARM") == 0 then - reaper.SetMediaTrackInfo_Value(Track, "I_RECARM", 1) - reaper.SetMediaTrackInfo_Value(Track, "I_RECINPUT", 0) - reaper.SetExtState("Fanciest","RecCycleSuccess","chan1",false) -else - if reaper.GetMediaTrackInfo_Value(Track, "I_RECINPUT") == 0 then - reaper.SetMediaTrackInfo_Value(Track, "I_RECINPUT", 1) - reaper.SetExtState("Fanciest","RecCycleSuccess","chan2",false) +if Track ~= nil then + if reaper.GetMediaTrackInfo_Value(Track, "I_RECARM") == 0 then + reaper.SetMediaTrackInfo_Value(Track, "I_RECARM", 1) + reaper.SetMediaTrackInfo_Value(Track, "I_RECINPUT", 0) + reaper.SetExtState("Fanciest","RecCycleSuccess","chan1",false) else - reaper.SetMediaTrackInfo_Value(Track, "I_RECARM", 0) - reaper.SetExtState("Fanciest","RecCycleSuccess","off",false) + if reaper.GetMediaTrackInfo_Value(Track, "I_RECINPUT") == 0 then + reaper.SetMediaTrackInfo_Value(Track, "I_RECINPUT", 1) + reaper.SetExtState("Fanciest","RecCycleSuccess","chan2",false) + else + reaper.SetMediaTrackInfo_Value(Track, "I_RECARM", 0) + reaper.SetExtState("Fanciest","RecCycleSuccess","off",false) + end end end reaper.DeleteExtState("Fanciest","TrackRecordCycle",true) diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html index 31744dfea..ae9e61933 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html @@ -700,7 +700,9 @@ break; case "NTRACK": - if (tok.length > 1) {nTrack = tok[1];} + if (tok.length > 1) { + nTrack = tok[1]; + } break; case "TRACK": @@ -1045,7 +1047,7 @@ tracksRendered = true; } } - if (tracksDrawn > nTrack) { + if (tracksDrawn > nTrack-1) { tracks.removeChild(tracks.lastChild); } } @@ -1177,6 +1179,10 @@ } else if (tok[0] == "EXTSTATE" && tok[1] == "Fanciest" && tok[2] == "ProjectList" && tok[3] && tok[3] != "") { projectList = tok[3]; } + // } else if (tok[0] == "EXTSTATE" && tok[1] == "Fanciest" && tok[2] == "ReloadTracks") { + // if (tok[3]) {removeAllTracks();removeAllTracks();} + // wwr_req("SET/EXTSTATE/Fanciest/ReloadTracks/"); + // } break; } } From 11f25d4fed2d0cf0686bde19fb36e6bf1919a66d Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 15:37:24 -0700 Subject: [PATCH 02/10] selection display --- Web Interfaces/rxfx_Turing-complete.www | 5 ++- ...ing-complete - Update track selections.lua | 33 +++++++++++++++++ .../rxfx_turing_complete.html | 37 +++++++++++++++++-- 3 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua diff --git a/Web Interfaces/rxfx_Turing-complete.www b/Web Interfaces/rxfx_Turing-complete.www index e5e4fda03..f6d53b271 100644 --- a/Web Interfaces/rxfx_Turing-complete.www +++ b/Web Interfaces/rxfx_Turing-complete.www @@ -1,7 +1,7 @@ @description Turing-complete controller @author Rek's Effeks -@version 0.1beta.4 -@changelog Fixed track not deleting properly. +@version 0.1beta.5 +@changelog Added track selection display. @provides [main script] rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Set time selection from markers.lua @@ -14,6 +14,7 @@ [main script] rxfx_Turing-complete/rxfx_Turing-complete - Send project list.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Send tempo.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Set time signature.lua + [main script] rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua rxfx_Turing-complete/rxfx_turing_complete.html > rxfx_turing_complete.html rxfx_Turing-complete/OpenSans-VariableFont_wdth,wght.ttf > rxfx_turing_complete/ @about diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua new file mode 100644 index 000000000..3b50f4ae3 --- /dev/null +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua @@ -0,0 +1,33 @@ +-- @noindex +local function has_value (tab, val) + for index, value in ipairs(tab) do + if value == val then + return true + end + end + + return false +end + +function UpdateSelectedTracks() + local count = reaper.CountSelectedTracks(0) + local finalstring = "" + local trax = {} + if count ~= 0 then + for i=1, count do + trax[i] = reaper.GetSelectedTrack(0, i-1) + end + local count2 = reaper.CountTracks(0) + for i=1, count2 do + if has_value(trax, reaper.GetTrack(0,i)) then + finalstring = finalstring .. tostring(i) .. "," + end + end + reaper.ShowConsoleMsg(finalstring) + reaper.SetExtState("Fanciest","TrackSelections",finalstring,false) + else + reaper.SetExtState("Fanciest","TrackSelections","",false) + end +end + +UpdateSelectedTracks() diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html index ae9e61933..028f2ce29 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html @@ -95,6 +95,7 @@ var tracksRendered = false; // don't update arm display until tracks are there to edit wwr_req_recur("_RSfee01d3e4ca569bed48f2466c1453be35ab1d27e;GET/EXTSTATE/Fanciest/CurrentTempo",200); // tempo wwr_req_recur("MARKER;REGION;_RSe6f7f64d341520fb0ec902a7c0580f1b423e7fc7;GET/EXTSTATE/Fanciest/ArmDisplay;GET/EXTSTATE/Fanciest/SelectDisplay;GET/EXTSTATE/Fanciest/CurrentProject",500); // markers, regions, arm states, time select, project name +wwr_req_recur("_RS9f79e20ed4fb38201ca57ed8cbec8d2176d4288b;GET/EXTSTATE/Fanciest/TrackSelections",397); // which tracks are selected? wwr_req_recur("_RS99f117755ebbf002528fae80ba7693ec86ae8bca;GET/EXTSTATE/Fanciest/ProjectList",1000); // list of projects wwr_start(); @@ -241,6 +242,31 @@ bar.setAttributeNS(null, "visibility", "visible"); } +function setTrackSelected(idx, selected) { + var row1 = document.getElementById("track" + idx); + if (!row1) return; + var row1Content = row1.childNodes[0]; + if (!row1Content || !row1Content.innerHTML) return; + var indicator = row1Content.getElementsByClassName("trackSelectIndicator")[0]; + if (!indicator) return; + indicator.setAttribute("opacity", selected ? "1" : "0"); +} + +function updateSelections(inputString) { + var selections = inputString.split(","); + //var sel_ints = []; + for (let i = 0; i < nTrack; i++) { + setTrackSelected(i+1,0); + } + selections.forEach(element => { + if (!isNaN(parseInt(element))) { + setTrackSelected( parseInt(element), 1 ); + //sel_ints.push(parseInt(element)); + } + }); + //console.log(sel_ints); +} + function wwr_onreply(results) { /*var resultsDisplay = document.getElementById("_results"); if(resultsDisplay!=null){ @@ -1049,6 +1075,7 @@ } if (tracksDrawn > nTrack-1) { tracks.removeChild(tracks.lastChild); + //document.getElementById("track" + tok[1]) } } break; @@ -1178,11 +1205,9 @@ if (tok[3]) currentTempo = Number(tok[3]); } else if (tok[0] == "EXTSTATE" && tok[1] == "Fanciest" && tok[2] == "ProjectList" && tok[3] && tok[3] != "") { projectList = tok[3]; + } else if (tok[0] == "EXTSTATE" && tok[1] == "Fanciest" && tok[2] == "TrackSelections") { + updateSelections(tok[3]); } - // } else if (tok[0] == "EXTSTATE" && tok[1] == "Fanciest" && tok[2] == "ReloadTracks") { - // if (tok[3]) {removeAllTracks();removeAllTracks();} - // wwr_req("SET/EXTSTATE/Fanciest/ReloadTracks/"); - // } break; } } @@ -1328,6 +1353,8 @@ } // updateProjectName(); // updateTempo(); + + } @@ -1938,6 +1965,7 @@ viewBox="0 1 320 53" xml:space="preserve"> + @@ -3090,6 +3118,7 @@ }); + From 663dbba6dd9beb7e73f7e76c8dc895dac5829620 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 15:38:22 -0700 Subject: [PATCH 03/10] remove logging line --- .../rxfx_Turing-complete - Update track selections.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua index 3b50f4ae3..9fcdffe07 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua @@ -23,7 +23,6 @@ function UpdateSelectedTracks() finalstring = finalstring .. tostring(i) .. "," end end - reaper.ShowConsoleMsg(finalstring) reaper.SetExtState("Fanciest","TrackSelections",finalstring,false) else reaper.SetExtState("Fanciest","TrackSelections","",false) From c941f7d7138751610148f242951325183340cdf2 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 17:37:55 -0700 Subject: [PATCH 04/10] ReaPad/Turing integration --- Various/rxfx_ReaPad.eel | 46 +++++++- Web Interfaces/rxfx_Turing-complete.www | 4 +- .../rxfx_turing_complete.html | 100 ++++++++++++++---- 3 files changed, 128 insertions(+), 22 deletions(-) diff --git a/Various/rxfx_ReaPad.eel b/Various/rxfx_ReaPad.eel index 197e908b3..327a5317f 100644 --- a/Various/rxfx_ReaPad.eel +++ b/Various/rxfx_ReaPad.eel @@ -1,7 +1,7 @@ // @description ReaPad // @author Rek's Effeks -// @version 1.5.6 -// @changelog Time selection copy and empty controls, save button, remove "reset midi controllers" +// @version 1.5.7 +// @changelog Turing-Complete integration for track selection & FX // @about // Hotplug-enabled gamepad controller script for Reaper. Requires SWS extension. // @@ -105,6 +105,7 @@ effect = #effect; param = #param; razordel = #delete; razorcpy = #copy; +turingfx = #turingfx; newaxis = 0; oldaxis = 50; newpov = 100; @@ -523,6 +524,39 @@ function nudge_vol(amt) ); ); +function tcsl() +( // turing-complete - update track selection + n("_RS9f79e20ed4fb38201ca57ed8cbec8d2176d4288b"); +); + +function tcfx() +( // turing-complete - update track FX + count = CountTracks(0); + strcpy(#turingfx,""); + temp = #temp; + temp2 = #temp2; + i = 0; + loop(count, + track = GetTrack(0, i); + fxn = TrackFX_GetCount(track) - FXOffset; + fxc = TrackFX_GetCount(track); + fxc ? ( + TrackFX_GetFXName(track, fxn-1, #temp); + match("+?: %{temp2}S (*",#temp); + #turingfx += str(fxn); + #turingfx += "/"; + #turingfx += str(fxc); + #turingfx += ": "; + #turingfx += #temp2; + #turingfx += ","; + ):( + #turingfx += "No FX,"; + ); + i += 1; + ); + SetExtState("Fanciest","TrackFX",#turingfx,0); +); + function reverse_fx_lookup(fxname) ( i = 0; @@ -591,6 +625,7 @@ function fx_show() fxn = TrackFX_GetCount(track)-1-FXOffset; TrackFX_Show(track, fxn, 1); ); + tcfx(); ); function fx_cycle(direction) // swap out fx on selected tracks @@ -817,6 +852,7 @@ function setup() xbox = joystick_create(#guid); joystick_getinfo(xbox, numaxis, numpov); reload(xbox, 1); + tcfx(); defer("main_loop()"); ); ); @@ -890,6 +926,7 @@ function main_loop() ):( b(BUTTON_SELECT) ? ( r(40702); // new track at end of tcp + tcsl(); // turing update track sel display ):( b(BUTTON_START) ? ( Undo_BeginBlock(); @@ -944,6 +981,7 @@ function main_loop() ); ):( r(40030); // redo + tcsl(); // turing update track sel display ); ); ); @@ -1010,6 +1048,7 @@ function main_loop() i += 1; ); r(40005); // delete track + tcsl(); // turing update track sel display ):( b(BUTTON_START) ? ( Undo_BeginBlock(); @@ -1042,6 +1081,7 @@ function main_loop() MarkerSelActive = 0; // cancel ):( r(40029); // undo + tcsl(); // turing update track sel display ); ); ); @@ -1292,6 +1332,7 @@ function main_loop() ):( r(40286); // go to prev track ); + tcsl(); // turing update track sel display ); ); value > 0 ? ( // right @@ -1318,6 +1359,7 @@ function main_loop() ):( r(40285); // go to next track ); + tcsl(); // turing update track sel display ); ); ); diff --git a/Web Interfaces/rxfx_Turing-complete.www b/Web Interfaces/rxfx_Turing-complete.www index f6d53b271..e03cfb555 100644 --- a/Web Interfaces/rxfx_Turing-complete.www +++ b/Web Interfaces/rxfx_Turing-complete.www @@ -1,7 +1,7 @@ @description Turing-complete controller @author Rek's Effeks -@version 0.1beta.5 -@changelog Added track selection display. +@version 0.2 +@changelog Track selection and FX display for ReaPad integration. @provides [main script] rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Set time selection from markers.lua diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html index 028f2ce29..057c9d311 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html @@ -95,7 +95,7 @@ var tracksRendered = false; // don't update arm display until tracks are there to edit wwr_req_recur("_RSfee01d3e4ca569bed48f2466c1453be35ab1d27e;GET/EXTSTATE/Fanciest/CurrentTempo",200); // tempo wwr_req_recur("MARKER;REGION;_RSe6f7f64d341520fb0ec902a7c0580f1b423e7fc7;GET/EXTSTATE/Fanciest/ArmDisplay;GET/EXTSTATE/Fanciest/SelectDisplay;GET/EXTSTATE/Fanciest/CurrentProject",500); // markers, regions, arm states, time select, project name -wwr_req_recur("_RS9f79e20ed4fb38201ca57ed8cbec8d2176d4288b;GET/EXTSTATE/Fanciest/TrackSelections",397); // which tracks are selected? +wwr_req_recur("GET/EXTSTATE/Fanciest/TrackSelections;GET/EXTSTATE/Fanciest/TrackFX",397); // which tracks are selected/have fx? (ReaPad required or else this is pointless anyway) wwr_req_recur("_RS99f117755ebbf002528fae80ba7693ec86ae8bca;GET/EXTSTATE/Fanciest/ProjectList",1000); // list of projects wwr_start(); @@ -245,11 +245,14 @@ function setTrackSelected(idx, selected) { var row1 = document.getElementById("track" + idx); if (!row1) return; - var row1Content = row1.childNodes[0]; + var row1Content = row1.children[0]; if (!row1Content || !row1Content.innerHTML) return; var indicator = row1Content.getElementsByClassName("trackSelectIndicator")[0]; if (!indicator) return; indicator.setAttribute("opacity", selected ? "1" : "0"); + + var infoDiv = row1.children[1]; + if (infoDiv) infoDiv.style.display = selected ? "block" : "none"; } function updateSelections(inputString) { @@ -267,6 +270,28 @@ //console.log(sel_ints); } +function setTrackInfo(idx, text) { + var row = document.getElementById("track" + idx); + if (!row) return; + var infoDiv = row.children[1]; + if (!infoDiv) return; + var el = infoDiv.getElementsByClassName("trackInfoText")[0]; + if (!el) return; + var inner = el.parentElement; + inner.style.display = text ? "block" : "none"; + el.textContent = text || ""; +} + +function updateFX(inputString) { + var fxLines = inputString.split(","); + fxLines.pop(); + var i = 1; + fxLines.forEach(element => { + setTrackInfo(i,element); + i ++; + }); +} + function wwr_onreply(results) { /*var resultsDisplay = document.getElementById("_results"); if(resultsDisplay!=null){ @@ -675,15 +700,19 @@ endIconVis = "hidden"; nextIconVis = "visible"; } else { - document.getElementById("marker3").setAttributeNS(null, "visibility", "visible"); - document.getElementById("nextMarkerName").textContent = "END"; - if (!timesel_points.includes(null)) { - if (timesel_points.includes("end")) { select_points.push("next") } + var m3 = document.getElementById("marker3"); + if (m3) { + document.getElementById("marker3").setAttributeNS(null, "visibility", "visible"); + var nextMarkerNameEl = document.getElementById("nextMarkerName"); + if (nextMarkerNameEl) nextMarkerNameEl.textContent = "END"; + if (!timesel_points.includes(null)) { + if (timesel_points.includes("end")) { select_points.push("next") } + } + document.getElementById("marker3Number").textContent = "E"; + document.getElementById("marker3Bg").setAttributeNS(null, "fill", "#1a1a1a"); + document.getElementById("marker3Number").setAttributeNS(null, "fill", "#A8A8A8"); + endIconVis = "visible"; nextIconVis = "hidden"; } - document.getElementById("marker3Number").textContent = "E"; - document.getElementById("marker3Bg").setAttributeNS(null, "fill", "#1a1a1a"); - document.getElementById("marker3Number").setAttributeNS(null, "fill", "#A8A8A8"); - endIconVis = "visible"; nextIconVis = "hidden"; } elAttribute("iconPrev","visibility",prevIconVis); elAttribute("iconHome","visibility",homeIconVis); @@ -747,6 +776,9 @@ var trackRow1Div = document.createElement("div"); trackRow1Div.className = ("trackRow1"); + var trackInfoDiv = document.createElement("div"); + trackInfoDiv.className = ("trackInfo"); + trackInfoDiv.style.display = "none"; var trackRow2Div = document.createElement("div"); trackRow2Div.className = ("trackRow2"); trackRow2Div.id = tok[1]; @@ -755,6 +787,7 @@ if(trackDiv && allTracksDiv){allTracksDiv.appendChild(trackDiv);} trackDiv.appendChild(trackRow1Div) ; + trackDiv.appendChild(trackInfoDiv) ; trackDiv.appendChild(trackRow2Div) ; trackDiv.appendChild(trackSendsDiv); } @@ -762,6 +795,7 @@ else { if(backLoaded!=null && backLoaded.nextSibling!=null){ var cloneTrackRow1 = document.getElementById("trackRow1Svg").cloneNode(true); + var cloneTrackInfo = document.getElementById("trackInfoTemplate").cloneNode(true); var cloneTrackRow2 = document.getElementById("trackRow2Svg").cloneNode(true); var cloneTrackSend = document.getElementById("trackSendSvg").cloneNode(true); @@ -780,7 +814,7 @@ masterMeterReadout.textContent = (mkvolstr(tok[4])); var masterTrackContent = document.getElementById("track0"); - var masterTrackRow2Content = masterTrackContent.childNodes[3]; + var masterTrackRow2Content = masterTrackContent.children[1]; if (!masterTrackRow2Content.innerHTML){ masterTrackRow2Content.appendChild(cloneTrackRow2); var trackSendsDiv = document.createElement("div"); @@ -805,7 +839,7 @@ if(idx>0){ //normal track stuff - var trackRow1Content = document.getElementById("track" + idx).childNodes[0]; + var trackRow1Content = document.getElementById("track" + idx).children[0]; if (!trackRow1Content.innerHTML){ trackRow1Content.appendChild(cloneTrackRow1); trackRow1Content.firstChild.getElementsByClassName("hitbox")[0].id = idx; @@ -856,9 +890,13 @@ commit(); }); })(idx); + var trackInfoContent = document.getElementById("track" + idx).children[1]; + if (!trackInfoContent.innerHTML) { + trackInfoContent.appendChild(cloneTrackInfo); } + } - var trackRow2Content = document.getElementById("track" + idx).childNodes[1]; + var trackRow2Content = document.getElementById("track" + idx).children[2]; if (!trackRow2Content.innerHTML){ trackRow2Content.appendChild(cloneTrackRow2); } @@ -1007,7 +1045,7 @@ try { var result = await requestRecCycle(capturedIdx); // just let armDisplay handle it every half a second - var row1 = document.getElementById("track" + capturedIdx).childNodes[0]; + var row1 = document.getElementById("track" + capturedIdx).children[0]; var bg = row1.getElementsByClassName("recarmBg")[0]; var label = row1.getElementsByClassName("recarmLabel")[0]; @@ -1102,7 +1140,7 @@ var trackSendsContent = document.getElementById("sendsTrack" + tok[1]); if(trackSendsContent.childNodes.length>0){ - var thisSendDiv = trackSendsContent.childNodes[tok[2]]; + var thisSendDiv = trackSendsContent.children[tok[2]]; if(thisSendDiv!=null){ thisSendDiv.id=[tok[2]]; sendTitleText = thisSendDiv.firstChild.getElementsByClassName("sendTitleText")[0]; @@ -1183,7 +1221,7 @@ if (tok[3] != '' && tracksRendered) { armStates = tok[3].split(":"); for (var t = 0; t + +
+
+
+
+ From 7b6060cff741aa1587cad37bd9e954e84d0dd3c1 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 17:53:02 -0700 Subject: [PATCH 05/10] copied the wrong file oops --- .../rxfx_Turing-complete - Update track selections.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua index 9fcdffe07..8867078f7 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_Turing-complete - Update track selections.lua @@ -19,7 +19,7 @@ function UpdateSelectedTracks() end local count2 = reaper.CountTracks(0) for i=1, count2 do - if has_value(trax, reaper.GetTrack(0,i)) then + if has_value(trax, reaper.GetTrack(0,i-1)) then finalstring = finalstring .. tostring(i) .. "," end end From ed010e62264ad531ddaba5ff4db2b0ff3b6016ae Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sat, 9 May 2026 17:56:39 -0700 Subject: [PATCH 06/10] most plugins don't display how I thought --- Various/rxfx_ReaPad.eel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Various/rxfx_ReaPad.eel b/Various/rxfx_ReaPad.eel index 327a5317f..75e0fc0dc 100644 --- a/Various/rxfx_ReaPad.eel +++ b/Various/rxfx_ReaPad.eel @@ -542,7 +542,7 @@ function tcfx() fxc = TrackFX_GetCount(track); fxc ? ( TrackFX_GetFXName(track, fxn-1, #temp); - match("+?: %{temp2}S (*",#temp); + match("+?: %{temp2}S",#temp); #turingfx += str(fxn); #turingfx += "/"; #turingfx += str(fxc); From 4706821b2f1c189916a091fb735242d2bc43d586 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Sun, 10 May 2026 13:33:10 -0700 Subject: [PATCH 07/10] fix text size --- Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html index 057c9d311..a6a1b0fc4 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html @@ -2220,7 +2220,7 @@
- + @@ -2228,7 +2231,7 @@ overflow:hidden; text-overflow:ellipsis; background:#2a2a2a; - border-left:2px solid #57FF86; + border-left:2px solid #35FF50; border-radius:0 0 20px 6px; ">
From 800c9bd8157c48e6fa7df7f25ec258f9936b80a6 Mon Sep 17 00:00:00 2001 From: rexendevar Date: Mon, 11 May 2026 15:35:41 -0700 Subject: [PATCH 09/10] fix fx on pproject load --- Various/rxfx_ReaPad.eel | 20 ++++++++++++------- Web Interfaces/rxfx_Turing-complete.www | 2 +- .../rxfx_turing_complete.html | 1 + 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Various/rxfx_ReaPad.eel b/Various/rxfx_ReaPad.eel index 75e0fc0dc..0b7c86bc9 100644 --- a/Various/rxfx_ReaPad.eel +++ b/Various/rxfx_ReaPad.eel @@ -1,7 +1,7 @@ // @description ReaPad // @author Rek's Effeks -// @version 1.5.7 -// @changelog Turing-Complete integration for track selection & FX +// @version 1.5.71 +// @changelog fix Turing-Complete FX display after project load // @about // Hotplug-enabled gamepad controller script for Reaper. Requires SWS extension. // @@ -524,11 +524,6 @@ function nudge_vol(amt) ); ); -function tcsl() -( // turing-complete - update track selection - n("_RS9f79e20ed4fb38201ca57ed8cbec8d2176d4288b"); -); - function tcfx() ( // turing-complete - update track FX count = CountTracks(0); @@ -557,6 +552,17 @@ function tcfx() SetExtState("Fanciest","TrackFX",#turingfx,0); ); +function tcsl() +( // turing-complete - update track selection + n("_RS9f79e20ed4fb38201ca57ed8cbec8d2176d4288b"); + CountTracks(0) ? ( + GetExtState(#temp, "Fanciest", "TrackFX"); + match("rerun",#temp) ? ( + tcfx(); + ); + ); +); + function reverse_fx_lookup(fxname) ( i = 0; diff --git a/Web Interfaces/rxfx_Turing-complete.www b/Web Interfaces/rxfx_Turing-complete.www index 1e9fa0f96..1000722bf 100644 --- a/Web Interfaces/rxfx_Turing-complete.www +++ b/Web Interfaces/rxfx_Turing-complete.www @@ -1,6 +1,6 @@ @description Turing-complete controller @author Rek's Effeks -@version 0.2.1 +@version 0.2.2 @changelog Bug fixes. @provides [main script] rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua diff --git a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html index cee06e0c1..833dc1c5e 100644 --- a/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html +++ b/Web Interfaces/rxfx_Turing-complete/rxfx_turing_complete.html @@ -2891,6 +2891,7 @@ recarmCountAr = []; recCycleInProgress = []; tracksRendered = false; + wwr_req("SET/EXTSTATE/Fanciest/TrackFX/rerun"); } From e3b8ada6902a0843d24ea43aabe995e16811bb8c Mon Sep 17 00:00:00 2001 From: Flynn <46948713+rexendevar@users.noreply.github.com> Date: Mon, 11 May 2026 22:06:49 -0700 Subject: [PATCH 10/10] Update rxfx_Turing-complete.www --- Web Interfaces/rxfx_Turing-complete.www | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Web Interfaces/rxfx_Turing-complete.www b/Web Interfaces/rxfx_Turing-complete.www index 1000722bf..a9158f990 100644 --- a/Web Interfaces/rxfx_Turing-complete.www +++ b/Web Interfaces/rxfx_Turing-complete.www @@ -1,7 +1,7 @@ @description Turing-complete controller @author Rek's Effeks @version 0.2.2 -@changelog Bug fixes. +@changelog ReaPad integration and bug fixes. @provides [main script] rxfx_Turing-complete/rxfx_Turing-complete - Cycle track record arm.lua [main script] rxfx_Turing-complete/rxfx_Turing-complete - Set time selection from markers.lua