I’m moving all of my module announcement to this thread, as has become the community norm of late.
New 2.0.14 release is now out:
Headlining this release is the set of four new modules I’m calling the Memory System. The most succinct description I have so far is an inverted tape machine: whereas a tape machine has (somewhat) stationary record and playback heads and audio storage (tape) that moves through them, here the audio storage doesn’t move and the heads move around it. Each head is it’s own module, and the parts are joined together as a set of extensions to a Memory. There’s also a module for visualizing what’s going on in the Memory. Here’s a 15 minute video demonstrating the Memory System, and showing some techniques that this makes easier [1]. Much thanks to @disquiet for inspiring and being my consigliere on this project (which is still in progress).
BASICally is no longer allocating a new thread for each compile, so this should result in less system delay (and possible glitching) while typing in the script window.
BASICally has slightly loosened it’s definition of “equality” (i.e., == and !=), so that the weirdness of floating point representation is not confusing users. See some notes here for details.
Enjoy!
[1] I tip my hat towards anyone who can make good explainer videos (e.g., @Omri_Cohen); this was much more work than I’d hoped, and it still has evident flaws.
This is such an interesting idea to me, both as a patch performer and a plugin developer.
As a performer, I like how each of the modules by itself has a clear and direct purpose. I like how they can be combined in an unlimited number of creative ways. And I love the visualization of what’s happening in Depict. It feels like I can focus more on creativity, without having to study the modules for an hour before I can start doing anything interesting. And I can always see what’s happening. That’s incredibly valuable to me because I’m a visual thinker.
As a developer, I love the use of extender modules not as optional accessories but as the primary way of getting things done. I have often thought in terms of designing chains of adjacent modules to optimize a left-to-right signal path without cables. This is different in that the readers/writers have no explicit signal flow direction; I suppose everything reads/writes the memory in whatever order their process functions are called?
I imagine if you have multiple Embellish connected to Memory that you might get inconsistent results if they try to write to the same sample of memory at the same time. Is this correct? I know that’s an edge case; most of the time the writes could happen in whatever order and the result will be about the same.
Thanks, @cosinekitty, and yes, two Embellish’s writing to the same point will, mmmmm, produce a noisy blend, no doubt of interest to someone.
I considered using messages instead of just sharing the same pointer, but messages appear to have an inherent latency to them (one sample per module to module movement). So yes, the process calls come in what ever order they like.
I was hoping that something like this would appear, and tried to pitch the idea once
The only thing that is missing from making this perfect, would be to be able to move the read head freely, allowing scratches, slowdowns, speedups etc… and some good interpolation/anti-aliasing.
Also it might be really useful to be able to set the buffer in multiples of a clock, to sync it to BPM.
If I remember correctly, @baconpaul said all this could be done easily with his universal delay buffer from the Surge XT stuff, he even wanted to build that, but is probably very busy with everything else he’s doing. Maybe you can use his technology, though, to make this thing fly af.
He said he got the buffer ready for all that, perfectly interpolated, so maybe you can plug it into this thing. I’m no programmer, but I hope this might just work
It looks like a cubic interpolation. That’s what my old SFZ player does. I know for a while there were people doing “zero order” or “drop sample” interpolation, and everyone agreed that sounds bad. It’s not clear to me how audible the differences are once you are at least at linear interpolation. I’ve always done cubic, but that’s more a habit than anything else. I know some people make some pretty fancy polyphase since interpolators…
I was hoping it could be done so that the modulation would sound as smooth as using the adjust slider, allowing to scratch the sample, create slowdowns etc.
TIME1 is the first open source plugin that can do this the same way as Gross Beat, MRhythmizer, Time Shaper… in those plugins you can control the buffer very precisely with an MSEG - if this could be done with external modulators in Rack, this could be really powerful.
But I have no idea how to do it… I just have some ideas how you could use it if it would work
Without trying Time1 yet, have you noticed that there is a speed input that gets added to the speed control? If not, that might open up some possibilities.
I liked that V/Oct idea so much, it’s coming in 2.0.15 (whenever that happens).
Here’s a demonstration video, I think it opens up some interesting uses. Like a…janky Mellotron whose sound changes as you play it.
By the way, I’m posting irregular progress reports on my modules at my StochasticTelegraphTech YouTube channel, in case you’re interested in following along (or suggesting ideas that escape me).