Awesome method for controlling Octatrack from Pyramid

Fellow Pyramidians & Octa-Trackers!

If you - like me - use both machines, you will at some point have tried to make them play
together. I use the OT for rythm duties and the Pyramid for sequencing melodies. It’s always
been a bit of a pain to get them to play songs together. These are the usual issues:

After banging my head against the wall for a while, I found an OK workflow with both machines:
In every pattern on the OT, have a MIDI track send CC69 to Pyramid on the first step
to control the active sequence. This makes switching between parts of songs work for me, and
I can even use the OT arranger.

But there is an even better solution where control goes the other way. You gotta try this, it feels great!

The method requires a bit of setup:

On the OT: enable ‘plays free’ mode on all tracks controlled by Pyramid and also copy the setting
across the patterns you want to play. Set the trig mode of the tracks to HOLD, and ‘trig quant’ to DIRECT.

On the Pyramid: create a track that sends to the auto channel of the OT. Notes C1-G#1 control playback
of the OT tracks 1-8. When the note is held, the track plays. To make them play in time with Pyramid,
add a note for each OT track and make it hold for the whole duration of the pattern (i.e. if your OT pattern
is 16 steps, set the Pyramid track to 1 bar and add notes with length 16).

Most importantly, ‘plays free’ tracks can also play when the OT sequencer isn’t running.
This makes instant pattern changes work! One way to set that up is to create a Pyramid pattern
for each OT pattern. In 2ND+Track menu, set program change to OT pattern number and play mode
to ‘restart’. Switching patterns on the Pyramid track now insta-changes the OT pattern.

Once you have the basic setup going, it’s interesting to try variations where you trig the OT tracks
in different order, with offsets, spread them out over a longer sequence on the Pyramid… A lot of
nice things can be done!


Have to add one caveat: re-triggering OT tracks breaks some of the trig conditions (1st, 1:2, 1:3…).

There is actually a way around that: If you play the OT tracks from Pyramid live mode with hold
enabled (2ND+Play) all trig conditions work. Muting/Unmuting the Pyramid track will make the OT tracks
start and stop because Pyramid remembers which notes you held per track (they even get saved
to the project somehow). But changing patterns on the Pyramid track seems to clear the notes
in live mode. Will investigate further…


nice finds!

have you tried the simpler trick that combines a program change message with note #35 (which triggers “seq stop & restart” in the octatrack midi spec) for instant pattern changes when controlling the octa from another sequencer? see


I haven’t tried the restart CC, I guess it works too but it’s less exciting. The restart CC method is easier to set up though.

I missed that on Elektronauts.
Already have my system set up for FA/FC thru BomeBox, but that is greqt and im annoyed i missed it.

Thank you for posting that.

1 Like

yes it is less exciting in terms of flexibility and IDM madness :slight_smile: your approach is very clever

I use the Box for so much more than the fa/fc thang, so tossing that quick translation is easy enough

Sezare over on Elektronauts is light years beyond me, although they have helped me with some great ideas once i started using the OT as a tuned instrument controlled by Pyramid (translating note velocity to OT filter cutoff, volume, slice, etc).


Great thread. About 4 methods to try . Thanks


Can you tell me more about this specifically or kindly direct me to a thread where it’s explained/taught? This sounds wonderful!

"using the OT as a tuned instrument controlled by Pyramid (translating note velocity to OT filter cutoff, volume, slice, etc)."

Well, sure. Sorta.
That was from almost 2 years ago and I’ve changed my system/workflow since then. OT OS1.40 made some of the latest stuff possible.

Now my OT works more like a rompler:

  • Note Velocity is translated Filter Cutoff Level and Amp Level
  • Usage of the CC to control Filter Cutoff actually creates a ‘ceiling’…that is, if the CC for Filter Cutoff is sent to be 64 (50%) and a Note On with Velocity 127 (100%) is sent, then the resulting filter cutoff will be 64/50%. Also, a ceiling of 64 (50%) and a Note On Velocity of 100 is sent, then the resulting cutoff is 50/39%.
  • Amp level is not treated this way because:CC07
  • Program Changes from the Pyramid are intercepted and used to create the events that trigger the OT. Program Changes from the Pyramid now select the Slot on the OT. So, Pgm Chg msgs from the Pyramid select which OT Slot is used - so…I can turn a sequence on that is playing the OT and cycle through the available sample slots. :slight_smile:
  • I use a single Pattern for each Pyramid Project, so I have an Event Processor send the actual Program Change msg that selects the Pattern from a preset I define in the Event Processor
  • All OT Tracks are played Chromatically but use the Slots Mode, limited to the 2 Octaves since it uses the OT Pitch settings
  • Changes on the OT Machines are done via Parts, but generally it operates more like a rompler

I used to do things with Slices, but it’s so tough for me to think in that dimension when I want to create - stopping everything to create a Sample Chain, load it, etc. I use a few ‘random’ Slice techniques, and those are actually determined by aforementioned Event Processor script plus a S&H MIDI LFO on the Pyramid that I use for RND# function. I’m finding though that modulating between Slices isn’t something that I need to do, and I can achieve plenty of variation with the OT FX controlled by CC’s. Well, I don’t need much because the OT is just one part of my rig and definitely not a centerpiece.

I’m formulating plans on moving forward on a different scenario for Slices tho.

So, each Note On Event (3 bytes) from the Pyramid gets deconstructed and reconstructed as the following 12 bytes:
Bn CF vc Bn CA vv Bn CP nn 9n PC xx

n=Track Channel
CF=CC# for Filter Cutoff
vc = Calculated Velocity from an incoming ‘ceiling’
CA=CC# for Amp Level
vv = Raw Note Event Velocity Level
CP = Note Number Calculated into usable value to send to OT Pitch
PC = Stored Pgm Chg value
xx = I think I just pass thru the velocity, but the OT doesn’t pay attention to this as long as it’s >0

It gets more complex than that because it integrates with a much larger script that incorporates dynamic routing and meta-controls (such as: I have one slider dedicated to “Intensity” which will modulate Note Velocities based on song specific Preset entries (similar to the Pyramid FX: EQ), which does affect this set of scripts) , but that’s the gist.

I think some people have said they can do this with the RK002 ‘smart’ MIDI cables, but I believe those are an Arduino type device and I dont’ have the mental capacity to learn that to be able to do my own. I use MIDI Translator Pro on a BomeBox, but any Event Processor that can store variables would work. (I don’t know if the MIDI Solutions ones allow variables)

Hopefully that makes some sense.
Basically it turns the OT into 8 monophonic romplers, although I can also switch it to Round Robin on Tracks 5-7 to make chords.

1 Like

I think part of the fun of the OT is developing your own way of interacting with it…
(and I admit, that was infuriating to hear when I first got the OT :wink: )

OT 1.40 firmware made slices a non-issue… I was over the moon, as it makes it simple to just sequence everything from the pyramid.

I also actually quite like the OT running its own sequencing (in time obviously) , theres something to be said for creating variations by using independent sequencers. this is a technique in modular to create variation. e.g. generate gates with one sequencer, and notes with another… (steevio?!)
in the OT/Pyramid world, it can be fun to therefore have the notes/slices being trigged by the Pyramid,
but having parameter modulaton (trigs/lfo) on the OT - with different pattern lengths these can then phase - also different patterns on the OT can give different timbres or effects (due to parameter modulation)

of course not for everything, if you want it all accurately/consistently sequenced, I guess locking patterns is still necessary … but for generative/performance stuff its fun :slight_smile:

but back to opening sentence… I think the OT is a 1000 different things, to a 1000 different owners.

1 Like

Deep transmissions asked me about my script

1 Like

Thanks for the thoughful explanation. This thing is deep! Interesting to hear how people who are using the Pyramid and OT are using them in concert. I, personally, just have the OT transport clocked to the Pyramid and they run simultaneously. But I’m hoping to do more soon. One thing I’ve done is turned off all midi control of the OT because random keys seem to effect the OT in huge ways and then I end up digging into the OT for what changed.


Yeah the wild things it does are due to the midi control messages detailed in OT manual ( midi appendix) :slight_smile:

Biggest issue I have with leaving them on is they eat up so many midi channels … which I’m always short on!

@CreepyPants , I know…
but this thread is about users are controlling/using OT, so I just shared my take - esp. now 1.40 has changed things.

not everyone one has access to a midi processor nor wants the complexity they bring (*) … so thought I’d share my simple approach - that requires no extras.

But as I said lots of way to use these beast together , none are the ‘right’ way - as we all have different needs and interests.


(*) I don’t, even as (because?) I’m a software developer.

1 Like