diff --git a/package-lock.json b/package-lock.json index 9b825caaa..758bc5737 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@intechstudio/grid-protocol": "1.20251126.1325", - "@intechstudio/grid-uikit": "1.20251104.1750", + "@intechstudio/grid-uikit": "1.20251207.1523", "@intechstudio/profile-cloud-webcomponent": "1.20251107.1414", "adm-zip": "^0.5.10", "axios": "^1.9.0", @@ -2281,9 +2281,9 @@ "integrity": "sha512-yzMQqtosf+6WyvEv0bcmaDeJ9SfCbtY3QTiurwgZMUsKFK3VqWrYn6+1Z7jVrAN6ZGdboMelJNBZv21aGWvpcw==" }, "node_modules/@intechstudio/grid-uikit": { - "version": "1.20251104.1750", - "resolved": "https://registry.npmjs.org/@intechstudio/grid-uikit/-/grid-uikit-1.20251104.1750.tgz", - "integrity": "sha512-uQ7OlZHIfYbfX02I2uAetWJoRUO49glg0ofW6ReYc7JrTGzA9uLK0efPiekIQLXYVfTjkOwDUMtSrK1NtByeRw==", + "version": "1.20251207.1523", + "resolved": "https://registry.npmjs.org/@intechstudio/grid-uikit/-/grid-uikit-1.20251207.1523.tgz", + "integrity": "sha512-PPpxxXw45ri+Q4vZWIuc00xsx6HKF7WSAPyGFffqE550DXrYnDhRz9JWdSYa2l35E+ruYkNT3nyHh72YU0m1Hw==", "dependencies": { "@melt-ui/svelte": "^0.86.6", "color-convert": "^2.0.1", diff --git a/package.json b/package.json index 91817415b..419fedede 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ }, "dependencies": { "@intechstudio/grid-protocol": "1.20251126.1325", - "@intechstudio/grid-uikit": "1.20251104.1750", + "@intechstudio/grid-uikit": "1.20251207.1523", "@intechstudio/profile-cloud-webcomponent": "1.20251107.1414", "adm-zip": "^0.5.10", "axios": "^1.9.0", diff --git a/src/content/bu16-pressure-sensitive-defaults.json b/src/content/bu16-pressure-sensitive-defaults.json new file mode 100644 index 000000000..94eb08eb4 --- /dev/null +++ b/src/content/bu16-pressure-sensitive-defaults.json @@ -0,0 +1,312 @@ +{ + "id": "f13e2698-3042-4aaa-8ede-4f8a64ed396c", + "modifiedAt": "2025-11-30T14:33:41.492Z", + "name": "bu16-getting-started", + "description": "Click here to add description", + "type": "BU16", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 14, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 15, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2025-11-30T14:33:41.492Z", + "virtualPath": "", + "cloudId": "s3XzfQzCoCCwtSgeOs2x", + "owner": "hLIZijz6PxRnxEjTA9Jb0OYSFt83" +} diff --git a/src/content/bu16-test 1.json b/src/content/bu16-test 1.json new file mode 100644 index 000000000..ba9686d52 --- /dev/null +++ b/src/content/bu16-test 1.json @@ -0,0 +1,312 @@ +{ + "id": "ae006167-4740-4242-b867-49a349df5a9c", + "modifiedAt": "2026-01-08T13:00:36.135Z", + "name": "bu16-test", + "description": "Click here to add description", + "type": "BU16", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 14, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 15, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:00:36.135Z", + "virtualPath": "", + "cloudId": "DxvZGlDUjp9y3K9js7DH", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/ef44-test 1.json b/src/content/ef44-test 1.json new file mode 100644 index 000000000..136f6df45 --- /dev/null +++ b/src/content/ef44-test 1.json @@ -0,0 +1,192 @@ +{ + "id": "80c23ceb-1b58-4a3d-84ac-cbe64bda938a", + "modifiedAt": "2026-01-08T13:00:47.340Z", + "name": "ef44-test", + "description": "Click here to add description", + "type": "EF44", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:00:47.340Z", + "virtualPath": "", + "cloudId": "C1B7LdlQtW3z9dmG0Jtw", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/en16-test 1.json b/src/content/en16-test 1.json new file mode 100644 index 000000000..961d06c58 --- /dev/null +++ b/src/content/en16-test 1.json @@ -0,0 +1,376 @@ +{ + "id": "99dc51c7-35d2-4f72-9104-288b834f605c", + "modifiedAt": "2026-01-08T13:00:55.808Z", + "name": "en16-test", + "description": "Click here to add description", + "type": "EN16", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 14, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 15, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Encoder Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 2, + "config": "--[[@sec]] self:emo(0) self:ev0(50) self:emi(0) self:ema(127) self:ese(100)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:00:55.808Z", + "virtualPath": "", + "cloudId": "danYTylkBeFhRTD48Zsz", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/pbf4-test 1.json b/src/content/pbf4-test 1.json new file mode 100644 index 000000000..4bd7fb22d --- /dev/null +++ b/src/content/pbf4-test 1.json @@ -0,0 +1,244 @@ +{ + "id": "c6597b1e-3d47-4ec8-bbb4-288bb095aa51", + "modifiedAt": "2026-01-08T13:01:23.695Z", + "name": "pbf4-test", + "description": "Click here to add description", + "type": "PBF4", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gmsh]] gms(0,176,0,val//128) gms(0,176,32,val%128)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:01:23.695Z", + "virtualPath": "", + "cloudId": "mrSkr1YnGquVCF2x3JXJ", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/po16-test 1.json b/src/content/po16-test 1.json new file mode 100644 index 000000000..625b8b886 --- /dev/null +++ b/src/content/po16-test 1.json @@ -0,0 +1,312 @@ +{ + "id": "dd43ab31-aaee-49f6-97d9-1493c384c83b", + "modifiedAt": "2026-01-08T13:01:32.034Z", + "name": "po16-test", + "description": "Click here to add description", + "type": "PO16", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gmsh]] gms(0,176,0,val//128) gms(0,176,32,val%128)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 14, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 15, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Potmeter Init]]" + }, + { + "event": 1, + "config": "--[[@spc]] self:pmo(7) self:pmi(0) self:pma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:01:32.034Z", + "virtualPath": "", + "cloudId": "Ypa1RZLBjgSA87TMU6TW", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/tek2-test 1.json b/src/content/tek2-test 1.json new file mode 100644 index 000000000..6eddea9bc --- /dev/null +++ b/src/content/tek2-test 1.json @@ -0,0 +1,218 @@ +{ + "id": "28e3dada-156c-4701-a02a-740c2600eae0", + "modifiedAt": "2026-01-08T13:01:39.112Z", + "name": "tek2-test", + "description": "Click here to add description", + "type": "TEK2", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 7, + "config": "--[[@sen]] self:epmo(0) self:epv0(50) self:epmi(0) self:epma(127) self:epse(50)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gmsh]] gms(0,176,0,val//128) gms(0,176,32,val%128)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Endless Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 7, + "config": "--[[@sen]] self:epmo(0) self:epv0(50) self:epmi(0) self:epma(127) self:epse(50)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:01:39.112Z", + "virtualPath": "", + "cloudId": "m4c3h8KjJiKqax9OcWEX", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/content/vsn1l-pressure-sensitive-defaults.json b/src/content/vsn1l-pressure-sensitive-defaults.json new file mode 100644 index 000000000..dfc032631 --- /dev/null +++ b/src/content/vsn1l-pressure-sensitive-defaults.json @@ -0,0 +1,278 @@ +{ + "id": "81946cb4-aa4f-4c7a-af10-15304af04ee4", + "modifiedAt": "2025-11-30T15:27:31.151Z", + "name": "vsn1-getting-started", + "description": "Click here to add description", + "type": "VSN1L", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(-2) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,10,39,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Endless Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 7, + "config": "--[[@sen]] self:epmo(0) self:epv0(50) self:epmi(0) self:epma(127) self:epse(50)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "--[[@cb]] glsb(255)pi,s,c,self.f,self.v,self.id=math.pi,64,{{0,0,0},{255,255,255},{glr(),glg(),glb()}},1,{27,0,100},'VSN1'd={[1]='Linear',[2]='Encoder',[3]='Button',[7]='Endless'}xc,yc,p=160,120,s*5/8;self.eventrx_cb=function(self,hdr,e,v,n)self.v=v;if#n==0 then n=d[e[3]]..e[2]end;self.id=string.sub(n,1,(self:lsw()/(s/2)-1)//1)self.f=1 end;self:ldaf(0,0,319,239,c[1])self:ldrr(3,3,317,237,10,c[2])" + }, + { + "event": 8, + "config": "--[[@cb]] if self.f>0 then self.f=self.f-1;local a,xo=gmaps(self.v[1],self.v[2],self.v[3],0.1,1),#tostring(self.v[1])/2*s/2-#tostring(self.v[1])-s//32;self:ldaf(10,10,310,230,c[1])self:ldrr(xc-p//1-1,yc-p//1-1,xc+p//1+1,yc+p//1+1,s,c[2])self:ldrrf(xc-p*a//1,yc-p*a//1,xc+p*a//1,yc+p*a//1,s,c[3])self:ldft(self.v[1],xc-xo,yc+s,s/2,c[2])local xn=(#self.id*(s/2))/2-s//32;self:ldft(self.id,xc-xn,yc-1.5*s,s/2,c[2])self:ldsw()end" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2025-11-30T15:27:31.151Z", + "virtualPath": "", + "cloudId": "wD3tJVF27EcAbkMirp9I", + "owner": "hLIZijz6PxRnxEjTA9Jb0OYSFt83" +} diff --git a/src/content/vsn1l-test 1.json b/src/content/vsn1l-test 1.json new file mode 100644 index 000000000..0635982db --- /dev/null +++ b/src/content/vsn1l-test 1.json @@ -0,0 +1,282 @@ +{ + "id": "5bddfa8e-2ee9-466d-985f-eda5379d6f98", + "modifiedAt": "2026-01-08T13:01:13.239Z", + "createdAt": "2026-01-08T13:01:06.011Z", + "name": "vsn1l-test", + "description": "Click here to add description", + "type": "VSN1L", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Endless Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,0,8,1},{255,0,8,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 7, + "config": "--[[@sen]] self:epmo(0) self:epv0(50) self:epmi(0) self:epma(127) self:epse(50)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gmsh]] gms(0,176,0,val//128) gms(0,176,32,val%128)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "" + }, + { + "event": 8, + "config": "" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2", + "virtualPath": "", + "cloudId": "R2T7O4dfRlxtxOJ9x5bm", + "fileName": "vsnil-test 1.json", + "isEditable": true, + "syncStatus": "synced", + "public": false +} \ No newline at end of file diff --git a/src/content/vsn1r-test 1.json b/src/content/vsn1r-test 1.json new file mode 100644 index 000000000..968ed000f --- /dev/null +++ b/src/content/vsn1r-test 1.json @@ -0,0 +1,278 @@ +{ + "id": "5d583854-d3b5-4dee-aef4-ba078b9babd5", + "modifiedAt": "2026-01-08T13:01:50.684Z", + "name": "vsn1r-test", + "description": "Click here to add description", + "type": "VSN1R", + "version": { + "major": "1", + "minor": "6", + "patch": "2" + }, + "configType": "profile", + "configs": [ + { + "controlElementNumber": 0, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 1, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 2, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 3, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 4, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 5, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 6, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 7, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 8, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{255,17,0,1},{255,4,0,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 7, + "config": "--[[@sen]] self:epmo(0) self:epv0(50) self:epmi(0) self:epma(127) self:epse(50)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gmsh]] gms(0,176,0,val//128) gms(0,176,32,val%128)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 9, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 10, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 11, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 12, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[Button Init]]" + }, + { + "event": 3, + "config": "--[[@sbc]] self:bmo(0) self:bmi(0) self:bma(127)--[[@sglc]] self:glc(-1,{{-1,-1,-1,1}}) self:glp(-1,-1)--[[@gms]] self:gms(-1,-1,-1,-1)" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + }, + { + "controlElementNumber": 13, + "events": [ + { + "event": 0, + "config": "" + }, + { + "event": 8, + "config": "" + } + ] + }, + { + "controlElementNumber": 255, + "events": [ + { + "event": 0, + "config": "--[[@cb]] --[[page init]]" + }, + { + "event": 4, + "config": "--[[@cb]] gpl(gpn())" + }, + { + "event": 5, + "config": "--[[@l]] local ch,cmd,param1,param2=midi.ch,midi.cmd,midi.p1,midi.p2" + }, + { + "event": 6, + "config": "--[[@cb]] print('tick')" + } + ] + } + ], + "createdAt": "2026-01-08T13:01:50.684Z", + "virtualPath": "", + "cloudId": "H9feIBIm5R4XpfrhCN9J", + "owner": "oMiJQcb4xqTI7XJlGZItEH2eKtm2" +} \ No newline at end of file diff --git a/src/renderer/config-blocks/RawCode.svelte b/src/renderer/config-blocks/RawCode.svelte index c31262d4e..f4bb34d1f 100644 --- a/src/renderer/config-blocks/RawCode.svelte +++ b/src/renderer/config-blocks/RawCode.svelte @@ -42,7 +42,7 @@ import SendFeedback from "../main/user-interface/SendFeedback.svelte"; import TooltipQuestion from "../../renderer/main/user-interface/tooltip/TooltipQuestion.svelte"; - import { MoltenButton } from "@intechstudio/grid-uikit"; + import { MoltenPushButton } from "@intechstudio/grid-uikit"; import { mergeActionsToCode } from "../runtime/operations"; import { GridAction, GridEvent } from "../runtime/runtime"; import { Analytics } from "../runtime/analytics.js"; @@ -128,23 +128,23 @@
{#if availablePackage?.isDownloaded === true} - {:else if availablePackage?.installProgress !== undefined}

Installing package...

{:else if availablePackage?.isDownloaded === false} - {:else} - {/if} diff --git a/src/renderer/config-blocks/SimpleColor.svelte b/src/renderer/config-blocks/SimpleColor.svelte index 7edf3ec4a..dc3d81beb 100644 --- a/src/renderer/config-blocks/SimpleColor.svelte +++ b/src/renderer/config-blocks/SimpleColor.svelte @@ -33,6 +33,9 @@ + {#if $appSettings.persistent.userLevelMinimalist == false} -
+ -
+ {/if} - -
- -
- - -
- Mixer -
+
+ { + const { color } = e.detail; + data.updatePickerColor(color); + sendData($data); + }} + on:change={(e) => { + dispatch("sync"); + }} />
-
-
- {#each [SimpleColor.Channel.RED, SimpleColor.Channel.GREEN, SimpleColor.Channel.BLUE] as channel} -
- {channel[0].toLocaleUpperCase()} - { - const { value, validationError } = e.detail; - data.updateRGBAChannelValue( - action, - value, - validationError, - channel, - ); - sendData($data); - }} - on:change={() => dispatch("sync")} - postProcessor={GridScript.shortify} - preProcessor={GridScript.humanize} - /> -
- {/each} -
-
- { - const { color } = e.detail; - data.updatePickerColor(color); - sendData($data); - }} - on:change={(e) => { - dispatch("sync"); - }} - /> -
-
- {SimpleColor.Channel.ALPHA[0].toLocaleUpperCase()} - { - const { value, validationError } = e.detail; - data.updateRGBAChannelValue( - action, - value, - validationError, - SimpleColor.Channel.ALPHA, - ); - sendData($data); - }} - on:change={() => dispatch("sync")} - postProcessor={GridScript.shortify} - preProcessor={GridScript.humanize} - /> -
-
- { - const { value } = e.detail; - data.updateAlphaSliderValue(value); - sendData($data); - }} - on:commit={() => { - dispatch("sync"); - }} - /> -
-
- + + + { + const { value, validationError } = e.detail; + data.updateRGBAChannelValue( + action, + value, + validationError, + SimpleColor.Channel.ALPHA, + ); + sendData($data); + }} + on:change={() => dispatch("sync")} + postProcessor={GridScript.shortify} + preProcessor={GridScript.humanize} + /> + { + const { value } = e.detail; + data.updateAlphaSliderValue(value); + sendData($data); + }} + on:commit={() => { + dispatch("sync"); + }} + /> + + + + {#each [SimpleColor.Channel.RED, SimpleColor.Channel.GREEN, SimpleColor.Channel.BLUE] as channel} + { + const { value, validationError } = e.detail; + data.updateRGBAChannelValue(action, value, validationError, channel); + sendData($data); + }} + on:change={() => dispatch("sync")} + postProcessor={GridScript.shortify} + preProcessor={GridScript.humanize} + /> + {/each} + {#if $appSettings.persistent.userLevelMinimalist == false} - { $appSettings.persistent.size = $appSettings.defaultSize; }} @@ -158,8 +159,9 @@ max={36} step={0.1} /> - { $appSettings.persistent.fontSize = 12; }} @@ -243,9 +245,9 @@ Reset all preferences settings to their default values. This will not affect your profiles or other data. - @@ -269,8 +271,9 @@ bind:target={$appSettings.persistent.analyticsEnabled} title={"Track interaction with the Editor application"} /> - @@ -289,13 +292,25 @@ disabled={true} bind:target={$appSettings.persistent.profileFolder} /> - + Open user folder to view the contents - + Reset folder selection to default - + {/if} @@ -324,8 +339,9 @@ Erase the NVM memory of the module. This will take some time. - { runtime_manager.NVMErase(); }} diff --git a/src/renderer/main/user-interface/ActiveChanges.svelte b/src/renderer/main/user-interface/ActiveChanges.svelte index b1607b768..bf4d0829c 100644 --- a/src/renderer/main/user-interface/ActiveChanges.svelte +++ b/src/renderer/main/user-interface/ActiveChanges.svelte @@ -1,21 +1,69 @@
-
- {}} /> -
+ {#if profileTypeOptions.length > 0} + +
+ {}} + bind:target={$selectedProfileType} + options={profileTypeOptions} + bind:width={clearButtonWidth} + decorations={["", ""]} + grouped={true} + /> +
+
+ +
+
+ {/if} {#if import.meta.env.VITE_BUILD_TARGET === "web"} > = {}; + +/** + * Register a profile for a specific module type + * @param moduleType - The module type (e.g., "BU16", "EN16") + * @param displayName - The display name shown in dropdown (e.g., "getting-started", "advanced") + * @param categoryName - Category for grouping (e.g., "file", "custom") + * @param jsonString - JSON string of the profile data + */ +export function register_getting_started_profile( + moduleType: string, + displayName: string, + categoryName: string, + jsonString: string, +): void { + try { + const data = JSON.parse(jsonString); + + if (!PROFILES[moduleType]) { + PROFILES[moduleType] = {}; + } + + PROFILES[moduleType][displayName] = { + data, + displayName, + categoryName, + }; + + // Update available profile types + updateAvailableProfileTypes(); + } catch (error) { + console.error( + `Failed to register profile "${displayName}" for ${moduleType}:`, + error, + ); + } +} + +/** + * Unregister all profiles from a specific category + * @param categoryName - The category to unregister (e.g., "file", "custom") + */ +export function unregister_getting_started_category( + categoryName: string, +): void { + for (const moduleType in PROFILES) { + for (const displayName in PROFILES[moduleType]) { + if (PROFILES[moduleType][displayName].categoryName === categoryName) { + delete PROFILES[moduleType][displayName]; + } + } + // Clean up empty module types + if (Object.keys(PROFILES[moduleType]).length === 0) { + delete PROFILES[moduleType]; + } + } + + // Update available profile types + updateAvailableProfileTypes(); +} + +// Available profile types (reactive) +let availableProfileTypes: string[] = []; + +function updateAvailableProfileTypes() { + const profileTypeSet = new Set(); + + for (const moduleType in PROFILES) { + for (const displayName in PROFILES[moduleType]) { + profileTypeSet.add(displayName); + } + } + + availableProfileTypes = Array.from(profileTypeSet).sort(); + + // Print summary of available profiles grouped by profile type + console.log("[Getting Started] Available profiles:"); + for (const profileType of availableProfileTypes) { + const modules = Object.keys(PROFILES) + .filter((moduleType) => PROFILES[moduleType][profileType]) + .sort(); + console.log(` ${profileType}: ${modules.join(", ")}`); + } +} + +// Export available profile types +export { availableProfileTypes }; + +/** + * Loads getting started profiles to all connected modules + * @param runtime - The GridRuntime instance + * @param profileType - The profile type to load (e.g., "getting-started", "advanced") + */ +export async function loadGettingStartedProfiles( + runtime: GridRuntime, + profileType: string, +) { + const ui = get(user_input); + const modules = runtime.modules; + + if (!modules || modules.length === 0) { + logger.set({ + type: "alert", + mode: 0, + classname: CLASSNAME, + message: "No modules connected. Please connect a module first.", + }); + return; + } + + if (!profileType) { + logger.set({ + type: "alert", + mode: 0, + classname: CLASSNAME, + message: "No profile type selected.", + }); + return; + } + + try { + const { GridProfileData } = await import("./runtime"); + const { loadProfile } = await import("./operations"); + + let loadedCount = 0; + let skippedCount = 0; + + // Clear the page before loading profiles + logger.set({ + type: "progress", + mode: 0, + classname: CLASSNAME, + message: `Clearing page ${ui.pagenumber}...`, + }); + + await runtime.clearPage(ui.pagenumber); + + logger.set({ + type: "progress", + mode: 0, + classname: CLASSNAME, + message: `Loading "${profileType}" profiles to ${modules.length} module(s)...`, + }); + + // Process each module + for (let i = 0; i < modules.length; i++) { + const module = modules[i]; + const moduleType = module.type; + + // Check if we have this profile type for this module type + const registeredProfile = PROFILES[moduleType]?.[profileType]; + if (!registeredProfile) { + console.warn( + `No "${profileType}" profile for ${moduleType}, skipping...`, + ); + skippedCount++; + continue; + } + + // Show loading message for this module + logger.set({ + type: "progress", + mode: (loadedCount + skippedCount) / modules.length, + classname: CLASSNAME, + message: `Loading to ${moduleType} (${module.dx},${module.dy})...`, + }); + + // Convert to GridProfileData + const profile = GridProfileData.createFromCloudData( + registeredProfile.data, + ); + + // Get the current page for this module + const page = module.pages[ui.pagenumber]; + + // Load the profile (no progress callback to reduce logger spam) + await loadProfile(profile, page); + + loadedCount++; + + // Show completion message for this module + logger.set({ + type: "progress", + mode: (loadedCount + skippedCount) / modules.length, + classname: CLASSNAME, + message: `Loaded ${moduleType} (${module.dx},${module.dy}) - ${loadedCount + skippedCount}/${modules.length}`, + }); + } + + // Show final result + const resultMessages = []; + if (loadedCount > 0) { + resultMessages.push(`Loaded ${loadedCount} module(s)`); + } + if (skippedCount > 0) { + resultMessages.push(`skipped ${skippedCount} (no profile available)`); + } + + logger.set({ + type: "success", + mode: 0, + classname: CLASSNAME, + message: `Getting started profiles complete! ${resultMessages.join(", ")}`, + }); + + // Store the configurations to the modules + logger.set({ + type: "progress", + mode: 0, + classname: CLASSNAME, + message: `Storing configurations to modules...`, + }); + + await runtime.storePage(ui.pagenumber); + + logger.set({ + type: "success", + mode: 0, + classname: CLASSNAME, + message: `Store complete!`, + }); + + Analytics.track({ + event: "Getting Started Profile", + payload: { + modulesLoaded: loadedCount, + modulesSkipped: skippedCount, + }, + mandatory: false, + }); + } catch (error) { + console.error("Failed to load getting started profiles:", error); + logger.set({ + type: "alert", + mode: 0, + classname: CLASSNAME, + message: "Failed to load getting started profiles. Please try again.", + }); + } +}