dessertplanet.co

viii

monomeiiiLuaWeb SerialMIDIWASM

iii and lua compiled to WASM, basically the web as an iii target. This allows users with older or incompatible hardware to join in the iii fun

License
GPL-3.0
The viii web app with a 16x8 grid connected: a file list with lib.lua on the left, a console printing the viii welcome message and init log, and a live command input for sending iii commands

viii came about because I was super excited about diii but I was super cognizant of the fact that there were many folks already engaged with the monome community who would be unable to leverage iii or diii because their grid or arc devices were old enough that they weren’t built with the rp2040 processor necessary for iii compatibility.

I messed around with a branch of diii at one point that did something similar, sending serial magic bytes in the monome mext protocol over web serial to my modern grid in “serialosc” mode instead of iii mode, translating lua to serial at the browser layer instead of the firmware layer… That ended up not making sense to include in the core diii implementation but it didn’t stop me from wanting to put a version out there that could do this.

I also had a fortuitous conversation with Phil Miller while at the Dyski retreat in Toronto, where he mentioned WASM to me and how it seemed like it enabled the possibility of doing a lot more via web apps.

For viii I then went down this WASM path- effectively building “the browser as an iii device” with the iii framework compiled to WASM along with all the necessary normally device-side dependencies like lua. Instead of a file-system, viii uses your browser cache. It works, in theory, with any grid generation back to the “series” versions, and there have already been super cool examples of folks leveraging this to use iii scripts with their 15-year-old grid hardware, which I was super excited to see.

A big shoutout to Zack (@infinitedigits) for trading grids with me for a bit so I could test older FTDI-based grid models with viii- since all I have usually is my KB2040-based 16x8 Neotrellis DIY grid, and my 16x16 monome zero modern RP2040 grid.

Top