Chrono Sage - Meadowphysics Logical Clock Divider (v1.2.5)

Chrono Sage

A logical clock divider alternative firmware for the Monome Meadowphysics module.


One of my favorite clock dividers for euro is the Shakmat Time Wizard, primarily because of the built in logic functions that can give you all kinds of fun results just by twiddling some knobs. Problem is, it requires a clock, and only has two logic functions (AND/OR) which can only be used on one channel. With the release of the Multipass library for monome modules by the awesome @scanner_darkly, modifying my fairly-unused Meadowphysics module to do what I wanted came into reach!

Requirements

  • Monome Grid (if you want to do anything more than have 1-8 divisors on the clock from 1-8 outs)
  • Monome Meadowphysics

Documentation

Flash the module using monome firmware update instructions here. Using the hex file below, there are flash scripts included in the zip.

  • The first column selects the output to set a logical condition for
  • Columns 2-4 set the logical condition from the selected column to the output row selected, column 1 is logical AND (both gates are high), column 2 is logical OR (either gate is high), column 3 is logical XOR (gate when both outputs are not equal)
  • Divisions are as listed in the image above for each output
  • Configuration page - Tap on the front button or hold the top left button on the grid to go into configuration mode, the top 10 buttons are preset slots, hold to save current configuration into a slot, tap to load a slot, the two big glyphs are the two modes now functional in Chrono Sage. The bottom row is a speed control, slowest left, fastest right, will become useful when I port this over to the other trilogy modules. The top right two buttons configure the main input jack to be either a clock rotator or an external clock input.
  • Single Mode - Logic is only checked one level deep, multiple channels can reference the same target, updates to target logic update all referencing channels. rules : no self selection, no circular logic selection
  • Nested Mode - Logic is checked in a nested fashion, so that updating one channels logic or divisor updates all associated channels… so you can do things like (listed above) (3 AND (4 OR (5 XOR (1 AND 7)))) which will update from right to left. rules : no self selection, no circular logic including round-robin chains, max of 7 channels linked, no selection of channels that already are being referenced. This mode creates some pretty interesting variation with very small changes to channel divisions & logic.

Issues / Future Updates

  • Configurable gate lengths per channel
  • Wrapping beats with logic still a bit off @ 128 mark

Download

v1.2.5
chrono-sage.zip (38.2 KB)
chrono-sage.hex (113.1 KB)

GitHub: https://github.com/forrestbaer/chrono-sage-mp

Contributions welcome!

34 Likes

super exciting to see new multipass apps!

2 Likes

Between this and all the other potential created with Multipass, I’m never selling my Meadowphysics.

After I finally got an Ansible, my poor MP has just been sitting there ignored and I thought for sure it wasn’t going to make the cut. I’m so pumped about the new life being breathed into these old friends!

6 Likes

Multipass is awesome, I’ve been really impressed by the API, very clean/straightforward. Keeping my eyes peeled for more old monome modules, I got my MF for a steal of $80, been well worth it.

6 Likes

Updated files above, changes this release (v1.1.0):

  • Re-wrote the way beats are looked up to be far more optimized/performant!
  • Replaced logical NOR with logical XOR because it’s a lot more musical/fun, to me at least
  • Changed the clock input to a clock rotator! Send a gate into the clock-in to rotate all divisions ahead 1 place per gate

Next Update:

  • I found a use for reverse linked lists! Going to set up an option for logic comparisons so they don’t just do a logical comparison vs the division on the target channel, but actually do a logical comparison on whatever the current rendered trigger sequence is on the target channel so you can chain together series of AND/OR/XOR across multiple divisions… i.e. (8 OR (6 XOR (1 AND 3)))
5 Likes

I think I’ll be bringing Meadowphysics out of retirement seeing what you are doing here :slight_smile: I held onto it thinking that there must be alternative firmwares for it.

2 Likes

v1.1.5 - Update in preparation for nested/linked-logic-trees

  • New rules apply to logic selection to prevent chicken/egg problems/looping: two channels can’t reference each other, only 7 total channels can have a logical reference (8th would require a double reference), no channel can logically reference a channel that has another channel referencing it
  • UX Improvement to error messages (flashing channel shows you channel that’s referencing invalid selection) also un-selectable items will be dimmed, channel selections that have logic applied have a dim light as well.
  • Fixed: bug where changing tempo on a logic-referenced channel wouldn’t update the referencing channels beat in some cases
3 Likes

v1.2 - Big Update! Nested Logic & Presets Page

  • Configuration page - Tap on the front button or hold the top left button on the grid to go into configuration mode, the top 10 buttons are preset slots, hold to save current configuration into a slot, tap to load a slot, the two big glyphs are the two modes now functional in Chrono Sage
  • Single Mode - Logic is only checked one level deep, multiple channels can reference the same target, updates to target logic/divisions update all referencing channels. rules: no self selection, no circular logic selection
  • Nested Mode - Logic is checked in a nested fashion, so that updating one channels logic or divisor updates all associated channels… so you can do things like (listed above) (3 AND (4 OR (5 XOR (1 AND 7)))) which will update from right to left. rules: no self selection, no circular logic including round-robin chains, max of 7 channels linked, no selection of channels that already are being referenced. This mode creates some pretty interesting variation with very small changes to channel divisions & logic.

Hopefully I can get a camera going with audio hookup after I get back from vacation to record some videos. Top post updated with latest firmware.

9 Likes

v1.2.5 - Configurable input, non-logical clock wrapping & speed config

  • The input jack is configurable in the config page now via the top-right two buttons, left button will make it an external clock input, right will make it a clock rotator.
  • Fixed clock wrapping with odd number divisions at the 128 beat mark, still trouble getting things to line up perfectly when logic is introduced, a really stubborn problem.
  • Added the ability to change speed in the config for modules that don’t have a knob, for whenever I have time to port this to ansible.
  • Added a few ms to the trigger PW
4 Likes