diff --git a/package-lock.json b/package-lock.json
index 9dad91e8..89cc2fc3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,7 @@
"vue": "^3.3.4",
"vue-router": "^4.3.0",
"webmidi": "^3.1.8",
- "xen-dev-utils": "^0.8.0",
+ "xen-dev-utils": "^0.9.0",
"xen-midi": "^0.2.0"
},
"devDependencies": {
@@ -4427,6 +4427,18 @@
"url": "https://github.com/sponsors/frostburn"
}
},
+ "node_modules/moment-of-symmetry/node_modules/xen-dev-utils": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/xen-dev-utils/-/xen-dev-utils-0.8.0.tgz",
+ "integrity": "sha512-na9WWF1JlFhGjzvQDk/VHYWmTTvR1TD6nKHHy7GXC4f41u9CsLKxB7jphwioz1pR/5dBsbiSKBKTkWR4Uyactg==",
+ "engines": {
+ "node": ">=10.6.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/frostburn"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -5520,6 +5532,18 @@
"node": ">=18"
}
},
+ "node_modules/sonic-weave/node_modules/xen-dev-utils": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/xen-dev-utils/-/xen-dev-utils-0.8.0.tgz",
+ "integrity": "sha512-na9WWF1JlFhGjzvQDk/VHYWmTTvR1TD6nKHHy7GXC4f41u9CsLKxB7jphwioz1pR/5dBsbiSKBKTkWR4Uyactg==",
+ "engines": {
+ "node": ">=10.6.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/frostburn"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
@@ -6639,9 +6663,9 @@
}
},
"node_modules/xen-dev-utils": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/xen-dev-utils/-/xen-dev-utils-0.8.0.tgz",
- "integrity": "sha512-na9WWF1JlFhGjzvQDk/VHYWmTTvR1TD6nKHHy7GXC4f41u9CsLKxB7jphwioz1pR/5dBsbiSKBKTkWR4Uyactg==",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/xen-dev-utils/-/xen-dev-utils-0.9.0.tgz",
+ "integrity": "sha512-JsbXSg1zXaBoiKI19p2jC8Ka22YADQsTBD7fc2FkVxLWSdCO5BCS5KcRquDP5vP6J9v8t3B14G/7GZ5DC73rzg==",
"engines": {
"node": ">=10.6.0"
},
diff --git a/package.json b/package.json
index 6e0f847b..fb2259bc 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,7 @@
"vue": "^3.3.4",
"vue-router": "^4.3.0",
"webmidi": "^3.1.8",
- "xen-dev-utils": "^0.8.0",
+ "xen-dev-utils": "^0.9.0",
"xen-midi": "^0.2.0"
},
"devDependencies": {
diff --git a/src/components/EdoCycles.vue b/src/components/EdoCycles.vue
new file mode 100644
index 00000000..45132a1d
--- /dev/null
+++ b/src/components/EdoCycles.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
diff --git a/src/components/GridLattice.vue b/src/components/GridLattice.vue
index cc04cbd7..7f050b44 100644
--- a/src/components/GridLattice.vue
+++ b/src/components/GridLattice.vue
@@ -1,6 +1,6 @@