Wednesday, June 20, 2018

Introducing The Darkest Timeline

In my last post, I mentioned The Darkest Timeline. It's now ready to use, and the code is available at my usual repository,

I've got some near-future plans for O_C, which I'll get into in a later post; but for now I'm formulating a design philosophy, and The Darkest Timeline is a test case for some of these principles. You won't see, from me, apps that look or feel like Ornaments and Crime's native apps. Some of my principles are as follows:
  1. Minimize text, maximize graphics. I won't do scrolling lists of options.
  2. Use the screen for display, not for input. The app should be at least somewhat usable with the screen covered.
  3. Aim for one function per control. An encoder button can toggle the function of that encoder, but the current function must be readily ascertained. Functions beyond basic functionality may be hidden behind long-press buttons.
  4. Avoid multiple screens. That is, no menu diving.
  5. The screensaver should be a skeletalized version of the main screen. Your workflow should not be interrupted by the screensaver.
The Darkest Timeline follows these principles pretty well, and it's a lot of fun to play. It has two features that I'm particularly proud of.

The first is an adjustable index point. The "index point" is basically the start of the sequence. Regardless of the sequence length, the index point may be scrubbed through from the panel or via CV. This lets you warp a set of steps in a lot of different ways.

The second feature is the concept of alternate timeline output. Output B and output D provide alternate versions of the CV and trigger probability, respectively. Output B plays the sequence directly AFTER the one played by output A. That is, if the sequence is 8 steps, output A plays steps 0-8, and output B plays steps 9-16 (assuming an index point of 0). Output D is a probability-based trigger like output C, except it uses the step's complementary probability. That is, if the step has a 70% chance of firing the trigger from output C, there's a 30% chance of output D's trigger firing. These probabilities are independent, so it's possible for C and D to both fire (or not fire) on the same step.

The Controls

Digital Input 1: Advance forward one step
Digital Input 2: Advance backward one step
Digital Input 3: Reset to the index point
CV Input 1: Record value (0-5V) for the CV Timeline
CV Input 2: Record value (0-5V) for the Probability Timeline
CV Input 3: Set the index point
Up Button: Toggle recording to the CV Timeline. The active step (the leftmost step) will display a blinking cursor when recording. Long hold: enter screensaver mode, per usual.
Down Button: Toggle recording to the Probability Timeline. The active step will display a blinking cursor when recording. Long hold: clear both timelines.
Left Encoder: Set sequence length (fewer steps to the right, like you're "zooming in")
Left Button (Long hold): Randomize both timelines and set index point to 0
Right Button: Toggle the function of the Right Encoder between changing the active step and editing the index point. The index point indicator (the vertical bar) will become a solid blinking line when editing the index point.
Right Encoder: Move within the sequence or enable index point editing
Output A: Normal Timeline CV, the values that you see on the screen.
Output B: Alternate Timeline CV, the values that come after the values that you see on the screen.
Output C: Normal Timeline Trigger, (maybe) a 6ms trigger based on the Probability Timeline. All the way up, the trigger will fire. All the way down, it won't. Everywhere else, it's more likely to fire if the bar is higher.
Output D: Alternate Timeline Trigger, (maybe) a 6ms trigger based on the complement of the value from the Probability Timeline. All the way, the trigger will not fire. All the way down, it will. Everywhere else, it's more likely to fire if the bar is lower.

All right, feel free to leave a comment if you have any questions. I hope that some of you grow a goatee and enjoy the alternate timelines....


  1. I understand, that recording process could be automatic, when providing voltages and the clock. When in output mode, what is the strategy to go from one value to another? Is it continuous function going through recorded points or it is discrete / stepped? Best

    1. It's quantized to semitones and stepped, directly from one note to the next.

    2. I have uploaded the latest beta firmware but I can not find this applet in the list of programs. What am I missin g?

    3. Hey, Carl, an all-new Darkest Timeline is available in Hemisphere Suite 1.4, downloadable here:

  2. I was really hoping this was a Community reference, and it made my day to see Evil Abed here! 6 seasons AND A MOVIE!!!


Pitch Calculation and Output

"If pitches were horses, we'd all be eatin' steak." --Jayne Cobb And where have I been for almost two months? I was busy...