Almost something!
More of the pitch controls are wired up now, but I’m still finding my way into interfacing with them. In this recording the parameters of the littlefield instrument are being sequenced by littleseq, and I’m just toggling littleseq on and off and issuing a console command here & there.
One such command is mtrak (which is short for microphone
pitch tracking, but chosen because it’s one letter off from
Amtrak and I’m a dork) which toggles on a pitch tracker that
follows mic input and maps the (slewed) frequency to half of the osc
bank. I added the barebones port of librosa’s yin
implementation to libpippi for just such an occasion a couple years ago
so it’s fun to actually be using the thing with a realtime instrument
finally!
Other observations:
- It’s easy to break things hard by putting garbage into the LMDB session: for example changing the session keys without resetting the database. Really weird stuff happens. I think for now I’m just going to destroy the sessions on close, but it would be nice to fix that because when it’s working it’s cool to have the state be persistent between runs: fire up an instrument the next day and everything is where you’d left it.
- I think I need to add support for python param update callbacks, because I want to map at least one of the daisy controls to something whose mapping I can change while playing. If I use the python instrument as an intermediary I can just relay whatever mapped update from python to C and switch, lets say, a knob controlling the speed of a gate to one that’s controlling the shape of the osc bank and a filter on the mic input, or whatever seems useful.
- I actually like this kind of compiled instrument + scripted sequencer (with optional async rendering) combination. I would still like to add support for unit generator graphs so python can get into the realtime stream fun, but I will probably continue to write C instruments for more than just debugging.
- Serial control to/from the daisy is pretty unstable. If it works, it keeps on working, but sometimes I seem to be running into communication issues and something gets the data misaligned so that none of the headers arrive on boundaries and everything blows up. (Well, daisy controls stop being interpreted at all.) That needs review. I’d like for it to be able to recover from misalignments at runtime too, so hopefully that won’t become some giant rabbithole…
Speaking of rabbits, the baby bunnies around here are already looking like teenagers. One of them hopped right up to me while I was working on astrid in the park this morning! Cute, lanky little survivors.