Origins and future directions for Meerk40t

After I came up with the whole PPI feature, I emailed Scorch about it. It’s basically just a carry forward value. total += PPI, if total >= 1000, { laser on, total -= 1000}, else laser off. He’s more than welcome to it. In fact, he’s welcome to any code in MeerK40t.

Before writing MeerK40t I wrote K40Nano which sought to streamline the important code from Whisperer and give wouldbe programmers a more functional API into the whisperer code. I tried to get some support for such things LBS (lightburn) expressed interest but gave a pretty good set of objections. The license made including it in a commercial product impossible, (since K40Nano was derived from Whisperer it had to be put under GPL3 not even GPL-lite where you could use it as an API). Didn’t have power modulation. And the replacing driver bit made the native software fail.

I scrapped K40Nano and wrote a from scratch driver for Java to include in Visicut. Got a bit disillusioned with the lacking fine grain controls there. So I started up MeerK40t hoping to write something that people could hack on the code and work with it. It seems like there’s a lot of talent out there and not equal parts access. I figured out how to do PPI power modulation and reverse engineered the native windows CH341 driver.

I coded it properly threaded so you can use the interface while it’s running or run multiple devices at the same time. And view realtime information about it the current workings. I gave it a proper transformation matrices so you could zoom and pan and those nice guides etc. I coded it so that the different parts don’t depend on each other implicitly. You can switch elements out and it won’t care.

I made sure to avoid pitfalls, everything is processed for multilingual support. I don’t ever use colors to be the only way to see things are different. Grey and blue are the same color to some colorblind people and whisperer has that the only way to tell rasters from engraves.

I included a few killer features like Zingl-Bresenham curve draw algorithms. When it draws a bezier curve, that’s drawn from the values of the bezier curve and is pixel perfect. It’s not subdivided into lines ever, it’s a native plotting of the shape at the most basic level.

I spent a lot of extra time making sure to reverse engineer Lhymicro-GL as well as I could. The stuttering during rastering in Whisperer is largely absent in MeerK40t as the code used is much more compact. I also made sure to include things like vertical rastering. I spent a long time thinking about the core workflow methodology which made me realize one of the core issues in laser cutting software. Namely the over-focus on the elements rather than what we’re doing with the elements.

I’m currently working on a few more really good features. I’ve added webcam support with fish-eye correction (still needs alignment to the field). And I’m adding a GRBL mode so you can use MeerK40t like it’s a networked GRBL device and it’ll just do the translations of gcode and lhymicro-gl and let you use programs like Lightburn and Visicut and LaserWeb to control MeerK40t. And since everything is threaded it just shows you the position updated and lets you view the stuff being sent to the controller etc. Even if LBS doesn’t get around to adding Lhymicro-gl support, I’ll have GRBL support, which would open up those software platforms anyway.

There’s some backchannel discussions about expanding lhymicro-gl and making some hardware that basically runs on the same principles. You could add PWM control, zbed control, other GPIO pins to a cheap Arduino and with the software streaming the bytecode controller commands (which is what lhymicro-gl is) you could easily raster faster than stepper motors could allow and have all the bells and whistles people seem to want for like 15 bucks, without any limits on software used.

3 Likes

I do work pretty diligently and the software is pretty constantly improving but I am missing some really basic features. I don’t have any tools. Lightburn has some basic tools and they seem to work pretty well. And don’t get me wrong, coding those basic shape and alignment tools would be a day or two max. If you’re doing something really complex you can draw your own rectangle or move some nodes for the shapes around. I also don’t have easy handles for resizing and rotating shapes. My support for text is abysmal. And I’m missing a bunch of clearly better UI and UX corrections beyond that which would make the software much more useful. And I’m not design oriented enough to know what those would be. So you’re more likely to get support for importing lightburn files than the right tools to align your design where you need it, unless somebody raises an reminds me that that’s a thing people would certainly want.

I do a lot of marketing, but it’s generally intended towards getting people who could help with things. And maybe solid enough footing to fit the hopes I have for it. Most of the work I’ve done is trying to get it to have very good bones and a community behind it. So I do things like consider, if somebody had a thermostat digitally available in their machine and wanted to turn the laser off while the water is too hot, how can I make sure that that works well with MeerK40t. Where a person could write up the code for that and have all the different parts of Meerk40t just let that work. Or if somebody has a good idea for how to raster things like a novel idea for how to run the laser how can I make sure that will just work? If there’s a fantastic program somewhere that will do things like pack shapes for efficient material usage, how can I make sure that can be easily supported and utilized without forcing dependencies. Or if somebody wants MeerK40t to run a different type of laser, like a Ruida how can I make sure that that can be done without too much trouble? I’ve spent a lot of effort keeping options open and additions easy and not enough making a way to drag select multiple objects from the scene.

In short, if you have anything you need from Whisperer that would make your life easier, I’d be happy to add it to MeerK40t. If there’s any features from any other software you’d like (assuming no patents) I’d be happy to add those too. Odds are good I’m just kinda oblivious to the need. You can raise an issue and I’ll be happy to write a thousand words on the subject and then 20 lines of code.

3 Likes

Hi Tatarize,

Thanks for the extensive explanation. I’ll try to come up with some sugestions for impovement…

Kind regards,
Jos.