Yeah, that would be a good addition to the wavetable generator function for “orbit” wavetables (which is a pretty experimental as a generation technique and one I haven’t messed around with much yet). I’ve been continuing to work on the core model and the latest version incorporates convolutional layers, which help the model a bit with learning additional waveform features.
One thing I don’t think I talked about in the latest video is that a big part of the successful training of these models is enhancing the dataset (which starts with about 53,000 waveforms) by spectrally morphing waveforms between each other. This is a natural thing to do as we want the model to be able to produce good-sounding morphs between waveforms. (And that’s what we’ll be doing with them in our wavetable synths, of course.) I do this in bulk before training and then it happens dynamically within the training loop as well.
I’m training a version right now that adds some different enhancement techniques such as taking some percentage of the batch and morphing them with the basic synthesis waveforms (sine, tri, saw, and square) in an effort to tame the effect of so many of the arithmetical series waveforms (which have lots of zero crossings/high-frequency components) which are of course over-represented in the Mathwaves collection. (We see the occasional dork over in the YouTube comments missing the point of my collections and complaining about that. But haters gonna hate, right?)
Another weird/experimental idea incorporated in this particular training run is taking some percentage of each batch and splicing the waveforms together at various points, with a crossfade. This will make for some very strange waveforms whose timbres are pretty unpredictable.
At some point, I’ll get back to experimenting with new wavetable assembly techniques. (Like I do think it would be fruitful to do some wavetables where the core frames of the waveform are first sorted by spectral magnitude before morphing along some path between them. And, of course, paths might additionally be hypercurves rather than straight lines, etc. There’s really an endless number of ideas to explore.)
This is the kind of stuff that really interests me! I’ve put together a handful of scripts that will generate SCWFs with additive synthesis parameters that you can input and then get a group of waves in that vicinity. I’ve been enjoying one that I’ve made that will take an input number of samples and assign amplitudes to those samples based on a ruleset - I’ve been using an analysis metric called Kurtosis which has been fun. The random amplitude assignment results in a lot of growl-esque metallic content but quite different from the well ordered logic that can result in FM type sounds.
I will say, I enjoy your files that are available as SCWF as I can plunk them into MSoundFactory and use its awesome interpolation to essentially design my own tables from two waveforms.
KRC Mathwaves are great, its now not the same Vital for me, a simple idea can be tested with various (tons of) sounds very quickly, and no its not crazy to make 80 000 wavetables, if you want to make more, its cool.
Sometimes I put a drum pattern as osc or a melody, and sometimes that produce a good result, maybe some formula could generate rhythm or melodic stuff?
KRC Mathwaves are the best food for Vital
You might be interested in some of the concepts proposed by Joseph Schillinger in his Schillinger System of Musical Composition. His Book I is a grand theory of creating rhythms with what he terms interference patterns. It allows for the composer to provide two or more ‘generators’ and from those a rhythmic pattern (and subsequently - florid rhythms) are generated.
For example; given generator A=3 and B=2 we can form the following resultant=r
Hey @tinga, I’m so glad you’re enjoying them! And I have generated more and will continue to do so! I’ve been so busy working on new VAE models that there are a few explorations that I haven’t done yet on older models.
For example, I suspect that the latent space in earlier models might have interesting waveforms hiding in strange places and it might not be as well-regularized as early sampling suggests.
Anyway, there’s more stuff coming and I greatly appreciate your patronage! There are several new versions of VAE wavetables that I need to package up and upload, including a model that was specifically trained to be less high-frequency/high-harmonics and it’s actually quite useful.
And even as I type there’s a new model training that implements a bunch of new ideas that I hope are fruitful… though one never knows until it’s done “baking”!
Hey @sunsnail (and anyone else interested in Surge XT format): I converted all of the original KRC Mathwaves wavetables to the Surge XT “.wt” format. Visit your Gumroad account and you’ll find a Zip of the .wt files near the top of the list, right under the “SERUM Wavetables” link. The label is “SURGE/BITWIG Wavetables: KRC Wavetables Collection - Surge wt Table Folder”.
I haven’t gotten round to installing Surge XT myself, but the converted wavetables work just fine in Bitwig which - somewhat surprisingly - also uses this format for wavetables used in the “Polymer” synth. (Discovering this finally got me off my ass to perfect the conversion script. Sorry for the delay!)
Please try those out and let me know if they work in Surge XT for you? (If so, I’ll convert the VAE Wavetables as well.)
Edit: I’ve tried these out in Surge XT and the .wt versions work as expected. Though I’m not very familiar with Surge, so not sure if one can just place a whole set of folders somewhere and have them automatically available?
I recently added a few videos about the KRC Mathwaves wavetable collection to my YouTube channel. Here, I talk about the .wt wavetable versions and how to use/import them to Bitwig:
And here’s the latest video, discussing some of the new wavetable types including the more recent VAE-generated wavetables and the newer “basic morph”, splice, and convolution wavetables:
I added support for yet another wavetable format, which might best be described as “WaveEdit” format. This is a slightly older .wav-based wavetable format where the .wav file is 16-bit, each frame is 256 samples-per-frame, and there are (most often) 64 frames in the wavetable. The genesis of this format (and the WaveEdit application itself) is sort of from the Eurorack modular world, but I believe this is also the format used for custom wavetable import for most Waldorf hardware wavetable synths (at least, they should be compatible).
A short bit of rambling about this – and more links in the description – in my YouTube video here:
As with the “.wt” format wavetables, I converted my entire wavetable collection to WaveEdit format, and the free wavetables sampler includes WaveEdit versions of all of the free wavetables as well.
Aside: This particular format isn’t really relevant to modern software synths like Vital and the resampling/bit-reduction makes them slightly inferior in terms of sound quality, but makes these wavetables available to a bigger universe of hardware devices.
Interesting use of a KRC Mathwaves wavetable in this Eurorack video here:
If you’ve bothered to read this far, you might be interested to know that for the next couple of days, I’m offering a 60% discount on KRC Mathwaves using code “waveedit” at checkout, or by following this link.
Thanks for the new wavetables, Basic morphing are great, I like also the Explore 64, cool to have a large choice of timbres in one patch. Tons of new stuff.
In the Orbit series, most of the waves give imperceptible change, but some are nice.
Hey @tinga you’re welcome and thanks for the kind comments. And yeah, in the later (12X version) VAE collections, the “Orbit” wavetables aren’t very successful. When I was generating the VAE wavetables, making Orbit wavetables is just a part of the process and I didn’t really examine them closely. I do mention this in my video about these wavetables that many of them are unfortunately essentially the same across all frames.
The later VAE models are quite different from the early ones – and some of them have a much higher number of latent dimensions – but I didn’t think about that before letting rip with the processing scripts. Basically, in the later VAE models, the latent space is quite different and it’s easy for the algorithm to pick two random dimensions across which nothing happens, at least within the radius picked for the “orbit”.
When I eventually get back to working on new VAE models, I’ll either make the Orbit process more smart about ensuring the results are actually a useful wavetable, OR just abandon that idea altogether.
It was an interesting experiment and idea, but perhaps not my most successful one!
BTW, there are more wavetables being added to the collection soon, and lately, I’ve been generating interesting new waveforms and wavetables by hybridizing Mathwaves waveforms in the frequency domain (sort of like “splice”, but in frequency rather than time).
Howdy folks in this thread (e.g., @tinga, @coolwav) I had a question over on one of my YouTube videos from a Vital user that said they got some sort of error about Vital having an 8000 wavetable limit.
Since Vital doesn’t really have any documentation, I’m wondering how Vital users actually go about importing my wavetables, particularly in a bulk context.
I don’t know exactly what it is that this user did to trigger such an error/warning/bug, but I’d appreciate any tips in terms of how y’all go about actually adding my waveforms to Vital.
Great update, thanks.
Yes there is a limit but just for one folder, now I keep the wavetable in the zips, if I want to explore I dezip one or some folders. It will be cool if we can use the zippped files directly in Vital.
I like the new stuff, I’m making a sound bank using exclusively KRC waves, all these waves increase Vital’s power.
I’ve got another new video discussing the latest additions to KRC Mathwaves, which are focused more on basic synthesis waveforms. Updated and improved versions of sawtooth and triangle wavetables with varying slopes, PWM/pulse/square wavetables, and some novel “sharkfin” wavetables that exhibit characteristics of all of these. Check it out here and like and subscribe if you feel like it!
Entire collection and some free wavetables available here, as always:
I was messing around with the new Zebralette 3 beta (it’s free) and was wondering since Zebra/Zebralette is sometimes referred to as a wavetable synth if KRC Mathwaves might be useful in that synth.
At first glance, it appears that Zebralette 3 does not import wavetables such as the ones that I create (Serum-style .wave, .wt format, etc.). It is a different type of oscillator than a traditional wavetable synth. HOWEVER, while I found its waveform drawing tools fiddly and perhaps limiting, it did inspire me to explore programmatically creating wavetables based on Bezier curves.
So, there are about 3000 new Bezier curve wavetables in KRC Mathwaves that I’ve just added to the full collection of wavetables.
Then, I did a video with a brief look at Zebralette 3, followed by exploring the new Bezier wavetables in Korg modwave… But, it turns out I was wrong about Zebralette 3. Thanks to the comments section of my video, I discovered that – while Zebralette cannot import full wavetables – you can in fact import single-cycle .wav files into Zebralette’s waveform editor and they do get turned into control points pretty well!
(This isn’t documented well, so I kind of had to discover this with the help of internet comment friends.)
So… I guess I need to do a follow-up video about how, “I was Wrong About Zebralette 3”.
But in the meantime, here’s a video where I discuss the new Bezier wavetables in Mathwaves!
And here’s the followup to my previous video about Zebralette 3. It turns out that single-cycle waveforms CAN be imported as oscillators or as MSEG shapes, so Mathwaves is useful with this interesting (and FREE!) synth. I also cover how you can export new wavetables from Zebralette 3. Check it out here: