Not really. I tried both : WinRT MIDI and the new Midi Service and i did not see much differences (apart from the different BMT port naming scheme).
With the new driver I sometimes ran into situations (it seems after installing a new plugin version) where the Midi service itself was frozen (impossible to stop) and the only solution was a complete reboot, but i did not investigate further (don’t know if it happens also with WinRT Midi).
… and also, a couple of small issues.
After (copy and) pasting a scripted dial in the editor :
- it is not possible to expand the sections. I need to select another control and come back to the copied dial to be able to expand the sections.
- if i tick the “Keep a single section opened” then, after a delay, the script section opens but with a red dot, and the original script is lost.
… and another issue :
There is no display on a js scripted dial (v-Pot)
Log Id: 3b052b53-97fa-4d14-a2f6-ad9c709ffa80
Dial code :
/// <reference path="C:/Users/LPA/AppData/Roaming/Elgato/StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin/ScriptJint/streamdeck-midi.d.ts" />
const{trsc_Init, trsc_switchView, trsc_DialRotated, trsc_TimerElapsed, trsc_GlobalVariableChanged} = require("./TR_SC_Selected_Dial EMBEDDED.js");
var l_pset = 1; // Half bank #
var cc1 = (l_pset - 1) * 2 + 1;
var cc2 = l_pset * 2;
var l_disp = 0; // 0 = Parameter View, 1=Track View, 2=Scene View
setParamDesign();
var t_trsc = "";
function OnInit() {
console.warn ("Init");
t_trsc = trsc_Init(l_disp, true); // Only returns Timer name
l_disp = 0; // 0 = Parameter View, 1=Track View, 2=Scene View
setParamDesign();
}
// Switch view
function OnScreenTouched(x, y) {
l_disp = (l_disp==0) ? 1 : 0;
switchView();
}
function OnDialReleased() {
l_disp = (l_disp==2) ? 0 : l_disp+1;
switchView();
}
function switchView() {
if (l_disp === 1 || l_disp === 2) {
trsc_switchView(l_disp);
return;
}
setParamDesign();
}
/*
Switch views
[(tap){@l_disp:#SWITCH(@l_disp,0,1,0)#}{@l_blockupd:0}]
Back to Parameter View
[(@g_pqb1:2-4){@l_disp:0}{@l_blockupd:0}]Switch in amy case
[(@g_pqb1:1){@l_disp:#IF(@l_blockupd=1,@l_disp,0)#}{@l_blockupd:0}] Switch only if device unchanged
New Device Received
[(@g_chnum0:-1){@l_blockupd:1}] Will always be set event if no device
*/
// Send / Receive midi
// Rotate
function OnDialRotated(ticks, value){
if (l_disp === 1 || l_disp === 2) {
trsc_DialRotated(l_disp, ticks, value);
return;
}
// send midi
midi.sendCC(1, 64+l_pset-1, value);
}
// Receive midi
function OnControlChangeReceived(channel, control, value) {
if (channel == 0 && control == 64+l_pset-1) {
//console.warn("CC " + control + " received, value=" + value);
ui.text(value);
ui.value(value);
}
}
function OnTimerElapsed(tname, isGlobal, time) {
console.warn("Main timer triggered, tname=" + tname + ", t_trsc=" + t_trsc);
if (tname == t_trsc) {
trsc_TimerElapsed(l_disp, tname, isGlobal, time);
return;
}
// Do something else here
}
// TO CHECK
// Make: "g_pqb1" --> "gpqb"+string(l_pset) if needed
function OnGlobalVariableChanged(name, value) {
console.warn ("Global var ", name, " changed, value= ", value);
if (name == "g_chnum0" && value == -1) { // New device
console.warn("Variable " + name + " changed, value=" + value);
l_disp = 0; // Reset to Parameter View
setParamDesign();
return;
}
if (l_disp === 1 || l_disp === 2) {
if (name == "g_pqb1") { // Half bank changed - same device
l_disp = 0; // Reset to Parameter View and continue
setParamDesign();
} else {
trsc_GlobalVariableChanged(l_disp, name, value)
return;
}
}
if (name == "g_pqb1") { // can be 0 if no parameters
rebindParameters(value);
//iconleft:#IF(@g_pqb1=@g_pqb0,"none",CONCAT(@g_pp,"PBank-",@g_nhb,"-",@g_pqb1,".png"))#
ui.iconleft(gvar.g_pqb1 == gvar.g_pqb0 ? "" : gvar.g_pp + "PBank-" + gvar.g_nhb + "-" + gvar.g_pqb1 + ".png");
console.warn("Variable " + name + " changed, value=" + value + ", ldisp=" + l_disp);
ui.title(gvar.g_pname[(l_pset-1 + gvar.g_pqb1 - 1)*4]);
return;
}
// Do something else here
}
function rebindParameters(halfBank) {
switch(halfBank) {
case 0: return;
case 1: {midi.sendCC(14, cc1, 0);break;}
case 2: {midi.sendCC(14, cc1, 127);break;}
case 3: {midi.sendCC(14, cc2, 0); break;}
case 4: {midi.sendCC(14, cc2, 127); break;}
default: console.warn("DP1 Dial js: Unknown halfBank:", halfBank);
}
}
function setParamDesign() {
layout.load("");
// Design is set in editor for V-Pot
ui.display("V-pot");
ui.minmax(1, 127);
// Colors (Not permitted with standard layouts)
//layout.l_toptext_full_width.color = "#B8A46E"; // Light Yellow
//layout.l_toptext_left_icon_present.color = "#B8A46E"; // Light Yellow
}
Note it happens also after a copy and paste. If i recreate the scripted dial from scratch, the vpot get displayed normally.






