January 2025 Developer's Log

Happy 2025, everyone! Feels like a good time to peel back the curtain and give you an update on what’s currently in the works at Strum Machine HQ.

TL;DR: Doing important work on Strum Machine infrastructure, meaning no new features for awhile (at least a couple months).

My last update in December was announcing the big Band Presets update (with the new mandolin chop and walking bass options among other things), which was very well received… thanks for all your feedback!

Going into 2025, I decided it was time to tackle some long-overdue deferred maintenance. I’ve known this was going to be needed for some years now, because the “platform” that Strum Machine’s code is built on top of (the Meteor JS framework) has been getting more and more “behind the times”. It was already having various negative implications on my productivity as a programmer, and it was soon to potentially start having potential security implications, so I knew I had to do something about it.

Thankfully, they just released a major update to Meteor that brings everything up to date, which means I can start migrating my code over to the new platform. This will mean a significant modernization of Strum Machine’s codebase. Think of it as giving the engine a complete overhaul while the car still needs to run smoothly.

Web-dev nerd sidebar: Meteor 2 was stuck on Node 14 (due to requiring the deprecated “Fibers” feature for async code) whereas Meteor 3 supports regular Node LTS. I’m also taking the opportunity to switch my bundler to Vite, which has been awesome—it’s a significant improvement in tooling, and I could never go back now. Remaining non-type-safe modules are being rewritten in TypeScript as well, which has already helped me catch some subtle potential bugs.

I’m only a few weeks in, but progress has been good. Maybe 20% of my time has been banging my head against the wall with inscrutable error messages, but the rest of the time has been pretty smooth sailing. It’s great to be able to revisit aging parts of the codebase and make them better.

I’m already seeing some immediate benefits:

  • Performance improvements; maybe 15% faster load times so far, though I bet that will get even bettter
  • Much faster to iterate on user interface coding due to faster build times on my computer

But this work is really about the long term. When I started Strum Machine back in 2016, the state of the JavaScript “ecosystem” was rather immature. People were still figuring out the best way to make apps like Strum Machine. Things have come a long way since then, and development tooling has stabilized a lot, which means that Strum Machine will be much easier to maintain and work on in the years to come, and hopefully I’ll never need to do a big migration like this again (famous last words).

I’m taking my time to get everything just right, which means it might be a few months before you see major new features. Hard to say, exactly… I’ve learned not to guess how long something like this will take, because any estimation I make will surely be wrong, and I want to give it as long as it needs to get the job done right. But once this infrastructure upgrade is complete, we’ll be in a great position to roll out new features more quickly and efficiently.

Speaking of which, the first major feature you can expect is the ability to handle multiple time signatures within a single song. I think this may have (oddly enough) become our number-one feature request. Folks, we hear you!

OK, I’m gonna get back at it! Thanks for reading if you got this far, and hope you enjoyed this update.

Cheers,
Luke

P.S. - While I’m busy rewriting server code, Tyler has been iterating on some new interfaces for stuff we plan to add later this year, like a new settings interface. More on that in the future, but he’s got some good stuff cooking!

6 Likes

Wonder why so many users need to change time signatures in a song? I’d like to know an example of that need. Hate to see that rarely used feature tie you guys up for months. Thanks for all you’ve done. I use SM daily.

1 Like

Probably the most commonly-cited example of a song that uses multiple time signatures is Slipstream by Bela Fleck.

To be clear, it is a very tiny minority of users requesting this feature, and it’s an infrequent request. Frankly, it’s a tiny minority of users who request features at all… which I take to mean that the vast majority of Strum Machine users are pretty happy with it as it is, which is great! And my #1 priority remains not to screw that up. :slightly_smiling_face:

But this is a feature I’ve promised it many times over the past few years, and it feels time to finally just do it.

On the contrary, it hasn’t and won’t tie us up at all. What’s going to be tying me up for the next little while is the larger infrastructure update, which is unrelated to the time-signature feature. It’s proving to be a major pain, but very necessary and it’ll be well worth it in the long run.

After the work on the editor last year (which we did for other reasons) most of the groundwork for the time-signature feature has been laid already. Should be a few more hours of work, really. Just need to get through this current phase of infrastructure work first. (The codebase is currently in the “middle of the remodel” phase – quite a mess – so now is not the time to be adding new features.)

To be honest, there are probably (definitely) other features that I plan to add which have been requested more and/or will positively impact more users. But none will be as easy to get out the door as this one, which is why I decided to mention it.

May the last 10% of your coding take no longer than first 90%. Good luck.

Great system thanks for maintaining it.

Along with time signatures, different volumes would be great. I currently use the medley feature to swell different parts in the intro to Ray Stevens Misty.

And my usual request for an equalizer or the possibility to have a third party phone EQ app be able to adjust the Strum Machine. Keep up the great work. Use it ever day and always recommend it.

Jake

There are quite a few so-called crooked tunes in French-Canadian music. “Aires Tordus”. I have a book of French Fidle Tunes that has changes and, of importance also, less common time signatures that we hope get attention.
I just tried using medley to do a 3/4 part then a 6/8 part. So each major part needs to be changeable in meter along with by measure. I don’t think you can, say, repeat the whole medley twice, can you. I am sure Strum wants to handle traditional dance/folk music in addition to Bluegrass which is the priority. Every feature empowers more possible tunes.
Luke did not say anything in his update about instruments being added, which is a long-standing subject. I think piano and banjo come to mind-excuse me; banjo and piano (ho-ho).
I am not a guitarist, so I envision paying existing guitarists to set up tunes on Strum with the more sophisticated features. Or maybe Strum can eventually get into AI.
This software has enabled me to play alone at a number of events.