Well the only moving part in a typing keyboards is a mass-produced switch that you slot into a PCB. There are mass-produced hall effect switches that can provide velocity sensitivity, but it's a pretty distant comparison. The keys on a lumatone aren't anything like buttons; they're weighted mechanical arms with significant travel -- much more like a piano key than a keyboard key. And it has 280 of these! The degree of mechanical hardware in this thing makes it seem not really comparable to a PCB with some switches slotted into it.
That said! There are people making DIY isomorphic keyboards using hall-effect keyboard switches. None are commercially available right now, but see e.g. the MidiHex at https://gullsonix.co.uk/. You could make one for a fraction of the cost of a lumatone -- but of course it would be a very different instrument.
I like this website a lot and used it as the base recipe book for a program that will tell you what cocktails you can make with the ingredients you have, but also what cocktails you are “one ingredient away from.” https://github.com/ianthehenry/mixologician
It’s a little datalog script - input is a text file, output is a text file. I’ve used it a few times to decide what to pick up at the store!
I use an app called Mixel which tells you the cocktails you are 0/1/... ingredients away from making and has recipes from some famous cocktail books. I like the UI and the info it has for the recipes, but it's not smart enough to know that if you have limes you can make lime juice.
Love this - I'd wanted a little site that helps me see which of the top ~100 cocktails I already have the ingredients to make, and which I need to make a purchase to be able to sample: https://iba-world.com/cocktails/all-cocktails/
When I had more time and money, I planned to try to make one a week, across two years - but I rarely seem to drink these days.
The `import` macro extends the current environment with prefixed symbols from another environment. But the environment is a first-class object that you can hold and manipulate and use in arbitrary ways — `require` is the lower level primitive that `import` is built on.
Bonsai is a frontend framework that models data as an explicit graph, separate from any “component hierarchy” or DOM structure. State can live anywhere in the application graph, whether or not it’s associated with DOM nodes, and you eliminate all of the “move this state to the parent to share it” ceremony by just having “components” return their views and “outputs” at the same time (if they want).
It’s pretty great and hard to imagine going back to a React-like component hierarchy.
I'm working on adding something like https://graphtoy.com/ to my lisp-based 3D art tool https://bauble.studio/. It's really useful to visualize functions like this, especially when writing animation curves that vary over time.
It's easy to add it as a plain overlay over the screen if you're graphing a function, but I really want it to be able to plot arbitrary expressions with free variables where it just infers the axes, so you can just see values overload in the orthographic view (press alt-q to see that). That way you can just write something like (ss p.x 0 10 | graph) on any expression and visualize it as you go. I haven't quite figured out how to make it seamless though...
If this kinda thing piqued your interest and you want to play around with this idea, paste the following code into https://bauble.studio/:
(def octaves 4)
(def lacunarity 2.00)
(def persistence 0.50)
(def period 100)
(def height 40)
(plane y (fbm octaves :f lacunarity :gain persistence perlin p.xz period * height)
# try s/color/shade on the line below
| color (ss p.y -20 0 blue (ss p.y 0 20 green white))
| slow (20 / height)
| intersect (sphere 200))
(Using the terms from the article.) You can right-click and drag those numbers to see how the parameters affect the result in realtime. Also an easy way to compare perlin and simplex noise. Procedural terrain is fun!
Also while this uses 2D perlin noise -- you're just changing the height of a plane -- you can create some pretty detailed neat "rocky" terrain effects by using 3D perlin noise instead. Change "p.xz" to "p.xyz" to see what that looks like.
okay, that's helpful. the "undefined is not an object" bit is definitely a function of the "failed to create webgl2 context" error -- it tries to reference it unconditionally. no idea why it can't create the graphics context in the first place, though (and not much to do without one)
That said! There are people making DIY isomorphic keyboards using hall-effect keyboard switches. None are commercially available right now, but see e.g. the MidiHex at https://gullsonix.co.uk/. You could make one for a fraction of the cost of a lumatone -- but of course it would be a very different instrument.