Full Song Guide Tracks (extended Dendy technique)
TLDR: sample start param’s 1-100 actually maps to 128 values (a byte). Trim your audio to a whole number of bars. Make an Obsidian with the guide loaded as a sample. Make a part of exactly the length of the guide. Fill that part with 128 equal length notes (which may be rather odd lengths, but as long as they fill 100-101% of the part, it works)
The Extended Dendy Technique
In our band we use NS1 and now NS2 to compose backing tracks to complement our songs. Typically, I was doing this in rehearsal with band present, but this can waste time and it generally preferable for us to record and then compose without another 4 people standing around waiting. This leads to the requirement for NS1/2 to be able to playback a guide track for which to compose.
Inspired by a comment from Dendy which I now can’t find (someone please link it if you can find it) in which he describes using an Obsidian synth, with sample start automated to scale from 0 to 100 over a part matching a loaded sample audio file, allowing it to be used a bit like an audio track. It works! Kind of...
To do this for a full song track, it’s taken me some hours of experimentation and pain to arrive at, hopefully, an applicable solution. Firstly, I was confused about the actual values tracked by a linear automation line on a part. Naively drawing a line from 0 at part beginning to 100 at part end, with N notes triggering the sample did not always yield effective results. It would sometimes skip/jump, replaying fragments of the audio. In many attempts it would sound fine, but when the click was turned on (we’d recorded with click), a subtle drift was apparent, with the track gradually becoming late relative to the click.
A short experiment with a default Obsidian, coarse pitch mapped to knob 3, knob 3 automated from 0 at start of bar 1 to 100 at end of bar 128 will reveal that the 1 to 100 values you can directly manipulate, in fact map to a single byte value: 1 - 128. If you make a part of 128 bars/beats/whatever, or some divisible of that (64, 256 etc) the coarse pitch changes triggered by the automation will coincide with bars/half bars/beats/whatever.
Ok. Keep it simple, right? I tried taking a 128 bar segment of the guide and triggering 128 bar-long notes in a 128 bar long part, with the automated sample start 0-100 as before. You’d think it’d work... no. It drifts late. The track falls behind the click. After many attempts I found that if you trimmed the audio to 129bars + 1beat (assuming 4/4) then, somehow, it stayed pretty much in sync with the click. This is not how I want to work though and feels arbitrary, like a song at a different tempo will need some other weird “extra” bit.
There has to be better way and there is, I think. Somehow, editing the audio to be a quantised number of bars and making a part with 128 equals notes, the last of which ends at or just past the end of the containing part, yielded a solid result, locked in with the click. Getting initial note length right (2.67 beats, ok?) can be a faff but once it’s done, you can have a 4 minute song playing in the background, with reasonably usable subdivision, i.e. “let’s loop the chorus and see if it works”. I believe there’s needs to be a suitable relationship between the note events and the uptick of sample start coming from the automation, such that the note events happen a little after the next of the automation 128 values has been tripped.
I don’t quite know why or what’s going on. I feel the simple 128 bar version should work, but it really doesn’t. Any input very welcome on this. At least I do have a working version for now. I really can’t wait for true audio tracks
Comments
Yah true audio tracks will get me back into NS2 in a major way. For now I just find chopping up audio files into large slices with BM3 and loading up slate is pretty much the only near practical solution.
Ps... I assume track freezing will happen at the same time... yum!
wow, you did serious science experiments there, my respect to you
you are completely true with all observations you did, this technique is good for mid-range audio files, in my experience if works good with wavs upt to 14-18 bars long .. with longer wavs issue you described starts manifest, it's simply limitation of this technique ..
if you need longer file, less painfull way is simply cut the file to shoreter (let's say 16 bars long) elements - if you combine active grid and "actions > save selection" in audio editor you can do it very quickly.
Then assign those slices to individual notes (let's sa C3 - first element, C#3 - next one, D3 - another), disable key tracking and then do 0-100 automation for every one of them... it's a bit more work but still less than trying hack it with coarse fine tune on one long file ;-)
most anticipated feature ever :-)
If I had to guess, the 100 value probably doesn’t represent the end of the file but one segment before it. I haven’t asked Matt about the exact value, he’s been very busy lately, but it would seem logical.
@Stiksi Yes, I figured an off-by-one would be a good avenue to explore, so I tried parts trimmed to 127 and 129 in length too. They had the same issue of drifting behind the click. The 129 bar version was taking longer to be noticeable, hence ending up settling on 129bars + 1beat.
as i said - i think it's probably better to split that 128 bar recording to 8 16bar long audio files, map them to individual notes, disable keyboard pitch tracking and then automate 0-100 sample start for every note .. a slightly more work, but not that much, and it fill fit perfectly ...
another advantage of this approach is that it allows you re-arrange that loong recording just by transposing those 16 bar long note sequences
Example here :
Now - i can, just by transposing notes continously switch between playing loops - they all play still perfectly in sync because sample start automation controls which part of loop is playing
Here for example in second bar, first beat plays loop which is loaded on C#2, but then second beat switches to loop loaded D#2, and then for beats 3,4 it returns back to loop loaded on C#2
This way it is possible to play with beat variations just by transposing notes. Very interesting result !
I was thinking more about the automation curve. You could just end it earlier than at the end of the part and align to the click that way. Or does that result in stuttering?
Edit: I tried it and I can get it to sync all right but you lose the last bar in a 128 bar track. This might actually be a bug. Or not exactly a ”bug” as such, but more of an inaccuracy which is due to this not being the intended use of the feature. It’s not meant to be that accurate, but it could be that accurate.
@dendy great info. I’ll likely chop guides into sections.
@Stiksi I just tried doing a 129 bar trim, with automation ending at bar 129, so the last audio event starting at the 100 point rather than ending there. Idea being, like you suggested, 100 maps to 127 out of 128. This time the track gets ahead of the click though. Oddly, the final note, triggered as automation hits max, the beginning of the track is triggered, not the final part.
Did you turn sample loop off? Yeah, this could do with some more troubleshooting. 🤨🤔