Stochastic Telegraph Announcements

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.

21 Likes

Very interesting Mahlen, thanks!

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.

1 Like

Love this, this takes a lot of ideas I’ve had with ways to use things like tape recorders or PdArray, and exposes all the controls one would want.

1 Like

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.

2 Likes

Love the idea of the Memory System. It sounds beautiful!! All depends what you record but they are something to look forward to.

Wow this looks awesome!

I was hoping that something like this would appear, and tried to pitch the idea once :slight_smile:

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 :smiley:

Anyways, very good idea! very cool!

I don’t think I used the word easily :slight_smile:

1 Like

:smiley:

It’s probably not, I don’t know - it’s a cool module anyways, just thought maybe this could help to make it better.

almost every delay line has a good interpolator, right? It’s not very expensive. As has been determined over and over again here.

The difficult thing seems to be to manipulate the playhead directly while keeping a good sound quality.

There is now the first open source plugin that does this, so maybe this could provide the right buffer:

Well that was unwise of me!

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…

Is this (not released yet) what you’re thinking of, @Schabbes?

1 Like

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 :slight_smile:

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.

Yeah that’s nice, too! Maybe making it follow 1V/Oct might be useful.

It also might be useful to be able to adjust the buffer length in measures of a given BPM to sync it.

Nice module anyways, very cool idea with the multiple heads for 1 buffer!

1 Like

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).

2 Likes

Nice!

I found that this module does a pretty good job of automating the playhead, too: VCV Library - Biset It's good cholesterol

When in the first mode (phase mode) and automating the phase it seems to be able to handle that pretty well.

In the second mode it actually does exactly what I was looking for - allowing you to completely freely scrub the playhead while still sounding good.