METROPLEX is an 8 stage MIDI step sequencer inspired by the Intellijel Metropolis.

Includes control of repeats per step, portamento/slide, ratcheting, randomization, step sequencing of MIDI CCs, and more!

Perfect for funky 16th note jams à la Kraftwek or Detroit techno, or ambient Kosmische Musik.

1022 PM
  • Platform:
  • Category: Sequencer
  • Revision: 1.5
  • License: MIT License
  • Views: 2,266
  • Modified: 7 months ago
Chat about this patch on Discord! Download (136)
Appreciate 24
14 comments on “Metroplex
  • Bryan on said:

    Version 1.1 Changes

    * Set default scale to Chromatic. Version 1.0 was set to Minor. To set the default scale to something else edit the line “PresetScale {Chromatic}” to the name of you preferred scale. This line can be found at the top of the code after the instruction.
    * Fixed a few spelling error in the instructions.
    * Yes, there are instructions at the top of the code. 😀

  • Bryan on said:

    Instructions for Metroplex.

    METROPLEX is an 8 stage MIDI step sequencer inspired by the Intellijel Metropolis.

    Controls are organized into three main veiws, 1) Sliders, 2) Controls, and 3) Pads. In addition, the Sliders view contains 8 pages.

    Use the SHIFT key to switch between veiws and pages. While in Sliders, a single press on the SHIFT key will cycle through the 8 pages. Press and hold the SHIFT key to toggle between Sliders veiw and Controls. Double tap the SHIFT key to switch between Sliders and Pads.

    There are 8 pages in the Sliders view: 1) Pitch, 2) Gate Length, 3) Velocity, 4) Repeat Count, 5) Gate Mode, 6) Ratchet, 7) Modulation 1, and 8) Modulation 2

    PITCH: This controls the pitch of the MIDI note per step. Range is one Octave. Notes are shown above the sliders. The notes shown are quantized by the SCALE control on the Controls page.

    GATE LENGTH: Sets the length of the note per step. Be aware that the effect this has is dependent on the MIDI sound source you use. To hear its effect, use a sound with ADSR settings that contain a sustain portion and very short release. Range is 0-100% of the preset note length, which is determined by the CLOCK control.

    VELOCITY: Sets the velocity of the note per step. Range is 0-127.

    REPEAT COUNT: Metroplex is an 8-step sequencer, but each step may be set to repeat a number of times. Use this control to set the number of repeats, from 1 (no repeat, just the original step) to 8.

    GATE MODE: There are 3 Gate Modes: 1) Repeat, 2) Single, 3) Hold, and 4) Rest. These modes work in conjunction with the REPEAT COUNT controls, so make sure you have REPEAT COUNT set to something other than 1 to hear the effect. REPEAT mode makes the note repeat the number of times set by REPEAT COUNT. SINGLE plays only the first note of the REPEAT COUNT period and rests for the remainder of the time. HOLD plays a single note the lasts for the entire REPEAT COUNT period. REST does not play a note during the period.

    RATCHET: Ratchet sub-divides the pulse, providing quicker rhythmic sub-divisions per step. Range is 0 (no ratcheting), and 2, 3, 4, and 6 division per step. The exact sub-divisions available depends on the clock division set by the CLOCK control.

    MODULATION 1 & 2: These two pages set modulation levels per step. MODULATION 1 is preset to output MIDI CC 1 (Mod Wheel) whereas MODULATION 2 is preset to MIDI CC 13. You can change these in the code to suit your preference.

    LEDs under each slider indicate the current step playing. White means a note is playing on that step. Red indicates a rest (i.e., GATE MODE set to REST). Blue means the step is set to SKIP.

    Every page in Sliders view provides access to a couple additional controls which are also available on the Controls view. These are the STAGES and PLAY MODE controls and the XY PAD. Their function is described below.

    CONTROLS VIEW is the main performance page in Metroplex. Here you have access to the RANDOMIZATION pads, the XY PAD, and ten other controls.

    Press RANDOMIZE to randomize the values of the sliders and the stages control. (In the code there are two variable that determine if PORTAMENTO and MODULATION are also randomized. Set these as you like.) Whenever a new sequence is created, it is copied to the RTZ pad. You can use this to always return to the original sequence even after mutating it. The MUTATE pad will randomize the same values as the RANDOMIZE pad, but unlike RANDOMIZE, MUTATE only adds or subtracts from the current values rather than completely changing everything. This allows you to change the sequence subtly (usually😀). Whenever you press the MUTATE pad, the previous sequence is copied to the UNDO pad. This means you can go back to the previous sequence if you don’t like what the MUTATE control has done.

    STAGES: This control sets how many of the 8 steps of the sequencer play, from 1 to 8. In the FOREARD and BACKWARD Play Modes it is possible to set STAGES to up to 15 steps. If STAGES is set above 8, the sequence will wrap around to the beginning to play the remaining steps.

    PLAY MODES: There are 6 PLAY MODES: 1) FORWARD, 2) BACKWARD, 3) PING PONG 1, 4) PING PONG 2, 5) RANDOM, 6) BROWNIAN. FORWARD plays the sequence in order from left to right. BACKWARD plays from right to left. PING PONG 1 plays back and forth, but only playing the extremities once. In contrast, PING PONG 2 plays the extremities twice. RANDOM plays stages at random, while BROWNIAN performs a drunken walk amongst the steps. BROWNIAN will tend forward; it has a 50% chance of moving forward, a 25% chance of moving bacward, and a 25% chance of playimg the same step again.

    CLOCK: This sets the master clock for the sequencer, from 1/64 Triplet to a Whole Note per step.

    KEY: sets the root note of the sequence.

    OCTAVE: sets the octave +/-3 octaves.

    SCALE: Quantizes the pitch to a preset scale. Included are the 25 default Mozaic scales. For ever more scale fun, try my Scale Compendium script, available on!

    SWING: Sets the swing, from 0% to 50%.

    HUMANIZE: Adds timing jitter and velocity variation to the notes.

    GATE MASTER: This controls the overall gate length of all the steps, from 0% to 200% of the value set by the sliders.

    MODULATION MASTER: This controls the overall modulation strength of all the steps for MODULATION 1 & 2, from 0% to 200% of the value set by the sliders.

    XY PAD: This allows performance control of the GATE MASTER and MODULATION MASTER controls.

    PADS VIEW: The top row of pads allow performance control of STAGE SKIPPING. The bottom row controlls PORTAMENTO per step.

    SKIP STEPS: Press a pad to skip that step in the sequence. Unlike a rest, that step will be completely skipped over and the sequence shortened by one step. Pressing the pad again will restore the step. For reference, steps that have their GATE MODE set to REST are shown by a black square. You can of course also skip this step.

    PORTAMENTO (SLIDE): Press a pad to slide between that note and the following one. The portamento effect will only function on synths that support MIDI portamento messages 5, 65, and 84. You may need to change setting in your synth…or it may work automatically.

    Addition controls for STAGES, PLAY MODE, GATE MASTER, and MODULATION MASTER are also available on this page.

    In BACKWARD play mode, REPEAT COUNT does not work on step 1.
    PING PONG 2 will get stuck under some circumstances. Switching to a different play mode will unstick it.

    Metroplex is a techno record label in Detroit, founded in 1985 by techno pioneer Juan Atkins.

  • Bryan on said:

    Version 1.2

    * Moved controls around to what I hope is a more logical layout. I meant to do this before the initial release, but I forgot.

  • -ki on said:

    The latest v1.2 throws an

    [LABELSLIDERS] Syntax Error: Calling Unknown Event (@REPEATSLIDERS)

    when stepping through the views using the shift button when reaching 4. repeat count.
    Just rename the function @Repeat to @RepeatSliders to fix it.

    Another small glitch (that occurred just once) was that in sliders view both right sliders were not ‚Stages‘ and ‚Play Mode’ sliders but ‚Humanize‘ and ‚Modulation‘ .

    Nice script with tons of options 👍🏻

  • Bryan on said:

    Version 1.2.1

    * Fixed a small bug that would cause a syntax error on page 4 of Slders veiw. Thanks to -Ki for the bug report!

  • Bryan on said:

    Version 1.3

    Big update with new user-requested features and bug fixes.

    * Added a whole new page called SETTINGS. To access the SETTINGS page, go to the CONTROLS page (long press on SHIFT) and then press-and-hold UNDO and while holding, press SHIFT. On the SETTINGS page there are controls for setting the CC # output by MODULATION 1 & 2 and the output MIDI Channel. In addition, there is now control for RANDOMIZATION MODE. This mode controls exactly what gets randomized. “Randomize All,” “Randomize Pitch Only,” and “Randomize All Except Pitch” are self-explainatory. Randomization Modes 1-12 randomize only the following:

    1) Articulation
    2) Rhythm
    3) Modulation
    4) Articulation, Rhythm
    5) Rhythm, Modulation
    6) Articulation, Modulation
    7) Pitch, Articulation
    8) Pitch, Rhythm
    9) Pitch, Modulation
    10) Pitch, Articulation, Rhythm
    11) Pitch, Rhythm, Modulation
    12) Pitch, Articulation, Modulation

    “ARTICULATION” refers to GATE LENGTH, VELOCITY, and PORTAMENTO. “RHYTHM” refers to REPEAT COUNT, GATE MODE, RATCHETING, and STAGES. Finally, the instruction manual is viewable on the settings page.
    * Added MIDI and AU control for KEY, CLOCK, and OCTAVE. KEY and OCTAVE respond to MIDI Note On messages, so you can transpose sequences using an external keyboard controller or another sequencer. Alternately, Metroplex now responds to CC and AU Parameter control. CCs #13, 15, 17 and AU User 1, 2, and 3, now control KEY, CLOCK, and OCTAVE respectively.
    * Changed UNDO behavior. Now UNDO always plays the previously playing sequence.
    * Added detailed logging.
    * Bug fixes and optimizations

  • Acoustiman on said:

    The latest v1.3 gives the following error when going to the Repeat page:
    [LABELSLIDERS] Syntax Error: Calling Unknown Event (@REPEATSLIDERS)
    Just rename the function @Repeat to @RepeatSliders to fix it.

  • Bryan on said:

    Version 1.3.1

    * Fixed a bug where CC and MIDI channel settings were not saved with the session data.

  • Acoustiman on said:

    Great step-sequencer but heavy on dsp. My dsp frequently maxes out in AUM (ipad pro 2nd gen). Looks like there is some code optimization needed.

  • Krupa on said:

    Great script, convinced me to get mozaic and made me happy to have done so 😁

    I’ve been messing about in the code and changed my version so that the XY pad ‘draws’ whichever set of sliders is currently displayed – makes tweaking the steps really quick and intuitive without being too fussy (you can then go on to tweak the individual sliders as you wish)

    I’ve not finished tweaking this as there’s probably bugs I’ve introduced and it’d be good to put some other bits in…

  • Bryan on said:

    Version 1.4 changes

    * New feature created by Christian Krupa: now you can “sketch” your sequence using the XY Pad. This is a really fun way to create or modify a sequence. Every parameter in Sliders view can be adjusted this way, not just notes. While in Controls view the XY Pad still functions as before to control gate length and modulation depth.

    Thanks again to Chris for adding this cool new feature!

  • Krupa on said:

    Cheers for the mention Bryan, I’m made up that it even works, never mind that you thought it good enough to include – I’ll be using your version I think as well seeing as you fixed the XY to still work on the gate and modulation amount in the controls view 👍

  • Bryan on said:

    Version 1.5 changes:

    * This is a big update with new features and lots of bug fixes!
    * Probability Sliders: it is now possible to control random mutations on a per-step basis using the Probability Sliders on page 9 of the Sliders View. Each slider controls the probability that a random mutation will occur on that step. Which parameters may be mutated are determined by the Probability Mode control of the Settings Page. (To access the settings page, first go to the controls page by long-pressing the SHIFT key. Then press and hold UNDO and while holding, press SHIFT.) The various Probability Modes available are the same as the Randomization Modes.
    * Ratcheting now works correctly.
    * The gate time is now computed correctly.
    * The Randomization algorithm has been greatly improved to provide more musical results.
    * Metropolis now resets to step one when the host is reset to the beginning of the timeline.
    * The settings page has been reorganized to fit more controls. Now there is a MIDI MODE knob that changes the function of knob 2 (lower left knob). Knob 2 may control the Midi Channel, the CC# for Modulation 1 or 2, or the Quantization Mode. While in the Settings Page, all randomization is temporarily suspended to allow you to change probability settings without accidentally changing parameter you don’t want to change.
    * Quantization Mode determines if Scale Quantization is performed before or after key transposition. This is useful when controlling Metroplex using a midi keyboard controller or another sequencer. If Quant —> Transpose is selected (default), the Key knob on the Controls page will shift the sequence up so that it plays in the new key. For example, if you create a sequence in C and the change the Key knob to C#, the sequence will play all the same notes only shifted up one half step. If Transpose —> Quant is selected, the sequence is transposed chromatically first and the transposed to the scale and key selected by the Scale and Key knobs.
    * There are several new user-adjustable defaults at the top of the code. Feel free to mess around with different values.
    * Many other bug fixes and improvements.

  • Leave a Reply