New Gracious Host firmware ideas
The MSK 014 Gracious Host can load alternate firmware from me or third parties, just by reading it off an inserted USB flash drive. Although I conceived this module as primarily a MIDI interface with hosting capability, it's really a general purpose hardware platform with Eurorack control voltage input and output, and it could do many other things beyond hosting USB-MIDI controllers. Here are some ideas I've been looking at for possible alternate firmware or features to add to updated versions of the standard firmware.
MIDI file player
Write MIDI files to a USB flash drive and have the module play it back when the drive is inserted, probably activated (like the firmware update feature) by one or more special filenames. Maybe the input jacks could be for starting, stopping, stopping, and controlling tempo; or maybe they could be used to select between multiple files. The output jacks could play pitch/gate CV, velocity, clocks... all the same things that they do in the current firmware's MIDI modes.
The best thing about this idea is that I don't think it would take much new code: the existing standard firmware already handles reading files from a flash drive and interpreting MIDI events, so the new code would only need to interpret the MIDI file format and convert it into events to send to the backend. It's also a function that I would want to use myself: when I demo my modules at places like trade shows, I need a simple way to play pre-planned sequences of control voltages to demonstrate things like the Middle Path VCO. At the moment I'm using a much larger module to play demo sequences, and it'd be nice to have that as a feature of the Gracious Host. I'd also use a feature like this when recording planned compositions.
On the other hand, synthesizer Web fora are not exactly stampeded by "List of MIDI file players 2023" threads. I don't hear a lot of people asking for a feature to play back MIDI files. Maybe I'd be the only one to use a file-playback feature and in that case it doesn't make sense to do the significant extra work of building it in a releasable form. There are also some technical and usability challenges with such a feature. In particular, you wouldn't be able to just download the average MIDI file off the Net, written for "General MIDI" instruments, and play it on the Gracious Host, because the channel numbers would not be right for the Gracious Host's mapping of different output modes to channels. Any MIDI file meant to be used with this feature would have to be prepared specifically for the purpose.
Audio sample player
Instead of MIDI files, write audio files (likely in .WAV format) to a flash drive, insert the drive, and have the Gracious Host play back the audio. The input jacks could be triggers and gates for starting and stopping platback; could select among multiple files; or even could be pitch CV for playing back the samples at different pitches. Audio would presumably use the Gracious Host's analog voltage outputs.
Here the limitations of the hardware would come into play. The Gracious Host's analog outputs use DACs and output buffers intended for control voltages. The outputs are unipolar, covering a nominal range of 0 to +5V, not going into negative voltages, so any audio coming out would need to have a built-in DC offset which would have to be removed downstream in the patch. The DACs are plenty fast enough for a reasonable audio sample rate but (even with dithering tricks) they won't have the bit depth that users think they want for audio; so someone evaluating the Gracious Host just as a sample player against other sample players without considering its other features, would be likely to convince themselves that it's a substandard sample player. This feature would need to be clearly presented as an extra bonus feature, not as the main purpose of the module. Other manufacturers have learned the hard way what happens when extra bonus features take over as a module's main story, and I don't want to make the same mistake.
There would be challenges handling large files: the USB flash memory interface can handle extremely large amounts of data, but the module doesn't have a lot of RAM, so dealing with any sample files larger than the 128K capacity of the module's SRAM chip would necessitate some clever programming to page new data into the SRAM while samples are playing. But that's a behind the scenes programming issue and I'm sure it is possible to make it work.
The big win of a sample-player feature is that sample players actually are a thing people want to have. There really are Eurorack users who go looking for sample players and might buy a Gracious Host to get that feature. And it's a simple enough feature, if I'm restrained about not making it excessively powerful, that it could fit nicely into an update of the standard firmware without needing a whole new alternate version.
Grids-like rhythm generator
I've long been interested in the Mutable Instruments Grids module, described as a "topographic" rhythm generator: in response to two control voltages that specify a point on an abstract landscape, the module interpolates between predefined drum patterns to generate a unique, and possibly changing over time, pattern of gates and triggers. I've heard Grids's operation described as selecting among "presets" - by people who thought "presets" were a bad thing - but that description isn't really accurate. The stored reference patterns are not used unmodified by Grids unless the user goes to some effort to force that. In normal use they are inputs to an interpolation that also includes random and threshold-based elements, so the output ends up being much more varied than just straight playback of fixed patterns. Grids predates today's "language model" craze but what it does may be best thought of as a small, drum-specific, generative language model.
The Gracious Host could do something similar. Its microcontroller cannot run the Mutable Instruments code directly, and I wouldn't want to build an exact clone of someone else's design anyway. The original Grids module has more knobs and inputs than the Gracious Host, and it would be tricky getting a timing reference into the Gracious Host while also having both input jacks free for controlling the rhythmic styles. But I'm sure I could find an interesting design of my own, possibly building on some of the multi-level pattern stuff that went into my online fractal sequencer. The general idea would be that it could take input through the input jacks and maybe also an attached USB device to select the flavour or general style of the rhythm, and then it would produce four channels of gate/trigger drum sequences on the output jacks.
Imagine playing music with a controller or sequencer while the module automatically generates accompaniment, perhaps a bass line, or maybe a harmonizing soprano part. This idea would function a little like a quantizer, with pitch voltages on the input and output, but instead of providing output voltages to approximate the input, they would be voltages that harmonize with the input. It might even be able to learn from the input over time, to infer what kind of style the user is playing and make musical decisions that make sense with that style.
Johann Joseph Fux, pictured above, wrote a famous book in the 18th Century about counterpoint - basically, a set of rules for writing two or more melody lines so that they will sound good together while also retaining their separate identity. It would certainly be possible to embed those rules, or likely some modification of them, into code that could run in real time in the context of Gracious Host firmware. The microcontroller probably doesn't have enough processing power to run one of today's neural network language models, but there are also possibilities involving recursive substitution grammars, and experimental stuff like my hypercube walk melody generator. Some combination of these techniques would allow it to generate a musically reasonable and interesting accompaniment for whatever input it was given. With more than one Gracious Host, or possibly some messing around with analog shift registers and sample-and-hold, this might even be patched to make interesting music all by itself without a sequence input.
As described in my last entry, at the moment I'm very conscious of the importance of selling more modules. I can't afford more years like 2022 and so I have to sell a lot more modules in 2023 if I'm to stay in business at all. So the critical question for developing new Gracious Host firmware is what effect it will have on sales. Would you buy an assembled module yourself in 2023 in order to get one of these features? Would any of these features be so interesting that you would talk about it on your social media? If there's a firmware feature that really excites modular users and will help me shift more product out the door, then that's the one I should be working on.