Know Your Nodes pt 5 & 5.5 - Splines & Streamlining a Large Patch



I would love a simple version. Also, crazy idea, how hard would it be to encode a monophonic midi clip into a pair of splines?


Sounds good. I’ll give the simple WAV version a go.

As for MIDI, I guess it depends on what you mean. I guess you could:

  • ignore everything but the note on commands and when they show up
  • define a MIDI note that means -1 and a MIDI note that means 1 and scale everything else in between

What kind of workflow are you thinking? Piano roll -> spline?


So the input would be a midi file.

And the output would be two splines. One spline would be 1/oct signals that are scaled down, say something like ‘(o+5)/10’ and the other spline would be gate info with amplitude mapped to velocity.

That way I could scrub a pre quantized melody like I was playing the spline as a sequence in the video.


Great idea about using MIDI files. I’ll open a new thread about ideas for auto generating custom splines. @jjthrash I’ll have to study your node builder code so I can try out some ideas I have as well.


Sounds good. I’m going to be changing the structure of it a bunch to accommodate new things, but hopefully that won’t cause too much trouble.


I’ve added the single-spline building feature. You can update the ruby gem with

sudo gem install build_audulus_wavetable_node

Then, when you run the command, add a -s parameter, like so:

build_audulus_wavetable_node -s file.wav

The resulting patch will contain a single spline.


Cool thread everyone!

Just FYI this is all really awesome stuff, but know that in the future in Audulus 4 you’ll be able to do this stuff without using the spline node (though it is an amazing hack for now). You’ll be able to upload .wav files directly and scan through them in the same way.

Maybe everyone knows that already but just wanted to add that in for the passers-by.

Carry on!


Nice! Will the scanning provide anti-aliasing?


Also, do you have an idea what the interface to the WAV/scanning node will be? I could possibly mimic that so that later people can drop in replacements if desired.


I’m sure it will, and that might mean we have two nodes or an option that turns on/off the anti-aliasing, because that would obviously interfere with using the node as pure data storage.

Not really - we started a thread about it on the old forum, but we could restart it here and discuss how it should look.


Any chance you could provide a sample midi file that I could work from?


Sure, let me compress this 3k file into azip Solar Octopus Track 1 (Dublin) (1.1 KB)


Does this look like what you’d expect the 1/o spline to look like? Based on what’s in the MIDI file I think it’s probably right, at least the left “cluster” of nodes.

I calculated the 1/o value by assuming (note 69 is A4 is 0.0 “volts”). Then I scaled it down by a factor of 10 per your idea.

Not sure what’s up with the big gap…


Yeah, that looks right! The big gap is probably because I just ripped this midi file out of a project (Solar Octopus) so that’s probably a part where some other instruments are playing. That’s pretty amazing that you were able to modify the code so quickly!

edit: Is there a node I can download


Sure! out.audulus (9.0 KB)

Will be a bit before I make the utility do something useful… this was generated from prototype code.

Question about the gate spline node: I’m guessing you would prefer gate to be 0 whenever there is no note currently on, is that right?


That would require the least conversion, so yeah.


Interesting, the notes seems to have gotten squished.

edit: side note, didn’t web browsers used to be able to play midi files?


Windows used to have a built in general MIDI synth. It’s been quite a while though.


Everything should have a built in synth.


I checked and it’s still built into Window Media Player on Windows 10. If you download a midi file in the browser it will ask if you want to play it. I thought it was long gone.