TrackHacker Tutorial
TrackHacker Tutorial
Track Hacker could also be called Bar Slicer, Beat Shuffler and so on. Track Hacker is a
bit less specific, but the key word here is 'Track'. (With regard to 'Hacker', think 'horror
movies' rather than 'programmer', ahem.) In TH you first load a whole track into a Tapedeck.
This could be anything from a drum track you have made in your sequencer to a whole song.
But before you can load a track in TH, there are certain things you should be aware of.
You have to prepare a track for TH. There are two things needed: 1) The track
has to start right at the beginning of a bar, and 2) You have to know the tempo
(BPM) since this has to be entered in TH.
I should also add that “quantised music” is the easiest to prepare. I tried some jazz
and other live recordings. Stuff like this may sound groovy as hell to the ear, but when
opened and analysed in a sample editor, the timing may be all over the place.
I will show you how to prepare a track in Sound Forge 6 using some of its very handy
ACID tools. If you use a different sample editor, then hopefully it's got similar tools.
When the track has been prepared, you can load it in TH. When you click the Start
button in the Hacking buffers section, one of the buffers is filled up with the first bar of the
track. You won't hear anything right away, not until the buffer is full. Then it'll be played (or
read) in slices of 1/8 of a bar using the *cough* Hackvenser. While this buffer is being played,
the other is filled with the next bar of the track, and when it's full, it gets played and the other
is filled again. And round and round we go. You could say that the track is being played in
delayed real-time. This delay, however, allows you to play back each bar in all manner of
sequences consisting of 8 slices, so you can, for example, play the bar backward, starting with
slice 7 (the last slice), then 6, 5, 4, 3, 2, 1, 0. You could also, for example, play the following
sequence: slice 3, 5, 2, 0, 6, 6, 5, 0, ignoring some of the slices. I have made 122 presets
(use the Sel knob to select presets). What's nice is that you can browse the presets while one
of the presets is playing. Then, when you have found one you want to try, you just click the
Apply button. The new preset then won't actually be applied until the Hackvenser comes
round to the first step again, so you get a smooth transition to the next preset. We'll get back
to this later in this document.
Using Sound Forge, I have ripped and prepared tracks by Aphex Twin, Alva Noto,
Boards of Canada, DJ Vadim, Herbaliser, Klute, Pan Sonic, Murcof, Teebee, Snd, and Spice
Girls (haha). Actually, it might be more interesting to use a track in TH that you don't like.
It's been difficult for me to predict what will sound good in TH. Sometimes the result
simply isn't very exciting, even if I like the track when it's played normally. From the artists
mentioned above, I'd say I had most fun with Herbaliser, Klute, Murcof, Teebee, and, yes,
Spice Girls. So, grab hold of your sister's, brother's, daughter's, son's, father's, mother's, or
your own (!?) over-compressed POP album and start ripping! Ahem.
You don't have to do this, but it will be easier to follow the tutorial the first time. I have
chosen this track because of the elements it consists of. I have not considered musical quality.
0.1) Next, open the mp3-file in your sample editor. (You have to convert it first if your
sample editor does not support mp3.) Note that the file should be 16-bit, 44,100 Hz.
1.0) Remember that the track has to start at the beginning of a bar, so first we have to
identify one bar by selecting it. But first I'll introduce some of the tools we're going to use in
SF. To the left below is the ACID Loop Creation Tools toolbar (Preferences > Toolbars tab >
ACID Loop Creation Tools). These are extremely handy for our purpose. I really hope you have
similar tools if you use a different sample editor. The tempo based on your selection is also
shown on the ACID toolbar. If you use a different sample editor, it must be at least possible to
show the tempo based on your selection, if you want to follow this tutorial. The tools to the
right below are also handy. They are on the Navigation toolbar.
(These 4 tools to the left above are for the selected area, and they are, from left to right,
Double Selection, Halve selection, Shift Selection Left (shortcut: <), and Shift Selection Right
(shortcut: >). The 3 tools to the right are, from left to right, Center Cursor, Cursor to Selection
Start, and Cursor to Selection End.)
Set your sample editor to show everything in samples (rather than ms or other).
OK, to find a bar in any track, you obviously have to use your eyes and ears. I'll have
to assume that most of the readers of this tutorial are musicians, so you'll just know what a
bar is supposed to sound like, and that it usually starts with a bass drum in, er,
“conventional” music. Just find a bar somewhere in the beginning of the track. Take care that
the selection start is not too close to the first beat, and that the selection end is not too close
to the first beat of the next bar when you make your selection. Below is a screenshot of my
selection start (dark area) zoomed in at 1:1. As you can see, my selection begins at sample
92,890, and I have left a little space before the first beat. The value 105,809 is the selection
length.
Figure 1.
2.0) When you have made your selection, you have to make it more exact. This is where we
are going to use the 'x2' Acid tool (Double Selection). I call this “the doubling method”:
2.1) Double your selection by clicking the Double Selection tool 'x2'.
2.2) Zoom in on the selection end point, and check that it is close to the first beat of the
next bar. If necessary, adjust it so it comes right before the next bar.
Figure 2. Shows what happened when I doubled the selection. Looks OK so far.
2.3) Double the selection again (it's now 4x the initial length), and repeat step 2.2.
2.4) Repeat step 2.2 and 2.3 until you can no longer double it, and then halve it all the
way down to 1 bar again.
After I did the above steps, I got a tempo of 100.008 BPM. (OK, we could now assume
that the tempo is 100 BPM, and adjust the selection accordingly, and in this case that will probably be
correct, but as a general rule leave any such assumptions until after we have done the final test, which
is next.)
3.0) Now we are going to test if this result is correct. First, zoom in as far as possible while
still being able to see the whole selection, like in figure 3 below.
Figure 3. The vertical lines are the selection grid lines, which you can enable on the
ACID toolbar. They are extremely helpful for what comes next.
Then, hold down the Shift Selection Right shortcut key (>). What should happen is that you
run the selection through the track at great speed, and when you do, the selection grid lines
(the three thin vertical lines in the screenshot) should constantly stay right at the beginning of
their respective beats throughout all the bars you run through. If they stay constant toward
the end of the track, you have found the correct BPM (for Track Hacker, at least). If they seem
to glide forward or backward in relation to the beats, you have the wrong BPM. If they glide
forward, you must make the selection shorter, and if they glide backward, you must
make it longer. But do not adjust anything until you have shifted the selection back
to where you started from.
When I do the above, the selection grid lines glide backward, and when I stop toward
the end of the track, I can clearly see that the lines are too far to the left of the beats
compared to the start of the track. I repeat, do not adjust anything until you have shifted the
selection back to where you started from. Then make it a little bit longer. Since the current
selection length has a tempo of 100.008, I'm going to assume that the tempo really is 100
BPM, and adjust the selection end point accordingly (so the tempo shown becomes 100.000
exactly). When I do the test again, I find that the tempo indeed is 100 BPM.
(Be aware, however, that many tracks don't have such a nice round number. Then you will just
have to repeat the test and adjustment until you get it right.
IMPORTANT: Always write down the BPM value on a piece of paper or something when you have found
it. Trust me on this. Also, it may be a good idea to write down the selection start point of the first bar
you are going to use in the prepared track. Lastly, put the BPM-value in the filename when saving
the final prepared track!)
4.0) Now we'll cut off the start of the track. It is important for use in Track Hacker that the
beginning of the track starts at a selection point (i.e the beginning of a bar), and usually you
would probably like to start as early as possible, so this would then make it the selection start
point in the first bar. In Sound Forge, be careful not to shift the selection all the way to the
start, because if you then shift it right again, it will probably have been pushed out of place,
and you will have to readjust the whole selection again.
So, for the purpose of this tutorial, please check that the selection start point is at
sample number 92,890 (like in figure 1), and the selection length should now be 105,840 (i.e.
100.000 BPM).
4.1) Delete samples 0-92,889. Now we have the start of the prepared track. Next, we'll cut
the ending.
4.2) Select the first bar. This is now samples 0-105,839 (so the length is 105,840). Then
shift the selection right until you are close to the end of the track.
4.3) For the purpose of this tutorial, delete everything from 8,784,720 till the end of the
track. (Note: It is not really necessary to delete the end of the track at all, only if you want to loop it
nicely to the beginning again.)
The track is now ready to be used in Track Hacker. Hurrah!
NOTES:
- The selection grid lines AND the selection end point should usually always come before a
beat, otherwise you may get nasty clicks in Track Hacker as its envelope cuts right into a bass
drum or something.
- You'll find that some tracks are very “de-quantised” or use swing or other stuff that will
make them more difficult to prepare. It will still be possible to prepare them. What you should
actually do in addition to the fast run-through test above, is just browse through the bars and
check that the selection start and end and the selection grid lines come before the beats, i.e.
check that they don't “cut into” the start of a drum hit and such. It is usually better to err on
the side of caution, like in figure 4.
- As an alternative to the fast run-through test using
a bar, you could halve the selection until you have
1/4 or 1/8 of a bar. But be aware that sometimes
when you double it back up to a whole bar, you may
get rounding errors or something, and you have to
adjust it again.
THEN
Figure 4.
Part 2 - Prepared for fun – Track Hacker
Before we get to the fun part, though, I should let you know that the track we just
prepared is not ideally suited for Track Hacker, because the hits or beats (drums and
whatnot) are actually “de-quantised”. You would have noticed this already if you followed the
tip in the NOTES section in part 1, and did spot checks of some of the bars throughout the
track. But I have chosen a somewhat difficult track to let you see what this looks like and
sounds like in Track Hacker. In this case it's actually not too bad, i.e. there are relatively few
clicks. There are some alternative editing value at the end of this document, and then you can
hear for yourself. The thing is that there seems to be no guarantees with regard to where one
should make the incision in “de-quantised” tracks.
OK, it's time to open Track Hacker. To begin with, please just follow this tutorial.
1) Right-click or Ctrl-click on the sample view in the 'Play Tapedeck' section, select 'Load
Audio in Tapedeck...', and then load the prepared track.
2) Use the three knobs (BPM, Fine, Ultra) in the top right
corner of Hackvenser to set the BPM value to 100, as shown in
Illustration 2. You'll see that the value under the heading 'For
audio tables' changes also.
2.1) Use the knob just below the 'Env' button to set it to 299,
as shown in Illustration 2. Please also read the tool tip (hint) for
this knob and the two values just below it. (NOTE: When we
start TH later in this tutorial, the CPU load will increase a
LOT. You can reduce it by selecting a lower sample rate
(I recommend 33075 or thereabouts), but note that
you'll also get a different 'For audio tables' value to use.)
Illustration 1 Illustration 2
3) Notice the 'For audio tables' value in Illustration 2. The hint for this value shows the whole
procedure for using the value, but I'll show you here as well.
Right-click or Ctrl-click the left buffer
window, and select '”FirstL”' Properties' at
the bottom of the menu that appears.
Illustration 3
3.1) Check that the eye icon page looks like the Properties
illustration to the right. Click (if the X Grid row is selected)
or double-click (if the X Grid row is unselected, as in the
illustration) in the 'Step' parameter for the X Grid, type in
13230, and then press the Enter key. (The 'Step'
parameter for the X Grid is where it says'119~' in the
illustration to the right).
3.2) Next, right-click or Ctrl-click the right buffer window,
and do the same thing there.
The reason for doing the above, is that the vertical
lines in the buffer windows show you where the audio will
be cut (or hacked) into pieces of 1/8 of a bar, and
rearranged in real-time by the Hackvenser. So, it shows
approximately where the envelope will make its incision
when the envelope is turned on (with the 'Env' button in
the Hackvenser window).
You are now basically ready to fire up the engines,
but please hang on a second. We'll have a quick look at
Hackvenser first, on the next page.
(Er, just so you know, you can click the B view in Track
Hacker to only show the hacking buffers if the CPU load
goes all over the place because of all the graphics when
you start the whole thing.)
Illustration 5
OK, the first thing you should know,
is how to read the table view of the
hackvenser. Well, time obviously
goes from left to right. In relation to
the hacking buffers, the table is read
from bottom to top. If you look at
the first horisontal step in Illustration
5 above, vertical step 0 is selected,
in the second horisontal step,
vertical step 1 is selected, and so on.
So vertical step 2 for example, will
be the second slice in one of the Illustration 6
hacking buffers.
The vertical steps are also reflected by all the knobs at the top. I know this seems a bit
weird, but I'll explain it further down in this document. You've also noticed that the pattern is
repeated after 8 steps. Now, why are there 16 steps in the hackvenser and only 8 slices in the
hacking buffers? Well, there is a point to these two oddities that we'll get to later. Oh, the
'Preset sequencer' in Illustration 6 is used to sequence the hackvenser. Convenient, isn't it?
We'll leave it off, though.
Anyway, the current table pattern in illustration 5 will play the track normally, and this
is what we'll do first.
You start Track Hacker by clicking the small 'Start' button in the 'Hacking
buffers' section, as shown in the upper left corner of illustration 7 to the right, or
you can use the Play button on Reaktor's toolbar. Note that you won't hear
anything in the beginning, because it waits until one of the buffers are filled with
audio. ((When you quit Track Hacker after using it, and then later open it, there will be
audio left in the buffers, but there is no need to clear the buffers (with the 'Clear' button),
since Track Hacker won't start playing until at the right time.)).
What you actually hear when you have now started it, is the audio from
the buffers, not the audio coming out of the 'Play Tapedeck'. So the audio you
hear is being cut in the hacking buffers.
Illustration 7
Now, while the track is playing, use the 'Sel' knob in illustration 5 above to
browse the presets. You'll find that there are quite a lot of them. Just so we are on the same
page, select preset 5. Then press the 'Apply' button just below. You'll notice that the preset
won't be applied until the hackvenser comes around to the first step, so you get a smooth
transition.
If you look at the hacking buffers, you'll see that one of them is played (or read)
according to the hackvenser pattern while the other is recorded (or written). Now you can use
the knobs at the top to override the applied steps of the table pattern while Track Hacker is
running. Just press the 'Apply' button again to restore the preset pattern.
Next, we'll look at the cutting action. Use the 'Zoom' and 'Scroll' knobs shown in
illustration 7.
In illustrations 8 and 9 I have
zoomed in taken a snapshot of the
buffer windows while TH was
running. Remember that I in the
beginning of this part mentioned
that this track was not ideally
suited to TH. Well, in these
illustrations you see why. In
illustration 8 everything is fine and Illustration 8
dandy – the vertical lines are
coming just before the beats,
indicating where the envelope
cuts. But in illustration 9 the first
vertical line indicates that the
audio is cut too late (i.e. inside the
beat). The second vertical line is
OK, even if it is earlier than in
illustration 8. Listening to it,
though, it doesn't sound too bad,
really. Illustration 9
So, this is what I mean when I say the track is “de-quantised”, generally speaking. You
can check this out yourself by using the 'Zoom' and 'Scroll' knobs while Track Hacker is
playing. This is useful to do after you have prepared a new track.
OK, now I suggest you just play around with Hackvenser for a while. Check out some of the
different presets, read the hints and play around with the three rows of buttons, all while
Track Hacker is running. Especially remember to read the hint for the 'MRnd' button and
'ARnd' knob if you want to play around with the top row of 'Rnd on/off' buttons...
Next, I'll try to shed some light on why there are 16 steps in Hackvenser, and only 8 slices in
the buffer views. Firstly, I'll just mention that 16 steps in Hackvenser covers 2 bars, and the 8
slices in each buffer view covers 1 bar. Secondly, you'll notice that in many of the hackvenser
presets, the first 8 steps are simply repeated. This is just so you get the same pattern for all
bars, if that is what you want. So the reason for the 16 steps is simply added flexibility – it
means you can have a different pattern for every second bar that are written to the buffers.
But there is also another point to it, because in Track Hacker you can turn 1 bar in the original
track into 2 bars in Track Hacker, making the song twice as long. This works so that the Play
Tapedeck is automatically paused after each bar. So, you have 8 slices (1 bar) in the buffer,
but the trackvenser can play this bar twice with a different pattern each time since there are
16 steps.
OK, this was a bit difficult to explain, so we'll try it out now. First, stop Track Hacker by
turning the small 'Start' button off. You should know that only the Hackvenser buttons and
knobs in the 'Main' section should be used while the Track Hacker is running. To use the other
buttons and knobs, stop Track Hacker, use whatever knob or button, then start Track Hacker
again. So, turn ON the '8/16' to the right of the 'Start' button. Select preset 20 (with the 'Sel'
knob in Hackvenser) since its second bar is different from its first. Then turn on the 'Start'
button again. You'll have to wait a bit longer before you hear something this time. You can of
course select a pattern with two identical bars also. Notice how the play tapedeck pauses so
that the bar can be played twice.
EDITING TIP: First, remember that a table pattern in Hackvenser has to be applied after it
has been selected, and that each the top row of knobs are applied instantly.
One way to program a table pattern in Hackvenser for a specific track:
1) Make sure the Preset sequencer is off.
2) Apply preset 0 with the 'Sel' knob to play the track normally (and keep the preset
sequencer off).
3) While the track is playing, browse with the 'Sel' knob to the pattern you want to edit (for
example an empty pattern).
4) Use the top row of buttons to change the sequence while you listen.
5) When you're happy with the pattern, just use the mouse to implement knob values in the
corresponding cells in the table view.
Right, I want to end this part of the tutorial now. I'm tired of writing. I'll just briefly mention a
few things.
There should really be no need to use the two big 'Speed' and 'Mix' knobs in the Play
Tapedeck section. They are just there... in case... hmm... hey, look over there - *points*
You should experiment with combinations of the following (for more fun): The 8/16
knob just mentioned, the 'Half' button in the Play Tapedeck section, and the BPM list (with
options 'Normal', 'Double' and 'Half' (note that you can't use 'Half' in this track – see the
hint)) in the Hackvenser section.
I thought I'd give builders a few hints regarding how this thing works. Note that it's been
quite a while since I built it, and I do have problems reading my own ensembles if it's been a
while since I looked at the structure.
For a long time this ensemble was a real kludge to use, so if you think it is a kludge
now, you should have seen some of the earlier versions. You could only play tracks at a
certain tempo, which means you would have to either pitch shift or time stretch the tracks.
Also, I toyed with the idea of making different ensembles for different tempos. Like, one
ensemble locked at 60 BPM, one at 75, one at 90 and so on. Totally unacceptable solution, of
course. All this changed when I came up with the idea of using Send and Receive modules and
a conversion macro to change a whole lot of values all over the ensemble. There are two
almost identical macros called 'Conversion'. One is in Track Hacker > Hacking Buffers. The
other is in Hackvenser. So, these two macros take only the BPM value and the sample rate
value as their source, and converts them to different values used in different parts of the
ensemble. Now the ensemble could play any track at any tempo (disregarding the deliberate
limitation of not being able to play tracks below 60 BPM). Just look around in the different
macros, and you'll see the Receive modules and what they receive. As per usual, after I
figured this out, I couldn't believe I hadn't thought of this earlier :)
Now, the “engine” for writing and reading the hacking buffers (audio tables) is
something I figured out much earlier. I tried most of the methods that once were mentioned
in the Creator's forum. I already knew the method I currently use when I saw it recommended
by someone in the Creator's forum, but I didn't know how well it would actually work. At an
early developing stage I had been playing around with audio counting (ramps and stuff). But I
knew the advantages of using events, they simply give you more control over the whole flow
of things, and you get to use the Modulo, which is just such a useful little module. The writing
macro is in Track Hacker > Hacking buffers > Write > Write Clock. The reading macro is in
Hackvenser > Play clock > Main > Counting+gate, which is in the screenshot below.
One thing I didn't know, is that when the A to E Perm receives a 0 (zero) at the A input, it
doesn't fire any events. This is probably why the CPU is so low when the ensemble isn't
running.
Now, read the NOTE to the right of the Separator module, and you'll see the curious
problem I ran into when building this thing. The Counter module actually just stops when it
comes to 16,777,216. On a hunch, I divided this by 1024, and then the result by 1024 again,
and I got 16. And I thought something like: “OK, this is some sort of limit due to how
computers work or something”. In other words, I just had a very vague idea about why it
would stop there, and I still don't know exactly why. I just thought I was sold, because I knew
I had to use an event loop to reset the counter, and I just didn't think it would work, so I was
quite surprised when it did.
OK, here is a funny thing. See the Order 1 output in the upper right corner of the
screenshot? Why the hell do I multiply it with 1 before it goes to the multiplier by the Pos
output? Haha, I have no idea. This is a common problem of mine. I look at a structure I built
a long time ago, and there are just some things that look plain silly. You know what? I don't
touch any of it. Maybe it's part of an old solution that I have forgotten to remove, maybe it's
just something I tried and then forgot to remove, or maybe it's one of those strange things
you sometimes have to do in Reaktor that made sense when you built it, but looks silly later.
Like I said, when I don't remember why something is there, I don't touch it, unless it is
completely unhooked, of course. Anyway, it's not as if I'm going to save a whole lot of CPU if I
take it away. As I look at it now, it just looks stupid, but I still won't touch it. This is based on
some bad experiences with trying to fix things that work... The lesson for me is that if you
want to clean up your structure, do it immediately after you have finished it, while the flow of
events is still fresh in your head... Right, good bye, and have a good time :)
NOTE: Here are the alternative editing values for the track: Delete samples 0-92,264 from
the beginning of the original track. Then, delete everything from 8,784,720 till the end of the
track. Tempo is still obviously 100 BPM.